サイトアイコン KOKENSHAの技術ブログ

openCVをnode.jsでやりましょう!Tensorflowのオブジェクトの認識までやっちゃいます!

今日の記事はnode.jsで簡単にopencvを遊ぶ方法を共有します。

前の、いくつかの記事で

RaspberryPiで顔認識OpenCVで

raspberry pi 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):

 

いくつか、Warningができますが特に問題がないようです。そのまま通過特に何もしなくて良いです。

opencv4nodejsサンプルコードの実行

そろそろインストールが完了します!

サンプルコードを実行してみてください!

サンプルコードはexamplesの配下にあります!

node XXXX.js

コマンド実行すれば、別の画面が起動しますが、前に来ない場合がありますので、Terminal画面を動かしてみてください。ここで引っかかることもあります。笑。

手と指の検出!

実施は、これが映像で、指を広げると、ちゃんと手と指の輪郭、出した指の数を認識してくれます!すごい!

ここからは、TensorFlow!

TensorFlowをずっとやりたかったです。

ここで、まず簡単にそれの「試食」ができるということで!

早速やってみました。

下記の三つの準備が必要です。

Tensorflow Inceptionモデルのダウンロード

Tensorflow Inceptionのモデルはサンプルプログラムのソースコードに書いていますが

ここから、直接にダウンロードしてもいいです。ご自身の責任で行ってください。

https://storage.googleapis.com/download.tensorflow.org/models/inception5h.zip

これをダウンロードして、解凍しましたら、

/data/dnn/tf-inception

の配下に置いてください。

次は、好きな写真をdataのフォルダに入れて、下記のように、jsonの配列に記載してください。
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入門”]

モバイルバージョンを終了