Pythonでtensorflowはたくさん記事があり、お手軽に使えますが、Processingでも推論だけでしたら非常にお手軽に試すことができます。
私の実行環境は、以下のとおりです。
Windows10 64bit
Processing 3.3.7
この記事はつぎのブログを参考にしました。
Tensorflow in Processing with the LabelImage example – Magic & Love Interactive
まずは、この記事にリンクが張ってある以下のGitHubからProcessingのコードをcloneします。
github.com
基本的にreadmeを読んでその通りにファイルを用意すればOKです。
環境構築と実行手順:
1.Tensorflow for Javaをダウンロードする
Tensorflowのオフィシャルサイトから、Windows版のjava用のバイナリをダウンロードします。
https://www.tensorflow.org/install/install_java#install_on_windows
ダウンロードするファイルは、
libtensorflow-1.8.0.jar
tensorflow_jni.dll
の二つです。
2. 上記二つのファイルをcodeというフォルダーを作ってそこにコピーします。
codeというフォルダーはml20180615a.pdeがあるフォルダーに作ります。
3. 以下のサイトからInceptionのモデルと学習済みデータをダウンロードします。
https://storage.googleapis.com/download.tensorflow.org/models/inception5h.zip
解凍すると以下の二つのファイルが生成されます。
tensorflow_inception_graph.pb
imagenet_comp_graph_label_strings.txt
それぞれ、モデル及び学習済みデータと1000クラスに分類されたオブジェクトのラベル名のリストとなります。
これら二つのファイルは、dataフォルダーにコピーしておきます。
ちなみに、Inception-v3とはGoogleによって開発されILSVRCという大規模画像データセットを使った画像識別タスク用に1,000クラスの画像分類を行うよう学習されたモデルです。 開発当時、非常に高い精度の画像識別を達成していることで注目されました。
以上で準備ができました。
ml20180615a.pdeを起動して実行すると、data/BearBear.jpgを読み込み、"teddy bear 45.89%"と表示されます。
簡単ですね~。
あとは、ソースコードを見ていろんな改造ができそうです。
私はwebcamから入力した動画を識別するようにさせてみました。
カメラの前に座る自分の映像は、
"BEST MATCH: barbershop (22.31% likely)"
のように、理髪店で髪を切っている状態と認識されたようです・・・。
PCやマウスなどは比較的正確に認識されました。