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