FC2カウンター FPGAの部屋 Deep Learning
fc2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

”Caffeで手軽に画像分類”の”Caffeを特徴抽出器として使った分類”をやってみた1

”Caffeで手軽に画像分類”の”リファレンスモデルでの分類”をやってみた”の続き。

Caffeで手軽に画像分類”の”Caffeを特徴抽出器として使った分類”をやってみることにした。

imagenet_deploy.prototxt を imagenet_feature.prototxt としてコピーするのだが、caffe/examples/imagenet ディレクトリに imagenet_deploy.prototxt が見つからない。

検索したら、ここにあった
caffe_examples_12_150226.png

gedit imagenet_deploy.prototxt で gedit を立ち上げてコピペをした。
caffe_examples_13_150226.png

これで、imagenet_deploy.prototxt ができたので、下のコマンドで imagenet_feature.prototxt にコピーした。
cp examples/imagenet/imagenet_deploy.prototxt examples/imagenet/imagenet_feature.prototxt

gedit で、imagenet_feature.prototxt を編集した。変更箇所をピンクのアンダーラインで示す。
gedit examples/imagenet/imagenet_feature.prototxt
caffe_examples_15_150226.png

gedit で、feature.py を作成した。
gedit feature.py
caffe_examples_16_150226.png

caffe_examples_17_150226.png

特徴抽出を実行するPythonスクリプトを実行するとエラーになった。
python feature.py 101_ObjectCategories/airplanes/image_0001.jpg
caffe_examples_18_150226.png

エラー内容は以下の通り。

Traceback (most recent call last):
  File "feature.py", line 3, in <module>
    import sys, os, os.path, numpy, caffe
ImportError: No module named caffe


caffe_examples_18_150226.png

エラー内容を検索すると、”[Ubuntu | Python wrapper]: cannot "import caffe" #720”がヒットした。
[Ubuntu | Python wrapper]: cannot "import caffe" #720””に従って、.bashrc を編集した。
gedit ~/.bashrc
.bashrc ファイルに export PYTHONPATH=/home/ono/Deep_Learning/caffe/python を追加した。
caffe_examples_19_150226.png
source ~/.bashrc を実行して、設定内容を反映させた。

また、エラーが出た。今度は、set_phase_test の属性が無いというエラーだった。

AttributeError: 'Classifier' object has no attribute 'set_phase_test'


caffe_examples_20_150226.png

エラーを検索すると、”AttributeError: 'Classifier' object has no attribute 'set_phase_test'”が見つかった。
それによると、 net.set_phase_test() を caffe.set_phase_test() にすれば良いらしい?
もう一度、python feature.py 101_ObjectCategories/airplanes/image_0001.jpg を実行すると、set_mode_cpu() でもエラーが出たので、caffe.set_mode_cpu() に変更した。
結局、12行目と13行目を下のように変更した。

caffe.set_phase_test()
caffe.set_mode_cpu()


caffe_examples_21_150226.png

これで、特徴抽出を実行するPythonスクリプトを実行するとうまく行った。
値が見えないので、もう一度、特徴抽出を実行するPythonスクリプトをパイプして less に入れた。
python feature.py 101_ObjectCategories/airplanes/image_0001.jpg | less
caffe_examples_22_150226.png

見きれないので、特徴抽出を実行するPythonスクリプトの出力を temp.txt に出力した。
python feature.py 101_ObjectCategories/airplanes/image_0001.jpg > temp.txt
caffe_examples_23_150226.png

数値はすべて1行に書かれている。これを、libsvmフォーマットにする必要がある。
  1. 2015年02月26日 17:31 |
  2. Deep Learning
  3. | トラックバック:0
  4. | コメント:0

”Caffeで手軽に画像分類”の”リファレンスモデルでの分類”をやってみた

Caffe | Deep Learning Frameworkをインストール2”の続き。

前回、”Caffeで手軽に画像分類”の”リファレンスモデルでの分類”が動作したので、101_ObjectCategories/airplanesの画像を分類してみました。

