10
9

More than 5 years have passed since last update.

ラズパイで将棋駒の物体検出 ーMovidiusのインストール編ー

Last updated at Posted at 2018-12-09

※こちらはPythonデータ分析勉強会#03の発表資料です。

前回、前々回とYOLOv3を使った物体検出をやってきました。

今回から、ラズパイで将棋駒を物体検出するチャレンジを開始します。

※本記事は古い内容が含まれます。NCSDKは現在はあまり使われていないものと思われます。
 2019/1/25現在の情報は、こちらをご参照ください。

PC040002.jpg

最終目標

最終的に「ラズパイで将棋駒を高速に物体検出させる」ことを目標にします。
高速に動かすために、USB型のGPUであるMovidiusを使用します。

ただ、このMovidius、なかなか一筋縄ではいかない曲者です。
以下に、目標達成までの手順を示します。

(手順)
1.ラズパイにMovidiusをインストール
2.ラズパイで標準のYOLOを動かしてみる
3.自作のYOLOv3(kerasモデル)を用意する(←済)
4.自作のYOLOv3をMovidiusで動くようにする(←難題)
5.ラズパイで将棋駒を高速に認識させる

本稿では、とりあえず太字部分を行います。

4.については、次回以降Intel-Movidius-NCS-Keras使って、kerasモデルをgraphモデルに変換します。
ただ、失敗しそうな気配満載なので、最終的に5.まで到達しないかもしれません。

Movidiusについて

MovidiusはUSB型のGPUで、ラズパイに装着すればある程度速く
ディープラーニングモデルを動かすことができます。

最近、「Neural Compute Stick v2」が発売されましたが、
今回は従来品の「Neural Compute Stick v1」を使います。

また、以下の記事によると、「LattePanda Alpha 864」を使えば
「Neural Compute Stick v2」を使わなくても、高速に演算できるらしいです。

NCSDK(v1)のインストール

Movidiusを動かすためには、NCSDKをインストールする必要があります。
最新版はv2ですが、諸事情によりv1をインストールしました。

諸事情が気になる方は「おまけ」をご覧ください。

NCSDK(v1)のインストールは以下の記事を参考に進めました。

yoloNCSのインストール

YOLOもバージョンがありますが、NCSDK(v1)対応を考えると
YOLOv1(yoloNCS)をインストールすることにしました。

以下のリンクを見ればインストールできますが、ちょっと変更が必要でした。
https://nonnoise.github.io/MovidiusSetting/Sphinx/build/html/rst/Yolo_Caffe_NCS.html

リンク内で、「Caffe ModelをNCS用にコンパイル」の後にできた「graph」ファイルを
yoloNCS/py_examples ディレクトリに移す必要がありました。

yoloNCSの実行結果

yoloNCSインストール後は、USBカメラをラズパイに装着して以下のコマンドを打ちます。

cd yoloNCs/py_examples

次のコマンドを打てば、リアルタイムで物体検出が始まります。

python3 object_detection_app.py

7crag-mqvhs.gif

おまけ

Movidiusは全然まともに動きませんでした。今回は紆余曲折を経て、ようやくYOLOv1が動きました。
ここでは、ボツ案をご紹介します。誰かの参考になれば幸いです。

【ボツ案1】OpenVINOのインストール

こちらによるとNCSDK v1 / v2 はバグだらけで、まともに動かないモデルも存在するとのこと。
しかし、OpenVINOを使えば動くこともあるらしいです。

意気揚々とラズパイでインストールを進めると、エラーが出て止まりました。

以下のリンクによると、ラズパイではインストールできないようです。残念。
https://software.intel.com/en-us/forums/computer-vision/topic/781076

【ボツ案2】NCSDK(v2)のインストール

NCSDKの最新版はv2です。一応、以下のコマンドでインストールはできました。
※結論を先に書くと、YoloV2NCSが動かなかったため、v2は不採用となりました。

まずは、スワップサイズを大きくします。

$ sudo nano /etc/dphys-swapfile
CONF_SWAPSIZE=2048

その後、ラズパイを再起動し、以下のコマンドでmvnc(v2)をインストールします。

$ git clone -b ncsdk2 http://github.com/Movidius/ncsdk && cd ncsdk && make install && make examples

ここは、6時間くらいかかります。

$ sudo nano /etc/dphys-swapfile
CONF_SWAPSIZE=100

スワップサイズを元に戻して、ラズパイを再起動すればインストール完了です。

サンプルを動かす

サンプルを動かしてみます。

$ cd ncsdk/examples/tensorflow/inception_v3
$ python3 run.py

以下のようにエレキギターと出たら、インストールは完了しています。

Number of categories: 1001
Start download to NCS...
*******************************************************************************
inception-v3 on NCS
*******************************************************************************
547 electric guitar 0.98828
403 acoustic guitar 0.0077209
715 pick, plectrum, plectron 0.0015087
421 banjo 0.00092602
820 stage 0.00065947
*******************************************************************************
Finished

YoloV2NCSのインストール

問題はココです。

YoloV2NCSはNCSDK(v2)に対応しているとのことで、以下のリンクを見てインストールを進めました。
https://github.com/ctchuang/YoloV2NCS

しかし、Cafeeモデルをgraphモデルに変換しようとしたところ、以下のエラーが出て止まりました。

[Error 44] Toolkit Error: Unsupported: Multiple graph inputs or Malformed graph connections

あえなく断念。

まとめ

  • Movidiusは闇が深いとは聞いていたが、想像以上に深かった。エラーが出まくりです。
  • 現状はNCSDK v1で動かしていますが、今後、自作のYOLOv3モデルが動くかどうか非常に不安です。
  • 「NCSDK v1だと絶対に無理!」等、見識がある方がいらっしゃれば、ご助言をお願いします。
10
9
10

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9