FPN(Feature Pyramid Network)は、CNNの各層から得られる異なるスケールの特徴を、トップダウン経路と横接続(ラテラル接続)で融合するモジュールです。物体検出で「遠くの小さな車」と「手前の大きな人」を同時に扱うには、一つの解像度だけでは足りない——本記事は畳み込みの細部より、「なぜ特徴をピラミッド状に束ねるのか」に焦点を当てます。
スケールの壁
物体検出は「どこに何があるか」を扱うタスクです(G-316)。しかし画像内の物体は大きさがばらばら——同じ「車」でも、遠景では数ピクセル、近景では画面の半分を占めます。
CNNは層が深くなるほど受容野は広がりますが、空間解像度は下がります。浅い層は細かい位置情報に強く、深い層は大まかな文脈に強い——どちらか一方だけでは検出が苦しくなります。GoogLeNetのInceptionが複数サイズの畳み込みを並べる発想(G-321)も、同じ「スケールの多様性」への応答です。
特徴ピラミッドの直感
FPNは、CNN backbone から複数段の特徴マップを取り出し、ピラミッド状に整理します。
| 段 | 特徴の性質 | 向く物体 |
|---|---|---|
| 高解像度・浅層 | 細かいエッジ・テクスチャ | 小さな物体 |
| 中間 | 中程度のパターン | 中サイズ |
| 低解像度・深層 | 広い文脈・セマンティクス | 大きな物体 |
各段で検出ヘッドを置く——マルチスケール検出——という設計がFPNの目的です。試験では「マルチスケール特徴の構築」がキーワードになります。
トップダウンと横接続
FPNの工夫は二つの経路の組み合わせです。
- ボトムアップ — 通常のCNN順伝播で、段ごとの特徴マップを得る
- トップダウン — 深い層の特徴を上に向かってアップサンプリングし、文脈を浅い層へ伝播
- 横接続(ラテラル) — 同じ段のボトムアップ特徴とトップダウン特徴を足し合わせて融合
深い層の「意味」と浅い層の「位置」——両方を各スケールで使えるのがFPNの要点です。数式の暗記より、この情報の流れを説明できれば試験に十分なことが多いです。
物体検出への組み込み
FPNは単体の検出モデル名ではなく、検出パイプラインの部品です。Faster R-CNNやMask R-CNN(TF-124)に組み込まれ、COCOなどのベンチマークでマルチスケール検出の精度向上に寄与しました。
| 名前 | 性質 |
|---|---|
| FPN | 特徴ピラミッドを構築するモジュール |
| YOLO / SSD | マルチスケールを別設計で実現する検出モデル(TF-121) |
| DETR | Transformer系の端から端検出。FPNとは別系譜 |
| FCN | セグメンテーション向け。画素マップ出力 |
試験で押さえるポイント
- 定義 — トップダウン+横接続でマルチスケール特徴ピラミッドを構築
- 用途 — 物体検出の特徴抽出部品。モデル名そのものではない
- 動機 — 大小さまざまな物体に対応するためのスケール融合
- すり替え回避 — セグメンテーション損失・NLP・生成AIではない
すり替えに注意
| 誤った説明 | 正しい理解 |
|---|---|
| FPN=Faster R-CNN | 特徴モジュール vs 検出モデル全体 |
| FPN=DETR | CNN系ピラミッド vs Transformer検出 |
| FPN=画像分類 | マルチスケール特徴 vs ラベル1つ |
| FPN=EfficientNet | 検出向けスケール融合 vs 効率化スケーリング |
| ピラミッド=画像の縮小 | 特徴マップの多段融合 |
よくある質問
FPNは何をするモジュールですか?
CNNの浅い層(高解像度・細かい特徴)と深い層(低解像度・大まかな文脈)をトップダウン経路と横接続で融合し、複数スケールの特徴ピラミッドを作る設計です。大小さまざまな物体の検出に使われます。
FPNと物体検出モデルは同じですか?
同じではありません。FPNは特徴抽出の部品(モジュール)であり、Faster R-CNNやMask R-CNNなどの物体検出モデルに組み込まれてマルチスケール検出を可能にします。検出モデルそのものの別名ではありません。
FPNはセグメンテーション専用ですか?
主に物体検出の文脈で語られるマルチスケール特徴の設計です。セグメンテーションでもマルチスケール特徴は重要ですが、FPNは物体検出パイプラインへの組み込みが代表例として知られます。