Posted at

M2Detでデモ・評価・学習までやってみる

噂の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/annotationsinstances_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

eval.png

↑のような表示が出れば成功です。


トレーニング

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/weightsvgg16_reducedfc.pthが存在しない場合は

https://s3.amazonaws.com/amdegroot-models/vgg16_reducedfc.pth

よりvgg16_reducedfc.pthをDLし、M2Det/weights に配置してください。

data/coco/annotationsinstances_train2014.jsonが存在しない場合は

data/coco/annotations/annotations/instances_train2014.json

data/coco/annotationsに配置してください。

data/coco/annotationsinstances_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の値を小さくしてください。

train.png

学習が開始すれば成功です。

(こちらはかなり重いです…)


まとめ

事前情報通り、小さなオブジェクトの検出精度がかなりいいです。

ただ本格的に使うとなるとそれなりのマシンスペックも必要になりそうですね。

次回は自前のデータセットを使用してモデルを作成したいと思います。


おまけ

動画ファイルでデモを実行してみました。(YouTubeにジャンプします。)

https://youtu.be/LNrjiZrklKA


参考

M2Detを試してみた

最新最強の物体検出技術M2Detを動かしてみた