DETRを動かしてみようと思い、公式のGithubを見ながらgoogle colabでプログラムを動かしてみました。colabも初めて使ったのでそこ含めて色々メモしました。
DETRのGithub
https://github.com/facebookresearch/detr
#手順
1.google driveにgoogle colabの新規ファイルを作る
2.driveにcolabをマウント
3.cloneコマンドでリポジトリをコピー
4.cocoデータセットをダウンロードしてdriveに配置
5.main.pyを走らせて評価データで評価する
では詳しく見ていきます
まずcolabのファイルを新しく作ります。
My Driveにmachine_learningというファイルを作りその中にtestrun_script.jpynbを作りました。
どうやら大体はjupyter note bookと同じようですね。
次にdriveにcolabをマウントします。
次のコードを実行します
from google.colab import drive
drive.mount('/content/drive/')
実行結果のリンク先に飛んでコードをコピーして貼り付けましょう。
成功したらこのような表示が出ます
cloneコマンドでgithubから引っ張ってきます
!git clone https://github.com/facebookresearch/detr.git
続いてデータセットを用意するため以下のリンクからダウンロードします
2017 Train images [118K/18GB]
http://images.cocodataset.org/zips/train2017.zip
2017 Val images [5K/1GB]
http://images.cocodataset.org/zips/val2017.zip
2017 Train/Val annotations [241MB]
http://images.cocodataset.org/annotations/annotations_trainval2017.zip
今回は評価だけ行うのでVal imagesとannotationsのみで構いません
これらをdriveに保存するのですが、ディレクトリは公式に指定されています。
path/to/coco/
annotations/ # annotation json files
train2017/ # train images
val2017/ # val images
こんな感じにして欲しいらしいです
なのでdriveにダウンロードされたdetrにpath、その中にto、その中にcocoとフォルダを作り最後のcocoにtrain2017とanntationsを解凍してつっこみます。
こんな感じです。
いよいよval dataを使い精度を評価します
detrフォルダ内に適当にcolabを作ります。
タブの編集>ノートブックの設定>ハードウェアアクセラレータからGPUに切り替えます。
先ほどと同様にマウントして%cdでdetrまで移動します。
そして次のコマンドでdetr内のmain.pyを走らせます
!python main.py --batch_size 2 --no_aux_loss --eval --resume https://dl.fbaipublicfiles.com/detr/detr-r50-e632da11.pth --coco_path path/to/coco
実行されて私の場合は37分ほどでevaluationが完了しました。
#データセットの置き場所がよくわからなかった話
最初データセットをdatasets内に適当に置いて実行したら
とエラーが出た
rootにファイルが存在していないらしい。
/path/to/cocoと相対パスでmain.pyから実行されているためpathファイルをdetr内に写した。
それでもまだエラーが出る。
なんでだろうと思い、スクリプトを遡ってみるとargparseで指定されているコマンドライン引数の--coco_pathで渡された値がroot = PATH(arg.coco_path)とbuild_cocoに渡されるパスになっていたので --coco_pathの引数を見ると/path/to/cocoとなっている。
ここで今まで気づかなかったけど相対パスなんだから/path/to/cocoじゃなくてpath/to/cocoとか./path/to/cocoじゃない?と思って変えたらうまく動きました。
この解決方法あってんのかな。。。