2016/08/07

[caffe]初心に戻ってサンプルを動かす

[ai]Caffeの画像分類を説明しているサイトをなぞる

全部入れ直したし、私も全部忘れているので、もう一度同じことをやってみようと思ったが、いやあ、説明文が悪いですな。
読み返しても、何をして良いかよくわからなかった。

 

この辺りを参考に動かそう。
OSX10.10でCaffeをインストール、リファレンスモデルで画像を分類 - Qiita
caffeのサンプルを動かす - スチールウールの活動記録


途中までやっていて気付いたのだが、これはexamples/imagenetは関係ないんだな。。
あれはトレーニングの仕方に関するexamplesなのだろう。

説明されている内容は、こうだ。

  • サンプル画像を取ってくる : www.vision.caltech.eduからダウンロード
  • モデルファイルを取ってくる : dl.caffe.berkeleyvision.orgからダウンロード
  • モデルファイルに関連するデータを取ってくる : get_ilsvrc_aux.shを実行

 

最後にpython classify.pyを実行してクラス分けをするのだが、ここにはサンプル画像しか引数に与えていない。
モデルファイルとトレーニング済みデータは必要なのだろうか?
いや、いるのだろうけど、dataにもmodelsにも他のフォルダがあるので、どうやって使い分けているのだろうか、と心配になるではないか。


pythonはよくわからないので雰囲気で見てみよう。

https://github.com/BVLC/caffe/blob/master/python/classify.py

  • --model_defがなかったら、models/bvlc_reference_caffenet/deploy.prototxt
  • --pretrained_modelがなかったら、models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel

あれ、data/が出てこないぞ?
確かに、classify.pyを実行するときにはdata/自体がなくても動作した。

data/を使うのは、show_result.pyだけだ。
これはcaffeが提供しているわけではないので、提供元を見てみよう。
変数categoriesにタブ区切りのテキストとして読込んでいるようだ。
show_result.pyで出力される内容の、この部分ですな。

#1 | n04552348 warplane, military plane | 84.1%
#2 | n04008634 projectile, missile |  5.8%
#3 | n02690373 airliner |  5.0%

classify.pyでは「n04552348に分類される確率が84.1%です」というところまでやってくれるから、それを名前解決する役割をしていると言うことだろう。


get_ilsvrc_aux.shはトレーニング済みデータを取ってくるのかと思っていたが、それはモデルファイルと一緒に提供されると思って良いのだろう。
まあ、ネットワークとトレーニングデータはセットじゃないと意味がないだろうしね。

今回使ったbvlc_reference_caffenetには、以下のファイルが入っている。

  • bvlc_reference_caffenet.caffemodel(自分でダウンロード)
  • deploy.prototxt
  • solver.prototxt
  • train_val.prototxt

classify.pyに与えるのは、最初の2つだけだ。

deploy.prototxtは、ネットワークの構成のようだ。
最初にこういうのが書かれていた。

input_param { shape: { dim: 10 dim: 3 dim: 227 dim: 227 } }


10 x 3 x 227x227。

227x227は画像のサイズで、3はRGBだろう。
10は?
http://docs.chainer.org/en/stable/reference/caffe.html
ミニバッチのサイズなのかな。


自分でトレーニングデータを作る必要がなければ、このようにどこかからもらってくればよいので、GPUがなくてもそんなに困らないように思う。

でも、症例をたくさん入れて診てもらう、みたいなことをしたかったら、自分でトレーニングデータを作らにゃならんだろう。
データはあるけどネットワークの構成を考えるのはちょっと・・・という場合は、既にあるprototxtを使ってトレーニングさせることができますよ、というのがexamples/imagenetサンプルのやりたいことだと思う。

 

うん、前よりは多少理解が早くなったように思う。
深層学習に対する理解と言うよりは、caffeなどのフレームワークを使うときの考え方への理解なのだけど、まあいいのだ。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。