Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

物体検出関連リンク集

More than 1 year has passed since last update.

物体検出のリンクと簡単なまとめ。正直、記事としてたいしたことなくリンク集として考えてください。

画像認識は以下に分類されます。

  • 物体認識(Object Recognition):入力画像に写る物体を理解して適切なラベルを付与
    • インスタンス認識(Instance Recognition):インスタンスそのもの(個体名称)の認識
    • クラス認識(Class Recognition):画像内の属する概念を予測
  • シーン認識(Scene Recognition):画像の状況を表現

また、関連する単語として以下も重要です。

  • 物体検出(Object Detection):画像から物体のインスタンスやクラスだけを予測するのではなく、物体が存在する領域も推定すること
  • セマンティックセグメンテーション(Semantic Segmentation):物体と背景との境界を切り分けて認識する

それぞれの内容は、「知能情報論 画像認識とは」にわかりやすく整理されています。
今回は、上記の中の「物体検知(Object Detection)」に焦点をあてて解説します。

手前味噌ですが、私の関連する記事集です。
- Object Detection APIを使って堀川君を検知
- TensorFlow Object Detection APIをUbuntuにインストール
- Object Detectionのためのアノテーション(ラベリング)
- Object Detection APIのsaved_model出力
- Access Tokenを取得してGoogle Cloud MLでオンライン予測

比較

物体検知には様々なアルゴリズムがあります。それらがわかりやすくまとめられているのは、以下の情報源です。

物体検知の大きなプロセス

物体検知処理はおおまかに以下の2プロセスに分けられます。1と2と同時に学習・推論するのがFaster-RCNN以降の物体検知モデルです。
1.物体領域候補の提案
2.物体領域候補の物体認識

1. 物体領域候補の提案

物体領域候補の提案としていくつかの方法があります。

スライディングウィンドウ法 Sliding window method

ピクセルを動かして提案していくだけ。
BING(Binarized normed gradients)が領域の物体らしさを高速に判定して物体領域候補を絞り込む

選択的検索法 Selective search method

選択的検索法は以下の処理ステップで物体領域候補提案をします。
1. 画像を小さい領域郡に分割
2. 隣り合う領域間の類似度を計算
3. 最も類似度の高い領域を統合
2と3を領域が1つになるまで繰り返す

分枝限定法 Branch and bound

各種最適化問題(特に離散最適化と組合せ最適化)の最適解を求める汎用アルゴリズムである。分枝操作(英: branching operation)と限定操作(英: bounding operation)から構成される。全ての解候補を体系的に列挙するもので、最適化された量の上限と下限の概算を使って、最適でない候補は「ひとまとめに」捨てられる。

CNNを使用した物体検知の処理モデル

R-CNN

regions with CNN featuares
原論文では物体領域候補の提案にSelective Searchを使って、そのあとCNNで特徴量を算出。最後にSVMで分類。

Fast R-CNN

R-CNN + ROI pooling + Multi-task Loss
ROI Pooling(Region of Interest): 異なる候補領域を固定サイズにプーリングする処理。逆伝播可能。R-CNNは単純なリサイズをしているだけっぽい。
Multi-task Loss:分類誤差と矩形回帰誤差の2つの誤差を使用。矩形回帰誤差は真のBounding Boxとの差。

Faster R-CNN

物体領域候補提案にもCNNを使う。物体領域候補提案はRPN(Region Proposal Network)。RPNはFeature Map上で3*3の検出窓を使ってSliding Windowを行う。Objectness & 矩形回帰。Anchorを使ってwindowひとつから複数領域のObjectnessを求める。Anchorごとに分類誤差と(背景以外)矩形回帰誤差。->背景以外矩形回帰誤差ってなんだ?
RPNの256次元ってなんだ?->おそらく、蜜結合層の次元数じゃないか?
IoU(Intersection-over-Union):物体領域候補と正解ボックスの重なり?
Feature Map ROI poolingとRPNの2方向に線が出ている図はどういう意味?->多分、並列ではあるが、先行するのはRPN。RPNの結果をROIPoolingして分類回帰(とLocalization回帰も?)しているのではないか。

YOLO

画像全体をグリッド分割してクラスとBounding Boxを求める。

SSD

SSDを何度か試しましたが、やはり小さい物体を検知するのは苦手なようです。そういう場合は違うアルゴリズムを使いましょう。

物体検知の実装

応用範囲が広く、手軽に実装できるのがTensorFlow Object Detection APIです。手軽にと書きましたが、バグがあったりして使うのに非常に苦労しました・・・ですが、その反面拡張性が高くて非常に強力です。

以下の2つのサイトは参考にして実装しました。

FukuharaYohei
気の向いたままにいろいろと書きます。 仕事はSAP関連で、HANA、Fiori、SAPUI5、BusinessObjectsなどいろいろやっています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away