しんさんのブログ

科学や技術のこと読書のことなど

Processingで超お手軽に物体認識をやってみる

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やマウスなどは比較的正確に認識されました。