数学がわからない

日々の勉強をアウトプットする。

論文"Objects as Points"を読む(3)

gyokan.hatenablog.com

の続きです。

"3. Preliminary" を読む

入出力とネットワーク

 I \in R^{W \times H \times 3}を、幅W、高さHの入力画像とする。


我々の目的は、キーポイントヒートマップ\hat{Y} \in [0,1]^{W/R \times H/R \times C}(ここでRは出力ストライド、Cはキーポイントタイプの数)を生成することです。


キーポイントタイプには、人間の姿勢推定[4, 55]における人間の関節(C = 17)、または物体検出[30,61]における物体カテゴリ(C = 80)が含まれます。


我々は、文献[4,40,42]のデフォルト出力ストライドR = 4を使用します。出力ストライドは、係数Rによって出力予測をダウンサンプリングします。


予測 \hat{Y}_{x,y,c} = 1は検出されたキーポイントに対応する一方、 \hat{Y}_{x,y,c} = 0は背景である。


画像Iから \hat{Y}を予測するために、次に示すいくつかの異なる完全畳み込み符号化-復号化器ネットワーク(fully-convolutional encoder-decoder networks)を使用します。

  • A stacked hourglass network [30,40]
  • upconvolutional residual networks (ResNet) [22,55]
  • deep layer aggregation (DLA) [58]

本稿が作ろうとしているのは、入力画像から抽出したい対象の数のヒートマップを出力する処理です。

f:id:rettouseinosugakubenkyo:20190615145606p:plain

レーニン

Law and Deng [30]に従って、キーポイント予測ネットワークをトレーニングします。

本段落は、トレーニングについてです。まず、文献[30]に従ってトレーニングするということなので、読む必要があるかもしれません。ここでは、概要だけ引用しておきます。

[30] H. Law and J. Deng. Cornernet: Detecting objects as paired keypoints. In ECCV, 2018.

【提案する手法】
我々は、単一の畳み込みニューラルネットワークを使用して、オブジェクトバウンディングボックスを一対のキーポイント、左上隅および右下隅として検出する、オブジェクト検出の新しいアプローチである"CornerNet”を提案する。


【解決する問題】
一対のキーポイントとして物体を検出することによって、我々は従来のone-stage検出器で一般的に使用されているアンカーボックスのセットを設計する必要性を排除する。


【コーナープーリング】
私たちの新しい定式化に加えて、私たちはネットワークがコーナーをよりよくローカライズするのを助ける新しいタイプのプーリング層である"コーナープーリング"を紹介します。


【他の手法との比較】
実験により、CornerNetはMS COCOで42.2%APを達成し、既存のすべてのone-stage検出器よりも優れていることがわかりました。


本段落では、続いて、学習で用いる正解データの作り方が述べられています。

【キーポイントをヒートマップに展開】
クラスcの各グランドトゥルースキーポイント p \in \mathcal{R}^2について、低解像度の等価物 \tilde{p}=\lfloor \frac{p}{R} \rfloorを計算する。


次に、ガウスカーネルY_{xyc} = exp \left(−frac{(x−\tilde{p}_x)^2 + (y−\tilde{p}_y)^2}{2\sigma^2_p}\right)を用いて、すべてのグラウンドトゥルースキーポイントをヒートマップY \in [0, 1]^{frac{W}{R} \times \frac{H}{R} \times C}上に展開します。ここで、\sigma_pはオブジェクトサイズに適応した標準偏差[30]です。


同じクラスの2つのガウス分布が重なっている場合は、要素ごとの最大値を取ります[4]。

オブジェクト検出のグランドトゥルースは「座標」で与えられているので、本手法のネットワークの出力形式である「ヒートマップ」に変換する必要があります。ここで行っているのは、

とのことです。


続いて、学習の目的関数について述べられています。

