数学がわからない

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

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

gyokan.hatenablog.com
の続きです。

"4. Objects as Points"

バウンディングボックスとキーポイントの関係】

 (x_1^{(k)}, y_1^{(k)}, x_2^{(k)}, y_2^{(k)})を、カテゴリc_kを有するオブジェクトkのバウンディングボックスとしましょう。その中心点はp_k=(\frac{x_1^{(k)}+x_2^{(k)}}{2},\frac{y_1^{(k)}+y_2^{(k)}}{2})です。我々はキーポイント推定量\hat{Y}を使ってすべての中心点を予測します。

バウンディングボックスは矩形の開始点と終点(左上と右下)、その中心がキーポイントです。本稿で説明されている手法は、つまりバウンディングボックスの中心を求めるものです。

説明するまでもない簡単なことかもしれませんが、丁寧に明記してくれています。


【サイズに関する損失関数】

さらに、各オブジェクトkについて、オブジェクトサイズs_k = (x^{(k)}_2-x^{(k)}_1,y^{(k)}_2-y^{(k)}_1)を回帰します。


計算上の負担を制限するために、我々は全てのオブジェクトカテゴリに対して単一サイズの予測\hat{S} \in \mathcal{R}^{\frac{W}{R}\times\frac{H}{R}\times 2}を使用します。


目的2と同様に、中心点でのL1損失として次式を使用します。



\begin{align}
L_{size} = \frac{1}{N} \sum_{k=1}^{N} \|\hat{S}_{pk} - s_k \| . 
\end{align}
\tag{3}

オブジェクトサイズについても損失関数を考えています。
各オブジェクトのサイズはバウンディングボックスの右下座標から左上座標を引くことで求めることができます。これと推論結果の差分絶対値が損失になる、というのが式(3)です。

ここでは、「全てのオブジェクトカテゴリに対して単一サイズの予測\hat{S} \in \mathcal{R}^{\frac{W}{R}\times\frac{H}{R}\times 2}を使用します。」とありますが、よく意味が分かりませんでした。単に、カテゴリごとにサイズ定義を変えることはしない、という意味でしょうか。

また、\mathcal{R}^{\frac{W}{R}\times\frac{H}{R}\times 2}は、\hat{O}, \hat{S}\frac{W}{R}\times\frac{H}{R}\times 2次元の実数ということだと思います。つまりサイズ\frac{W}{R}\times\frac{H}{R}のヒートマップ中の各画素について、縦横ふたつの値を推論するということと理解しました。

スケールを正規化せず、そのままのピクセル座標を直接使用します。代わりに、損失を定数λ_{size}でスケーリングします。


全体的なトレーニング目的は、



\begin{align}
L_{det} = L_k + \lambda_{size}L_{size} + \lambda{off}L_{off} . 
\end{align}
\tag{4}


となります。特に指定しない限り、すべての実験で\lambda_{size} = 0.1および\lambda_{off} = 1に設定します。

最終的に学習に用いる関数が、求めるオブジェクトの位置を表すヒートマップに関する損失(式1)、解像度の違いを補正するオフセットに関する損失(式2)、オブジェクトのサイズに関する損失(式3)を組み合わせた式4です。

我々はキーポイント\hat{Y}、オフセット\hat{O}、およびサイズ\hat{S}を予測するために単一のネットワークを使用します。


ネットワークは各ロケーションで合計C + 4の出力を予測します。


すべての出力は共通の完全畳み込みバックボーンネットワーク(fully-convolutional backbone network)を共有します。


各モダリティについて、バックボーンの特徴は、それから、別々の3×3畳み込み、ReLUおよび別の1×1畳み込みを通過する。

ここで言っているのは次のようなネットワークです。

  • 一つの画像を入力すると、C枚のキーポイント画像、縦横2枚のオフセット画像、縦横2枚のサイズ画像、系C+4枚の出力画像を生成する
  • ネットワークは、完全畳み込みバックボーンネットワーク(fully-convolutional backbone network)

