物体検出:写っているものの位置まで見つける
画像の中の物体を四角い枠で囲んで種類も当てる物体検出を学びます。基礎層では、物体検出が画像分類と何が違うのかを、身近な例でつかみます。深掘り層では、二段階で探す Faster R-CNN の系譜と、一度で探す SSD・YOLO の系譜、そして FPN による多重解像度の工夫をしくみのレベルまで説明できるようになります。
ねらい
このレッスンでは、画像の中にある物体を四角い枠で囲んで種類も当てる、物体検出(ぶったいけんしゅつ)を学びます。
基礎
物体検出が画像分類とどう違うのかを身近な例でつかみます。前提となる知識がなくても、ここは読み切れます。
1. 物体検出は「何が」と「どこに」を同時に答えます
物体検出は、画像に写る一つひとつの物体について、2つのことを同時に答えます。
1つは、その物体が「どこ」にあるかです。物体を囲む四角い枠で位置を示します。この枠をバウンディングボックスといいます。
もう1つは、その枠の中の物体が「何」かです。犬なのか、車なのか、人なのかをカテゴリで答えます。
画像分類との違いは、はっきりしています。画像分類は、画像1枚につき答えを1つ返します。物体検出は、画像の中の物体の数だけ、枠とカテゴリの組を返します。1枚の街の写真から、複数の人、複数の車、複数の信号をそれぞれ枠で囲んで名前を付ける、というわけです。
身近な例でいうと、スマートフォンのカメラが、写そうとしている人の顔に自動で四角い枠を出すのは、物体検出の一種です。顔が「どこ」にあるかを見つけて枠を出しています。
ポイント
物体検出は、物体の位置をバウンディングボックスという枠で示し、その種類も同時に当てます。画像1枚に1つの答えを返す画像分類とは、ここが違います。
2. 「ていねいに探す」と「すばやく探す」があります
物体検出のやり方には、大きく2つの考え方があります。
1つは、あやしい場所にまず当たりを付けてから、その場所を1つずつていねいに調べる、二段階のやり方です。ていねいなぶん精度は高くなりますが、時間がかかります。
もう1つは、画像を一度見るだけで、位置と種類をまとめて言い当てる、一段階のやり方です。すばやく答えられるため、動画のようにその場で次々と処理したい場面に向きます。
これは、探し物のしかたに似ています。部屋をくまなく順に調べれば見落としは減りますが、時間がかかります。ひと目で部屋全体を見渡して見当を付ければ速いですが、少し雑になります。物体検出でも、精度を取るか速さを取るかで、選ぶ手法が変わります。
ここまでの要点
- 物体検出は、物体を枠で囲んで位置を示し、その種類も同時に当てます。
- 画像1枚に1つの答えを返す画像分類と違い、写っている物体の数だけ答えを返します。
- 手法には、ていねいに探す二段階のやり方と、すばやく探す一段階のやり方があります。
まずは全体像をつかめれば十分という人は、ここで区切って大丈夫です。「物体検出は、何がどこにあるかを枠で示すタスク」「精度重視の二段階と、速度重視の一段階がある」と押さえられていれば、この先の深掘りに進む土台はできています。
発展
ここからは、二段階のやり方の代表である Faster R-CNN の系譜と、一段階のやり方の代表である SSD・YOLO をしくみのレベルで見ます。加えて、大きな物体も小さな物体も捉えるための FPN という工夫も扱います。第5章で学んだ畳み込みニューラルネットワークが土台になります。
3. 二段階で探す:Fast R-CNN から Faster R-CNN へ
二段階のやり方は、まず物体がありそうな領域の候補をいくつも挙げ、次にその候補を1つずつ調べて、種類の判定と枠の微調整をします。この系譜の出発点に近いのが Fast R-CNN(ファスト・アールシーエヌエヌ)です。
Fast R-CNN は、画像全体をいちど畳み込みニューラルネットワークに通して特徴を取り出し、その特徴の上で、候補の領域ごとに種類の判定と枠の調整を行います。画像全体の計算を1回で済ませ、候補ごとにやり直さない点が工夫です。これで、以前の手法より大きく速くなりました。ただし、領域の候補そのものは、ネットワークの外側にある別の手続きで用意していました。
この弱点を解いたのが Faster R-CNN(ファスター・アールシーエヌエヌ)です。Faster R-CNN は、領域の候補を挙げる部分もニューラルネットワークにして、特徴を取り出す部分と一体にしました。この候補を挙げるネットワークを領域提案ネットワークといいます。候補の生成から判定までが一続きの学習で回るようになり、速さと精度がさらに高まりました。二段階のやり方の代表として、今も基準になるモデルです。
理解の確認
Fast R-CNN は、画像全体の特徴を1回だけ取り出し、その上で候補領域ごとに判定する工夫で速くなりました。Faster R-CNN は、領域の候補を挙げる部分もネットワーク化して一体にし、候補生成から判定までを一続きの学習にしました。
4. 一段階で探す:SSD と YOLO
一段階のやり方は、候補を挙げる段階と判定する段階を分けません。画像を一度ネットワークに通すだけで、位置と種類をまとめて出力します。
YOLO(ヨロ、You Only Look Once)は、その名のとおり「一度だけ見る」という発想のモデルです。画像を格子状のマスに区切り、各マスが、そこにある物体の枠と種類を直接予測します。処理がとても速く、動画をその場で処理するような、実時間の用途で広く使われます。速さを求める場面の代表的な選択肢です。
SSD(エスエスディー、Single Shot MultiBox Detector)も、一段階で位置と種類を出すモデルです。特徴として、ネットワークの途中にある複数の解像度の特徴を使い、大きさの違う物体に対応します。浅い層の細かい特徴で小さな物体をとらえ、深い層の粗い特徴で大きな物体をとらえる、という考え方です。
一段階のやり方は、二段階に比べると速い一方で、精度はやや譲る場面がありました。もっとも、両者の差はモデルの改良とともに縮まってきています。
理解の確認
YOLO は、画像を格子に区切って各マスが枠と種類を直接予測する、実時間向けの一段階モデルです。SSD も一段階で、複数の解像度の特徴を使って、大きさの違う物体に対応します。どちらも画像を一度通すだけで位置と種類を出します。
5. 大小さまざまな物体を捉える FPN
物体検出には、共通の難しさがあります。同じ画像の中に、とても大きな物体と、とても小さな物体が混じることです。近くの車は大きく、遠くの人は小さく写ります。
深いネットワークでは、層が進むほど特徴は意味を持つ一方で、解像度が下がり、小さな物体の情報が失われやすくなります。かといって浅い層の特徴は解像度が高くても、意味の捉え方が浅くなります。
この両立を助けるのが FPN(エフピーエヌ、Feature Pyramid Network)です。FPN は、深い層の意味の豊かな特徴を浅い層の解像度の高い特徴へ順に戻して足し合わせ、複数の解像度それぞれで、意味も解像度も兼ね備えた特徴を作ります。この多重解像度の特徴の重なりを特徴ピラミッドといいます。FPN は単独の検出器というより、Faster R-CNN や SSD のような検出器に組み込んで、大小の物体への強さを底上げする部品として使われます。
理解の確認
FPN は、深い層の意味の豊かな特徴を浅い層へ戻して足し合わせ、複数の解像度で意味も解像度も兼ね備えた特徴を作ります。大きな物体も小さな物体も捉えやすくするための、検出器に組み込む部品です。
6. 評価の指標と、検出の新しい形
ここからは、物体検出を理解するうえで役立つ評価の考え方と、現在の潮流を手法を軸に短く触れます。
物体検出の良し悪しは、予測した枠が正解の枠とどれだけ重なっているかで測ります。2つの枠の重なりの割合を IoU(アイオーユー、Intersection over Union)といい、重なりの面積を全体の面積で割った値です。そのうえで、カテゴリごとの検出の正確さを平均した mAP(エムエーピー、mean Average Precision)という指標で、モデル全体の性能をまとめて表します。評価には、PASCAL VOC(パスカル・ブイオーシー)や COCO(ココ)といった、公開された画像とその正解の集まりがよく使われます。これらは検出モデルを比べる共通のものさしになっています。
新しい潮流として、第5章で学んだ Transformer を検出に持ちこむ流れがあります。DETR(デター、2020年)系のモデルは、格子や候補の枠に頼らず、注意のしくみで物体を直接見つけ出します。さらに、あらかじめ決めたカテゴリに縛られず、言葉で指定した任意の物体を探すオープン語彙物体検出も研究が進んでいます。
理解度の確認
説明できる項目にチェックを入れましょう。すべて確認できたら、完了ボタンで記録します。
分からなかった点・気になった点
読み込み中です。