大体 airliner は大体あってました。image_0800.jpgの分類結果です。
Caffe_14_150212.jpg
#1 | n02690373 airliner | 97.8%
#2 | n04266014 space shuttle | 0.8%
#3 | n04008634 projectile, missile | 0.4%

一般的な?飛行機はあまりよく分類できていない気がします。image_0002.jpg
Caffe_15_150212.jpg
#1 | n04372370 switch, electric switch, electrical switch | 27.9%
#2 | n02692877 airship, dirigible | 17.6%
#3 | n03109150 corkscrew, bottle screw | 10.8%

  1. 2015年02月12日 20:35 |
  2. Deep Learning
  3. | トラックバック:0
  4. | コメント:0

Caffe | Deep Learning Frameworkをインストール2

Caffe | Deep Learning Frameworkをインストール1”の続き。

前回、Deep Learning の Caffe をインストールしようとしたが、runtest でエラーが出てしまった。
今回は、異なるパソコンに Caffe をインストールしてみた。

インストール手順は前回と同じなので、省略する。手順は、”Caffe | Deep Learning Frameworkをインストール1”参照のこと。

make runtest の結果は PASSED だった。
caffe_examples_1_150130.png

次は、”Caffeで手軽に画像分類”に従って、サンプルを実行してみた。

caffe/examples/imagenetディレクトリで get_caffe_reference_imagenet_model.sh を実行した。
caffe_examples_2_150130.png

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

caffe のディレクトリに戻り、物体認識のデータセットの一つであるCaltech101をダウンロードした。
wget http://www.vision.caltech.edu/Image_Datasets/Caltech101/101_ObjectCategories.tar.gz
caffe_examples_4_150130.png

tar xf 101_ObjectCategories.tar.gz で解凍した。
caffe_examples_5_150130.png
101_ObjectCategories ディレクトリができた。

Caffe付属のPythonスクリプトを使って、Caltech101の次の画像を分類する。
cd python; python classify.py --raw_scale 255 ../101_ObjectCategories/airplanes/image_0001.jpg ../result.npy; cd ..
を実行した。

ImportError: No module named _caffe となってしまった。
caffe_examples_6_150202.png

検索した所、”python can't import _caffe module #263”がヒットした。それによると
make pycaffe
を実行すれば良いようだ。
make pycaffe を実行した。
caffe_examples_7_150202.png

次に、
cd python; python classify.py --raw_scale 255 ../101_ObjectCategories/airplanes/image_0001.jpg ../result.npy; cd ..
を実行したところ、RuntimeError: Could not open file ../modules/models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel だった。
また、検索を行って、”caffe/models/bvlc_reference_caffenet”にあることが分かった。そこから、bvlc_reference_caffenet.caffemodel をダウンロードし、caffe/models ディレクトリに保存した。
caffe_examples_9_150202.png

再々度、
cd python; python classify.py --raw_scale 255 ../101_ObjectCategories/airplanes/image_0001.jpg ../result.npy; cd ..
を実行したところ、今度は、パスした。

次に、”Caffeで手軽に画像分類”に従って、show_result.py を作製した。

python show_result.py data/ilsvrc12/synset_words.txt result.npy
コマンドで実行したら、分類結果が表示された。成功。。。
caffe_examples_10_150202.png

imag_0001.jpg の画像を下に示す。まさに戦闘機だ。
caffe_examples_12_150202.jpg

因みに、飛行機の画像データの 101_objectCategories/airplanes ディレクトリはこんな感じです。
caffe_examples_11_150202.jpg
  1. 2015年02月03日 05:01 |
  2. Deep Learning
  3. | トラックバック:0
  4. | コメント:0

Caffe | Deep Learning Frameworkをインストール1

Caffe | Deep Learning Frameworkをインストールしてみようと思う。インストールするのは、VirtualBox上のUbuntu 14.04 LTS で、NVIDIAのGPUも無いので、CPU ONLY とする。