完全畳み込みバックボーンネットワーク(fully-convolutional backbone network)について、「各モダリティについて、バックボーンの特徴は、それから、別々の3×3畳み込み、ReLUおよび別の1×1畳み込みを通過する。」の意味は良く分かりません。ここでは放置して読み進めます。

図4にネットワーク出力の概要を示します。


図4:さまざまなタスクに対する私たちのネットワークの出力:

  • 上がオブジェクト検出用
  • 中央が3Dオブジェクト検出用
  • 下が姿勢推定用

すべてのモダリティは、ReLUによって分離された異なる3×3および1×1の出力畳み込みからなる、共通のバックボーンから生成されます。括弧内の数字は出力チャンネルを示します。詳細はセクション4をご覧ください。

論文では、図4にネットワーク出力の概要が示されています。
本文中のC+4出力のネットワークはオブジェクト検出用であり、3Dオブジェクト検出時は3Dサイズ3枚、depth1枚、orientation8枚、計12枚の画像を出力するネットワークになるようです。

「すべてのモダリティは、ReLUによって分離された異なる3×3および1×1の出力畳み込みからなる、共通のバックボーンから生成されます。」とは、これらオブジェクト検出、3Dオブジェクト検出、姿勢推定のことをモダリティと呼び、それらのモダリティが出力層(あるいは複数の層?)を除いて共有のネットワーク層(バックボーン)を使うことができるということでしょうか?

セクション5と補足資料には、追加のアーキテクチャの詳細が含まれています。

詳細を理解するには、とりあえず読み進めていくしかなさそうです。

まとめ

"4. Objects as Points"を読み始めました。4章はこのあと、"From points to bounding boxes"、"4.1. 3D detection"、"4.2. Human pose estimation"と続いており、またもしかしたら補足資料(Appendix)を読まないと理解できないこともあるかもしれず、まだまだ先は長そうです。

論文"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"になります。

論文"Objects as Points"を読む②

gyokan.hatenablog.com

の続きです。

"2. Related work "を読む

 関連研究がたくさん出てきます。

Object detection by region classification. (領域分類による物体検出)

最初に成功したディープオブジェクトディテクタの1つであるRCNN [19]は、多数の領域候補[52]からオブジェクトの位置を列挙し、それらを切り取り、ディープネットワークを使用してそれぞれを分類します。


Fast-RCNN [18]は代わりに計算を節約するために画像特徴を切り取ります。


ただし、どちらの方法も低速の低レベルの領域提案(region proposal)方法に依存します。

f:id:rettouseinosugakubenkyo:20190615064221p:plain

Object detection with implicit anchors. (暗黙的アンカーを用いたオブジェクト検出)

より速いRCNN [46]は検出ネットワーク内で領域提案を生成する。


低解像度の画像グリッドの周囲の固定形状の境界ボックス(アンカー)をサンプリングし、それぞれを「前景かどうか」に分類します。
アンカーは、何らかのグラウンドトゥルースオブジェクトとのオーバーラップが0.7以上で前景、0.3未満で背景とラベル付けされ、そうでなければ無視されます。


生成された各領域提案は再び分類されます[18]。提案分類子(proposal classifier)をマルチクラス分類に変更すると、1段階検出器の基礎が形成されます。


1段検出器に対するいくつかの改善は、アンカー形状プライア[44, 45]、異なる特徴分解能[36]、および異なるサンプル間の損失の再重み付け[33]を含みます。

f:id:rettouseinosugakubenkyo:20190615065338p:plain

我々のアプローチは、アンカーベースの1段階アプローチ[33, 36, 43]と密接に関係しています。中心点は、単一の形状にとらわれないアンカーと見なすことができます(図3を参照)。ただし、いくつか重要な違いがあります。

まず、私たちのCenterNetはボックスの重なり(box overlap)[18]ではなく、単に位置に基づいて「アンカー」を割り当てます。前景と背景の分類のための手動のしきい値[18]はありません。


