zoukankan      html  css  js  c++  java
  • 2-Jetson Nano Developer KitでAWS IoT GreengrassのML Inferenceを試す

    https://qiita.com/sparkgene/items/425d310c1d6c9158f896

    前回の記事では、Jetson Nano上でAWS IoT Greengrassを動かしました。
    Jetson Nano Developer KitでAWS IoT Greengrassを動かしてみる

    今回は、Jetson Nano上でMLの推論を試してみます。

    Greengrassは事前に生成したMLのモデルを使って推論を実行する事が可能です。
    AWS IoT Greengrass ML Inference

    推論で使うモデルが必要になるので、今回はこちらの「AWS マネジメントコンソール を使用して Machine Learning Inference を設定する方法」を参考にしながら作業を進めます。

    MXNetのインストール

    AWSのドキュメントではJetson TX2向けの手順やライブラリが有るのですが、Jetson NanoはCUDA10の為、そのまま使えません。
    で、ソースからインストールやら色々ハマった結果、公式のフォーラムで解決策が提供されていたので、それを参考にインストールしました。

    I was unable to compile and install MXNET on the jetson nano,Is there an official installation tutorial?

    sudo apt-get install -y git build-essential libatlas-base-dev libopencv-dev graphviz python-pip
    sudo pip install mxnet-1.4.0-cp27-cp27mu-linux_aarch64.whl
    

    Python2.7
    Please download the wheel file here.

    1. sudo apt-get install -y git build-essential libatlas-base-dev libopencv-dev graphviz python-pip
    2. sudo pip install mxnet-1.4.0-cp27-cp27mu-linux_aarch64.whl



    Python3.7
    Please download the wheel file here.

      1. sudo apt-get install -y git build-essential libatlas-base-dev libopencv-dev graphviz python3-pip
      2. sudo pip install mxnet-1.4.0-cp36-cp36m-linux_aarch64.whl

    ついでにGreengrassSDKもインストールします

    sudo pip install greengrasssdk
    

    MXNet モデルパッケージを作成する

    • squeezenet_v1.1-0000.params
    • squeezenet_v1.1-symbol.json
    • synset.txt

    この3つのファイルをzipに固めるらしいのだが、このドキュメントのURLからダウンロードしようとしても、タイムアウトしてちっともDL出来ない。。。
    探してみたら、githubにあげている人がいたので、そこからDLしました。
    https://github.com/dzimine/aws-greengrass-ml-inference/tree/master/lambdas/GreengrassImageClassification/squeezenet

    Lambda 関数を作成して公開する

    ドキュメントだとMXNetのビルド中にサンプルソースが生成されるとのことだが、今回はビルドしていないのでソースが見つからない。
    以前に、試した際に取っておいたソースが有るので、今回はこれを使う。そのソースだと、Jetson TX2のオンボードカメラやRaspberry PiのPiCameraを使う内容なので、Jetson Nano向けにUSBカメラが使えるように変更したソースをgithubに上げました。
    https://github.com/sparkgene/greengrassObjectClassification
    (ソース取得元は、AWS IoTのマネージメントコンソールで Software > Machine learning inference > Runtimes and precompiled framework libraries configure downloadでソフトウエアの画面を開き、MXNet Nvidia Jetson TX2のdownloadでダウンロードしたファイルの中にmxnet_examples.tar.gzがあるのでそれを展開するとexamples/greengrassObjectClassificationに見つかります)

    この3つのファイルをzip化して、新しく作成したLambdaに登録する。
    Lambdaの登録とAliasの作成はこちらを参考にしてください。

    LambdaをGreengrassに登録する際、以下のように設定を変更する

    • Memory limit
      • 128M
    • Lambda lifecycle
      • Make this function long-lived and keep it running indefinitely

    Greengrass グループにリソースを追加する

    ビデオカメラ

    次に、Lambdaからビデオカメラにアクセスさせる必要があるので、Greengrassの画面でローカルリソースの追加を行います。
    スクリーンショット 2019-04-12 23.18.02.png

    わかり易い名前をつけます
    スクリーンショット 2019-04-12 23.23.46.png

    Device を選んで、ビデオのパスに/dev/video0を指定します。(環境によって変わります)
    パーミッションではAutomatically add OS group permissions of the Linux group that owns the resource にチェックを付けます。
    スクリーンショット 2019-04-12 23.24.06.png

    読み書き権限が必要なので、Read and write accessを選ぶ。最後に保存をします。
    スクリーンショット 2019-04-12 23.24.13.png

    モデル

    次に、推論で使うモデルもリソースに追加します。
    Machine Learningを選び、Add machine learning resourceで新規に追加します
    スクリーンショット 2019-04-12 23.29.27.png

    わかり易い名前をつけます
    スクリーンショット 2019-04-12 23.35.57.png

    先の手順でzipに固めたモデルをS3に上げておきます。ここでは、S3にあげてあるモデルを指定します。
    スクリーンショット 2019-04-12 23.36.25.png

    local pathには、Lambda内から参照する際のパスを指定します。Lambdaに紐付けるので、登録したLambdaを探して選択します。LambdaからはRead-only accessで大丈夫です。
    スクリーンショット 2019-04-12 23.39.18.png

    最後にSaveをクリックして登録します。
    スクリーンショット 2019-04-12 23.44.49.png

    AWS IoTへのPublish

    今回のサンプルだと、物体を検出したらMQTTでデータをAWS IoTに上げる仕組みにしているので、Greengrass側のSubscriptionにデータの流れを登録します。
    SubscriptionのメニューからAdd Subscriptionを選択します。
    スクリーンショット 2019-04-12 23.47.57.png

    SourceにLambda、targetにIoT Cloudを指定すると、LambdaからPublishされた、メッセージがAWS IoT Coreにルーティングされます。Nextをクリックします。
    スクリーンショット 2019-04-12 23.53.23.png

    このサブスクリプションをどのトピックに紐付けるかを指定します。サンプルソースでは、data/jetsonnanoというtopicに対してpublishするので、合わせます。Nextを押すと確認画面が表示されるので、確認して登録をします。
    スクリーンショット 2019-04-13 0.00.24.png

    動作確認

    クラウド側の設定が終わったので、Jetson Nanoにデプロイします。先に、USBカメラの接続をしておきます。
    デプロイに時間がかかるので、この間に、AWS IoTのテストメニューを開いて、data/jetsonnanoを監視します。
    スクリーンショット 2019-04-13 0.06.12.png

    デプロイがされ、しばらくすると以下のように、推論した結果が表示されます。
    スクリーンショット 2019-04-13 0.09.23.png

    まとめ

    MXNetのインストールはどうなるかと思ったが、なんとかなりました。
    ハマらなければ、結構簡単に推論アプリを実行するところまで進められました。
    Raspberry Piより性能が高く、Jetson TX2より安いので、色々なシーンで利用できるかなと思います。

    GPUを使う場合(9/5追記)

    こちらの記事を参照してください。
    Jetson Nano Developer KitでAWS IoT GreengrassのML Inferenceを試す(GPU編)

  • 相关阅读:
    来自极客标签10款最新设计素材系列七
    支持触摸设备的响应式HTML5音频播放器 AudioPlayer.js
    最流行的JavaScript库,jQuery不再支持IE旧版本
    来自极客标签10款最新设计素材系列六
    来自极客标签10款最新设计素材系列四
    推荐10款来自极客标签的超棒前端特效[第四期]
    响应式的无限滚动全屏dribbble作品集布局展示效果
    推荐10款来自极客标签的超棒前端特效[第五期]
    基于属性编程
    郁闷的企业软件开发
  • 原文地址:https://www.cnblogs.com/cloudrivers/p/11893997.html
Copyright © 2011-2022 走看看