オムライスの備忘録

数学・統計学・機械学習・プログラミングに関することを記す

【深層学習】Fast R-CNN

yhayato1320.hatenablog.com

Index

Fast R-CNN

R-CNN の問題

R-CNN は、ネットワークの順伝播の計算を提案された物体領域ごとに行う必要があるため、
検出速度が遅いという問題点があった.

yhayato1320.hatenablog.com

そこで、1 回計算した特徴マップをすべての「提案された物体領域」で再利用することで、
R-CNN を高速化させた Fast R-CNN が提案された.

ネットワークアーキテクチャ

  1. 物体領域候補を提案.
  2. CNN で特徴マップを計算して取得.
  3. 領域候補に対応する特徴を取得.
  4. 特徴から物体のクラス / BBを予測





R-CNN と同様、Fast R-CNN は、選択的検索法を利用して、物体領域候補を計算しておく必要がある.

yhayato1320.hatenablog.com

次に、画像を CNN に入力し、特徴マップを計算する.

続いて、提案された各領域の特徴量を計算することになるが、Fast R-CNN では、
画像全体の特徴マップを活用して、CNN の部分の計算を省略することで、高速化している.

物体領域候補の特徴量の計算

物体領域候補の幅と高さはまちまちなので、各領域候補の特徴マップの大きさもまちまちになる.

しかし、後続の処理の全結合層は、決まった大きさのベクトルしか入力できない.

そこで、RoI / Region of Interest Pooling 層を利用して、 大きさの異なる特徴マップを一定の大きさのベクトルに変換できる.

yhayato1320.hatenablog.com

RoI Pooling 後のベクトルは、全結合層を通じて、特徴ベクトルに変換される.

クラスの予測

特徴ベクトルは、 N_{c} 次元の事後確率のベクトル  p\ =\ (p^{0},\ \cdots,\ p^{N_c})^{T} を領域候補ごとに出力する.

BB の予測

BB への回帰ネットワークは、クラスごとに、BB の相対的な位置と大きさ  v\ =\ (v_x,\ v_y,\ v_w,\ v_h)^{T} を領域候補ごとに出力する.

学習方法

マルチタスク損失 / Multi Task Loss

Fast R-CNN では、物体認識と BB の回帰を同時に学習するために、
正解 BB (GT) ごとに計算されるマルチタスク損失 / Multi Task Loss を最適化することで、パラメータを推定する.

各正解 BB (GT) に、
下の式で変換された相対的な位置と大きさ  t\ =\ (t_x,\ t_y,\ t_w,\ t_h)^{T}
ラベル  u が付与されているとする.


\begin{align}
t_x&=\displaystyle \frac{g_x\ -\ r_x}{r_w} \\
\\
t_y&=\displaystyle \frac{g_y\ -\ r_y}{r_h} \\
\\
t_w&=\log \left( \displaystyle \frac{g_w}{r_w} \right) \\
\\
t_h&=\log \left( \displaystyle \frac{g_h}{r_h} \right)
\end{align}



このとき、マルチタスク損失は、下の式のように定義する.

マルチタスク損失

 J(p,\ u,\ v,\ t)\ =\ J_{cls}(p,\ u)\ +\ \lambda \cdot\ f(u)\ \cdot\ J_{loc}(v,\ t)



ここで、


f(u)\ =\ \left\{

\begin{array}{ll}
1 & u \geq 1 \\
0 & else
\end{array}

\right.



として、

[tex: J{cls}] は、物体認識の損失、[tex: J{loc}] は、BB の回帰の損失としている.

 \lambda は、2 つの損失のバランスをとるハイパーパラメータ.



物体認識の損失

物体認識の損失は、下の式のように、真のクラス  u に対する事後確率  p^{u} の負の対数で計算する.

 J_{cls}(p,\ u)\ =\ - \log p^{u}

BB の損失

BB の損失は、下の式のように計算する.

 
\DeclareMathOperator*{\smooth}{smooth}
\begin{align}
J_{loc}(v,\ t)&=\displaystyle \sum_{i\ \in\ \{ x,\ y,\ w,\ h \}} \smooth_{L_1} (t_i\ -\ v_{i}) \\
\\
\smooth_{L_1} (x)&=

\left\{
\begin{array}{ll}
0.5\ x^{2} & |x|\ <\ 1 \\
|x|\ -\ 0.5 & else
\end{array}
\right.

\end{align}



下の式は、ロバスト L1 損失で、L2 損失よりも外れ値に頑健になっている.

最適化

ミニバッチによる確率的勾配降下法により求められる.

yhayato1320.hatenablog.com

ミニバッチに利用する訓練データには、選択された  N 枚の画像から、
 R 個の BB を選ぶ.

ネットワークの CNN 部分についての順伝播の計算は、画像ごとに計算しなければならないことを考えると
画像枚数  N を大きくするほど時間がかかってしまう.

そこで、なるべく同じ画像から得られる BB で 1 つのミニバッチを構成するようにして、
(つまり、 N を小さく、  R を大きくして)
特徴マップを使いまわすことで計算の効率化を行う.

参考

書籍