基本的
Fast Rcnn の主な手順は次のとおりです。
- SR アルゴリズムを使用して候補領域を生成する
- VGG16ネットワークを使用した特徴抽出
- 最初のステップで生成された候補領域を使用して、特徴マップ内の対応する特徴行列を取得します。
- ROI プーリングを使用して特徴行列を同じサイズにスケールし、平坦化して予測結果を取得します
RCNN に関連した最適化
主な改善点は3つあります
- 特徴抽出などの一連の操作のために各候補領域を次々と CNN ネットワークに投入するのではなく、画像全体をネットワークに入力して特徴マップを取得します。次に、元の画像内の候補領域を使用して、特徴マップ内の対応する領域を平坦化し、予測結果を取得します。
- 画像を強制的に拡大縮小する必要はなくなりました。ROI プーリングを使用して画像を同じサイズに拡大縮小する必要があります。
- 分類に SVM を使用する代わりに、softmax が使用されます。
最適化の重要性
- 最初の最適化ポイントでは、
画像が畳み込みネットワークを 1 回通過するだけで済むため、多くの演算が削減されますが、特徴マップの各候補領域については、全結合層が各候補に対して演算を実行する必要があります。アルゴリズムの作成者は SVD を使用して処理を高速化します。 - ROI プーリングの 2 番目の利点
は、トレーニングの処理速度を向上させ、スケーリングの問題をより適切に解決できることです。 - 3つ目の最適化ポイント
- 分類損失をネットワーク トレーニング プロセス全体に組み込むことで、RCNN と比較してディスク容量の使用量が削減されます。
- 全結合層には 2 つのブランチがあり、1 つはソフトマックス分類用、もう 1 つは位置回帰用です。
- L ( p , u , tu , v ) = L cls ( p , u ) + λ [ u ⩾ 1 ] L loc ( tu , v ) L(p,u,t^u,v)=L_{ cls} を構築します。
(p,u)+\lambda[u\geqslant 1]L_{loc}(t^u,v)L ( p ,あなた、tあなた、v )=Lクラス_ _( p ,う)+λ [ u⩾1 ] Lロック_( tあなた、v )
およびL cls(p,u) = − log(p,u) L_{cls}(p,u)=-log{(p,u)}Lクラス_ _( p ,う)=− l o g ( p ,u )は分類損失、p は予測確率、u は真のラベルです。
λ [ u ≥ 1 ] L loc ( tu , v ) \lambda[u \ge 1]L_{loc}(t^u,v)λ [ u≥1 ] Lロック_( tあなた、v )は位置損失、v は予測されたオフセットおよびスケーリング係数、tut^utu は、実際の候補フレームと実際のフレームの間のオフセットおよびスケーリング係数であり、RCNN と一致します。
前の係数λ [ u ≥ 1 ] \lambda[u \ge 1]λ [ u≥1]は、候補領域が背景であるか物体であるかを判定するために使用される。背景の場合は計算されませんが、オブジェクトの場合は回帰が計算されます。
ここで、
L loc ( tu , v ) = ∑ i ϵ { x , y , w , h } スムーズ L 1 ( tiu − vi ) L_{loc}(t^u,v)=\sum_{i\epsilon \{x 、y、w、h\}}スムーズ_{L_1}(t_i^u-v_i)Lロック_( tあなた、v )=∑i ϵ { x 、y 、w 、h }滑らかです_ _ _L1( t私あなた−v私は)
スムーズ L 1 ( x ) = { 0.5 x 2 ∣ x ∣ < 1 ∣ x ∣ − 0.5 それ以外の場合、smooth_{L_1}(x)=\left\{\begin{matrix}0.5x^2\ \ \ \ \ \ if\ |x|< 1\\|x|-0.5\ \ それ以外の場合\end{行列}\right。滑らかです_ _ _L1( × )={ 0.5倍_2 if∣x∣ <1∣ × ∣−0.5その他の場合_ _ _ _