いつもの作業の備忘録

作業を忘れがちな自分のためのブログ

【Caffe】モデルをダウンロードして利用する

他の人が作成し、アップロードしているモデルを利用する。
今回は手始めにVGG16のネットワークとモデルをダウンロードし、Caltech101のデータをかけてみる

1.ネットワーク定義ファイルのダウンロード

多くの研究結果がModel Zooで公開されており、GitHub Gistでダウンロードできる(Caffe内のダウンロード専用のスクリプトを使う)
まず、Model Zoo(Model Zoo · BVLC/caffe Wiki · GitHub)でVGG16のページを探し、readme.mdのGist IDを確認する
ILSVRC-2014 model (VGG team) with 16 weight layers · GitHub

IDが確認できたらスクリプトを使ってダウンロードする。
※以下、$WORKのフォルダで作業するものとする

$ cd $WORK
$ $CAFFE_HOME/scripts/download_model_from_gist.sh 211839e770f7b538e2d8 .
$ cd 211839e770f7b538e2d8

さらに、readme.mdからモデルファイルの場所を確認し、ダウンロードする

$ wget http://www.robots.ox.ac.uk/~vgg/software/very_deep/caffe/VGG_ILSVRC_16_layers.caffemodel

2.スクリプトの実行

pythonスクリプトを実行して識別にかける。モデルの定義ファイルと学習済みモデルをマニュアルで指定する必要がある。今回、meanファイルは公開されていなかったので、使わなくていいと判断(使わない場合は''とするらしい)

cp $CAFFE_HOME/python/classify.py .
./classify.py --raw_scale 224 --model_def VGG_ILSVRC_16_layers_deploy.prototxt --pretrained_model VGG_ILSVRC_16_layers.caffemodel --mean_file '' $CAFFE_HOME/data/101_ObjectCategories/airplanes/image_0001.jpg result.npy

result.npyが出力されるため、以前(【Caffe】物体認識のサンプルを動かす - いつもの作業の備忘録)作成したshow_result.pyを使って結果を見てみる。

python show_result.py $CAFFE_HOME/data/ilsvrc12/synset_words.txt result.npy

結果は以下のようになり、確かに軍用機がトップに来ている。

#1 | n04552348 warplane, military plane | 87.0%
#2 | n04266014 space shuttle |  2.1%
#3 | n04008634 projectile, missile |  1.7%

※参考
https://github.com/BVLC/caffe/wiki/Model-Zoo
https://gist.github.com/ksimonyan/211839e770f7b538e2d8#file-readme-md