次に、オブジェクトごとにポジティブな「アンカー」が1つだけあるため、NonMaximum Suppression(NMS)[2]は必要ありません。キーポイントヒートマップ[4, 39]で単純に局所ピークを抽出します。

第3に、CenterNetは、従来の物体検出器[21、22](出力ストライド16)と比較して、より大きい出力解像度(出力ストライド4)を使用します。これにより、複数のアンカー[47]が不要になります。

f:id:rettouseinosugakubenkyo:20190615070832p:plain

Object detection by keypoint estimation. (キーポイント推定による物体検出)

物体検出にキーポイント推定を使用したのは、私たちが最初ではありません。
CornerNet [30]は2つのバウンディングボックスの角をキーポイントとして検出し、ExtremeNet [61]はすべてのオブジェクトの上、左、下、右端、および中心点を検出します。
これらの方法はどちらも、私たちのCenterNetと同じロバストなキーポイント推定ネットワーク上に構築されています。
しかしながら、それらは、キーポイント検出の後に組み合わせグループ化段階を必要とし、それは各アルゴリズムを著しく遅くする。
一方、私たちのCenterNetは、グループ化や後処理を必要とせずに、オブジェクトごとに1つの中心点を単純に抽出します。

f:id:rettouseinosugakubenkyo:20190615071305p:plain

Monocular 3D object detection. (単眼3Dオブジェクト検出)

3Dバウンディングボックスの推定は、自動運転を促進します[17]。


Deep3Dbox [38]は、最初に2Dオブジェクト[46]を検出し、次に各オブジェクトを3D推定ネットワークに入力することで、slow-RCNN [19]スタイルのフレームワークを使用します。

3D RCNN [29]は、Faster-RCNN [46]に追加頭部を加え、その後に3D投影を追加します。

Deep Manta [6]は、多くのタスクについて訓練された、coarse-to-fine Faster-RCNN [46] を使います。

私たちの方法は、Deep3Dbox [38]または3DRCNN [29]の1段階バージョンに似ています。そのため、CenterNetは他の競合方式よりもはるかに単純で高速です。

f:id:rettouseinosugakubenkyo:20190615063449p:plain

まとめ

"Objects as Points"の"2. Related work "を読みました。というより、たくさんの文献が引用されているのでその関係を図にまとめてみました。

論文"Objects as Points"を読む①

Abstract を読む

【背景】
検出(Detection)は、オブジェクトを画像内の、軸に沿ったボックス(axis-aligned boxes)として識別します。最も成功している物体検出器は、潜在的な物体位置のほぼ網羅的なリストを列挙し、それぞれを分類します。これは無駄で、非効率的で、追加の後処理が必要です。


【提案手法】
このホワイトペーパーでは、異なるアプローチを取ります。オブジェクトを単一の点、つまりそのバウンディングボックスの中心点として、モデル化します。私達の検出器はキーポイント推定を使用して中心点を見つけ、他のすべてのオブジェクトのプロパティ(サイズ、3D位置、オリエンテーション、さらにはポーズなど)を回帰します。


【提案手法の効果】
我々の中心点ベースのアプローチであるCenterNetは、対応するバウンディングボックスベースの検出器よりも、エンドツーエンドで区別可能で、単純で、高速で、そしてより正確です。

  • CenterNetは、MS COCOデータセットで最高の速度と精度のトレードオフを達成し、142 FPSで28.1%AP、52 FPSで37.4%AP、1.4 FPSでマルチスケールテストで45.1%APとなります。
  • 同じアプローチを使用して、KITTIベンチマークの3D境界ボックスとCOCOキーポイントデータセットに対する人間の姿勢を推定します。私達の方法は洗練された多段階方法と匹敵し、実時間で動作します。

バウンディングボックスの中心点を見つけるというシンプルなオブジェクト検出とのこと。

従来手法よりも軽いところがポイント。実用上、点での位置が分かればよいという物体検出は多く、それを高速に行えるなら非常に役立ちそう。

