moxt

Just another Blog site

『Caffeで手軽に画像分類』が手軽にできない。

      2015/07/11

バズワードと化したディープラーニングをやってみたい。
そんな軽い気持ちでググると下の記事が出てくる。

http://techblog.yahoo.co.jp/programming/caffe-intro/

ここに載ってる内容を写経してみたが困難だった。
その辺の感想文。

随時追記予定。

環境構築が困難

まず、Caffeを実行する環境を整えるのが困難。
いろいろインストールするものが多すぎるし、環境依存の問題とか発生して疲弊する。
ローカル上で素直に環境作ると色々汚くなってて、昔のよく分からないファイルとかが悪さしたりして動かなかったり。。
なので、Dockerを使いキレイめなCaffe実行環境を整える。

DockerでCaffe実行環境が整ったイメージを取得する

自分はMacを使っているため、boot2dockerを導入してdockerを使えるようにしてる。

http://boot2docker.io/

無事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以下で下記のコマンドたちを叩いてスクリプトの取得と実行を行う

しばらく待つ。

data/ilsvrc12ディレクトリでget_ilsvrc_aux.shを実行

何に使うかよく分からないが必要らしい。

imagenet_deploy.prototxtが見つからない

https://raw.githubusercontent.com/aybassiouny/wincaffe-cmake/master/examples/imagenet/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

svm-trainがなかなか時間使う。

追記

よさげ。
http://radar.oreilly.com/2014/07/how-to-build-and-run-your-first-deep-learning-network.html

 - ディープラーニング

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

  関連記事

no image
ディープラーニングフレームワークCaffeをGPUなEC2上でサクッと動かせるようにしたい

MacのGPUだとCUDAが動かないらしく、Caffe+GPUが実践できない。 CPUだと学習に時間がかかるためGPUをつんだコンピュータで高速に学習させたい。 …

no image
PythonとOpenCVで線画を抽出してみる

chainerで線画着色をwebサービスにして公開してみた – …

the_scream
画風を変換するアルゴリズムの別実装neural-styleを動かしてみる

画風を変換するアルゴリズム | …

20130608212518
MacでKerasを使えるようにする

KerasはTheanoやTensorFlowを楽に使うためのライブラリ。 1年前くらいはCaffe使ってたけど、やっぱり使いにくい。 …

20130608212518
とりあえずディープラーニングしてみたいならErsatzという選択肢があるよ

Contents1 はじめに2 …

tsubasa
ディープラーニングで本田翼を見分けたい。初歩編

佐村河内守のアレの焼き増し。 ショートボブ4姉妹の画像群を学習させて本田翼を本田翼と正しく分類できたらバンザイですね、ってヤツ。 …

0100
deepdreamしてみたい

http://amagitakayosi.hatenablog.com/entry/2015/07/03/143913 「だれか試して」と書いてあったので便乗。 …