FPGAの部屋

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

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。ご利用ください。 http://marsee101.web.fc2.com/index.html

カテゴリ: Deep Learning

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

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

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

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


gedit imagenet_deploy.prototxt で gedit を立ち上げてコピペをした。
c0201070.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
461b7f72.png


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


ae24d6b3.png


特徴抽出を実行するPythonスクリプトを実行するとエラーになった。
python feature.py 101_ObjectCategories/airplanes/image_0001.jpg
b6c9fb5a.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


b6c9fb5a.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 を追加した。
ca51e5a2.png

source ~/.bashrc を実行して、設定内容を反映させた。

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

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


4209c908.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()


0249dd02.png


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


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


数値はすべて1行に書かれている。これを、libsvmフォーマットにする必要がある。

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%

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

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

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

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


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

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


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

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


tar xf 101_ObjectCategories.tar.gz で解凍した。
b106cea6.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 となってしまった。
74621ced.png


検索した所、”python can't import _caffe module #263”がヒットした。それによると
make pycaffe
を実行すれば良いようだ。
make pycaffe を実行した。
33915116.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 ディレクトリに保存した。
c280aa8e.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
コマンドで実行したら、分類結果が表示された。成功。。。
e54fe6e4.png


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

因みに、飛行機の画像データの 101_objectCategories/airplanes ディレクトリはこんな感じです。
cda622a4.jpg

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 に解凍した。
2633b586.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 だった。
7312748b.jpg


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


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


Deep_Learning/Caffe/caffe-master/python/requirement.txt に必要なパッケージが書かれているということだった。
下に示すコマンドでインストールを行った。
sudo pip install -r ~/Deep_Learning/Caffe/caffe-master/python/requirements.txt
残念ながら、pip がエラー終了してしまった。
8a15a652.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 なので、成功したようだ。良かった。
79cb7fe1.jpg


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


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


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

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

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

Makefile.config を編集する。
gedit Makefile.config
9e404f21.jpg


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


make all を実行した。
a1cc1ac1.jpg


make test を実行した。
626e6b1e.jpg


make runtest を実行した。
41a728eb.jpg


8 FAILED TESTS が出てしまった。

↑このページのトップヘ