最近抱えている課題に使えそうなのでその周辺技術も含めて勉強を進めたい。

"1. Introduction "を読む

オブジェクト検出とは

オブジェクト検出(Object detection)は、次のような多くの視覚タスクを強化します。

  • インスタンスセグメンテーション(instance segmentation) [7, 21, 32]
  • 姿勢推定(pose estimation) [3, 15, 39]
  • 追跡(tracking) [24, 27],
  • 行動認識(action recognition) [5]


オブジェクト検出は、次のようなアプリケーションに用いられている。

  • 監視(surveillance)[57]、
  • 自動運転(autonomous driving)[53]
  • 視覚的質問応答(visual question answering)[1]

まず関連する技術とアプリケーションについて。かなり多くの参考文献が挙げられています。

現在のオブジェクト検出

【オブジェクト検出の基本フロー】

  • 現在のオブジェクト検出器は、オブジェクトをしっかりと囲む軸合わせバウンディングボックス(axis-aligned bounding box)を通して、各オブジェクトを表現します[18, 19, 33, 43, 46]。
  • そして、オブジェクト検出を、膨大な数の潜在的オブジェクトバウンディングボックスの画像分類へと置き換えます。
  • バウンディングボックスについて、分類器は、画像コンテンツが特定のオブジェクトか背景かを決定します。


【One-stage検出器とTwo-stage検出器】

  • 1段(One-stage)検出器[33, 43]は、アンカーと呼ばれるバウンディングボックス候補の複雑な配置を画像上でスライドさせ、ボックスコンテンツを特定することなく直接分類を行います。
  • 2段階(Two-stage)検出器[18, 19, 46]は各ボックス候補について画像特徴を再計算し、次いでそれらの特徴を分類する。

現在のオブジェクト検出の基本的なフローを、オブジェクトをバウンディングボックスで表現し、バウンディングボックスごとに分類を行うというものとして紹介しています。

分類については、直接分類を行うOne-stage検出器と、特徴計算を行って分類を行うTwo-stage検出器の二つに分けて紹介しています。

後処理

後処理、すなわち非最大値抑制は、次に、境界ボックスIoUを計算することによって、同じインスタンスについて重複した検出を削除します。


この後処理は、区別して訓練するのが難しく[23]、したがって、ほとんどの現在の検出器はエンドツーエンドで訓練可能ではありません。


それにもかかわらず、過去5年間にわたって[19]、このアイデアは良い経験的成功を達成しています[12,21,25,26,31,35,47,48,56,62,63]。

後処理として紹介されているのは「非最大値抑制」です。これは同じ対象を識別しているのに僅かに違う境界ボックスが生じている状態(検出の重複)を解消する処理と理解しました。

