LoginSignup
9
7

More than 5 years have passed since last update.

論文読込み:「Single-Shot Refinement Neural Network for Object Detection」のまとめ

Last updated at Posted at 2019-01-30

はじめに

YOLOv3に押されていたと思ったSSD系統の物体検出ですが、AAAI'19にM2Detが採用されました!
M2Detはまだ実装が公開されてませんが、SOTA(最高パフォーマンス)のようです。
ここでM2Detをスムーズに読むために、SSD系統のRefineDetを読みました。
ここで簡単にまとめを共有します。

概要

SSD系統の手法の一つ。SSDの速度と正確性を向上させたもの。
一般的に物体検出は1stage系統(SSD)が速度に優れ、2stage系統(R-CNN)が精度が高い。
両アプローチのメリットを引き継ぎ、デメリットを少なくしたため、
今回のRefineDetは1stage系統の速度を維持し、2stage系統より制度が高い。

ネットワーク構成

RefineDet_model.png

ARM(上段)で物体の有無だけを予測して、ODM(下段)ではどのクラスに属するか詳細に予測する。
ARMで空と判断したバウンディングボックスは閾値で弾き、ODMには物体があると判定したものだけを送る。
これでODMは物体があると判断された領域のみの分類に専念させるので動作が早くなる。

Anchor Rifinement Module(ARM) 【上段】

ここで1stage系統と同じことをざっくりとおこなう。
anchor boxの位置とサイズに対しての最適な初期化と、物体があるかないかの2クラス分類を行い、
分類タスクを行う領域を減らすためにnegative anchorを減らす。

Transfer Connecting Block(TCB)【中段】

20180311143355.png
ARM【上段】で抽出した情報をODM【下段】に受け渡すための層
深い層の特徴を浅い層の特徴に組み込む。これによって小さい物体に対しての認識精度が良くなる。
←の部分で右から特徴量を展開して足しています。

Object Detection Module(ODM)【下段】

ARMからの出力Refinement Anchorを入力として利用する。
anchor boxの最終調整と分類タスクを行う。
SSDで用いられるHard Negative Miningもここで使用される。

損失関数

スクリーンショット 2019-01-21 16.46.49.png
 損失関数はARMとODMそれぞれの損失関数の和を使っている。
i: anchorのindex
li: iの正解ラベル
gi: iの正解サイズと位置情報
Pi: 物体の有無
Xi: 選別されたanchor
ci: 予測結果のクラス
ti: 予測結果のバウンディングボックス
Narm: ARMでの有効なanchorの数
Nodm: ODMでの有効なanchorの数
Lb: 物体が存在するかしないかのcross entropy/log
Lm: 多クラスの信頼度のsoft max loss

検証

RefineDet_result.png

M2Detの表
スクリーンショット 2019-01-21 17.02.01.png
うーんやっぱり小さい物体の認識は大変そうですね。
M2Detに期待!

9
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7