論文読み CornerNet: Detecting Objects as Paired Keypoints
single-stageの物体検出手法の中でのSOTAを達成したCornerNetの論文です。 bounding boxの左上の座標(top-left corner)と右下の座標(bottom-right corner)を検出することで物体を検出します。
CornerNet: Detecting Objects as Paired Keypoints
3. CornerNet
3.1 Overview
- predictionモジュールではbackboneのネットワークの出力からtop-left cornerとbottom-right cornerのそれぞれについてheatmap、embedding、offsetの3つを推定し、簡単な後処理をかけてbounding boxを出力する。
- heatmapはbounding boxのコーナーっぽい位置をヒートマップで表現したもの。
- embeddingはどのtop-left cornerとbottom-right cornerがペアなのか分かるようにするためのもの。同一のbounding boxを示すコーナーのembedding間の距離が小さくなるように学習する。
- offsetは推定したコーナーの座標を微調整するためのオフセット。
- backboneにはHourglass Networkを使う。
- heatmap、embedding、offsetを推定する前にcorner poolingをかける(目的や効果については後述)。
3.2 Detecting Corners
heatmap
- heatmapの各チャネルが物体の各クラスと対応する。backgroundクラスは無し。
- 学習の際には、positive location(ground-truthでコーナーとされている画素)を中心とした特定の半径内のnegative corner(誤ってコーナーとして推定した画素)に対するlossを軽減する。これは、negative cornerでもpositive locationにある程度近ければ、ground-truthのbounding boxとのoverlapが十分な(言い換えればIoUが十分な)bounding boxが得られるため。
- lossを軽減するための重みは二次元の正規化係数なしのガウス分布 から求める。ガウス分布の は、ground-truthのbounding boxとのIoUがしきい値t(論文では0.7)以上になるようなpotive locationからの距離の1/3に設定する。
offset
- 多くのネットワークでは、大域的な情報の取得とメモリ削減のためにdownsamplingをしており、FCNから出力されるheatmapは入力画像より小さいサイズになる。入力画像中の位置はheatmapでは (はdownsampling factor)となり、heatmapから入力画像のスケールでのbounding boxの座標を推定する際に精度が落ちてしまう。
- これに対処するためにoffsetを推定することで座標を微調整する。
- offsetの学習にはsmooth L1 Lossを用いる。
3.3 Grouping Corners
- どのtop-left cornerとbottom-right cornerがペアなのか判断する(grouping corners)必要がある。
- CornerNetで用いるgrouping cornersの手法はAssociative Embedding: End-to-End Learning for Joint Detection and Grouping(複数人物のポーズ推定の論文)で提案されているAssociative Embedding methodから着想を得ている。この手法では、すべての人物のjointを検出し、各jointからembeddingを生成する。embedding間の距離からどのjointが同一人物を指すものなのか判断する。
- 学習には"pull" lossと"push" lossの2つのlossを用いる。"pull" lossは同一のbounding boxを指すcornerのembedding間の距離を小さくするlossで、"push" lossは異なるbounding boxを指すcornerのembedding間の距離を大きくするloss。
3.4 Corner Pooling
以下の図のようにbounding boxのcornerには対象物体の情報がないことがよくある。そのため、ピクセルがtop-left cornerであるかどうか判断するには、右下方向に画素を走査する必要がある。これを行うのがcorner pooling。
のピクセルがtop-left cornerであるかどうか判断したいとする。とはcorner poolingの入力マップで、 とはそれぞれののピクセルのベクトルを表す。の特徴マップについて、の~の範囲で最も大きな値をの値にする。については、との~の範囲で最も大きな値をの値にする。最後にとを足し合わせる。以下の図がわかりやすい。
- bottom-right cornerについては~と~の範囲で同様のことを行う。
3.5 Hourglass Network
- 人物のポーズ推定タスクのために提案されたモデルで、一つ以上のhourglass moduleから構成されるFCN。
- hourglass moduleのbottom-upでは、畳み込みとmax poolingを繰り返してダウンサンプリングし、top-downではupsamplingと畳み込みを繰り返して元のスケールに戻す。upsamplingしていく中でbottom-upの同一スケールの特徴マップと足し合わせる。U-Netのconcatをaddにした感じ。
- 最近のdetectorの多くがhourglass likeなネットワーク設計をしている。