今回はYOLOと比較されることの多いSSD[1]についてです。SSDは、Single Shot MultiBox Detectorの略で、前回紹介したYOLOと同様に画像を入力するとsliding windowsでwindowを少しずつスライドさせながら繰り返し処理するようなことはせず、1回で入力画像全域から複数の物体を検出できます。精度はFaster R-CNNと同等ですが、大幅な処理速度向上(59FPS)を達成しています。YOLOの最初のバージョンよりも高性能かつ高速な手法です。
SSDの概要
SSDの処理の概要は図1の通りです。SSDの教師データはYOLOと同じで、入力画像中に写っている検出したい物体のバウンディングボックスです。図1の例では犬と猫の外接矩形が教師データとして与えられています。
SSDでは、入力画像からまず何段かかのスケールのfeature mapを求めます(図1(b)、(c))。そして、feature mapの各位置において、事前に定義しておいた異なる縦横比、サイズの矩形(図1の例では4個)を各feature mapに適用し、矩形内の特徴を畳み込みます。図1の例では、(b)と(c)の8×8と4×4の異なるスケールのfeature mapに対して複数の矩形で特徴量を畳み込んでいます。そして、各矩形ごとに、物体が存在する領域のバンディングボックスの位置とサイズ(loc:⊿(cx, cy, w, h))、およびそのバウンディングボックス内の物体がどのカテゴリに属するかを表す確信度(conf:(c1,c2,...cp))を求めます。
学習時は、点線の青い矩形と、教師データである実線の青い矩形の位置、大きさが一致するように、かつ物体カテゴリが猫となるようにディープラーニングの重みが更新されることになります。同様に点線の赤い矩形と、実線の赤い矩形の位置、大きさが一致し、犬と推定できるように学習します。
SSDのネットワーク
SSDは、図2を見れば分かるように、後段に向かうほど特徴マップをスケールダウンしていきます。事前に規定した矩形は、スケールダウンした特徴マップ上では相対的に大きくなるため、より大きな物体を検出できます。図1では前段の特徴マップ(図1(b))で猫を検出することができ、後段のスケールダウンした特徴マップ(図1(c))で犬を検出することができます。
SSDは、画像を入力すると、1つのネットワークで物体のバウンディングボックスの座標とサイズ、物体のカテゴリを出力することができます。つまりEnd-to-Endを実現できており、入力画像と教師データを準備すれば、複数の物体を検出しカテゴリを推定するための重みを一気に学習させることができます。
「YOLOの最初のバージョンよりも高性能かつ高速な手法です」と冒頭に書きましたが、YOLOは2018年10月時点でバージョン3までリリースされており、大幅に性能が改善されています。最新の情報を調べて、最善のものを選択するようにしてください。
参考文献
[1] Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, Scott Reed, Cheng-Yang Fu,Alexander C. Berg, "SSD: Single shot multibox detector. " in ECCV2016.
著者プロフィール
樋口未来(ひぐち・みらい)日立製作所 日立研究所に入社後、自動車向けステレオカメラ、監視カメラの研究開発に従事。2011年から1年間、米国カーネギーメロン大学にて客員研究員としてカメラキャリブレーション技術の研究に携わる。
日立製作所を退職後、2016年6月にグローバルウォーカーズ株式会社を設立し、CTOとして画像/映像コンテンツ×テクノロジーをテーマにコンピュータビジョン、機械学習の研究開発に従事している。また、東京大学大学院博士課程に在学し、一人称視点映像(First-person vision, Egocentric vision)の解析に関する研究を行っている。具体的には、頭部に装着したカメラで撮影した一人称視点映像を用いて、人と人のインタラクション時の非言語コミュニケーション(うなずき等)を観測し、機械学習の枠組みでカメラ装着者がどのような人物かを推定する技術の研究に取り組んでいる。
専門:コンピュータビジョン、機械学習