LoginSignup
12
14

More than 3 years have passed since last update.

Jetson Nano で簡単な画像認識・骨格姿勢検知を動かす基本設定色々デモ

Last updated at Posted at 2019-07-10

はじめに

株式会社ProsCons (https://proscons.co.jp/) のエンジニアチームです。

弊社では、エッジAIデバイスとして注目されているJetson Nanoを用いて製造業等向けに提供しております。本体価格1万円強と廉価かつ手のひらサイズという極小スケールのデバイスでディープラーニングをも動作させることが可能です。
今回はこのJetson Nanoを容易に環境設定する方法と基本的な画像認識・骨格姿勢検知を動作させる方法を公開いたします。

参考動画URL

教師なし異常検知:https://www.youtube.com/watch?v=-NMPNE5-sco
骨格姿勢検知:https://www.youtube.com/watch?v=IVLhe_cjYwE

手順

弊社githubより、以下のリポジトリをcloneします。
https://github.com/ProsConsInc/jetson-nano

00〜13番までの手順を順番に踏めば、
一通りJetson Nanoが動作する感動を味わえるはずです!

始めに補足と注意事項を挙げておきます。
補足:shellスクリプトは失敗したらエラーで落ちるように設定しております。
   他に不具合等発生しましたら、想定外の動作となりますので、
   弊社githubへ issue を上げて頂けますと幸いです。
注意事項1:電源はmicro USBでは無く、5V 4Aの電源を使用するようにして下さい。
      そうでないと、電源供給が不十分になり意図しない電源OFFが起きます。
注意事項2:マイクロSDカードは16GBが最小の構成になりますが、最低でも32GBは欲しいです(the larger the better)。

●以下shellスクリプト概要

00_init.sh

 gitリポジトリのsubmoduleをcloneします。
 thirdpartyディレクトリ配下にダウンロードされます。

 cmakeのみversionを指定しております。これは、現時点で動作確認が取れているものに固定したいが為です(他のsubmoduleも本来は固定すべきかもしれません)。

01_run_power_up.sh

 Jetson Nanoは初めは5Wモードで動作しています。

 ですので、10Wで動作するように変更し、ハイパフォーマンスで動作するようにします(Jetson Nanoは 5W/10W をコマンドで簡単に切り替える事が出来る仕様です)。

02_install_swapfile_and_reboot.sh

 Jetson Nanoは搭載メモリが LPDDR4 4GBと貧弱な為、スワップ領域を作ってあげる必要があります。再起動しないと有効にならないようですので、スクリプト内でrebootするようにしてあります。

03_install_deps_for_openpose.sh

 Jetson Nano向けに色々と依存パッケージを入れてくれて便利なので、openposeの組み込みスクリプトを採用しました。
 お茶でも飲みながら、終わるのを待ちます。

04_test_pi_camera.sh

 Raspberry Pi カメラモジュール v2を繋いであれば、画面にカメラの画像が映るはずです。ここでカメラのエラーが起きる場合は、カメラの接触の不具合を疑う、若しくは電源ケーブルを挿し直す(電源OFF→ON)と映るようになるケースがあります。
 Ctrl + c で終了します。

05_install_cmake.sh

 cmakeをソースからインストールします。ビルドする際にPPAからインストールしたcmakeだとバージョンが低いと怒られるアプリケーションが存在する為です。
 お茶受けでも頂きながら、終わるのを待ちます。

06_install_tensorflow.sh

 公式のJetson Nano対応のTensorFlow v1.13.1をインストールします。
 テレビでも見ながら、終わるのを待ちます。

07_install_tf_pose.sh

 tf-pose-estimationをインストールします。これは骨格・姿勢検知を行うものです。
 動画サイトでも見ながら、終わるのを待ちます。

08_prepare_for_webcam_and_reboot.sh

 カメラの映像をストリームとして受け取る為に必要なので、インストールするものです。ここで機能を有効にする為、再起動させています。

09_build_darknet.sh

 darknetをビルドします。主にGPUの力を引き出す為にpatchを当てたりもしています。
 まとめサイトでも見ながら、終わるのを待ちます。

10_run_darknet.sh

 darknetでYOLO v3 Tinyモデルを利用して、Object Detectionを行います。
 15FPS 前後になるはずです。Raspberry Pi カメラモジュール v2のフレームレートは21FPS なので、ほぼ性能を出し切っていると言えると思います。
 Ctrl + c で終了します。

11_build_openpose.sh

 お試しとして、本家のopenposeをビルドします。
 お酒でも飲みながら、終わるのを待ちます。

12_run_openpose.sh

 サンプルの動画に対して、openposeによる骨格・姿勢検知を行います。手持ちのMacbookではレンダリングに 66 分ほど掛かりました。

 Jetson Nanoでは7、8分で処理が完了し、動画が生成されるはずです。
 軽く運動でもしながら、終わるのを待ちます。

13_run_tf_pose.sh

 tf-pose-estimationを用いて、骨格・姿勢検知を行います。10FPS前後のフレームレートとなることが期待されます。Escで終了します。

 ※終了する際は必ず Escキー を押して終了させるようにして下さい。理由はTensorFlowがリソースを掴んだ状態になり、カメラモジュールが検出出来なくなったり、メモリ不足に陥ったり、と不具合が起きます。

おわりに

お疲れ様でした。
以上で、このリポジトリの説明を終了します。

なお、この環境を整備する際に多くの先人の知恵にお世話になりました。この場を借りて御礼申し上げます。

12
14
0

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
12
14