【目的関数】
The training objective is a penalty-reduced pixelwise logistic regression with focal loss [33]:
レーニングの目的関数は、次式で表されるfocal loss[33]を用いる、ペナルティを削減したピクセル単位ロジスティック回帰です。


 
\begin{align}
L_k
=\frac{-1}{N} \sum_{xyc} \left\{ 
\begin{array}{}
(1-\hat{Y}_{xyc})^\alpha log(\hat{Y}_{xyc}) & if \  Y_{xyc}=1 \\
(1-Y_{xyc})^\beta(\hat{Y}_{xyc})^\alpha log(1 - \hat{Y}_{xyc}) & otherwise
\end{array} 
\right.
\end{align}
\tag{1}


ここで、αとβはfocal lossのハイパーパラメータ[33]、Nは画像Iのキーポイントの数です。Nによる正規化は、すべての正のfocal lossインスタンスを1に正規化するように選択されます。 我々はLaw and Deng [30]に従い、すべての実験でα = 2, β= 4を用います。

用いている損失関数はfocal lossとのことで文献[33]が引用されています。

[33] T.-Y. Lin, P. Goyal, R. Girshick, K. He, and P. Dollar. ´ Focal loss for dense object detection. ICCV, 2017.

【問題:one-stage検出器の精度】
今日までの最高精度の物体検出器は、R-CNNによって普及しているtwo-stageアプローチに基づいており、分類器は候補物体位置のまばらなセットに適用されます。


対照的に、可能性のある物体位置の規則正しい高密度サンプリングにわたって適用されるone-stage検出器は、より速くより簡単になる可能性を有しますが、これまでのところtwo-stage検出器の精度に追従してきています。


【問題の原因:前景 - 背景クラスの不均衡】
本稿では、なぜそうであるのかを調査します。我々は、高密度検出器の訓練中に遭遇する極端な前景 - 背景クラスの不均衡が中心的な原因であることを発見しました。


【提案:"Focal Loss"】
このクラスの不均衡に対処するために、標準的なクロスエントロピー損失を再変形して、十分に分類された例に割り当てられている損失の重みが低下するようにします。


私たちの新しい"Focal Loss"は、稀少な困難例のセットにトレーニングを集中させ、膨大な数のイージーネガティブがトレーニング中の検出器を圧倒することを防ぎます。


【評価実験】
私たちの損失の有効性を評価するために、私たちはRetinaNetと呼ぶ単純な高密度検出器を設計し訓練します。


私たちの結果は、focal lossでトレーニングを行った場合、RetinaNetは既存の最先端のtwo-stage検出器すべての精度を上回る一方で、以前のone-stage検出器の速度と一致させることができることを示しています。


コードはhttps://github.com/facebookresearch/Detectronにあります。

つまり、"focal loss"は学習データ内のクラスの不均衡に対処するために提案された損失関数で、one-stage検出器の速度、two-stage検出器の精度を両立させるほどの効果があるそうです。

出力ストライドによって引き起こされる離散化誤差を回復するために、我々はさらに各中心点について局所的オフセット\hat{O} \in \mathcal{R}^{\frac{W}{R} \times \frac{H}{R} \times 2}を求める。すべてのクラスcは同じオフセット予測を共有します。オフセットは次式に示すL1損失でトレーニングされています。



\begin{align}
L_{off}=\frac{1}{N} \displaystyle \sum_p \|\hat{O}_\hat{p} - (\frac{p}{R} - \tilde{p}) \|.
\end{align}
\tag{2}


supervisionはキーポイント位置\tilde{p}においてのみ作用し、他の全ての位置は無視されます。

出力であるヒートマップは入力画像やグランドトゥルースで与えられたキーポイントに対し、解像度が出力ストライドR分粗くなっているので、それを回復するための訓練を行うとの事。

次のセクションでは、このキーポイント推定器を汎用のオブジェクト検出器に拡張する方法を説明します。

本セクションの内容も汎用かと思うのですが、どうなんでしょう。

まとめ

論文"Objects as Points"を読み進めました。"3. Preliminary"までで、次は"4. Objects as Points"になります。