Introduction
前回の続き。
今回は学習を行ってみます。
How to
公式によると下記のコマンドで学習できるとのこと。
1 | python train.py -c=configs/m2det512_vgg.py --ngpu 4 -t True |
しかしこのコマンドはTensorBoradを使った学習になります。
つまりTensorFlowが必要になります。
必要ない場合は
1 | python train.py -c=configs/m2det512_vgg.py --ngpu 4 |
でOK。
**–npgu**引数は利用するGPUの数。4個をサンプルとして表記しておくあたり、どれだけリソースを使うのか、とビクビクします。
モデルファイル
まず、pretrainedモデルをダウンロードします。
これは前回ダウンロードしたものとは異なります。
公式リンクにも書いておらず、ファイル名から検索をかけた結果、下記のページにリンクが書いてありました。
1 | wget https://s3.amazonaws.com/amdegroot-models/vgg16_reducedfc.pth mkdir weights mv vgg16_reducedfc.pth weights |
データセット
データセットをダウンロードします。しかし、これも公式には書いていません。
上述のssd.pytorchでスクリプトが用意されています。
1 | git clone https://github.com/amdegroot/ssd.pytorch |
そして、このリポジトリにある下記のスクリプトからデータセットをダウンロードします。
- COCO
- ./data/scripts/COCO2014.sh
- ~/data にダウンロードされる
- VOC2007
- ./data/scripts/VOC2007.sh
- ~/data にダウンロードされる
- VOC2012
- ./data/scripts/VOC2012.sh
- ~/data にダウンロードされる
必要に応じてシンボリックリンクで退避するなど工夫する
1 | ln -s /media/hdd/work/data ~/data |
ダウンロード完了後、
- COCO
- ~/data/coco/annotations/annotations の中身を ~/data/coco/annotations に移動 その場所に展開
- ~/data/coco/images/train2014、 ~/data/coco/images/val2014 が存在することを確認
- wget https://github.com/insikk/coco_dataset_trainval35k/blob/master/instances_valminusminival2014.json.zip?raw=true -O instances_valminusminival2014.json.zip
- =/data/cocoで実行、展開、annotationsへ移動
し、data/coco.pyを下記のように変更します。
1 | def __init__(self, root, image_sets, preproc=None, target_transform=None, |
そして前述の学習コマンドを実行します。
1 | python train.py -c=configs/m2det512_vgg.py --ngpu 1 |
がいろいろエラーが。
エラー1
data/coco.py を直していない時のエラー
1 | creating index... |
エラー2
バッチサイズが大きすぎる。
configs/m2det512_vgg.py で per_batch_size を小さくする
1 | ===> Training M2Det on COCO |
これらを超えて学習が始まりましたが、まったく終わりません。
COCOのデータの画像数が多いのもありますが、1080だとバッチサイズ4が限界で、1epoch回すのに6hかかりました。
なので学習は断念しました。