『Caffeで手軽に画像分類』が手軽にできない。
2015/07/11
バズワードと化したディープラーニングをやってみたい。
そんな軽い気持ちでググると下の記事が出てくる。
http://techblog.yahoo.co.jp/programming/caffe-intro/
ここに載ってる内容を写経してみたが困難だった。
その辺の感想文。
随時追記予定。
環境構築が困難
まず、Caffeを実行する環境を整えるのが困難。
いろいろインストールするものが多すぎるし、環境依存の問題とか発生して疲弊する。
ローカル上で素直に環境作ると色々汚くなってて、昔のよく分からないファイルとかが悪さしたりして動かなかったり。。
なので、Dockerを使いキレイめなCaffe実行環境を整える。
DockerでCaffe実行環境が整ったイメージを取得する
自分はMacを使っているため、boot2dockerを導入してdockerを使えるようにしてる。
無事dockerが使えるようになったら下記のコマンドでCaffe用のイメージをダウンロードする。
docker pull tleyden5iwx/caffe-cpu-master
gpu用のイメージも用意されているが、今回はより簡単なcpuで。
docker images
で先ほどpullしてきたイメージがあることを確認する。
Caffe用のコンテナに入ってみる
docker run -it tleyden5iwx/caffe-cpu-master bin/bash
で
ls /opt/caffe
を実行してみる。
それらしいファイルがたくさんあることを確認する。
載ってる内容どおりに動かない・ファイルがない
よくある。
リファレンスモデルを取得する
examples/imagenetディレクトリでget_caffe_reference_imagenet_model.shを実行
Dockerコンテナが参照しているソースが古いのか、このスクリプトがなかった。
imagenet以下で下記のコマンドたちを叩いてスクリプトの取得と実行を行う
1 2 3 |
wget https://raw.githubusercontent.com/sguada/caffe-public/master/models/get_caffe_reference_imagenet_model.sh chmod u+x get_caffe_reference_imagenet_model.sh ./get_caffe_reference_imagenet_model.sh |
しばらく待つ。
data/ilsvrc12ディレクトリでget_ilsvrc_aux.shを実行
何に使うかよく分からないが必要らしい。
imagenet_deploy.prototxtが見つからない
caffe.set_phase_test()が無いと言われる
caffeそのものの仕様が変わっていることが原因。
コメントアウトなり、消すなりする。
net.set_meanが無いと言われる
feature.pyを実行すると
AttributeError: ‘Classifier’ object has no attribute ‘set_mean’
とエラーが発生した。
net.transformer.set_meanと書き換えればOK
同様に
AttributeError: ‘Classifier’ object has no attribute ‘set_raw_scale’
これもnet.transformer.set_raw_scaleと書き換える。
feature.pyで得られた特徴量をlibsvmフォーマットに変換する
https://github.com/rupy/caffe_script/blob/master/feature.py
feature.pyの出力部分を消して、22,23行目をコピペすればOK
libsvmフォーマットって何?
http://bio-info.biz/tips/libsvm_data_format.html
下記のような、ラベルと特徴量たちを1行に収めたヤツらしい。
0 1:-18.4201946259 2:-0.406867742538 … 4096:-0.56443535
svm-scaleなんてコマンド無い
libsvmを導入しないといけない。。
ubuntuなコンテナなので。
- libsvm3
- libsvm-dev
- libsvm-tools
あたりを適当にインストールした。こんなんで大丈夫かねw
何が何だか分からないところ
このようにして抽出した特徴量をlibsvmフォーマットで並べた以下のようなファイルを作ります。
さきほど紹介した特徴抽出スクリプトの出力はlibsvmフォーマットではないので、出力もしくはスクリプトを加工して使用してください。
今回、学習用には1カテゴリあたり30枚の画像を使っています。
って、次にはtrain.txtとtest.txtが出てきて何だこれ。ってなってる。
下記のリンクに載ってる通りにコマンド打ってみる。
http://wiki.ruka-f.net/index.php?Caffe
1 2 3 4 |
$ svm-scale -s scale.txt feature_result.txt > train_scaled.txt $ svm-scale -r scale.txt feature_result.txt > test_scaled.txt $ svm-train -c 0.03 train_scaled.txt caltech101.model $ svm-predict test_scaled.txt caltech101.model result.txt |
svm-trainがなかなか時間使う。
追記
よさげ。
http://radar.oreilly.com/2014/07/how-to-build-and-run-your-first-deep-learning-network.html
336px
336px
関連記事
-
-
MacでKerasを使えるようにする
Ke …
-
-
deepdreamしてみたい
ht …
- PREV
- Dockerでよく使うコマンド
- NEXT
- YosemiteでRubyMineが起動できない
Comment
[…] 『Caffeで手軽に画像分類』が手軽にできない。 […]