LoginSignup
0
3

More than 3 years have passed since last update.

Google ColabでDETRをCOCOdataset使って評価してみる

Last updated at Posted at 2021-04-18

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/')

スクリーンショット 2021-04-18 20.08.06.png
実行結果のリンク先に飛んでコードをコピーして貼り付けましょう。
スクリーンショット 2021-04-18 20.08.31.png
成功したらこのような表示が出ます

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を解凍してつっこみます。
こんな感じです。

スクリーンショット 2021-04-18 21.10.57.png

いよいよval dataを使い精度を評価します
detrフォルダ内に適当にcolabを作ります。
タブの編集>ノートブックの設定>ハードウェアアクセラレータからGPUに切り替えます。
先ほどと同様にマウントして%cdでdetrまで移動します。
スクリーンショット 2021-04-18 21.16.05.png
そして次のコマンドで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が完了しました。
スクリーンショット 2021-04-18 19.12.33.png

データセットの置き場所がよくわからなかった話

最初データセットをdatasets内に適当に置いて実行したら
スクリーンショット 2021-04-18 18.20.28.png
とエラーが出た
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じゃない?と思って変えたらうまく動きました。
この解決方法あってんのかな。。。

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3