openCVをnode.jsでやりましょう!Tensorflowのオブジェクトの認識までやっちゃいます!
今日の記事はnode.jsで簡単にopencvを遊ぶ方法を共有します。
前の、いくつかの記事で
目次
OpenCV
openCVに触れたことがあり、Raspberry Piなどでやりましたが
そのとき、pythonでやりました。
openCVは様々な言語で使えるように、多言語対応されています。
今日は、こちらのライブラリーを使って
それのJavaScriptで簡単にopenCVを触れる方法をシェアします。
opencv4nodejs
https://github.com/justadudewhohacks/opencv4nodejs
私がテストしている(openCVの)JavaScriptのライブラリーの中で、一番簡単にできた一つです。
環境の用意もすごく簡単です。
opencv4nodejsインストール
まず
git clone https://github.com/justadudewhohacks/opencv4nodejs.git
まず、フォルダごとに、cloneをしてください。
(私が、すでにインストールしていまして、手順を再現するために、もう一回やりました。なので、opencv4nodejs2に指定していますが、皆さん、最初の1回目のcloneでしたら、これは不要です。)
それから、opencv4nodejsのフォルダに入ってください。
それから、他のnode.jsプロジェクトと同様に
npm install
を実行して、必要なパッケージを全部インストールしてください。
ここで、JavaScriptのライブラリーだけではなく
openCVもダウンロードしてインストールして、コンパイルしてくれます!とても素敵です!笑
そのため、少し時間も掛かりました。
【注意】前提(MacOS):
- Python2.7 すでにインストール済
- XcodeのCommand Line Toolsが必要です。なかったら、このコマンドを実行してください。xcode-select –install
いくつか、Warningができますが特に問題がないようです。そのまま通過特に何もしなくて良いです。
opencv4nodejsサンプルコードの実行
そろそろインストールが完了します!
サンプルコードを実行してみてください!
サンプルコードはexamplesの配下にあります!
node XXXX.js
コマンド実行すれば、別の画面が起動しますが、前に来ない場合がありますので、Terminal画面を動かしてみてください。ここで引っかかることもあります。笑。
手と指の検出!
実施は、これが映像で、指を広げると、ちゃんと手と指の輪郭、出した指の数を認識してくれます!すごい!
ここからは、TensorFlow!
TensorFlowをずっとやりたかったです。
ここで、まず簡単にそれの「試食」ができるということで!
早速やってみました。
下記の三つの準備が必要です。
- モデルをダウンロードしてください。
- 画像ファイルなどをdataフォルダに配置する。
- プログラムを追加したファイルに合わせてちょっと修正
Tensorflow Inceptionモデルのダウンロード
Tensorflow Inceptionのモデルはサンプルプログラムのソースコードに書いていますが
ここから、直接にダウンロードしてもいいです。ご自身の責任で行ってください。
https://storage.googleapis.com/download.tensorflow.org/models/inception5h.zip
これをダウンロードして、解凍しましたら、
/data/dnn/tf-inception
の配下に置いてください。
const testData = [ { image: '../data/aaa.jpg', label: 'aaa' }, { image: '../data/bbb.jpg', label: 'bbb' }, { image: '../data/ccc.jpg', label: 'ccc' } ]
認識の結果
まず、これは、winterとか、woman, gloves, snowとかを期待していましたが
fur coatなどが出て、なるほどと納得しました。
しかし、military uniformというのは、軍隊制服は、その色のせいなのかな
次に、わざと、古いタイプライターの写真を見つけて、認識してもらったのですが
ちゃんとtypewriter 42パーセントの自信で認識しています。
space barが49パーセントが面白かったです。
次、女の子の後ろ姿、ここではsea, girl, summerなどを期待していましたが
swimming trunks, sandbarが出て、まぁまぁその辺ですかね。
次、もう一枚、とにかくgirlとかwomanとか認識して欲しいですね。笑。
結果は、sunglassとsunglassesうん、確かに、言われてみれば、サングラスはかけています!!正解です!
あと、lab coat実験室の作業衣?色かな、あと、蓋つきのポケットのせいかもしれませんね。コンピュータの視点もなかなか面白いですね。笑。
最後、ちょっと一枚難しいのを見てもらいました。
これも流石に、ちょっとはなれたかな、暖炉とか、この門の形のせいかな
女の子が一切結果に出ないですね!笑
まとめ
気づいたら、女の子の写真のパーセンテージがすごく高いようです。笑。きっと気のせいです。
これをやると、本当にいろんな写真を使って実験してみたくなりますね!
どんな判定が出るのかが楽しみです!
どうですか?opencv4nodejsなかなか手応えがありましたね。
他も顔認識など、多数のサンプルがあってほぼ全て問題なく、動作します!
ネット上のライブラリーなどよく、自分で色々環境構築や設定などしないと上手くいかないものが多いですが
これは、非常に簡単でした。
すぐnode.jsでopencvやtensorflowを試してみたい人は、これをやってみるべきです!
[amazonjs asin=”4873118344″ locale=”JP” title=”scikit-learnとTensorFlowによる実践機械学習”]
[amazonjs asin=”B01N2Y16BQ” locale=”JP” title=”JavaScriptエンジニアのためのNode.js入門”]