1. FPN (Feature Pyramid Networks) とは [概要]
FPN (Feature Pyramid Networks)は,物体検出などにおいて,マルチスケール画像認識へと効率的に対応するために,CNN-EncoderにDecoderを加えて,U-Net的なスキップ接続つき砂時計型Encoder-Decoder構造へと拡張する機構である.
この記事では,FPNとその発展型について述べる.古典的なDeep以前のマルチスケール画像特徴集約(2節)についてのべたあと,FPNの元提案 [Lin et al., 2017] (3節)紹介する.その後は,FPNの発展手法の 代表例として,Path Aggregation Networkや,EfficinentDetのFPN,Deep Layer Aggregationなどを紹介する(4,5節).
FPNでは,マルチスケールCNN(Encoder)を拡張前の基準構造とみなし,その後半部分にマルチスケール画像(CNN)Decoderを,各スケールごとのスキップ接続も用いたかたちで結合する.これにより,全体では(U-Netのような)砂時計Encoder-Decoder形式のネットワークを形成し,なおかつSSDのように各スケールごとの個別出力ヘッドで出力を行うという構成にする.
セマンティックセグメンテーション向けのU-Netや,インスタンスセグメンテーション向けのSharpMaskなどで用いられた「砂時計型 Encoder-decoder構造 + スキップ接続」のアイデアと同様の拡張構造が,物体検出向けに提案されたのおのとも見なせる
※ 3.2節で比較するように,接続方法がU-Netと少しだけ異なる.
FPNを用いてCNNをスキップ接続付きで砂時計型Encoder-decoderに拡張することで,序盤や中盤の画像特徴を,終盤の識別層まで伝えることができる.これにより,様々なスケールのパスを経た結果の多様なスケールの特徴を学習できる.Faster R-CNNなどのCNNバックボーンをFPNで拡張することで,マルチスケール検出を,高速・高精度に実現できるようになり,以降は様々な場面でFPN的なマルチスケール対応ネットワークが設計されるようになった.
1.1 FPNの登場経緯
FPNを追加することで,画像内での相対的スケール変化の大きさへと対応する必要のある画像認識タスク (物体検出やセマンティックセグメンテーションなど)で頑健性が増す.その理由は,複数画像スケールの特徴を全て含んだ特徴マップを計算できるようになり「物体検出のマルチスケール性能(とりわけ,小さく写る物体の検出)」を改善できる点にある.なおかつ,マルチスケール特徴計算自体も,画像ピラミッド的に効率的に計算済できる利点がある.
一方,より一般的な概念である「(※ マルチスケール画像認識向けの)特徴集約(Feature Aggregation)」とは,画像の局所低レベル特徴や中領域レベル特徴を「集約」して結合し,新たな「多数の解像度での表現を集約した表現」を生成して,予測に使用することをさす.
また,SSDでも既に提案されていた「各スケール特徴ごとに出力ヘッドを配置」という設計は,FPNにおいても導入されている.これにより,余計な最後のスケール特徴は使わないで済む,各ピラミッドスケールのスケールサイズに適した推定ができる利点がある.
FPNを用いた「複数画像スケール特徴マップ + 複数パス」を用いた画像特徴集約手法は,まず FPNの原論文 [Lin et al., 2017] において,効率的な複数スケール物体検出向けに提案された.その後は,FPNの派生型が発展し,マルチスケール特徴が必要な,物体検出以外の画像認識系タスクむけネットワークでも,FPNが頻繁に使われるようになっていった.
1.2 記事の構成
2節以降は,以下の構成でFPN(2,3節)と,その発展型(4,5節)について紹介する:
- 2節 ビジョンでの特徴集約(Deep Learning以前の従来手法も含む)
- 3節 Feature Pyramid Networks の詳細
- 4節 Feature Pyramid Networks の改良手法 (PANet , EfficientDetなど)
- 5節 Deep Layer Aggregation
まずディープラーニング以前の特徴集約について復習しながら特徴集約の歴史を先にまとめる(2節).次に,物体検出に提案された元のFPNを紹介する(3節).その後,FPNの改良手法を紹介し(4節),現在(2021年5月) 画像認識向けCNNバックボーンの代表格の1つともなっている,マルチスケール特徴集約型のCNNバックボーンである「Deep Layer Aggregation(2018)」(5節) を紹介する.
2. ビジョンでの特徴集約(Deep以前から)
2.1 従来技術による物体認識における特徴集約
CNN登場直前の一世代前の物体認識では「画像全体のLocal 局所特徴群を,単一のグローバル特徴ベクトルに集約する技術」である, Bag of Features や Fisher Vector などが,画像特徴集約の代表的技術であった.
しかし,CNN流行以降の近年では,例えばFCNを用いた意味分割などの問題では,画素単位の「密な推定」を行う必要があることが多く,その場合は,「各画素ごとに豊富かつ細かな周辺コンテキスト特徴」を知っておかないと,密な各画素で推定が正確に行えない.また,CNN序盤層の局所的な低レベル特徴のみならず,中間層の「中レベル特徴」も,畳み込みの中で消失せずに,出力層まで伝えて集約する必要性が高まっていた.
2.2 物体検出での使用へ
そんななか,2015年ごろに意味分割向けのU-Netや,実体分割向けのSharpMaskなどが登場し,分割系タスク向けに,FPNと同じような「砂時計型の画像Encode-Decoder + スキップ接続」構成による「マルチスケール画像特徴集約」が登場し始めた.
そこに,より一般化しやすい FPN [Lin et al., 2017] の研究が登場した.ただ,FPNで実現されたことは,同時研究であるU-Netや,SharpMaskとあまり変わらず,である.このサイト全体としても「FPN・U-Net型」と,2者をセットで1つのものとみなして述べることが多い.3節でも述べるが,FPNは各スケールで個別に予測ヘッドを追加して,スケールごとに個別の出力を複数回行う点がU-Netと異なる.しかし,そのヘッド部分を除くと,似たような物同士である.
以前も行われていた「特徴ピラミッドからの特徴集約(3.2.1節)」の,CNNによる(学習可能な)現代版とも言えるものがFPNである.FPNはその後,人物姿勢推定のバックボーンや,Mask R-CNN での物体領域マスク推定など,「他タスクでのマルチスケール画像認識」目的でも使用されていく.
そもそも「画像ピラミッド」や「特徴ピラミッド」自体は,もっと前の,古い時代からコンピュータビジョン・画像処理で使用されてきた仕組みである.古くから,ステレオマッチングやオプティカルフローでも使われたいた.また,単一クラス物体検出での「マルチスケール画像から個別に計算した特徴を結合して使用(3.2.1節)」なども画像ピラミッドの活用例である.
※ 画像ピラミッド特徴の発想自体は新しくなく,むしろコンピュータビジョンでは伝統的に用いられてきた技術であり,実際,そこが得意で経験豊富な Dollar氏らのチームによって,FPN [Lin et al., 2017] が提案されたと見なせる.
2.3 マルチスケールEncoder-Decoder学習が効率的に
古典的な画像特徴ベクトルピラミッドでは,予測モデルのSVMやBoostingで,各スケール特徴の線形重み付け係数を学習していた.それ対してCNNでは,スキップ接続や,スケール特徴間のFusionを導入していることから,「より複雑なスケール特徴間の結合・統合」が可能となる(3節).また,ディープニューラルネットワークなので,「空間アテンション機構」や,「マルチタスク推定のヘッド」など,更に別の仕組みと自由に組み合わせられるメリットもでる.
もしDenseNetのように,ブロック内で全ての特徴マップを結合してしまうバックボーンだと,CNNバックボーン中で複数スケール化計算も行うと,マルチスケール特徴の計算効率が悪い.またFPN無しのCNNでは,本来予測に使用したい「序盤の隠れ層で得られる低レベル画像特徴」や,「中盤の層で得られる中間レベル画像特徴」が,画像サイズの出力層までうまく生き残らず,終盤層では抽象度の高い(広域で物体単位の)高レベル特徴しか残らない.
そんな中,効率的な複数スケール特徴集約を,CNNの後ろに拡張部品として結合して設計できる「FPN」が提案された.その後は,物体検出だけでなく,他のマルチスケール特徴が欲しいタスク全般でも,頻繁にFPNがマルチスケール特徴学習(もといTop-downな後処理Decoderを追加しての集約)として,使用される定番化されていく.
3. FPN の詳細
![FPN(Feature Pyramid Networks, 特徴ピラミッドネットワーク)の構造 [詳細版] | CVMLエキスパートガイド FPN (Feature Pyramid Networks)の構造 [詳細版]](https://cvml-expertguide.net/wp-content/uploads/2022/10/fpn-detail.png)
Feature Pyramid Networks [Lin et al., 2017] は,既に1節冒頭でも述べたように,CNN Encoder に,Decoderをマルチスケールスキップ接続することで,マルチスケール特徴性能と,学習効率を向上させる拡張機構である (図2 [詳細版]).拡張後の砂時計型Encoder-Decoder構造は,U-Netや類似していてほぼ同じ発想と構成だが,FPNでは各スケールで個別に予測ヘッドを追加して,スケールごとに個別の出力を複数回行う点がU-Netとは異なる.
特徴マップを1/2にしていくCNNバックボーンのあとに,特徴マップを2倍に戻していく逆CNNバックボーンを直列接続し,2つのCNNの同一スケール間の特徴マップ同士を,ラテラル接続でつなぐ.この(U-Netと似たような)中央に「空間サイズが小さなボトルネック」が存在するEncoder-Decoder構成が,物体検出向け画像特徴の,効率的な複数スケール化を実現してくれる.
3.1 FPN のネットワーク構造
図2は,図1よりも少し詳細化して描いたFPNのネットワーク構成図である.FPNは,以下の3つのサブネットワーク構成されており,この構成により,物体検出用のCNNバックボーンを,U-NetやSharpMaskと同じような「Encoder-Decoder + ラテラル接続」の構造へ拡張している:
- FPNの前半CNNエンコーダ(図2-左):CNNバックボーンを用いて,ボトムアップ処理により,特徴マップの解像度を1/2ずつに減らしてエンコードしていき,特徴マップのピラミッドを作成する.
- FPNの後半CNNデコーダ(図2-中央):,CNNバックボーンの逆構成のデコーダにより,up convolution層(=転置畳み込み層)を用いて,元画像の空間解像度まで特徴マップの空間サイズを拡大しながら,デコードしていく.
- 前半CNNで対応する同じ解像度の層から,ラテラル接続(=スキップ接続)をもちいて,エンコーダ側序盤の特徴マップを直接コピーする.
- ラテラル接続では,1 x 1 畳み込みを行った特徴マップを,デコーダの特徴マップに加算する(図1-真ん中の拡大部分.FPN追加されるCNNデコーダ部分を,ネットワーク全体のネック(首)と呼ぶことが多い).
- 出力の畳み込み層(図2-右):デコーダの各解像度特徴マップに,解像度ごとの出力予測層(ヘッド)を設ける.これにより,特徴解像度別に,検出結果の予測を行う.
出力層の各ヘッドも畳み込み層にすることから,FPNは全体としてはFCN構成ともなっている.
この構成により,FPNが出力予測する3の物体検出層が,高レベル特徴だけでなく,中レベル特徴や小レベル特徴も使えるようになる.また,類型であるU-Netと同じく,複数のスケールが様々な経路で足し会わされることで,捉える画像特徴スケールも非常に多様になり,中サイズや小サイズの物体の未検出を減らすことができる.
また,多様な経路で各レベルの特徴を変換+(スキップ接続も使用して)結合させるので「大中小以外の中間的なスケールの物体の特徴」の学習も,このネットワーク構成で効率的に行うことができる.もしラテラル接続(=スキップ接続)無しに,デコーダの3レベルの特徴マップからそれぞれ出力予測するだけだと,それらの狭間にある(中間的な)スケールの特徴が,正解バウンディンボックスからうまく学習できない.多用なパスを通って出力層まで到達するおかげで,様々な分解能のスケール特徴を合成して,スケール変換に細かく対応できる(そして効率性もよい).
3.2 物体検出・インスタンスセグメンテーションでの定番化
物体検出のトップ研究者 (Pitor Dollar氏, Ross Girshick氏) に,空間ピラミッドプーリングやResNetなど物体認識向けの特徴集約のトップ研究者 (Kaiming He氏) が集結したFacebookリサーチのチームから,FPNは提案された.それもあって,注目度も非常に高く,その後すぐに物体検出向けの標準的ネットワーク構造として [ResNet + FPN] の構成も定着した.
また,同チームによるMask R-CNNの研究においても,「FPNを追加したResNetバックボーン」による実験が行われ,FPNのインスタンスセグメンテーションへの有用性も示された.これにより,FPN構造と類似したU-Net的な構造が,セマンティックセグメンテーションと物体検出のどちらのタスクにも有効なマルチスケール特徴を,うまく集約できることを示したとも言える.
3.3 既存のピラミッド方式の画像特徴集約手法との比較
3.2.1 CNN以前の,画像ピラミッド特徴による物体検出との比較
CNN手法登場以前の,単一クラス物体検出において,マルチスケール対応をしたい場合は,以下の「密なピラミッドでの検出」が標準的な処理手順であった:
- 単純な画像ピラミッドのように1/2ずつの画像の縮小ではなく,もう少し密なN個の(8~10程度)のスケールで,入力画像を細かくスケーリングする.
- N個のスケール画像を入力として,それぞれ同一サイズの「単一窓サイズ(典型的には128×64ピクセル)歩行者検出器」を,密にスライディングウィンドウで2クラス識別する.
しかし,当時のこの処理で,各スライドにおいて使用されていたHOG特徴 + SVM [Dalal and Triggs, 2005] は,当時のCPUだと,Nスケール画像で各一で計算するには計算コストが高かった.従って,実用的な高速物体検出手法を実現するのに,HOG +SVM [Dalal and Triggs, 2005] は向いていなかった.
その後,複数チャンネル画像からBoostingで特徴を選択することができる Integral Channel Features (ICF) [Dollar et al., 2009] が提案され,歩行者検出の主役がICFとなる時代に突入した.更に,同じ著者らは,前述の「密な画像ピラミッドでの検出」よりも効率計算ができる,マルチスケール対応手法として FPDW (Fast Pedestrian Detection in the West) [Dollar et al., 2010] を提案した.FPDWでは,モデルサイズをM個,入力画像ピラミッドを3層にし,それらのM × 3の組み合わせにより,ICFを用いたマルチスケール歩行者検出を高速化した.また,ICFのうち,各スケールでのエッジ計算を,基本スケールからの近似計算に差し替えることを提案した.
以上のように,単一クラス物体検出では「複数スケールの各画像上でスライディングウィンドウする必要があるので,2クラス識別回数をいかに少なく済ませられるか」が焦点であった.ゆえに,特徴集約をして,マルチスケールの特徴を含ませることは.この時期の焦点ではなかった(「歩行者クラス」という,単一クラスの変化のみを相手していたからだとも言える).
一方で,HOG特徴は,マルチスケールで計算してそれらを結合する発想は,当時からよく行われていた.例えば,私も博士論文の研究で用いたように「3レベルのHOG特徴マップから,物体候補窓内でHOGベクトルを抽出し,それら3つを結合したベクトル」を,物体識別などに使うことが多かった.私の場合は,人物検出窓内の3レベルHOG結合ベクトルを,人物姿勢推定の目的で用いた (具体的には,上半身の方向推定や,関節位置を回帰するためのマルチスケール特徴としてRandom Forestの入力に用いた).
3.2.2 FPNと,従来のCNN向け特徴集約を比較
FPNの論文中 [Lin et al., 2017] でも論じられているように,物体検出器のSSD [Liu et al., 2016]は,FPN論文より先に提案されていたFPNである.またFPN [Lin et al., 2017] のネットワーク構造は,U-Net [Ronneberger et al., 2015] に似ていて,なおかつインスパイアされている.ただし,U-Netはスキップ後はチャンネル方向の後ろ側に結合して集約する設計であるが,FPNではラテラル接続後は,1 x 1 畳み込みののちに特徴マップ同士を加算で集約することから(図2 右下部分),集約方法だけはお互い少し異なる.
U-Netなどのセマンティックセグメンテーション手法では,序盤の層の出力の「まだあまり畳み込まれていない段階である序盤スケールの低レベル特徴や,中盤スケールの中レベル画像特徴を,いかに出力層まで生き残らせるか」が,画素単位の推定結果を出力する上で大切である.したがって,それら初期のセマンティックセグメンテーション手法では「スキップ接続で序盤の特徴を終盤の層までスルーして加工せず持ち運ぶ」という戦略がよく採用されていた.
それに対して,FPNは「マルチスケール物体検出」が目的の技術である.FPNは,出力ヘッドを複数スケール個別に用意すること以外は,対称的ネットワーク構造がU-Netとほぼ同じであった.また,Faster R-CNNのバックボーンとしてFPNを使用することにより,(2017当時としては)高速な,5 fpsでのGPU物体検出を実現した点も,FPNの(実験的)新規性でもあった.これは,その後,1ステージ型物体検出器において,FPNが盛んに用いられるきっかけとなった.
その後,インスタンスセグメンテーション(実例分割)や Panoptic Segmentationタスクなども登場し,物体検出と意味分割の2タスクを,同一バックボーンにマルチタスク学習することが増えていくが,FPN (2017年)の時点では,その2タスクはまだ分離しており,個別にそれぞれ研究が取り組まれていた時代であった.
4. FPNの改良手法
PAN(Path Aggregation Network)[Liu et al., 2018] は,インスタンスセグメンテーション目的で,bottom-up やtop-downの各スケール特徴を,より様々な経路(Path)を通じて集約するようにした,Path Aggregation(経路集約)手法である.PAN[Liu et al., 2018] は,FPNを「単純に1段拡張する形」が提案されたものであり,FPNの後段に,bottom-upのサブネットワークをもう一段配置し,同じく各解像度同士をスキップ接続する.要するに,2段構成のFPNを,3段構成に増やしただけである.これにより,FPNよりも,更に特徴集約パスの多様性・多解像度性が増えた,高精度の学習・推定が可能となった.
EfficientDet [Tan et al., 2020] では,物体検出向けにPAN [Liu et al., 2018] を更に改善するネットワーク構造が提案された.PANのようなbottom-up/top-downのペアをN回繰り返し,同スケールのtop-down同士をスキップ接続する形式の「繰り返しNeck構造」を採用した (weighted) Bi-FPN (Bidirectional Feature Pyramid Network)が提案された.更に [Tan et al., 2020] では,スケールごとに特徴マップを重み付けした後にそれらを加算する,重み付けフュージョン(weighted fusion)の仕組みも提案された.重み付フュージョンにより,双方向のスケール間特徴なフュージョンが効率的に実現され,スケーラブルかつ効率的な特徴抽出構造が実現された.性能的には,同時期のState-of-the artであったYolo v3 や RetinaNetより30分の1程度少ないパラメータで,同等の精度をCOCOデータセットで達成し,大幅にモデルのスケーラビリティが向上したと言える.
5. Deep Layer Aggregation
Deep Layer Aggregation (DLA) [Yu et al., 2018] は,木構造を複数シーケンス接続し,各木の上位ノード間にもスキップ構造を採用することで,多重解像度的なDense Networkを実現したネットワーク構造である.DLAは特徴集約手法であると同時に,CNNバックボーン構造でもある.したがって,2〜4節のように,バックボーンCNNで畳み込んだ特徴を別途後段のNeckモジュールで集約する「拡張機構」とは異なる.
元論文 [Yu et al., 2018] のFigure 1でも比較されているとおり,Deep Layer Aggregation は (1) DenseNetのような密なスキップ接続と (2) Feature Pyramid Networksによる多重解像度的なCNN特徴の集約の,2つの中間くらいのネットワーク構造を狙った手法である.言い換えると「DenseNetまでは密ではなく,Feature Pyramidよりは解像度の繰り返しを(階層化により)増やした,木構造的なFeature Aggregation バックボーン」である.
5.1 FPN による拡張と,木構造のDLAの比較
DNAは木構造でスケール変化を分岐させて行う分,効率的に少ないパラメータ・層数でスケール変化を捉えることができる.従って,vanilla FPNと比べるも,スケーラビリティの面でも優秀である上に,PAN [Liu et al., 2018]やbi-FPN [Tan et al., 2020] のように接続数がむやみに増えていくことがない面でもDLAは効率性が高いといえる.
ちなみに DLA論文 [Yu et al., 2018]では,COCO object detectionでの実験が行われておらず,一方で前述のEfficientDet [Tan et al., 2020] 中では,DLAとの比較の言及は無く,比較実験も実施されていない.
6. まとめ
この記事では,多重解像度特徴の効率的かつ網羅的な集約が必要な画像認識タスク向けの,Feature Aggregation(特徴集約)ネットワーク構造手法について紹介した.その典型的手法として,基本となるFeature Pyramid Networksを紹介したあと,発展型であるPAN, EfficientDet, Deep Layer Aggregationについて,簡単に紹介した.
ちなみに,近年(2018-2021あたり)の物体検出は,このままFPN依存の路線で発展させようとしても,処理速度を高速化する限界が見えはじめていた.そんな中,脱FPNを行い更なる高速化を実現するアプローチの1つとして,膨張畳み込みをFPNの代わりに用いる高速化アプローチ (YOLOF [Chenm et al., 2021]1など)も登場してきている.よって「物体検出など各種タスク向けのCNNバックボーンでは,後ろにFPNもつけるのが標準的」という近年の傾向が,今後変わる可能性も出てきていることを最後に付け加えておきたい(2021年5月現在).
References
- [Chenm et al., 2021] Qiang Chenm, Yingming Wang, Tong Yang, Xiangyu Zhang, Jian Cheng, and Jian Sun. You Only Look One-level Feature. CVPR 2021
- [Dalal and Triggs, 2005] N. Dalal, B. Triggs. Histograms of oriented gradients for human detection, In CVPR, 2005.
- [Dollar et al., 2009] Dollar, P., Tu, Z., Perona, P., Belongie, S.: Integral channel features. In BMVC, 2009.
- [Dollar et al., 2010] Dollár, P., Belongie, S, and Perona, P.: The fastest pedestrian detector in the west. In BMVC, 2010.
- [Lin et al., 2017] Tsung-Yi Lin, Piotr Dollar, Ross Girshick, Kaiming He, Bharath Hariharan, and Serge Belongie. Feature pyramid networks for object detection. In CVPR, 2017
- [Liu et al., 2016] Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, Scott Reed, Cheng-Yang Fu, and Alexander C Berg. SSD: Single shot multibox detector. In ECCV, 2016.
- [Liu et al., 2018] Shu Liu, Lu Qi, Haifang Qin, Jianping Shi, and Jiaya Jia. Path aggregation network for instance segmentation. CVPR, 2018.
- [Ronnebergeret al.,2015] O. Ronneberger, P. Fischer, and T. Brox. U-Net: Convolutional networks for biomedical image segmentation. MICCAI, 2015
- [Tan et al., 2020] Mingxing Tan, Ruoming Pang, and Quoc V Le. EfficientDet: Scalable and efficient object detection. CVPR, 2020.
- [Yu et al., 2018] Fisher Yu, Dequan Wang, Evan Shelhamer, Trevor Darrell. Deep layer aggregation. CVPR, 2018.
外部参照リンク
- Toward Data Science: Review: FPN — Feature Pyramid Network (Object Detection); Surpassing Single-Model Entries Including COCO Detection Challenges Winners, G-RMI and MultiPathNet
- Paper with code: Feature Pyramid Network
- Paper with code: Path Aggregation Network of Instance Segmentation
- Yusuke Uchida: You Only Look One-level Featureの解説と見せかけた物体検出のよもやま話