Movidiusのことについての話。-機械学習超入門-

こんばんわ。

WCDI Advent Calendar 17日目。

前の人の記事

次の人の記事

今回は巷で噂の人工知能に関する記事を投稿しようと思います。

前書き

皆さんはMovidiusという物をご存知でしょうか?

このMovidiusというものを使用する機会があったのでせっかくなら記事にしたいと思い学習していました。

最初の頃は「なんか結構簡単にAI作れるらしーぞ!」くらいにしか思っていなかったのですが、

そううまくは行きませんでした。

結構いろいろなところで躓いてしまったのでそのうちリベンジしたいと思っております。

本文

今回の目標

何人か人の顔を学習して、カメラに映った人を判定する

というものを作りたかったです。

完成には至りませんでしたのでご了承ください。

今回はGoogle画像検索で芸能人の顔写真を収集して学習させようとおもいます。

ちなみに

法律の事に関してはあまり詳しくないのですが、

第四十七条の七  
著作物は、電子計算機による情報解析(多数の著作物その他の大量の情報から、当該情報を構成する言語、音、影像その他の要素に係る情報を抽出し、比較、分類その他の統計的な解析を行うことをいう。以下この条において同じ。)を行うことを目的とする場合には、
必要と認められる限度において、記録媒体への記録又は翻案(これにより創作した二次的著作物の記録を含む。)を行うことができる。
ただし、情報解析を行う者の用に供するために作成されたデータベースの著作物については、この限りでない。

というものがあるようです。

環境構築

今回使用するものは

  1. ラズベリーパイ
  2. Movidius
  3. USBカメラ

の3つとなっております。

ラズベリーパイにUSBカメラとMovidiusを接続したら起動します。

$ git clone git@github.com:movidius/ncsdk.git

をしてgithubからncsdkをcloneしてきます。

$ cd ncsdk
$ make install

として、インストールしましょう。

sudoを付けていなくても大丈夫です。

パスワードを確認されるので、入力しましょう。

これは結構時間がかかります。

ちなみに、なぜかOpenCVのところで失敗してmakeが途中で止まりますが、どうやらほかの方も同じように失敗するようです。

OpenCVはあとで手動で入れるとして、makeの続きをやっていきましょう。

もう1度make installを実行すると、前回失敗したところから再開してくれるので、もう1度

$ make install

をします。

完了したら、先ほど失敗したOpenCVを入れていきます。

OpenCVを入れる方法はいくつかありますが、今回はaptを使用して入れます。楽なので。

//TODO:OpenCVのinstall忘れたので、あとで治します

sudo apt install libdc1394-22 libdc1394-22-dev libilmbase-dev libilmbase12 libopencv-calib3d-dev  libopencv-calib3d2.4v5 libopencv-contrib2.4v5 libopencv-core-dev  libopencv-core2.4v5 libopencv-features2d-dev libopencv-features2d2.4v5  libopencv-flann-dev libopencv-flann2.4v5 libopencv-gpu-dev libopencv-gpu2.4v5  libopencv-highgui2.4-deb0 libopencv-imgproc-dev libopencv-imgproc2.4v5  libopencv-legacy2.4v5 libopencv-ml-dev libopencv-ml2.4v5  libopencv-objdetect2.4v5 libopencv-ocl2.4v5 libopencv-photo-dev  libopencv-photo2.4v5 libopencv-stitching-dev libopencv-stitching2.4v5  libopencv-superres2.4v5 libopencv-ts-dev libopencv-ts2.4v5 libopencv-video-dev  libopencv-video2.4v5 libopencv-videostab2.4v5 libopencv2.4-java  libopencv2.4-jni libopenexr-dev libopenexr22 libpng12-0 libraw1394-11  libraw1394-dev libraw1394-tools opencv-data

ではサンプルプログラムを実行するために、

$ make examples

をします。

これまたちょっと時間がかかります。

完了したら、ncsdk/examples/caffe/GoogLeNet/run.pyを実行してみましょう。

$ cd examples/caffe/GoogLeNet/
$ python run.py

すると

Device 0 Address: 1.4 - VID/PID 03e7:2150
Starting wait for connect with 2000ms timeout
Found Address: 1.4 - VID/PID 03e7:2150
Found EP 0x81 : max packet size is 512 bytes
Found EP 0x01 : max packet size is 512 bytes
Found and opened device
Performing bulk write of 865724 bytes...
Successfully sent 865724 bytes of data in 161.902802 ms (5.099472 MB/s)
Boot successful, device address 1.4
Found Address: 1.4 - VID/PID 03e7:f63b
done
Booted 1.4 -> VSC

------- predictions --------
prediction 0 (probability 0.99609) is n03272010 electric guitar  label index is: 546
prediction 1 (probability 0.0035095) is n02676566 acoustic guitar  label index is: 402
prediction 2 (probability 0.0) is n02396427 wild boar, boar, Sus scrofa  label index is: 342
prediction 3 (probability 0.0) is n02391049 zebra  label index is: 340
prediction 4 (probability 0.0) is n02389026 sorrel  label index is: 339

このように表示されればとりあえずはOKです。

解説

先ほどのサンプルプログラムは何なのかまだよくわからないと思いますので、解説をしようと思います。

GoogLeNetとは

GoogleNetとは、2014年に行われた画像認識技術コンテスト(ILSVRC)で優勝したチームの人工知能のモデル名です。

優勝したチームはグーグルで、モデルとは第1回目のときに説明した「モデルと重み」の「モデル」です。

他にも2012年の優勝モデルAlexNetや、2015年の優勝モデルResNetなどが有名です。

ncsdk/examples/data/images/の中にいろいろな画像が入っていて、

その中のnps_electric_guitar.pngという画像が何なのかを判別する

というものになっているようです。

ちなみに、nps_electric_guitar.pngは下の画像です。

nps_electric_guitar.png

先ほどの実行結果の下の方にあった

------- predictions --------
prediction 0 (probability 0.99609) is n03272010 electric guitar  label index is: 546
prediction 1 (probability 0.0035095) is n02676566 acoustic guitar  label index is: 402
prediction 2 (probability 0.0) is n02396427 wild boar, boar, Sus scrofa  label index is: 342
prediction 3 (probability 0.0) is n02391049 zebra  label index is: 340
prediction 4 (probability 0.0) is n02389026 sorrel  label index is: 339

というのが推論の実行結果です。

どうやら、99.609%の確立でnps_electric_guitar.pngelectric guitarのようですね。

正しい結果です!おめでとうございます!

もうおわり。

はい。

あとがきとなります。

内容がほとんどないぺらっぺらな物になってしまいました、申し訳ない。

Movidiusが使える期間が短く、環境構築に無駄に時間を使用してしまい、モデルを作成するまでに至りませんでした・・・。

これからも続けていくつもりですので、随時更新していきます。

今後の活躍にご期待ください。


参考にさせていただいたサイト


投稿日

カテゴリー:

投稿者:

タグ:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です