噂のM2Detのチュートリアルを一通りやってみました。
M2Detについては以下の記事がわかりやすいです。
最新最強の物体検出技術M2Det
実行環境
| OS | Ubuntu16.04 |
|---|---|
| GPU | Nvidia GeForce GTX 1080 |
| CPU | intel Core i7 8700 |
デモ
※Anacondaは使いません。
1. Pytorch他、必要なパッケージをインストール
pip install torch torchvision
pip install opencv-python, tqdm
2. M2Detのリポジトリをクローン
git clone https://github.com/qijiezhao/M2Det
3. シェルを実行
※M2Detディレクトリに移動して以下を実行します。
sh make sh
4. Demoを実行
①https://drive.google.com/file/d/1NM1UDdZnwHwiNDxhcP-nndaWj24m-90L/view
よりm2det512_vgg.pthをダウンロードし、M2Det/weightsに置きます。(weightsディレクトリは自分で作ってください)
②以下を実行します。
python demo.py -c=configs/m2det512_vgg.py -m=weights/m2det512_vgg.pth --show
※Webカメラを使う場合
python demo.py -c=configs/m2det512_vgg.py -m=weights/m2det512_vgg.pth --show --cam=0
これだけ!簡単ですね。
評価
1. ssd.pytorchのリポジトリをクローン
git clone https://github.com/amdegroot/ssd.pytorch
2. COCOデータセットをダウンロード
※ssd.pytorchディレクトリに移動して以下を実行します。
sh data/scripts/COCO2014.sh
何も指定しなければ~/dataに保存されます。
※~/data/coco/annotations にinstances_minival2014.jsonが存在しない場合は
~/data/coco/annotations/annotations/instances_val2014.json
を~/data/coco/annotationsにコピーし、ファイル名をinstances_minival2014.jsonに変更してください。
3. 評価を実行
M2Detディレクトリで以下を実行します。
※事前に~/data/coco_cache ディレクトリを作成します。
python test.py -c=configs/m2det512_vgg.py -m=weights/m2det512_vgg.pth
↑のような表示が出れば成功です。
トレーニング
M2Detディレクトリで以下を実行します。
※CUDA_VISIBLE_DEVICESは使用するGPU番号、ngpuは使用するGPUの数を指定してください。
CUDA_VISIBLE_DEVICES=0,1,2,3 python train.py -c=configs/m2det512_vgg.py --ngpu 4 -t True
GPUが1台の場合は
CUDA_VISIBLE_DEVICES=0 python train.py -c=configs/m2det512_vgg.py --ngpu 1 -t True
となります。
※M2Det/weights にvgg16_reducedfc.pthが存在しない場合は
https://s3.amazonaws.com/amdegroot-models/vgg16_reducedfc.pth
よりvgg16_reducedfc.pthをDLし、M2Det/weights に配置してください。
※~/data/coco/annotations にinstances_train2014.jsonが存在しない場合は
~/data/coco/annotations/annotations/instances_train2014.json
を~/data/coco/annotationsに配置してください。
※~/data/coco/annotations にinstances_valminusminival2014.jsonが存在しない場合は
https://drive.google.com/drive/folders/0B1_fAEgxdnvJSmF3YUlZcHFqWTQ
よりinstances_valminusminival2014.jsonをDLし、~/data/coco/annotations に配置してください。
※メモリが足りない場合
入力サイズの小さいconfigファイルを使用する(m2det320_vgg.pyなど)、
またはM2Det/config/m2det512_vgg.py の
per_batch_sizeの値を小さくしてください。
学習が開始すれば成功です。
(こちらはかなり重いです…)
まとめ
事前情報通り、小さなオブジェクトの検出精度がかなりいいです。
ただ本格的に使うとなるとそれなりのマシンスペックも必要になりそうですね。
次回は自前のデータセットを使用してモデルを作成したいと思います。
おまけ
動画ファイルでデモを実行してみました。(YouTubeにジャンプします。)
https://youtu.be/LNrjiZrklKA

