ラズパイへCaffeのインストールが完了したので、リファレンスモデルを動作させました。VGG16のネットワークも利用してみたかったのですが、こちらはメモリ不足で動かせませんでした。
動作環境
Raspberry Pi | Pi 3 Model B+ |
---|---|
SDHCカード | 16GB Class10 |
OS | Raspbian-2018-10-09(11) |
リファレンスモデルの動作手順
下記を参考に動作させました。
punyo-er-met.hateblo.jp
そのまま動作させると下記のようにメモリ不足のエラーが発生します。
Traceback (most recent call last): File "classify.py", line 138, in <module> main(sys.argv) File "classify.py", line 110, in main channel_swap=channel_swap) File "/home/pi/caffe/build/caffe/python/caffe/classifier.py", line 26, in __init__ caffe.Net.__init__(self, model_file, caffe.TEST, weights=pretrained_file) MemoryError
エラー対策
下記を参考に利用可能なフリーメモリ量を増やすことで動作させました。
Raspberry Piでメモリを馬鹿食いするアプリ用に不要なサービスを停止してフリーメモリを増やす方法 (ラズパイでメモリを沢山使用するビルドやアプリ用に不要なサービス等を停止して使えるメインメモリを増やす)
対応前(初期状態)
pi@raspberrypi:~ $ free -h total used free shared buff/cache available Mem: 875M 91M 583M 11M 200M 709M Swap: 99M 0B 99M
対応後(フリーメモリ量増)
pi@raspberrypi:~ $ free -h total used free shared buff/cache available Mem: 865M 29M 752M 11M 83M 777M Swap: 2.0G 0B 2.0G
実行結果
識別実行
$ python ./python/classify.py --raw_scale 255 data/101_ObjectCategories/airplanes/image_0002.jpg result.npy ~中略~ Saving results into result.npy
1分程度で識別が完了します。
結果表示
$ python show_result.py data/ilsvrc12/synset_words.txt result.npy #1 | n04552348 warplane, military plane | 84.8% #2 | n04008634 projectile, missile | 5.5% #3 | n02690373 airliner | 5.1%
warplaneと正しく分類されています。
参考Webページ
【Caffe】物体認識のサンプルを動かす - いつもの作業の備忘録
【ビルド版】Raspberry Piで DeepDreamを動かしてキモイ絵をモリモリ量産 Caffe Deep Learning Framework (ラズパイで Caffe Deep Learning Frameworkをビルドして Deep Dreamを動かしてキモイ絵を生成する)
まとめ
ネットにある情報と資産を利用させてもらってCaffeのリファレンスモデルの実行確認までできました。今後は、データを用意してラズパイで学習をさせてみたいと思います。
おまけ(VGG16関連)
参考:【Caffe】モデルをダウンロードして利用する - いつもの作業の備忘録
ネットワーク定義ファイルのダウンロード*1
$ $CAFFE_HOME/scripts/download_model_from_gist.sh 211839e770f7b538e2d8 . $ cd 211839e770f7b538e2d8 $ wget http://www.robots.ox.ac.uk/~vgg/software/very_deep/caffe/VGG_ILSVRC_16_layers.caffemodel
スクリプトの実行
cp $CAFFE_HOME/python/classify.py . ./classify.py --raw_scale 224 --model_def VGG_ILSVRC_16_layers_deploy.prototxt --pretrained_model VGG_ILSVRC_16_layers.caffemodel --mean_file '' $CAFFE_HOME/data/101_ObjectCategories/airplanes/image_0001.jpg result.npy
メモリ不足のエラー発生、フリーメモリ量を増やしても結果変わらず。
I0503 06:25:36.105965 1475 net.cpp:257] Network initialization done. Traceback (most recent call last): File "./classify.py", line 138, in <module> main(sys.argv) File "./classify.py", line 110, in main channel_swap=channel_swap) File "/home/pi/caffe/build/caffe/python/caffe/classifier.py", line 26, in __init__ caffe.Net.__init__(self, model_file, caffe.TEST, weights=pretrained_file) MemoryError