ここでIoU(Intersection over Union)とは、[tex:IoU=frac{TP}{TP \cap TN \cap FN}で、境界ボックス内のオブジェクトの占める割合を示すようです。オブジェクトの占める割合が最大になるもの以外を削除すれば非最大値抑制できる、ということでしょうか。

実際同じような課題に取り組んでいると良く発生するし、解消が本質的な課題ではないのに面倒という厄介な問題です。

ここでは特に、エンドツーエンドで訓練不可能なことを問題としているようです。

スライディングウィンドウ(Sliding window)ベースのオブジェクト検出器の問題点

スライディングウィンドウ(Sliding window)ベースのオブジェクト検出器は、しかしながら少し無駄が多いです。有り得る全てのオブジェクトの位置および寸法を列挙する必要があるためです。

スライディングウィンドウ(Sliding window)ベースという言葉が初めて出てきましたが、
googleの検索で"algorithm", "python", "機械学習"などをつけて検索すると、関係する文献が出てきます。固定領域をウィンドウとして固定のピクセルずつ移動しながら候補領域を抽出する方法です。

上述されたオブジェクト検出では、バウンディングボックスをこのスライディングウィンドウ方式で動かして、オブジェクト検出を行います。

従来方式の問題はこのスライディングウィンドウ方式にあって、真面目に細かく計算していく、特に工夫がない方法なので無駄が多いです。

本稿の提案

本稿では、はるかに単純で効率的な方法を紹介します。


我々は、オブジェクトをバウンディングボックスの中心の1点で表します(図2を参照)。


オブジェクトのサイズ、寸法、3D範囲、向き、ポーズなどの他のプロパティは、中心位置の画像特徴から直接回帰されます。


従って、物体検出は標準的なキーポイント推定問題です[3,39,60]。


我々は単純に入力画像を完全畳み込みネットワークに与え、完全畳み込みネットワークはヒートマップを生成します。


このヒートマップのピークはオブジェクト中心に対応します。各ピークでの画像の特徴は、オブジェクトのバウンディングボックスの高さと重さを予測します。


このモデルは標準的な密度教師あり学習(dense supervised learning [39,60])を使用して学習します。


推論は、ネットワークフォワードパスであり、非極大抑制を後処理に必要としません。

【物体の表現方法】
従来は物体をしっかり囲むバウンディングボックスを考え、その中で特徴を検出したり物体を分類したりするものだったのに対し、本稿で述べているのは、次のようなものです。

  • 物体検出は標準的なキーポイント推定問題[3,39,60]
    • オブジェクトをバウンディングボックスの中心の1点で表現
    • オブジェクトのサイズ、寸法、3D範囲、向き、ポーズなどの他のプロパティは、中心位置の画像特徴から直接回帰

バウンディングボックスが中心の1点になっています。プロパティを直接回帰というのは現時点ではイメージわきません。読み進める必要があるでしょう。

問題としていたスライディングウィンドウの無駄については次のような方法で解決されています。

  • 入力画像を完全畳み込みネットワークに与え、完全畳み込みネットワークはヒートマップを生成
    • ヒートマップのピークはオブジェクト中心に対応
    • 各ピークでの画像の特徴は、オブジェクトのバウンディングボックスの高さと重さを予測
    • このモデルは標準的な密度教師あり学習(dense supervised learning [39,60])を使用して学習

つまり、画像の中をスライディングウィンドウを用いて真面目に計算していくのではなく、画像一枚をCNNに与えれば答えがヒートマップという形で出力される、という方法です。

CNNの中ではスライディングウィンドウと同じように領域ごとの計算を行っていると思うのですが、それを細かく開発者が考えるのではなくCNNに任せて隠蔽されるといったところでしょうか。非極大抑制もまとめて行われます。

実験

私たちの方法は一般的であり、わずかな努力で他のタスクに拡張することができます。


我々は、各中心点で追加の出力を予測すること(図4参照)による、3Dオブジェクト検出[17]と、多人数人間の姿勢推定[4]に関する実験を示します。


3Dバウンディングボックスの推定では、オブジェクトの絶対深度、3Dバウンディングボックスの寸法、およびオブジェクトの向きを回帰します[38]。


人間の姿勢推定のために、我々は中心からのオフセットとして2D関節位置を考慮し、中心点位置でそれらに直接回帰します。

本稿で行なわれた実験(タスク)は次の二つです。

  • 3Dオブジェクト検出[17]
    • オブジェクトの絶対深度、3Dバウンディングボックスの寸法、およびオブジェクトの向きを回帰[38]。
  • 多人数人間の姿勢推定[4]
    • 中心からのオフセットとして2D関節位置を考慮し、中心点位置でそれらに直接回帰

提案手法の効果

私たちの方法であるCenterNetは単純なので、非常に高速で実行することができます(図1)。


単純なResnet18とアップコンボリューションレイヤ[55]により、私たちのネットワークは142 FPS、28.1%のCOCOバウンディングボックスAPで動作します。


注意深く設計されたキーポイント検出ネットワークDLA34 [58]により、当社のネットワークは52 FPSで37.4%のCOCO APを達成します。


最先端のキーポイント推定ネットワーク、Hourglass-104 [30, 40]、およびマルチスケールテストを備えたこのネットワークは、1.4 FPSで45.1%のCOCO APを達成します。


3Dバウンディングボックス推定およびヒューマンポーズ推定では、より高い推論速度で最先端の技術と競争的に実行します。


コードは以下で入手可能です。https://github. com/xingyizhou/CenterNet.

性能評価です。高速性を売りにしており、FPSとAPにはトレードオフがあるようです。

なお、APとは"Average Precision"という評価指標のようです。ただ、28.1%や45.1%って高いのでしょうか? どこまでいくと高いと言えるのでしょうか? 気になるところですが調べ始めると時間が掛かりそうなので、今はおいておきます。

まとめ

論文"Objects as Points"を読み始めました。まずは"1.Introduction"までで、次は"2. Related work"を読みます。

論文を読む"Distilling the knowledge in a neural network."⑯

背景

「蒸留(Distillation)」に関して、論文"Ravi Teja Mullapudi, Online Model Distillation for Efficient Video Inference."を読んだ。
その中で引用されていたモデル蒸留のために広く使用されている技術の論文として、次の論文を読み進めている。

[18] G. Hinton, O. Vinyals, and J. Dean. Distilling the knowledge in a neural network. arXiv preprint arXiv:1503.02531, 2015.

前回まで

gyokan.hatenablog.com

"8 Discussion"を読む

Google翻訳した上で、自分の理解しやすいように修正しながら読んでいく。

蒸留が、アンサンブルから、または大規模な高度に正規化されたモデルから、より小さな蒸留モデルへ、知識を移すために非常にうまく働くことを、我々は示しました。


MNISTでは、蒸留モデルの学習に使用される転送セットに、1つ以上のクラスの例がない場合さえ、蒸留は非常にうまく機能します。


ディープアコースティックモデル(Androidの音声検索で使用されているバージョン)では、ディープニューラルネットのアンサンブルをトレーニングすることによって達成されるほぼすべての改善が、同じサイズの単一のニューラルネットに蒸留でき、それがずっと容易にデプロイできることを、我々は示しました。

本稿の最後の章ということで、これまでの内容の振り返りになります。

  • 本稿が示したこと
    • 蒸留が非常にうまく機能すること
      • MNIST:転送セットに、1つ以上のクラスの例がない場合の有効性
      • ディープアコースティックモデル:アンサンブルを単一のニューラルネットに蒸留可能

3章と4章の内容ですね。

真に大規模なニューラルネットワークでは、完全なアンサンブルを訓練することさえ不可能である場合もありますが、我々は、非常に長い間訓練された単一の真に大きなネットのパフォーマンスは、著しく改善されることがあり得ることを示しました。それぞれが非常に混乱しやすいクラスタ内のクラス間を識別することを学習する、多数の専門家ネットを学習することによって。


専門家の知識を単一の大きなネットに戻す蒸留ができることは、我々はまだ示していません。

  • アンサンブル訓練が不可能な巨大ネットワークの場合
    • 複数の専門家モデルを学習することで改善が可能
    • 蒸留はまだ

未解決課題もあるということで、この後、検討されたのでしょうか?

まとめ

論文"Distilling the knowledge in a neural network."の8章を読みました。"Distilling the knowledge in a neural network."はこれで終わりになります。

論文を読む"Distilling the knowledge in a neural network."⑮

背景

「蒸留(Distillation)」に関して、論文"Ravi Teja Mullapudi, Online Model Distillation for Efficient Video Inference."を読んだ。
その中で引用されていたモデル蒸留のために広く使用されている技術の論文として、次の論文を読み進めている。

[18] G. Hinton, O. Vinyals, and J. Dean. Distilling the knowledge in a neural network. arXiv preprint arXiv:1503.02531, 2015.

前回まで

gyokan.hatenablog.com

論文読解

Google翻訳した上で、自分の理解しやすいように修正しながら読んでいく。

7 Relationship to Mixtures of Experts(専門家の混合との関係)

データのサブセットに関して訓練された専門家を用いることは、mixtures of experts(専門家の混合)[6]に似ています。mixtures of expertsは、gating network(ゲートネットワーク)を使用して、各例を各専門家に割り当てる確率を計算する、というものです。


専門家が割り当てられた例を扱うことを学ぶと同時に、gating networkは、どの専門家をそれぞれの例に割り当てるかの選択を学んでいます。その例のための専門家の相対的な識別性能に基づいて。


エキスパートの識別性能を用いて学習された割り当てを決定することは、単純に入力ベクトルをクラスタリングし、各クラスタにエキスパートを割り当てるよりはるかに優れていますが、それはトレーニングの並列化を困難にします。


第一に、各エキスパートのための重み付きトレーニングセットは、全ての他のエキスパートに依存する方法における変化を維持し、そして第二に、ゲーティングネットワークは、割り当て確率をどのように修正するかを知るために、同じ例の異なるエキスパートのパフォーマンスを比較する必要があります。


これらの困難は、mixtures of experts が彼らが最も有益であろう領域でめったに使用されないということを意味しました:すなわち明確に異なるサブセットを含む巨大なデータセットを持つ課題です。

本稿が述べてきたジェネラリストモデルと専門家モデルを蒸留したモデルは、mixtures of experts(専門家の混合)[6]に似ているとのこと。

mixtures of expertsでは、エキスパートの識別性能を用いて割り当てを定める、というように、本稿で述べた蒸留の方法よりも手間をかけた手法で理論的に優れていそうだが、トレーニングの並列化が困難。

特に問題なのは、mixtures of expertsが理論的に一番効果を発揮しそうなのは膨大なデータセットを扱う課題なのに、並列化できないからとても使用に足るパフォーマンスが得られない、なので使われない、という。

複数の専門家のトレーニングを並列化する方がはるかに簡単です。


まずジェネラリストモデルをトレーニングし、次に混同マトリックスを使用して専門家がトレーニングするサブセットを定義します。


これらのサブセットが定義されると、専門家は完全に独立してトレーニングを受けることができます。


テスト時に、ジェネラリストモデルからの予測を使用して、どの専門家が関連性があり、実行する必要があるのはこれらの専門家のみであるかを判断できます。

結局、とりあえず実行できないと始まらないということでしょうか。

まとめ

論文"Distilling the knowledge in a neural network."の7章を読みました。

論文を読む"Distilling the knowledge in a neural network."⑭

背景

「蒸留(Distillation)」に関して、論文"Ravi Teja Mullapudi, Online Model Distillation for Efficient Video Inference."を読んだ。
その中で引用されていたモデル蒸留のために広く使用されている技術の論文として、次の論文を読み進めている。

[18] G. Hinton, O. Vinyals, and J. Dean. Distilling the knowledge in a neural network. arXiv preprint arXiv:1503.02531, 2015.

前回まで

gyokan.hatenablog.com

論文読解

Google翻訳した上で、自分の理解しやすいように修正しながら読んでいく。

6. Soft Targets as Regularizers(正則化器としてのソフトターゲット)

ハードターゲットの代わりにソフトターゲットを使用することに関する私たちの主な主張の1つは、単一のハードターゲットではエンコードできない可能性がある多くの有用な情報をソフトターゲットで運ぶことができるということです。


このセクションでは、我々は次のことを示します。これは非常に大きな効果があるということです。後述するベースラインスピーチモデルの85Mパラメータに適合する、はるかに少ないデータを使用することによって。


表5は、3%だけのデータ(約20Mの例)では、ハードターゲットでベースラインモデルをトレーニングすると、深刻な過剰適合が発生します(我々は早期停止しました。精度が44.5%に達した後、急激に低下したためです)。一方、同じモデルをソフトターゲットで訓練したものは、完全なトレーニングセット内のほぼすべての情報を回復できます(約2%低下)。

さらに注目すべきは、我々が早期停止をする必要がなかったことです:ソフトターゲットを用いたシステム、は単に57%に「収束」しました。これは、ソフトターゲットが、すべてのデータを用いてトレーニングされたモデルによって発見された規則性を、別のモデルへ伝達するための、非常に効果的な方法である、ことを示しています。

ソフトターゲットの有効性

ソフトターゲットを使って蒸留を行えば、ハードターゲット以上の情報を元のモデルから蒸留後のモデルに転送することができるとここでは言っているようです。

ソフトターゲットを用いて、学習に用いるデータ量を減少

具体的な例は表5を用いて説明されており、ここではソフトターゲットを用いれば、学習に用いるデータ数を減らせることを示しています。

  • ハードターゲットで少ないデータを用いた訓練では、深刻な過剰適合生じ、かつ収束しそうになかった(早期停止する必要があった)。
  • ソフトターゲットで同じデータを用いた訓練では、全てのデータを用いた訓練に近い精度に収束。

この収束したかどうかは、ちゃんと学習ができているかどうかを示しているため、非常に重要なのでしょう。

System & training set Train Frame Accuracy Test Frame Accuracy
Baseline (100% of training set) 63.4% 58.9%
Baseline (3% of training set) 67.3% 44.5%
Soft Targets (3% of training set) 65.4% 57.0%

表5:ソフトターゲットは、新しいモデルを、トレーニングセットのわずか3%から、より一般化することができます。ソフトターゲットは、フルトレーニングセットでの訓練によって取得されます。

ベースラインかつ3%では、訓練データに対する精度が向上し、テストデータに対する精度が著しく低下する、過剰適合が起きていることが分かります。

一方、ソフトターゲットでは、ベースラインかつ100%と比較するとテストデータに対する精度は落ちていますが、訓練データを100%から3%に下げたにしては充分高い精度を維持しているように思えます。

6.1 Using soft targets to prevent specialists from overfitting(6.1専門家がやり過ぎないようにソフトターゲットを使用する)

JFTデータセットの実験で我々が使用したスペシャリストは、それらの非専門クラスをすべて、単一のゴミ箱クラスにまとめました。


スペシャリストがすべてのクラスに対して完全なソフトマックスを持つことを許す場合、早期停止を使用するよりも、それらが過剰適合するのを防ぐより良い方法があるのかもしれません。


スペシャリストは、その専門クラスにおいて非常に充実したデータでトレーニングされます。これは、そのトレーニングセットの有効サイズがはるかに小さいことを意味し、そしてその専門クラスに過剰適合する強い傾向があります。


この問題は、スペシャリストをかなり小さくすることでは解決できません。そうすれば、非専門クラスのすべてをモデル化して得られた、非常に有効な転送効果を失うためです。

本論文の実験では、専門モデルの訓練の際、専門ではないクラスを一つにまとめて訓練していますが、もっとより良い方法があるのかもしれない、と考察しているようです。

我々の3%のスピーチデータを用いた実験は、次のことを強く示唆しています。すなわち、もしスペシャリストがジェネラリストの重みで初期化されれば、我々は非専門クラスに関する知識のほとんど全てを残すことができます。ハードターゲットを用いた訓練に加え、非専門クラスのためのソフトターゲットを用いた訓練を行うことで。


ソフトターゲットはジェネラリストによって提供されます。我々は現在、このアプローチを模索しています。

ソフトターゲットを用いれば少ない訓練データ量でも、ベースライン(ジェネラリストモデル)の精度を引き継げる可能性を前節で示しています。それを有効に活用すればさらなる性能が見込めるかもしれない、と示唆しているようです。

この論文執筆時点では、「方法を模索している」で終わっているのですが、この論文は2015年と古いものですから、その後の進展があるかもしれないですね。

まとめ

論文"Distilling the knowledge in a neural network."の6章を読みました。