Deep Learning は最近流行りのニューラル・ネットワークの1種で、3層程度だったニューラル・ネットワークが多層になっています。猫を認識できるとか、Beingの機械学習部分はDeep Learning をFPGAで実装しているとか。今流行の技術です。

Deep Learning の参考文献
Python - はじめるDeep learning - Qiita
GoogleやFacebookが注目するディープラーニング(深層学習)についてまとめてみた
Deep Learningと画像認識 ~歴史・理論・実践~ - SlideShare
ねこと画像処理 part 3 – Deep Learningで猫の品種識別
Theano で Deep Learning <3> : 畳み込みニューラルネットワーク

それで、Deep Learning のツールを動かしてみたいということで、Caffeをインストールして、サンプルをやってみることにしました。
インストールについては、本家のCaffe の Installation と日本語では、Caffeインストール を参考にさせて頂く。

まずは、何もないと寂しいので、Caffe 本体をダウンロードする。
BVLC/caffeから、Download ZIPボタンをクリックして、ダウンロードした caffe-master.zip を mkdir した ~/Deep_Learning/Caffe に解凍した。
Caffe_1_150128.jpg

環境のインストールを行う。

CUDAは家のパソコンではダメというか、GPUはAMDなので、インストール出来ない。

BLASのインストールは、Caffeインストール さんを参考にして、ATLASを apt-get でインストールする。
sudo apt-get install libatlas-base-dev
インストールしたATLASのバージョンを調べてみよう。
sudo apt-cache policy libatlas-base-dev
3.10.1-4 だった。
Caffe_2_150128.jpg

Pythonのインストール。これもまた、、Caffeインストール さんの成果を頂いた。
sudo apt-get install libhdf5-dev
Caffe_3_150128.jpg

最初に pip のインストールが必要だった。
sudo apt-get install python-pip
Caffe_4_150128.jpg

Deep_Learning/Caffe/caffe-master/python/requirement.txt に必要なパッケージが書かれているということだった。
下に示すコマンドでインストールを行った。
sudo pip install -r ~/Deep_Learning/Caffe/caffe-master/python/requirements.txt
残念ながら、pip がエラー終了してしまった。
Caffe_5_150128.jpg

1つ1つインストールしていくことにした。
sudo apt-get install Cython
sudo apt-get install python-numpy
sudo apt-get install python-scipy


まで、やった所で、たまたま DeepLearningライブラリ「Caffe」の実行環境をUbuntu14.04で作る さんを見つけたら、これで pip が動くようになるそうだ。
sudo pip install -r ~/Deep_Learning/Caffe/caffe-master/python/requirements.txt

ワーニングが出まくりで、時間が掛かるが、やっと終わった。Successfully なので、成功したようだ。良かった。
Caffe_6_150128.jpg

BoostやOpenCVなどをインストールする。
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev
Caffe_7_150128.jpg

次に、Ubuntu 14.04 LTSなので、下のモジュールをインストールする。
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler
Caffe_8_150128.jpg

これで下準備は終了。続いて、Caffe をインストールする。

まずは、caffe-master ディレクトリへ入る。
cd caffe-master

Makefile.config.example を Makefile.config としてコピーする。
cp Makefile.config.example Makefile.config

Makefile.config を編集する。
gedit Makefile.config
Caffe_9_150128.jpg

”CPU_ONLY := 1”のコメントを外す。
”BLAS := atlas”であることを確認する。
これでセーブした。
Caffe_10_150128.jpg

make all を実行した。
Caffe_11_150128.jpg

make test を実行した。
Caffe_12_150128.jpg

make runtest を実行した。
Caffe_13_150129.jpg

8 FAILED TESTS が出てしまった。

Caffe | Deep Learning Frameworkをインストール2”へ続く。
  1. 2015年01月28日 05:18 |
  2. Deep Learning
  3. | トラックバック:0
  4. | コメント:0