Blog
openFrameworks + ofxMSATensorFlow でディープラーニングを試してみる (OS X版)
ディープラーニングとofxMSATensorFlow
最近、何かと話題のディープラーニング(Deep Learning / 深層学習 / 機械学習)。TensorFlow、Chainer、Caffeなど様々な便利なライブラリもフリーで入手可能で、ずいぶんと敷居が下がってきた印象だ。
そんな中、イケメン天才アーティストのMemo Akten氏によって、openFrameworksでTensorFlowが使用できる、ofxMSATensorFlowというアドオンが公開された。早速、OS Xで動かしてみたので、設定方法をシェア。
※ 動作を確認したOSは、OS X 10.11 (El Capitan) のみです。
インストール
まずは、Githubからアドオンの本体をダウンロード。従来のアドオンと同様に、openFrameworksのルート/addons/ofxMSATensorFlow に配置する。
- https://github.com/memo/ofxMSATensorFlow
本来は、C++でTensorFlowを動かすためにいろいろ設定が必要なのだが、様々なプラットフォームごとにTensorFlowが環境構築されたシェアードライブラリが配布されている(親切!!)。ありがたく、これを使用する。OS Xの場合は、下記のリンクから ofxMSATensorFlow_lib_OSX_2016_02_21_v0.7_CPU.zip をダウンロードして解凍する。
- https://github.com/memo/ofxMSATensorFlow/releases
中には libtensorflow_cc.so というライブラリが入っている。ofxMSATensorFlowではこれをホームディレクトリ直下のlibフォルダに配置して使用するように設定されている。以下のように設定
% cd ~ % mkdir lib % cp Downloads/osx/libtensorflow_cc.so lib/.
Xcodeでサンプルを動かしてみる
MemoさんはQTCreatorで動かしているようなのだが、できることなら手に馴染んでいるXcodeで動かしたい。以下のように設定して無事サンプルを動かすことができた。まずは、基本サンプルの example-basic で試してみる。
ProjectGeneratorで、example-basicフォルダを選択してインポートする。自動的にaddonにはofxMSATensorFlowが入っているはずなので、そのままプロジェクトをUpdateする。(少し時間がかかる)
TensorFlowのライブラリは既にシェアドライブラリとして持っているので、addonフォルダ内のものは必要ない。addons/ofxMSATensorFlow/libs/tensorflow をフォルダごと参照を削除。
また、このサンプルは、ofApp.hやofApp.cpp、main.cppを使用していない。srcフォルダ内で赤くなっているファイルを削除する。
ここに、先程のライブラリを追加する。libsフォルダを右クリックして、”Add Files to …” を選択。ファイルダイアログから、libフォルダ内の libtensorflow_cc.so を選択する。結果以下のようになるはず。
あとは、Buildするだけ。こんな感じのサンプルが実行される(はず)!!
MNISTを試してみる
MNIST(Mixed National Institute of Standards and Technology) とは、28x28pxの60000枚の学習サンプル、10000枚のテストサンプルからなる手書き数字画像データベースで、機械学習の世界ではこれを使って手書きの数字を認識させるのが “Hello World” 的な定番サンプルとなっている。ofxMSATensorFlowでもMNISTのサンプル example-mnist があるので、試してみる。
ただし、まず学習データが必要。こちらは別途ダウンロードする
- https://github.com/memo/ofxMSATensorFlow/releases/download/v0.0/example-inception3-data.tar.gz
解凍したフォルダ model-deep と model-deep の2つを、example-mnist/bin/data以下に配置する。
あとは、先程の example-basic と同じ手順でビルドできるはず。マウスで描いた数字を瞬時に判別する。ディープラーニングすごい!!