「FCOS」、RetinaNetを超えたアンカーフリー物体検出

Neil Wu
LSC PSD
Published in
9 min readFeb 26, 2020
アンカーの時代は終わりを迎えたかも (Photo by Stogafy)

コンピュータービジョン(Computer Vision, CV)はここ数年の研究により大きな進歩を得られました。Imagenet等のベンチマークテストで人間を超えた高い精度を出し続け、様々な領域で応用されています。色んなCVタスクの中でも物体検出(Object Detection)はリアルタイムで物体が何処にあるかを検出できるため、CVの中でもトップクラスの課題です。

ここ数年、ベンチマークテストで物体検出の精度でトップに立っているのはRetinaNet、YOLOv2とSSDなどを始めとした、アンカーボックス(anchor box)を使って物体の位置を推測する方法です。しかし、事前に設定されたアンカーボックスで物体検出を行う方法には欠点が複数あるため、最近では DenseBox等のアンカーボックスを使わないアンカーフリー(anchor free)の物体検出が流行り始めましたが、精度はいまいちでアンカーボックス法を超える事はできませんでした。

今日はFCOS( FCOS: Fully Convolutional One-Stage Object Detection )と言うアンカーボックス法の精度を超えたアンカーフリーの物体検出を紹介します。他にもFoveaBoxCenterNet等のアンカーフリー法を使ってアンカーボックス法の精度を超えた物体検出モデルがありますが、個人的にFCOSが使ってる数式の方が直観的で筋が通っていると思うので、これを紹介させていただきます。

アンカーフリー(Anchor-Free)

前述のように、アンカーボックスを使った物体検出には欠点があります。

  1. 事前設定するハイパーパラメータの数
    アンカーボックスを使った物体検出は学習を始める前にマニュアルで複数のパラメータ調整をしなければなりません。調整したことのある方だとフィーチャーマップごとにアスペクト比を設定するのがいかにイライラするかわかるはずです。そのような工夫はアンカーフリー法にはございません!
  2. ポジティブサンプル数とネガティブサンプル数の不均衡
    アンカーボックスはIOUを基準にしてポジティブサンプル(物体が入ってるボックス)とネガティブサンプル(背景)の区別をしています。しかし、アンカーボックスを使った物体検出ではポジティブサンプル数とネガティブサンプル数がとてつもなく不均衡な状態です。例えばSSDだと約9000個のアンカーボックスがあって、その中の少ししかポジティブに表記してなく、大半をネガティブに表記しています。FocalLoss(RetinaNet) に代表されるアンカーボックスの不均衡を解決するために設計した重み付きのLossを使った方法もありますが、あくまでもLossを使った微修正で不均衡問題そのものは解決していません。アンカーフリー法はポジティブとネガティブ表記の段階から不均衡の改善をしていて、よりいい再現率(Recall rate)を得ることができます。

モデル構造

大まかに言うと、FCOSはFeature Pyramid Network(FPN)を通じてフィーチャーマップを作り、「head」と言う拡張部分を各フィーチャーマップの後に追加して、クラシフィケーション(Classification)バウンディングボックス回帰(Boundingbox regression)センターネス(Center-ness)という新しいインデックスを学習するモデルです。

ラベル表記

左:FCOSが使ってる(l, t, r, b)表記法/右:アンビギュアスサンプル(ambiguous sample)

フィーチャーマップ上の各点に対して、もし点が一つの物体のground truthのバウンディングボックス内に入っていたら、その点をポジティブサンプルと表記して、もし複数の物体のground truthのバウンディングボックス内に入っていたら、その点をアンビギュアスサンプルと表記してバウンディングボックスは複数物体の共通部分を取る。アンビギュアスサンプルは一見問題に見えますが、FPNを通じると元のサンプル数の約4%まで抑えられます。

サンプル数について、一般的なアンカーボックス法はフィーチャーマップ上の各点にn個のサンプル(アンカーボックス)を計算するに対して、FCOSはフィーチャーマップ上の各点を1個サンプルとして計算しています。サンプル数を劇的に少なくする事(~1/n倍)により学習速度の上昇も見込めます。

一般の物体検出のバウンディングボックス表記は(x, y, x, y)や(x, y, w, h)などの座標を使っていますが、FCOSは異なります。FCOSのバウンディングボックスは点から始まるので、点とground truthの上下左右距離(l, t, r, b)を使って表記をしています。点を使ってラベル表記をする事により、FCOSはより多くポジティブサンプルを得て不均衡状況を改善しています。

Feature Pyramid Network(FPN)

FPNの構造(Photo by Sik-Ho Tsang)

Feature Pyramid Networkは複数の特徴マップを生成する方法で。この方法は高レベルの特徴マップをアップサンプリングして、低レベルの特徴マップに加える事により、低レベル特徴マップの大範囲特徴が強化されます。 さらに、検出する物体のサイズは特徴マップごとに分業をして、高レベルの特徴マップは大き目の物体検出を担当し、低レベルの特徴マップは小さ目の物体検出を担当しています。

FPNに関して詳しく知りたい方は、Jonathan Huiさんが書いた記事をお薦めします:

センターネス(Center-ness)

FCOSはフィーチャーマップ上ground truth内に入る全ての点をポジティブサンプルとして扱っています。そのメリットはサンプル数の均衡や計算速度の上昇などありますが、欠点として物体の中心から離れた点から低品質のバウンディングボックスが予測されることがあります。

その様な状況を防ぐため、論文の作者はセンターネス(Center-ness)と言う新しいインデックスを学習に加えて低品質バウンディングボックスを抑えました。センターネスはフィーチャーマップ上の点とground truthの中心距離を数値化したインデックスで、headの拡張部分に追加されています。センターネスの定義(数式)は上記の通りです。

センターネスの範囲は0から1の間です。学習の際にセンターネスはLoss_centerの数値をBCELoss(Binary Cross Entropy)で計算し、クラシフィケーションのLossとバウンディングボックスのLossを総合して逆伝播をしています。予測する際、センターネスをクラシフィケーションスコアの重みとしてクラシフィケーションスコアの調整をすることにより、低品質なバウンディングボックスを抑えています。それで予測された低品質バウンディングボックスはNon Maximum Suppressionで簡単に取り除けます。

結果

精度からみると、FCOSはアンカーボックスを使ったSoTAの物体検出モデルRetinaNetを堂々と超えましたが、FPSは表記されていません。実際の使用口コミから見るとFPSは負けているそうです。アンカーフリー物体検出はまだまだ進歩も必要ですが、精度は上回りました。

アンカーボックス法は直観的ではありません。機械学習を段々人間の思考法に近づける角度から考えても、アンカーボックス法は物体検出の答えじゃないと言えます。アンカーフリー法を使ってSoTAの各数値を超える物体検出モデルがでる事を心から期待しています。

FCOSのオリジナルGithubはここです。でもオリジナル版は何故かインストールしてから使うように書かれていてコードが扱いにくいので、個人的にはこのforkが読みやすく扱いやすいと思ってます。

if you like(this_article):
please(CLAPS)
follow(LSC_PSD)
# Thanks :)

--

--