AIを使った「物体検出」は多くのシーンで実用化されています。カメラの顔認識、防犯カメラの人物検知、自動運転での車両検知など。
これは画像を「分類」するAIより難しいことをしています。画像内に複数の物体が写ると一つに分類できないからです。
分類AIはゼロから手作りができますが、物体検出まで難易度が上がるとなかなか初心者では手が出ない仕事ではありました。
しかし現在はモデルの理解をとばし実行することだけを目的にすれば、「ありもの」で簡単にできてしまいます。公開されているプログラムを利用して実現してしまいましょう。
以下の手順をそのまま行うだけで物体検出ができます。
もくじ
概要
ここでやろうとしている全体像は以下になります。
- AIモデル : ディープラーニング>CNN応用>BOX型物体検出>M2DETモデル
- 環境 : Google Colaboratory(Linuxがある人は不要です)
- 目的 : 準備された学習済みモデルを用いてテスト用の画像または自分の画像を物体検出にかけてみる。
物体検出とは、画像内の物体の位置を特定しながら分類も行う技術です。
BOX型物体検出ができるディープラーニングのモデルは、SSDが代表的なもので、他にYOLO、R-CNN系といったものがあります。今回のM2DETはこれらより新しく精度が良いと言われています。
Google Colaboratory はブラウザ上でプログラムを書いたり実行して結果を見たりできるLinux環境です。作ったファイルはGoogleドライブ上に保存されます。Linux+Python環境のある人はその環境で試してみてください。(「M2DETのダウンロード」から始め、!や%を除いて実行します。)
Google Colaboratoryは90分間操作がないと環境がリセットされるので注意してください。
M2DETの利用手順
Colaboratoryへのログイン
1.ブラウザを開き、下記へアクセスしてください。
https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja
2.右上が「ログイン」と表示される場合は、これをクリックします。
3.Googleアカウントを持っている人はそのままログインを、持っていない人は「アカウントを作成」を行ってください。
ノートブックの作成
通常はノートブックにプログラムを書いていくのですが、今回は公開プログラムのダウンロードやコマンドを実行するための環境としてノートブックを使います。
4.ログイン後、Colaboratory画面の上部で「ファイル」→「ノートブックを新規作成」を実行します。
5.上部にあるのがプログラム名になるので変更してください。例:「command_m2det.ipynb」
ライブラリのインストール
公開されているモデルを実行する時は、そのコードに合ったライブラリのバージョンが自分の環境に無いとエラーになります。M2DETに合ったバージョンを指定してライブラリをインストールします。
6.ノートブックの本文に次のように書き、左上の再生ボタンを押してください。ノートブック上でコマンドを実行する時は先頭に「!」を付けます。(コマンドによっては「%」の場合もあります。)
1 2 3 4 |
!pip install torch==1.4.0 !pip install torchvision==0.5.0 !pip install opencv-python tqdm addict !pip list | grep torch |
※ なお、ノートブックをしばらく使わないと環境がリセットされ、もう一度インストールが必要になります。
Googleドライブのマウント
Colaboratoryで生成したファイルが後で見えるように、Googleドライブとの連携をします。
7.「+コード」を押し、追加されたブロックに下記を書いて実行してください。
1 2 3 4 |
from google.colab import drive drive.mount('/content/drive') %cd '/content/drive/My Drive/' !ls |
8.実行すると認証を行うためにURLを参照するよう促されますので、クリックします。
9.Googleログインの画面が出たらログインし、次の画面で「許可」を押します。
10.認証キーが表示されるので、コピーボタンで記憶させます。
11.元の画面に戻り「Enter your authorization code:」に Ctrl+v でペーストして「Enter」を実行します。これで認証完了しマウントされます。
M2DETのダウンロードと準備
12.「+コード」を押して下記のように実行し、公開されているM2DETをダウンロードします。先ほどマウントしたGoogleドライブに保存されます。
1 |
!git clone https://github.com/qijiezhao/M2Det.git |
13.「+コード」を押して下記のように実行し、ダウンロードしたM2DETを自分の環境に合わせて構築します。
1 2 |
%cd M2Det !sh make.sh |
学習済みモデルのダウンロード
14.ブラウザの別タブで下記にアクセスし、「m2det512_vgg.pth」
を自PCへダウンロードします。
https://drive.google.com/file/d/1NM1UDdZnwHwiNDxhcP-nndaWj24m-90L/view
15.Colaboratory画面の左上のマークを 右クリック→「新しいタブで開く」で開きます。
16.マイドライブを選択し、「M2DET」→「weights」フォルダを開き、「m2det512_vgg.pth
」をドラッグ&ドロップでフォルダへ置いてください。
検出の実行
ここでやっと検出が実行できます。検出する対象は、imgフォルダにある画像です。サンプル画像がいくつか入っていますが、自分の画像を検出したい場合はここに置いてから検出を実行します。
16.「+コード」を押して下記のように実行します。これで検出が実行され、Googleドライブに検出結果の画像が出力されます。
1 |
!python demo.py -c=configs/m2det512_vgg.py -m=weights/m2det512_vgg.pth |
17.一旦、「ファイル」→「保存」でここまでのコマンドを保存しておいてください。
検出結果の確認
検出結果は同じ imgフォルダに出力されます。これを見るためにGoogleドライブを参照しにいきます。
18.Colaboratory画面の左上のマークを 右クリック→「新しいタブで開く」で開きます。
19.「マイドライブ」を選択 → 「M2Det」をダブルクリック → 「img」をダブルクリック と進みます。
20.imgフォルダの中の「〇〇_m2det.jpg」というファイル名になっているのが検出結果画像です。「_m2det」の無い画像が検出前の画像です。ダブルクリックで中身を確認してください。
21.今回のノートブックを念のため自分のPCへダウンロードしておくことをおすすめします。「マイドライブ」→「Colab Notebooks」を参照し、現在のノートブック「〇〇.ipynb」を右クリック→「ダウンロード」です。
学習済みモデルを使ったM2DETの体験は以上です。
自分の画像を検出してみるほうが物体検出している実感が沸くので試してみてください。
結果としては、大きな物から割と小さな物まで検出していますね。また重なる物体も良く認識しています。これは他のモデルより少し良い性能です。
学習も体験したいところですが、大量のデータと時間が必要なためColaboratory上で実行するには無理があります。自分でGPUマシンを用意するのは値が張るので、AWSなどのクラウドを利用するのがいいでしょう。
クラウドの利用方法もこのブログで紹介していきます。