Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Jetson x Azure ハンズオン DeepStream With Azure IoT

660 views

Published on

NVIDIA x Microsoft Startup Day

大串 正矢
エヌビディア合同会社
シニアソリューションアーキテクト

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Jetson x Azure ハンズオン DeepStream With Azure IoT

  1. 1. 大串 正矢, 2020.11.26 DEEPSTREAM WITH AZURE IOT
  2. 2. 2 Hans-on: Deploy DeepStream Hans-on: Check Network Stream Hans-on: 8 Video Stream Hans-on: AI model with Custom Vision Hans-on(時間があれば): Azure IoT Central Hans-on(時間があれば): AI model with Custom Vision + Azure IoT Central アジェンダ
  3. 3. 3 進捗シート Slackの右上のアイコンを押すとSlack上のアカウント名が分かります。 Slackに進捗確認のスプレッドシートを共有するので、そこにアカウント名をお願いします。 ハンズオンごとの項目が記入されているので完了したら〇にしてください
  4. 4. 4 DEPLOY DEEPSTREAM
  5. 5. 5 DEPLOY DEEPSTREAM IoT Edge Agent IoT Edge Runtime IoT Hub Container Registry VLC media player Visual Studio Code ImageのPull IoT Edge の 管理、指示 Module配置情報の転送 Azure Deep Stream
  6. 6. 6 予め配布したzipファイル (DeepStream_AzureIoT_JetPack_4. 3_DeepStream4.zip)を解凍 Visual Studio Codeを開く。Jetson に sshアクセスしていないWindow File -> Open Folderで先ほど解凍した “DeepStream_AzureIoT_JetPack_4. 3_DeepStream4”フォルダを開く DEPLOY DEEPSTREAM
  7. 7. 7 deployディレクトリの “deployment.template_deploy.json”の内容を” deployment.template.json”にコピーペースト DEPLOY DEEPSTREAM
  8. 8. 8 Jetson Nanoにデプロイ - deployment.template.jsonを右クリックして Generate IoT Edge Deployment Manifestを選択 - Configディレクトリが作成され、デプロイ用の deployment.jsonファイルが作成 - 注意:キャプチャされているmodulesディレクトリは不 要です。Configディレクトリはこの処理で作成されます。 DEPLOY DEEPSTREAM
  9. 9. 9 Jetson Nanoにデプロイ - 先ほど作成されたconfigディレクトリにある deployment.jsonファイルを右クリックしてCreate Deployment for Single Deviceを選択 - 先ほど作成したIoT Edge deviceを選択 DEPLOY DEEPSTREAM
  10. 10. 10 Jetsonに任意の方法でsshアクセス(Visual Studio Codeでアクセスしている場合は2つWindowがあるので注 意)もしくはディスプレイ、マウス、キーボードを使ってアクセス ターミナルで下記コマンドを入力してiotedgeを起動 sudo systemctl start iotedge DEPLOY DEEPSTREAM
  11. 11. 11 デモ 実際に画面共有しながらデモをお見せします。
  12. 12. 12 jsonファイルの内容の一部を確認 edgeAgentはモジュールのデプロイ、監視を行う “$edgeAgent”: edgeAgentの設定 “properties.desired”: 各種設定 “modules”: 使用するモジュールを設定 "$edgeAgent": { "properties.desired": { "modules": { IoT Edge Agent 参考:https://docs.microsoft.com/en-us/azure/iot-edge/module-edgeagent-edgehub DEPLOY DEEPSTREAM
  13. 13. 13 “NVIDIADeepStreamSDK”: モジュールID “image”: 使用するdocker image “createOptions”: docker のオプション設定 “HostConfig”: デプロイされるエッジデバイスホストの 設定 “WorkingDir”: コンテナ内のワーキングディレクトリ “Entrypoint”: docker 実行時に動作するコード設 定 その他の設定が気になる方は下記を参照 https://docs.microsoft.com/en-us/azure/iot- edge/module-edgeagent-edgehub#edgeagent- desired-properties DEPLOY DEEPSTREAM
  14. 14. 14 “systemModules”: 基本機能を実現するためのモジュール “edgeAgent”: モジュールを監視、デプロイするモジュール “edgeHub”: エッジデバイスとクラウド連携するモジュール その他の設定が気になる方は下記を参照 https://docs.microsoft.com/en-us/azure/iot- edge/module-edgeagent-edgehub#edgeagent- desired-properties DEPLOY DEEPSTREAM
  15. 15. 15 IoT Edgeハブはモジュール、IoT Hub、任意のデバイス間の通信を管 理 “routes”:各モジュールのメッセージを渡す方法を定義 “/messages/*”: 各デバイスのモジュールから出力されたメッセージ “$upstream”: メッセージの送り先をIoT Hubに “/messages/modules/NVIDIADeepStreamSDK/outputs/”: メッ セージをDeepStreamモジュールの出力にフィルターしている IoT Hubのメッセージに関しては下記を参照 https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub- devguide-messages-construct その他の設定が気になる方は下記を参照 https://docs.microsoft.com/en-us/azure/iot- edge/module-composition#declare-routes DEPLOY DEEPSTREAM
  16. 16. 16 適切にデプロイされたかモニタリングして確認 - VS Codeの左下にあるデバイスを右クリック - Start Monitoring Built-In Event Endpointを選択 一度目の実行はモデルの変換処理があるため時間 がかかります。 モジュールダウンロードに十分に時間がたつとIoT Hub からのメッセージを確認できます。 サンプルビデオの人と車を検出するAIを実行している DeepStreamアプリケーションによって生成されたメタ データメッセージ Deep Streamからの メタメッセージ DEPLOY DEEPSTREAM
  17. 17. 17 Jetsonに任意の方法でsshアクセス(Visual Studio Codeでアクセスしている場合は2つWindowがあるので注 意)もしくはディスプレイ、マウス、キーボードを使ってアクセス ターミナルで下記コマンドを入力してiotedgeを止める sudo systemctl stop iotedge DEPLOY DEEPSTREAM
  18. 18. 18 トラブルシューティング ▪ Jetson Nanoへ任意の方法でsshで接続もしくはディスプレイ、マウス、キーボードを使ってアクセス ▪ NVIDIADeepStreamSDKモジュールが動作しているかを確認 ▪ Deepstream moduleのログを見て正しく動作しているか確認 ▪ iotedgeを再起動 ▪ Jetson Nanoを再起動 sudo iotedge list sudo iotedge logs NVIDIADeepStreamSDK --tail 200 sudo systemctl restart iotedge sudo reboot now
  19. 19. 19 Azure IoT Hub作成の際にPricing and scale tierでF1: Free tierで無料を選択した 場合はメッセージ数が容量を超えた場合は右 に示すような画像になり、有料枠での再作成 が必要になる メッセージ数が容量をこえた場合
  20. 20. 20 CHECK NETWORK STREAM
  21. 21. 21 ネットワークストリームを使ってDEEP STREAMの動作確認 IoT Edge Agent IoT Edge Runtime IoT Hub Container Registry VLC media player ネットワーク ストリーミング Visual Studio Code ImageのPull IoT Edge の 管理、指示 Module配置情報の転送 Azure Deep Stream
  22. 22. 22 ネットワークストリームを使ってDEEP STREAMの動作確認 IoT Edge Agent IoT Edge Runtime IoT Hub Container Registry VLC media player ネットワーク ストリーミング Visual Studio Code ImageのPull IoT Edge の 管理、指示 Module配置情報の転送 Azure Deep Stream
  23. 23. 23 Jetsonに任意の方法でsshアクセス(Visual Studio Codeでアクセスしている場合は2つWindowがあるので注 意)もしくはディスプレイ、マウス、キーボードを使ってアクセス 下記コマンドで必要なディレクトリを作成し、権限付与、ディレクトリ移動、ファイル取得。wgetはコピペの際に改 行されるので注意 上記コマンドのスクリプトをcheck_network_streamディレクトリにsetup_jetson.shとして用意しているので bashになれている方はそちらを使っても良い cd /var/ sudo mkdir deepstream sudo mkdir ./deepstream/custom_configs sudo chmod -R 777 /var/deepstream/ cd ./deepstream/custom_configs/ wget https://raw.githubusercontent.com/Azure-Samples/NVIDIA-Deepstream-Azure- IoT-Edge-on-a-NVIDIA-Jetson- Nano/master/DeepstreamOnIoTEdge/modules/NVIDIADeepStreamSDK/configs/test5_confi g_file_src_infer_azure_iotedge.txt -O test5_config_file_src_infer_azure_iotedge_edited.txt --no-check-certificate CHECK NETWORK STREAM
  24. 24. 24 “test5_config_file_src_infer_azure_iotedge_edited.txt”を編集。Visual Studio Codeからsshアクセスし ている方は下記方法で編集可能 Jetson NanoにアクセスしているVisual Studio CodeのWindowでFile -> Open Folderを選択 下記のフォルダをOKをクリックして開く CHECK NETWORK STREAM /var/deepstream/custom_configs/
  25. 25. 25 下記のようにファイルを編集できる CHECK NETWORK STREAM
  26. 26. 26 “test5_config_file_src_infer_azure_iotedge_edited.txt”を編集 RTSPを使用するために0にして無効化。 sinkはレンダリング、エンコーディング、ファイル保存するための設定 詳細 https://docs.nvidia.com/metropolis/deepstream/4.0/dev- guide/index.html#page/DeepStream_Development_Guide%2Fdeepstream_app_config.3.2.html [sink0] enable=0 CHECK NETWORK STREAM
  27. 27. 27 同一ファイル“test5_config_file_src_infer_azure_iotedge_edited.txt”に追加 [sink3] enable=1 #Type - 1=FakeSink 2=EglSink 3=File 4=RTSPStreaming type=4 #1=h264 2=h265 codec=1 sync=0 bitrate=4000000 # set below properties in case of RTSPStreaming rtsp-port=8554 udp-port=5400 CHECK NETWORK STREAM
  28. 28. 28 同一ファイル“test5_config_file_src_infer_azure_iotedge_edited.txt”を編集 3フレームごとにJetson Nanoで処理するように設定します。 primary-gieの設定の詳細は下記 https://docs.nvidia.com/metropolis/deepstream/4.0/dev- guide/index.html#page/DeepStream_Development_Guide%2Fdeepstream_app_config.3.2.html%23wwpID0E0AB0HA [primary-gie] enable=1 gpu-id=0 batch-size=4 ## 0=FP32, 1=INT8, 2=FP16 mode bbox-border-color0=1;0;0;1 bbox-border-color1=0;1;1;1 bbox-border-color2=0;1;1;1 bbox-border-color3=0;1;0;1 nvbuf-memory-type=0 interval=2 CHECK NETWORK STREAM
  29. 29. 29 同一ファイル“test5_config_file_src_infer_azure_iotedge_edited.txt”を編集 DeepStreamでループ処理するための設定 [tests] file-loop=1 CHECK NETWORK STREAM
  30. 30. 30 ネットワークストリームを使ってDEEP STREAMの動作確認 IoT Edge Agent IoT Edge Runtime IoT Hub Container Registry VLC media player ネットワーク ストリーミング Visual Studio Code ImageのPull IoT Edge の 管理、指示 Module配置情報の転送 Azure Deep Stream
  31. 31. 31 JetsonにsshアクセスしていないVisual Studio Codeを 開く。この方法を使用していない方は気にしなくて良い check_network_streamディレクトリの” deployment.template_check_network_stream. json”の内容を” deployment.template.json”にコ ピーペーストして上書き CHECK NETWORK STREAM
  32. 32. 32 Jetson Nanoにデプロイ - deployment.template.jsonを右クリックして Generate IoT Edge Deployment Manifestを選択 - Configディレクトリが作成され、デプロイ用の deployment.jsonファイルが作成 CHECK NETWORK STREAM
  33. 33. 33 Jetson Nanoにデプロイ - 先ほど作成されたconfigディレクトリにある deployment.jsonファイルを右クリックしてCreate Deployment for Single Deviceを選択 - 先ほど作成したIoT Edge deviceを選択 CHECK NETWORK STREAM
  34. 34. 34 Jetsonに任意の方法でsshアクセス(Visual Studio Codeでアクセスしている場合は2つWindowがあるので注 意)もしくはディスプレイ、マウス、キーボードを使ってアクセス ターミナルで下記コマンドを入力してiotedgeを止めていたので起動 sudo systemctl start iotedge CHECK NETWORK STREAM
  35. 35. 35 VLC media playerを開く Media > Open Network Streamを開く Network urlに“rtsp://JetsonのIPアドレ ス:8554/ds-test”をコピー Playをクリック CHECK NETWORK STREAM
  36. 36. 36 デモ 実際に画面共有しながらデモをお見せします。
  37. 37. 37 jsonファイルの変更点 ホストとDockerの連携するパスを設定 Docker 上のワーキングディレクトリを変更 Docker上で実行するコマンドを変更 "HostConfig":{ "Binds": ["/var/deepstream/custom _configs:/root/deepstream_sdk_v4.0.2_ jetson/sources/apps/sample_apps/deeps tream-test5/custom_configs/"] } "WorkingDir": "/root/deepstream_sdk_v 4.0.2_jetson/sources/apps/sample_apps /deepstream-test5/custom_configs/", "Entrypoint":["/usr/bin/deepstream- test5-app","- c","test5_config_file_src_infer_azure _iotedge_edited.txt"], CHECK NETWORK STREAM
  38. 38. 38 jsonファイルの変更点:RSTPネットワークストリームで VLC media playerを用いて、動画を確認するための 設定 Docker側で開けるポートの設定 Dockerとホストのポートをつなげる設定 "PortBindings": { "8554/tcp": [ { "HostPort": "8554" } ] } "ExposedPorts":{ "8554/tcp": {} } CHECK NETWORK STREAM
  39. 39. 39 CHECK NETWORK STREAM:トラブルシューティング ▪ Jetson Nanoへ任意の方法でsshで接続もしくはディスプレイ、マウス、キーボードを使ってアクセス ▪ NVIDIADeepStreamSDKモジュールが動作しているかを確認: ▪ Deepstream moduleのログを見て正しく動作しているか確認: ▪ 設定が反映されていない場合はiotedgeを再起動 ▪ check_network_streamディレクトリのcustom_configsディレクトリに編集済みの “test5_config_file_src_infer_azure_iotedge_edited.txt”を用意しているので、エラーもしく は挙動が違う場合はこちらを流用しても良い sudo iotedge list sudo iotedge logs NVIDIADeepStreamSDK --tail 200 sudo systemctl restart iotedge
  40. 40. 40 Azure IoT Hub作成の際にPricing and scale tierでF1: Free tierで無料を選択した 場合はメッセージ数が容量を超えた場合は右 に示すような画像になり、有料枠での再作成 が必要になる メッセージ数が容量をこえた場合
  41. 41. 41 Jetsonに任意の方法でsshアクセス(Visual Studio Codeでアクセスしている場合は2つWindowがあるので注 意)もしくはディスプレイ、マウス、キーボードを使ってアクセス ターミナルで下記コマンドを入力してiotedgeを止める sudo systemctl stop iotedge CHECK NETWORK STREAM
  42. 42. 42 8 VIDEO STREAM
  43. 43. 43 8つのビデオストリームに対するDEEP STREAMの動作確認 IoT Edge Agent IoT Edge Runtime IoT Hub Container Registry VLC media player ネットワーク ストリーミング Visual Studio Code ImageのPull IoT Edge の 管理、指示 Module配置情報の転送 Azure Deep Stream
  44. 44. 44 8つのビデオストリームに対するDEEP STREAMの動作確認 IoT Edge Agent IoT Edge Runtime IoT Hub Container Registry VLC media player ネットワーク ストリーミング Visual Studio Code ImageのPull IoT Edge の 管理、指示 Module配置情報の転送 Azure Deep Stream
  45. 45. 45 Jetsonに任意の方法でsshアクセス(Visual Studio Codeでアクセスしている場合は2つWindowがあるので注 意)もしくはディスプレイ、マウス、キーボードを使ってアクセス ここからのコマンドのスクリプトを8_video_streamディレクトリにsetup_jetson.shとして用意しているのでbashに 慣れている方はそちらを使っても良い ディレクトリ移動してファイルの内容を更新。 wgetはコピペの際に改行されるので注意 cd /var/deepstream/custom_configs/ wget https://raw.githubusercontent.com/Azure-Samples/NVIDIA-Deepstream-Azure- IoT-Edge-on-a-NVIDIA-Jetson- Nano/master/DeepstreamOnIoTEdge/modules/NVIDIADeepStreamSDK/configs/test5_confi g_file_src_infer_aziotedge_nano_8sources.txt - O test5_config_file_src_infer_azure_iotedge_edited.txt --no-check-certificate 8 VIDEO STREAM
  46. 46. 46 下記コマンドで必要なディレクトリを作成し、権限付与、ディレクトリ移動 ビデオファイルを取得。 wgetはコピペの際に改行されるので注意 ファイルを解凍 cd /var/deepstream mkdir custom_streams sudo chmod -R 777 /var/deepstream cd ./custom_streams wget -O cars-streams.tar.gz --no-check-certificate "https://onedrive.live.com/download?cid=0C0A4A69A0CDCB4C&resid=0C0A4A69A0CDCB4C %21588371&authkey=AAavgrxG95v9gu0" tar -xvzf cars-streams.tar.gz 8 VIDEO STREAM
  47. 47. 47 8つのビデオストリームに対するDEEP STREAMの動作確認 IoT Edge Agent IoT Edge Runtime IoT Hub Container Registry VLC media player ネットワーク ストリーミング Visual Studio Code ImageのPull IoT Edge の 管理、指示 Module配置情報の転送 Azure Deep Stream
  48. 48. 48 JetsonにsshアクセスしていないVisual Studio Codeを 開く。この方法を使用していない方は気にしなくて良い 8_video_streamディレクトリの” deployment.template_8_video_stream.json”の 内容を” deployment.template.json”にコピーペース トして上書き 8 VIDEO STREAM
  49. 49. 49 Jetson Nanoにデプロイ - deployment.template.jsonを右クリックして Generate IoT Edge Deployment Manifestを選択 - Configディレクトリが作成され、デプロイ用の deployment.jsonファイルが作成 8 VIDEO STREAM
  50. 50. 50 Jetson Nanoにデプロイ - 先ほど作成されたconfigディレクトリにある deployment.jsonファイルを右クリックしてCreate Deployment for Single Deviceを選択 - 先ほど作成したIoT Edge deviceを選択 8 VIDEO STREAM
  51. 51. 51 Jetsonに任意の方法でsshアクセス(Visual Studio Codeでアクセスしている場合は2つWindowがあるので注 意)もしくはディスプレイ、マウス、キーボードを使ってアクセス ターミナルで下記コマンドを入力してiotedgeを止めていたので起動 sudo systemctl start iotedge 8 VIDEO STREAM
  52. 52. 52 VLC media playerを開く Media > Open Network Streamを開く Network urlに“rtsp://JetsonのIPアドレ ス:8554/ds-test”をコピー Playをクリック 8 VIDEO STREAM
  53. 53. 53 デモ 実際に画面共有しながらデモをお見せします。
  54. 54. 54 jsonファイルの変更点 追加で“custom_streams”のコンテナにパスを通す このパス直下にmp4ファイルが存在する "Binds": [ " /var/deepstream/custom_configs/:/root /deepstream_sdk_v4.0.2_jetson/sources /apps/sample_apps/deepstream- test5/custom_configs/", " /var/deepstream/custom_streams/:/root /deepstream_sdk_v4.0.2_jetson/sources /apps/sample_apps/deepstream- test5/custom_streams/" ], 8 VIDEO STREAM
  55. 55. 55 jsonファイルの変更点 IoT メッセージのスループットを高速化するためにイン メモリストアを使用するようにedgeHubを構成 未使用のプロトコルヘッドを無効化 "edgeHub": { "settings": { "image": "mcr.microsoft.com/azurei otedge-hub:1.0", "env": { "usePersistentStorage": { "value": "false" }, "amqpSettings__enabled": { "value": false }, "httpSettings__enabled": { "value": false } }, 8 VIDEO STREAM
  56. 56. 56 8 VIDEO STREAM:トラブルシューティング ▪ Jetson Nanoへ任意の方法でsshで接続もしくはディスプレイ、マウス、キーボードを使ってアクセス ▪ NVIDIADeepStreamSDKモジュールが動作しているかを確認: ▪ Deepstream moduleのログを見て正しく動作しているか確認: ▪ 設定が反映されていない場合はiotedgeを再起動 ▪ 8_video_streamディレクトリのcustom_configsディレクトリに編集済みの “test5_config_file_src_infer_azure_iotedge_edited.txt”を用意してあるのでエラーもしくは挙動が違 う場合はこれを流用しても良い sudo iotedge list sudo iotedge logs NVIDIADeepStreamSDK --tail 200 sudo systemctl restart iotedge
  57. 57. 57 Azure IoT Hub作成の際にPricing and scale tierでF1: Free tierで無料を選択した 場合はメッセージ数が容量を超えた場合は右 に示すような画像になり、有料枠での再作成 が必要になる メッセージ数が容量をこえた場合
  58. 58. 58 Jetsonに任意の方法でsshアクセス(Visual Studio Codeでアクセスしている場合は2つWindowがあるので注 意)もしくはディスプレイ、マウス、キーボードを使ってアクセス ターミナルで下記コマンドを入力してiotedgeを止める sudo systemctl stop iotedge 8 VIDEO STREAM
  59. 59. 59 AI MODEL WITH CUSTOM VISION
  60. 60. 60 AI MODEL WITH CUSTOM VISION IoT Edge Agent IoT Edge Runtime IoT Hub Container Registry VLC media player ネットワーク ストリーミング Visual Studio Code ImageのPull IoT Edge の 管理、指示 Module配置情報の転送 Azure Deep Stream
  61. 61. 61 ▪ http://customvision.aiにアク セス ▪ サインイン ▪ New Projectを作成 AI MODEL WITH CUSTOM VISION
  62. 62. 62 AI MODEL WITH CUSTOM VISION ▪ Soda Cans DownをNameに設 定 ▪ Resourceを選択、”create new”を選択
  63. 63. 63 AI MODEL WITH CUSTOM VISION ▪ Nameに”ImageTraining”を設 定 ▪ Subscriptionに自身のサブスクリ プションを設定 ▪ Resource Groupは先ほど作成し たものを選択 ▪ KindにCognitiveServiceを選択 ▪ LocationにJapan Eastを選択 ▪ Pricing TierはF0(無料)もしく はS0(無料枠を使い切った場 合)を選択 ▪ Create Resourceをクリック
  64. 64. 64 AI MODEL WITH CUSTOM VISION ▪ Resource は先ほど作成した Resourceを選択 ▪ Project TypesはObject Detectionを選択 ▪ DomainsはGeneral (Compact) を選択 ▪ Export CapabilitieはBasic platformsを選択 ▪ Create project をクリック
  65. 65. 65 AI MODEL WITH CUSTOM VISION ▪ 学習用に予め用意した缶の画像 が圧縮された状態で用意されてい るのでダウンロード ▪ https://1drv.ms/u/s!AEzLza BpSgoMo_R2 ▪ ファイルを解凍する
  66. 66. 66 AI MODEL WITH CUSTOM VISION ▪ 解凍したファイルをアップロード ▪ Add Imagesをクリック ▪ Ctrl + Aで画像ファイルを全て選 択してアップロード
  67. 67. 67 AI MODEL WITH CUSTOM VISION ▪ アノテーション作業を行う ▪ クリックするとアノテーション作業が できる ▪ バウンディングボックスとラベルをアノ テーションする ▪ Up: 上向き ▪ Down:下向き Down Up
  68. 68. 68 AI MODEL WITH CUSTOM VISION ▪ モデルの学習のためにTrainをク リック ▪ Quick Training を選択して Train
  69. 69. 69 AI MODEL WITH CUSTOM VISION ▪ 学習完了すると精度が確認でき る ▪ 緑で囲った部分をクリックしてモデ ルをexport
  70. 70. 70 AI MODEL WITH CUSTOM VISION ▪ ONNXフォーマットモデルを選択 ▪ Export ▪ Download
  71. 71. 71 IoT Edge Agent IoT Edge Runtime IoT Hub Container Registry VLC media player ネットワーク ストリーミング Visual Studio Code ImageのPull IoT Edge の 管理、指示 Module配置情報の転送 Azure Deep Stream AI MODEL WITH CUSTOM VISION
  72. 72. 72 先ほどダウンロードしたファイルをJetsonに任意の方法で送る。下記はsftpで送る例(Visual Studio Codeでア クセスしている場合は2つWindowがあるので注意。JetsonにsshでアクセスしていないWindow)ターミナルでダウ ンロードしたディレクトリまで移動して下記コマンドを入力 Jetsonに任意の方法でsshアクセス(Visual Studio Codeでアクセスしている場合は2つWindowがあるので注 意)もしくはディスプレイ、マウス、キーボードを使ってアクセス cd {Downloadしたディレクトリ} sftp {user name}@{ip address} sftp> put {ONNX zip file} AI MODEL WITH CUSTOM VISION
  73. 73. 73 ここからのコマンドのスクリプトをai_model_with_custom_visionディレクトリにsetup_jetson.shとして用意して いるのでbashに慣れている方はそちらを使っても良い。引数としてONNXのZIPファイル名を与える必要がある。 下記コマンドで必要なディレクトリを作成し、権限付与、ディレクトリ移動 cd /var/deepstream mkdir custom_models sudo chmod -R 777 /var/deepstream cd ./custom_models mv ~/{ONNX zip file} . unzip {ONNX zip file} mv model.onnx cans-model.onnx mv labels.txt cans-labels.txt AI MODEL WITH CUSTOM VISION
  74. 74. 74 カスタムビジョンの出力結果をパースするための追加のライブラリを導入(ディレクトリはcusdom_models)。 wget はコピペの際に改行されるので注意 解析対象のビデオを取得。 wgetはコピペの際に改行されるので注意 wget -O libnvdsinfer_custom_impl_Yolo_Custom_Vision.so --no-check-certificate "https://onedrive.live.com/download?cid=0C0A4A69A0CDCB4C&resid=0C0A4A69A0CDCB4C% 21588374&authkey=ADqq__XBNC06kI0" cd ../custom_streams/ wget -O cans-streams.tar.gz --no-check-certificate "https://onedrive.live.com/download?cid=0C0A4A69A0CDCB4C&resid=0C0A4A69A0CDCB4C% 21588372&authkey=AJfRMnW2qvR3OC4" tar -xzvf cans-streams.tar.gz AI MODEL WITH CUSTOM VISION
  75. 75. 75 ディレクトリ移動 下記コマンドで “test5_config_file_src_infer_azure_iotedge_edited.txt”ファイルをアップデート。 wgetは コピペの際に改行されるので注意 下記コマンドで“config_infer_custom_vision.txt”を作成。 wgetはコピペの際に改行されるので注意 cd ../custom_configs/ AI MODEL WITH CUSTOM VISION wget https://raw.githubusercontent.com/Azure-Samples/NVIDIA-Deepstream-Azure- IoT-Edge-on-a-NVIDIA-Jetson- Nano/master/DeepstreamOnIoTEdge/modules/NVIDIADeepStreamSDK/configs/test5_confi g_file_src_infer_aziotedge_nano_custom_vision.txt -O test5_config_file_src_infer_azure_iotedge_edited.txt --no-check-certificate wget https://raw.githubusercontent.com/Azure-Samples/NVIDIA-Deepstream-Azure- IoT-Edge-on-a-NVIDIA-Jetson- Nano/master/DeepstreamOnIoTEdge/modules/NVIDIADeepStreamSDK/configs/config_infe r_custom_vision.txt -O config_infer_custom_vision.txt --no-check-certificate
  76. 76. 76 下記コマンドで“msgconv_config_soda_cans.txt”を作成。 wgetはコピペの際に改行されるので注意 ai_model_with_custom_visionディレクトリのcustom_configsディレクトリに編集済みの “test5_config_file_src_infer_azure_iotedge_edited.txt”、“config_infer_custom_vision.txt”、 “msgconv_config_soda_cans.txt”を用意してあるのでエラーもしくは挙動が違う場合はこれを流用しても良い AI MODEL WITH CUSTOM VISION wget https://raw.githubusercontent.com/Azure-Samples/NVIDIA-Deepstream-Azure- IoT-Edge-on-a-NVIDIA-Jetson- Nano/master/DeepstreamOnIoTEdge/modules/NVIDIADeepStreamSDK/configs/msgconv_con fig_soda_cans.txt -O msgconv_config_soda_cans.txt --no-check-certificate
  77. 77. 77 AI MODEL WITH CUSTOM VISION IoT Edge Agent IoT Edge Runtime IoT Hub Container Registry VLC media player ネットワーク ストリーミング Visual Studio Code ImageのPull IoT Edge の 管理、指示 Module配置情報の転送 Azure Deep Stream
  78. 78. 78 JetsonにsshアクセスしていないVisual Studio Codeを 開く。この方法を使用していない方は気にしなくて良い ai_model_with_custom_visionディレクトリの” deployment.template_ai_model_with_custom _vision.json”の内容を” deployment.template.json”にコピーペーストして上 書き AI MODEL WITH CUSTOM VISION
  79. 79. 79 Jetson Nanoにデプロイ - deployment.template.jsonを右クリックして Generate IoT Edge Deployment Manifestを選択 - Configディレクトリが作成され、デプロイ用の deployment.jsonファイルが作成 AI MODEL WITH CUSTOM VISION
  80. 80. 80 Jetson Nanoにデプロイ - 先ほど作成されたdeployment.jsonファイルを右クリック してCreate Deployment for Single Deviceを選択 - 先ほど作成したIoT Edge deviceを選択 AI MODEL WITH CUSTOM VISION
  81. 81. 81 Jetsonにsshアクセス Iotedgeを止めていたので起動 sudo systemctl start iotedge AI MODEL WITH CUSTOM VISION
  82. 82. 82 結果をVisual Studio codeでモニタリングできるまで待 つ VLC media playerを開く Media > Open Network Streamを開く Network urlに“rtsp://JetsonのIPアドレ ス:8554/ds-test”をコピー Playをクリック AI MODEL WITH CUSTOM VISION
  83. 83. 83 デモ 実際に画面共有しながらデモをお見せします。
  84. 84. 84 jsonファイルの変更点 追加で“custom_models”のコンテナにパスを 通す "Binds": [ "/var/ deepstream/custom_configs/:/root/deepstream_ sdk_v4.0.2_jetson/sources/apps/sample_apps/d eepstream-test5/custom_configs/", "/var/ deepstream/custom_streams/:/root/deepstream_ sdk_v4.0.2_jetson/sources/apps/sample_apps/d eepstream-test5/custom_streams/", "/var/ deepstream/custom_models/:/root/deepstream_s dk_v4.0.2_jetson/sources/apps/sample_apps/de epstream-test5/custom_models/" ] AI MODEL WITH CUSTOM VISION
  85. 85. 85 AI MODEL WITH CUSTOM VISION:トラブルシューティング ▪ Jetson Nanoへ任意の方法でsshで接続もしくはディスプレイ、マウス、キーボードを使ってアクセス ▪ NVIDIADeepStreamSDKモジュールが動作しているかを確認: ▪ Deepstream moduleのログを見て正しく動作しているか確認: ▪ 設定が反映されていない場合はiotedgeを再起動 ▪ ai_model_with_custom_visionディレクトリのcustom_configsディレクトリに編集済みの “test5_config_file_src_infer_azure_iotedge_edited.txt”、” config_infer_custom_vision.txt”、 “msgconv_config_soda_cans.txt”を用意してあるのでエラーもしくは挙動が違う場合はこれを流用しても 良い sudo iotedge list sudo iotedge logs NVIDIADeepStreamSDK --tail 200 sudo systemctl restart iotedge
  86. 86. 86 Azure IoT Hub作成の際にPricing and scale tierでF1: Free tierで無料を選択した 場合はメッセージ数が容量を超えた場合は右 に示すような画像になり、有料枠での再作成 が必要になる メッセージ数が容量をこえた場合
  87. 87. 87 Jetsonにsshアクセス Iotedgeを止める sudo systemctl stop iotedge AI MODEL WITH CUSTOM VISION
  88. 88. 88 Azure IoT Central
  89. 89. 89 Azure IoT Central ▪ ダッシュボードを作成して現状を把 握しやすくするためのサービス
  90. 90. 90 Azure IoT Central IoT Edge Agent IoT Edge Runtime IoT Hub Container Registry VLC media player ネットワーク ストリーミング Visual Studio Code ImageのPull IoT Edge の 管理、指示 Module配置情報の転送 Azure Deep Stream
  91. 91. 91 Azure IoT Central ▪ https://apps.azureiotcentral.co m/buildにアクセス ▪ Azure アカウントにサインイン ▪ Custom Appsをクリック
  92. 92. 92 Azure IoT Central ▪ 任意のApplication nameとURLを設定 ▪ 例:deep-stream ▪ Application template: Custom Application を選択 ▪ Azure subscriptionでFreeを選択。7日間+5 つのデバイスまで無料で使用可能 ▪ Createをクリック
  93. 93. 93 Azure IoT Central ▪ Device Templateを選択
  94. 94. 94 Azure IoT Central ▪ Create Device Templateをクリック
  95. 95. 95 Azure IoT Central ▪ Azure IoT Edgeをクリック ▪ Next: Customizeをクリック
  96. 96. 96 Azure IoT Central ▪ Device template Name名で NVIDIA Jetson Nano DCMを設定 ▪ Next:Reviewをクリック ▪ Createをクリック
  97. 97. 97 Azure IoT Central ▪ レポジトリをダウンロードしておきます。 ▪ https://github.com/ebertrams/iot edge-iva-nano ▪ Import modelをクリック ▪ ダウンロードしたレポジトリの “NVIDIAJetsonNanoDcm.json”をアップロード します。 ▪ https://github.com/ebertrams/iot edge-iva- nano/blob/master/NVIDIAJetsonNa noDcm.json
  98. 98. 98 Azure IoT Central ▪ Viewsをクリック ▪ Visualizing the deviceをクリック
  99. 99. 99 Azure IoT Central ▪ View nameをDashboardにリネームする ▪ Telemetry sectionで ▪ Primary Detection Count ▪ を選択(コピーペーストすると間違わず選択で きる。これ以降コピーペースト推奨)してAdd tileをクリック
  100. 100. 100 Azure IoT Central ▪ Configureボタンを押す ▪ Primary Detection Countの項目をAverageか らCountに変更 ▪ Updateをクリック Configure
  101. 101. 101 Azure IoT Central ▪ Telemetry sectionで ▪ Secondary Detection Count ▪ を選択してAdd tileをクリック
  102. 102. 102 Azure IoT Central ▪ Configureボタンを押す ▪ Secondary Detection Countの項目を AverageからCountに変更 ▪ Updateをクリック Configure
  103. 103. 103 Azure IoT Central ▪ Telemetry sectionで ▪ Free Memory ▪ System Heartbeat ▪ を追加(+Telemetryで追加可能) ▪ Add tileをクリック
  104. 104. 104 Azure IoT Central ▪ Telemetry sectionで ▪ Change Video Model ▪ Device Restart ▪ Processing Started ▪ Processing Stopped ▪ を追加してAdd tileをクリック
  105. 105. 105 Azure IoT Central ▪ Telemetry sectionで ▪ Pipeline State ▪ を追加してAdd tileをクリック ▪ Saveをクリック
  106. 106. 106 Azure IoT Central ▪ Viewsをクリック ▪ Visualizing the deviceをクリック
  107. 107. 107 Azure IoT Central ▪ View NameにView Deviceを設定 ▪ Properties sectionで ▪ Device model ▪ Manufacturer ▪ Operating system name ▪ Processor architecture ▪ Processor manufacturer ▪ Software version ▪ Total memory ▪ Total storage ▪ RTSP Video Url ▪ を追加してAdd tileをクリック ▪ Saveをクリック
  108. 108. 108 Azure IoT Central ▪ Replace manifestをクリック ▪ Uploadをクリック ▪ 先ほどクローンしたディレクトリのconfigディレクトリ 直下にあるdeployment.jsonをアップロード ▪ https://github.com/ebertrams/iotedge- iva- nano/blob/master/config/deployment.jso n ▪ Replaceをクリック
  109. 109. 109 Azure IoT Central ▪ Publishをクリック ▪ 確認画面が出るのでPublishを実 行
  110. 110. 110 Azure IoT Central ▪ Devices tabへ移動 ▪ NVIDIA Jetson Nano DCMを選択 ▪ Newをクリック
  111. 111. 111 Azure IoT Central ▪ Createをクリック
  112. 112. 112 Azure IoT Central ▪ 作成されたデバイスをクリック
  113. 113. 113 Azure IoT Central ▪ Connect をクリック
  114. 114. 114 Azure IoT Central ▪ ID Scope ,Device ID, Primary keyをコピーして メモしておく
  115. 115. 115 Azure IoT Central IoT Edge Agent IoT Edge Runtime IoT Hub Container Registry VLC media player ネットワーク ストリーミング Visual Studio Code ImageのPull IoT Edge の 管理、指示 Module配置情報の転送 Azure Deep Stream
  116. 116. 116 Jetsonに任意の方法でsshアクセス(Visual Studio Codeでアクセスしている場合は2つWindowがあるので注 意)もしくはディスプレイ、マウス、キーボードを使ってアクセス 下記コマンドで必要なディレクトリを作成し、データダウンロードして、解凍、権限付与。wgetはコピペの際は改行 されるので注意 ssh {User Name}@{ip address} sudo mkdir /data cd /data sudo wget -O setup.tar.bz2 --no-check-certificate "https://onedrive.live.com/download?cid=0C0A4A69A0CDCB4C&resid=0C0A4A69A0CDCB4C%21588625&aut hkey=ACUlRaKkskctLOA" sudo tar -xjvf setup.tar.bz2 sudo chmod -R 777 /data Azure IoT Central
  117. 117. 117 Jetsonのターミナルで下記コマンドを入力。IoT Edge configurationファイルを修正 Azure IoT Hubで設定した部分をコメントアウト sudo vi /etc/iotedge/config.yaml # Manual provisioning configuration #provisioning: # source: "manual" # device_connection_string: "“ # dynamic_reprovisioning: false Azure IoT Central
  118. 118. 118 元々ある“DPS symmetric key provisioning configuration”を修正、先ほどメモした“ID Scope”、”Device ID”、”Primary Key”を設定 Azure IoT Edge Runtimeを再起動 # DPS symmetric key provisioning configuration provisioning: source: "dps" global_endpoint: "https://global.azure-devices-provisioning.net" scope_id: "<ID Scope>" attestation: method: "symmetric_key" registration_id: "<Device ID>" symmetric_key: "<Primary Key>“ # dynamic_reprovisioning: false sudo systemctl restart iotedge Azure IoT Central
  119. 119. 119 IoT Edge Agent IoT Edge Runtime IoT Hub Container Registry VLC media player ネットワーク ストリーミング Visual Studio Code ImageのPull IoT Edge の 管理、指示 Module配置情報の転送 Azure Deep Stream Azure IoT Central
  120. 120. 120 Azure IoT Central ▪ IoT Central applicationに戻る ▪ Devicesタブに移動 ▪ 作成したデバイスを選択
  121. 121. 121 Azure IoT Central ▪ View Deviceをクリック ▪ 拡大 拡大
  122. 122. 122 Azure IoT Central ▪ しばらくするとRTSP Video URLを 確認できるのでコピー ▪ Back to dashboard viewをク リック
  123. 123. 123 VLC media playerを開く Media > Open Network Streamを開く Network urlに先ほどコピーしたものをペースト Playをクリック Azure IoT Central
  124. 124. 124 Dashboardをクリック 反映されるまで時間がかかるがダッシュボー ド上でモデルの検出数を確認できる Azure IoT Central
  125. 125. 125 Jetsonにsshアクセス Iotedgeを止める sudo systemctl stop iotedge AI MODEL WITH CUSTOM VISION
  126. 126. 126 AI MODEL WITH CUSTOM VISION + Azure IoT Central
  127. 127. 127 Manageタブを開く Demo Modeの選択を外す AI model Typeの項目でCustom Visionを選択 Primary Detection ClassをUpに変更 Secondary Detection ClassをDownに変更 AI MODEL WITH CUSTOM VISION + Azure IoT Central
  128. 128. 128 Custom Vision Model Urlに下記リンクをコピーペー スト https://onedrive.live.com/download?0C0A4 A69A0CDCB4C&resid=0C0A4A69A0CDCB4C%2 1587636&authkey=AOCf3YsqcZM_3WM 自分で学習したモデルを選びたい場合は customvision.aiからモデルをダウンロードする際に右 クリックして”Copy Link address”で取得した値をコ ピーペースト AI MODEL WITH CUSTOM VISION + Azure IoT Central
  129. 129. 129 Video Stream Input 1 > CameraId = Cam01 Video Stream Input 1 > videoStreamUrl = file:///data/misc/storage/sampleStreams/cam- cans-00.mp4 Video Stream Input 2 > CameraId = Cam02 Video Stream Input 2 > videoStreamUrl = file:///data/misc/storage/sampleStreams/cam- cans-01.mp4 Video Stream Input 3 > CameraId = Cam03 Video Stream Input 3 > videoStreamUrl = file:///data/misc/storage/sampleStreams/cam- cans-02.mp4 Saveをクリック AI MODEL WITH CUSTOM VISION + Azure IoT Central
  130. 130. 130 Jetsonにsshアクセス Iotedgeを止めていたので起動 sudo systemctl start iotedge RTSPの入力先を変更(デモ)
  131. 131. 131 AI MODEL WITH CUSTOM VISION + Azure IoT Central ▪ View Deviceタブをクリック ▪ 拡大 ▪ RTSP Video URLを確認できるの でコピー
  132. 132. 132 VLC media playerを開く Media > Open Network Streamを開く Network urlに先ほどコピーしたものをペースト Playをクリック ずっど動作させておくとJetson Nanoの電源が消え るので注意 AI MODEL WITH CUSTOM VISION + Azure IoT Central
  133. 133. 133 Dashboardに移動して確認 AI MODEL WITH CUSTOM VISION + Azure IoT Central
  134. 134. 134 動作しない場合 Manageタブを開く Demo Modeの選択 Jetson Nanoでiotedgeの再起動 Manageタブを開く Demo Modeの選択の解除 Jetson Nanoでiotedgeの再起動 AI MODEL WITH CUSTOM VISION + Azure IoT Central sudo systemctl restart iotedge sudo systemctl restart iotedge
  135. 135. 135 Jetsonにsshアクセス Iotedgeを止める sudo systemctl stop iotedge AI MODEL WITH CUSTOM VISION + Azure IoT Central
  136. 136. 136 後処理
  137. 137. 137 Administrationを選択して“Delete”をクリック 確認されるが“Delete”を実行 Azure IoT Central
  138. 138. 138 下記リンクにアクセス https://portal.azure.com/#home 作成したIoT Hubをクリック Azure IoT
  139. 139. 139 “Delete”をクリック Azure IoT
  140. 140. 140 Azure IoT Hub名を入力 Deleteをクリック Azure IoT
  141. 141. 141 作成したResource groupをクリック Azure IoT
  142. 142. 142 作成したResource groupをクリック 先ほど学習で使用したリソースがあるので選択して “Delete Reource Group”をクリック TYPE THE RESOURCE GROUP NAME:にリソース名を 入力してDELETEをクリック Azure IoT

×