MobileNetで物体検出してみた

ディープラーニング

物体検出とは

 物体検出は、動画像内に特定の属性を持つ物体が存在するかどうかを検出し、もし存在する場合には各物体の位置と範囲まで推論する技術である[3]。物体の位置を示す方法として、バウンディングボックス英語版)と呼ばれる物体を取り囲む最小の矩形を用いる方法が使われる[4]。なお、画像認識一般において、認識対象がもつ属性を記号で表したものをクラスと呼ぶ[5]

wikipedia

主な技術

  • R-CNN
  • YOLO
  • SSD

R-CNN

 領域ベースの畳み込みニューラルネットワーク (Region Based Convolutional Neural Networks, R-CNN)は、コンピュータビジョン、特に物体(オブジェクト)検出のための機械学習モデルの 1 つ。

wikipedia

応用

R-CNN は、ドローンに搭載されたカメラからのオブジェクトの追跡[10]、画像内のテキストの位置の特定[11]、Google レンズでのオブジェクト検出などで使用されている[12]。Mask R-CNN による物体検出は、ニューラルネットワークの学習速度を競う MLPerf トレーニングベンチマークにおける 7 つのタスクのうち 1 つに位置付けられている[13]

wikipedia

You Only Look Once(YOLO)

2016年に発表された手法。画像全体を小さなグリッドに分割し、各グリッドに対して物体が存在するかどうかを判定する。物体が存在する場合にはその物体を囲む矩形のサイズとそのクラスを推論する[47]。処理の過程で、R-CNN系であったような物体候補領域を生成する必要がないため、入力から出力まで1ステージで行えることが特徴である[47][48]。推論処理で45FPSを達成する等速度が向上した[49]半面、小さな物体の認識が苦手であったり、異なるスケールやアスペクト比を持つ物体の認識が苦手という欠点もある[47]

wikipedia

Single Shot MultiBox Detector(SSD)[27]

2016年に発表された手法。YOLOが抱える課題に対応して改良された1ステージ系の手法。YOLOでは物体位置の推定にネットワークの最終層で得られる特徴量しか用いなかったのに対し、SSDでは入力に近い層の特徴量も用いたことが特徴で、より小さいサイズの物体の検出にも対応できるようになった[50][51]。また、複数のアスペクト比を持つ矩形内で畳み込みを行うことで、異なるスケール・アスペクト比を持つ物体の検出にも頑健になった[52]

wikipedia

今回用いる物体検出用モデル

今回は、コードを書かずに以下の3ステップで物体検出を行います。

今回用いるモデルはPytorchのssdで モバイルネットです。

リンク

  1. 作業フォルダの作成
  2. 作業フォルダ内でクローンする
  3. クローンしたフォルダ内に入り、コマンドを実行

1. 作業フォルダの作成

適当に作業フォルダを作成します。例えば、object-detectionというフォルダを作成します。

2. 作業フォルダ内でクローンする

先ほど作成した、フォルダobject-detectionに入ります。

cd object-detection

次にクローンします。

git clone https://github.com/qfgaohao/pytorch-ssd.git

3. クローンしたフォルダ内に入り、コマンドを実行

クローンしたフォルダ内に入ります。

cd pytorch-ssd

公式が用意しているコードを実行します。

wget -P models https://storage.googleapis.com/models-hao/mobilenet-v1-ssd-mp-0_675.pth
wget -P models https://storage.googleapis.com/models-hao/voc-model-labels.txt
python run_ssd_live_demo.py mb1-ssd models/mobilenet-v1-ssd-mp-0_675.pth models/voc-model-labels.txt 

実行すると、カメラが起動し、物体検出が始まります。

コメント

タイトルとURLをコピーしました