キーポイント系物体検出モデル その2:「CenterNet: Keypoint Triplets for Object Detection」を読んでみました

CTOの幅野です。
CornerNetを拡張したCenterNetを読みました。
CenterNetは同名で別のモデルが提案されています。
今回はCenterNet: Keypoint Triplets for Object Detectionを解説します。

arxiv.org

github.com

また、このモデルはCornerNetを拡張したものとなっているのでCornerNetを先に読むと理解が深まります。

metrica-tech.hatenablog.jp

概要

画像内の物体のCornerを検出するCornerNetを拡張したCenterNetを提案
CornerNetは物体のCornerを検出することで物体検出するネットワーク。
本論文ではConerNetのクラス分類精度が低いことを問題として定義。
この問題に対して、物体の中央のkeypointを検出とCenter Pooling, Cascade Corner PoolingをConerNetに導入。
これらは物体中央の情報を抽出するために利用され、MS-COCO datasetで47.0%のAPを達成した。

ConerNetとその問題点

CornerNetについてはここで説明している。 CornerNetはCornerを検出するために工夫されたネットワークで、BoundingBoxのサイズなどをより正確に検出できるが、クラス分類の精度が低い。 それを示しているのが以下の表である。

image.png

$FD$(False discovery rates)は選択されたBounding Boxのクラス誤分類の比率を表している。

$$FD_i = 1 - AP$$

$FD_i$は$IOU \ge\frac{i}{100}$のときのBoundingBoxの$FD$である。
この結果を見ると候補となったBoundingBoxのほぼ3つに1つは誤分類していることがわかる。
CornerNetの精度を高くするためにはクラスの分類精度を高めることが必要であると著者らは考えている。
そこで、1-stageのモデルでConerNetの誤分類を減らすために提案されたのがCenterNetである。
CenterNetの主なアイデアはCenter keypointをBoundingBoxの選択時に利用することで、Cornerと物体の中心を推定したCenterのカテゴリがあっているかどうかを確認することで誤分類を減らすことである。
下図のようにCenter keypointがあれば正しいBoundingBoxを選択できる。

image.png

CenterNetのアーキテクチャ

image.png CenterNetの基本構造はCornerNetにCenterのHeatMapとOffsetsを出力するネットワークが追加されている。
さらにCenter PoolingCascade Cirner Poolingをレイヤーとして追加している。

2つのPoolingの利用

以下の図はCenterPooling, CornerPooling, Cascade Corner Poolingを図示したもの image.png
CornerNetではCorner検出をするために4(b)のようなCorner Poolingという手法を利用して特徴マップ内の特徴をCorner部分に集約するようにしていた。
Centerを抽出する時にもCorner Poolingなどのように特徴を中心に集約できるように4(a)のようなCenter Poolingを利用する。
また、PoolingはCorner部分に集約することはできていたが、端の情報を抽出するのみになっていた。
CenterNetでは内部の情報を考慮した4(a)Cascade Corner Poolingという方法を代わりに利用している。

それぞれのアーキテクチャ構造を図示したものが以下である。

image.png

5(a)Center Poolingは特徴マップに対して2つに分岐させる、それぞれ特徴マップに対して畳み込みを行いTop Bottom PoolingとLeft Right Poolingの組み合わせで算出し、特徴マップを足し合わせている。
Center Poolingがやっていることは特徴マップの行・列の最大値を抽出し足し合わせている

Cascade Corner Poolingの図5(b)はTop Cornerを出力するネットワークに適応させる。
Bottom Cornerを出力するネットワークの場合はTop, Left PoolingがBottom, Right Poolingに変わる。
Corner Poolingとの大きな違いはCorner PoolingではTop, LeftPoolingの計算結果を足し合わせているのに対して、Cascade Corner PoolingではLeft Poolingを行った後に通常のConvolutionした特徴マップと足し合わせてTop Poolingを行っている。
image.png

このように段階に分けてPoolingを行っていることがおそらくCacadeと名付けている理由だろう。
これにより図4(c)のように内部の情報を含めて、Cornerへ集約させることができると著者らは主張している。

CenterNetのBoundingBox推定方法

CenterNetはCornerに加えCenterのheatmapとoffsetsを出力する。
これらの情報を利用してCornerで推定されたBoundingBoxから不必要なものを除去する。
本論文ではこの手法をCentral Region Explorationと呼んでいる。

CornerからのBoundingBoxはCornerNetと同様に行う。 推定後の除去手順は以下のとおりである。

  1. HeatmapのScoreを利用して$k$個Center keypointを抽出
  2. offsetsを利用して入力画像へremap
  3. Cornerで推定されたBoundingBoxのそれぞれのCentral Regionを計算
  4. Center keypointがCentral Regionに入っていなかったらBounding Boxを除去

この手順を各クラスごとに行う

Central Regionは推定された各Bounding Boxに対してその領域を定義する。
Central Regionは以下のように定義される。

image.png

$ctl$,$cbr$がCentral Regionのtop-left,bottom-rightのcorner座標を表している。
これらをBounding Boxのcorner座標$tl$, $br$を元に計算をしている。
また$n$はCentral RegionがBounding Boxの割合を決めるパラメータとなっており、論文では3もしくは5としてた。
Bounding Boxの割合としてCentral Regionを計算することによって、小さいBounding Boxに対しても適切なCentral Regionを選択できる。

image.png

この領域にCenter keypointが入っているかどうかでBounding Boxを除去するかを決める。 Cornerで推定されたBounding Boxが内部情報(center)と整合性があるかどうかを確認することができる。

検証

MS-COCOを利用したAP, ARの精度

image.png 結果を見るとOne-stageでは最も高い結果を出している。 CornerNetと比較すると$AP_S$の精度が他のと比べてより大きく向上している。

CornerNetとのFalse Discovery Rateの比較

image.png こちらはCornerNetとFalse Discovery Rateの比較をした結果である。
CenterNetによりFDは減少していることがわかる。
特にsmallに対してのFDが他の比べ大きく減少している。

各提案モジュールの導入有無による精度比較

image.png CenterNetで提案されたCentral Region Exploration(CRE), Center Pooling(CTP), Cascade Corner Pooling(CCP)の3つのモジュールを導入するかどうかで精度比較をしている。
CRE, CTPを入れることで大きくAPが上昇している。