大串 正矢, 2020.11.26
DEEPSTREAM WITH
AZURE IOT
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
進捗シート
Slackの右上のアイコンを押すとSlack上のアカウント名が分かります。
Slackに進捗確認のスプレッドシートを共有するので、そこにアカウント名をお願いします。
ハンズオンごとの項目が記入されているので完了したら〇にしてください
4
DEPLOY DEEPSTREAM
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
予め配布した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
deployディレクトリの
“deployment.template_deploy.json”の内容を”
deployment.template.json”にコピーペースト
DEPLOY DEEPSTREAM
8
Jetson Nanoにデプロイ
- deployment.template.jsonを右クリックして
Generate IoT Edge Deployment Manifestを選択
- Configディレクトリが作成され、デプロイ用の
deployment.jsonファイルが作成
- 注意:キャプチャされているmodulesディレクトリは不
要です。Configディレクトリはこの処理で作成されます。
DEPLOY DEEPSTREAM
9
Jetson Nanoにデプロイ
- 先ほど作成されたconfigディレクトリにある
deployment.jsonファイルを右クリックしてCreate
Deployment for Single Deviceを選択
- 先ほど作成したIoT Edge deviceを選択
DEPLOY DEEPSTREAM
10
Jetsonに任意の方法でsshアクセス(Visual Studio Codeでアクセスしている場合は2つWindowがあるので注
意)もしくはディスプレイ、マウス、キーボードを使ってアクセス
ターミナルで下記コマンドを入力してiotedgeを起動
sudo systemctl start iotedge
DEPLOY DEEPSTREAM
11
デモ
実際に画面共有しながらデモをお見せします。
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
“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
“systemModules”: 基本機能を実現するためのモジュール
“edgeAgent”: モジュールを監視、デプロイするモジュール
“edgeHub”: エッジデバイスとクラウド連携するモジュール
その他の設定が気になる方は下記を参照
https://docs.microsoft.com/en-us/azure/iot-
edge/module-edgeagent-edgehub#edgeagent-
desired-properties
DEPLOY DEEPSTREAM
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
適切にデプロイされたかモニタリングして確認
- VS Codeの左下にあるデバイスを右クリック
- Start Monitoring Built-In Event Endpointを選択
一度目の実行はモデルの変換処理があるため時間
がかかります。
モジュールダウンロードに十分に時間がたつとIoT Hub
からのメッセージを確認できます。
サンプルビデオの人と車を検出するAIを実行している
DeepStreamアプリケーションによって生成されたメタ
データメッセージ
Deep Streamからの
メタメッセージ
DEPLOY DEEPSTREAM
17
Jetsonに任意の方法でsshアクセス(Visual Studio Codeでアクセスしている場合は2つWindowがあるので注
意)もしくはディスプレイ、マウス、キーボードを使ってアクセス
ターミナルで下記コマンドを入力してiotedgeを止める
sudo systemctl stop iotedge
DEPLOY DEEPSTREAM
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
Azure IoT Hub作成の際にPricing and
scale tierでF1: Free tierで無料を選択した
場合はメッセージ数が容量を超えた場合は右
に示すような画像になり、有料枠での再作成
が必要になる
メッセージ数が容量をこえた場合
20
CHECK NETWORK STREAM
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
ネットワークストリームを使って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
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
“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
下記のようにファイルを編集できる
CHECK NETWORK STREAM
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
同一ファイル“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
同一ファイル“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
同一ファイル“test5_config_file_src_infer_azure_iotedge_edited.txt”を編集
DeepStreamでループ処理するための設定
[tests]
file-loop=1
CHECK NETWORK STREAM
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
JetsonにsshアクセスしていないVisual Studio Codeを
開く。この方法を使用していない方は気にしなくて良い
check_network_streamディレクトリの”
deployment.template_check_network_stream.
json”の内容を” deployment.template.json”にコ
ピーペーストして上書き
CHECK NETWORK STREAM
32
Jetson Nanoにデプロイ
- deployment.template.jsonを右クリックして
Generate IoT Edge Deployment Manifestを選択
- Configディレクトリが作成され、デプロイ用の
deployment.jsonファイルが作成
CHECK NETWORK STREAM
33
Jetson Nanoにデプロイ
- 先ほど作成されたconfigディレクトリにある
deployment.jsonファイルを右クリックしてCreate
Deployment for Single Deviceを選択
- 先ほど作成したIoT Edge deviceを選択
CHECK NETWORK STREAM
34
Jetsonに任意の方法でsshアクセス(Visual Studio Codeでアクセスしている場合は2つWindowがあるので注
意)もしくはディスプレイ、マウス、キーボードを使ってアクセス
ターミナルで下記コマンドを入力してiotedgeを止めていたので起動
sudo systemctl start iotedge
CHECK NETWORK STREAM
35
VLC media playerを開く
Media > Open Network Streamを開く
Network urlに“rtsp://JetsonのIPアドレ
ス:8554/ds-test”をコピー
Playをクリック
CHECK NETWORK STREAM
36
デモ
実際に画面共有しながらデモをお見せします。
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
jsonファイルの変更点:RSTPネットワークストリームで
VLC media playerを用いて、動画を確認するための
設定
Docker側で開けるポートの設定
Dockerとホストのポートをつなげる設定
"PortBindings": {
"8554/tcp": [
{
"HostPort": "8554"
}
]
}
"ExposedPorts":{
"8554/tcp": {}
}
CHECK NETWORK STREAM
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
Azure IoT Hub作成の際にPricing and
scale tierでF1: Free tierで無料を選択した
場合はメッセージ数が容量を超えた場合は右
に示すような画像になり、有料枠での再作成
が必要になる
メッセージ数が容量をこえた場合
41
Jetsonに任意の方法でsshアクセス(Visual Studio Codeでアクセスしている場合は2つWindowがあるので注
意)もしくはディスプレイ、マウス、キーボードを使ってアクセス
ターミナルで下記コマンドを入力してiotedgeを止める
sudo systemctl stop iotedge
CHECK NETWORK STREAM
42
8 VIDEO STREAM
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
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
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
下記コマンドで必要なディレクトリを作成し、権限付与、ディレクトリ移動
ビデオファイルを取得。 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
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
JetsonにsshアクセスしていないVisual Studio Codeを
開く。この方法を使用していない方は気にしなくて良い
8_video_streamディレクトリの”
deployment.template_8_video_stream.json”の
内容を” deployment.template.json”にコピーペース
トして上書き
8 VIDEO STREAM
49
Jetson Nanoにデプロイ
- deployment.template.jsonを右クリックして
Generate IoT Edge Deployment Manifestを選択
- Configディレクトリが作成され、デプロイ用の
deployment.jsonファイルが作成
8 VIDEO STREAM
50
Jetson Nanoにデプロイ
- 先ほど作成されたconfigディレクトリにある
deployment.jsonファイルを右クリックしてCreate
Deployment for Single Deviceを選択
- 先ほど作成したIoT Edge deviceを選択
8 VIDEO STREAM
51
Jetsonに任意の方法でsshアクセス(Visual Studio Codeでアクセスしている場合は2つWindowがあるので注
意)もしくはディスプレイ、マウス、キーボードを使ってアクセス
ターミナルで下記コマンドを入力してiotedgeを止めていたので起動
sudo systemctl start iotedge
8 VIDEO STREAM
52
VLC media playerを開く
Media > Open Network Streamを開く
Network urlに“rtsp://JetsonのIPアドレ
ス:8554/ds-test”をコピー
Playをクリック
8 VIDEO STREAM
53
デモ
実際に画面共有しながらデモをお見せします。
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
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
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
Azure IoT Hub作成の際にPricing and
scale tierでF1: Free tierで無料を選択した
場合はメッセージ数が容量を超えた場合は右
に示すような画像になり、有料枠での再作成
が必要になる
メッセージ数が容量をこえた場合
58
Jetsonに任意の方法でsshアクセス(Visual Studio Codeでアクセスしている場合は2つWindowがあるので注
意)もしくはディスプレイ、マウス、キーボードを使ってアクセス
ターミナルで下記コマンドを入力してiotedgeを止める
sudo systemctl stop iotedge
8 VIDEO STREAM
59
AI MODEL WITH CUSTOM
VISION
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
▪ http://customvision.aiにアク
セス
▪ サインイン
▪ New Projectを作成
AI MODEL WITH CUSTOM VISION
62
AI MODEL WITH CUSTOM VISION
▪ Soda Cans DownをNameに設
定
▪ Resourceを選択、”create
new”を選択
63
AI MODEL WITH CUSTOM VISION
▪ Nameに”ImageTraining”を設
定
▪ Subscriptionに自身のサブスクリ
プションを設定
▪ Resource Groupは先ほど作成し
たものを選択
▪ KindにCognitiveServiceを選択
▪ LocationにJapan Eastを選択
▪ Pricing TierはF0(無料)もしく
はS0(無料枠を使い切った場
合)を選択
▪ Create Resourceをクリック
64
AI MODEL WITH CUSTOM VISION
▪ Resource は先ほど作成した
Resourceを選択
▪ Project TypesはObject
Detectionを選択
▪ DomainsはGeneral (Compact)
を選択
▪ Export CapabilitieはBasic
platformsを選択
▪ Create project をクリック
65
AI MODEL WITH CUSTOM VISION
▪ 学習用に予め用意した缶の画像
が圧縮された状態で用意されてい
るのでダウンロード
▪ https://1drv.ms/u/s!AEzLza
BpSgoMo_R2
▪ ファイルを解凍する
66
AI MODEL WITH CUSTOM VISION
▪ 解凍したファイルをアップロード
▪ Add Imagesをクリック
▪ Ctrl + Aで画像ファイルを全て選
択してアップロード
67
AI MODEL WITH CUSTOM VISION
▪ アノテーション作業を行う
▪ クリックするとアノテーション作業が
できる
▪ バウンディングボックスとラベルをアノ
テーションする
▪ Up: 上向き
▪ Down:下向き
Down Up
68
AI MODEL WITH CUSTOM VISION
▪ モデルの学習のためにTrainをク
リック
▪ Quick Training を選択して
Train
69
AI MODEL WITH CUSTOM VISION
▪ 学習完了すると精度が確認でき
る
▪ 緑で囲った部分をクリックしてモデ
ルをexport
70
AI MODEL WITH CUSTOM VISION
▪ ONNXフォーマットモデルを選択
▪ Export
▪ Download
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
先ほどダウンロードしたファイルを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
ここからのコマンドのスクリプトを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
カスタムビジョンの出力結果をパースするための追加のライブラリを導入(ディレクトリは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
ディレクトリ移動
下記コマンドで “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
下記コマンドで“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
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
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
Jetson Nanoにデプロイ
- deployment.template.jsonを右クリックして
Generate IoT Edge Deployment Manifestを選択
- Configディレクトリが作成され、デプロイ用の
deployment.jsonファイルが作成
AI MODEL WITH CUSTOM VISION
80
Jetson Nanoにデプロイ
- 先ほど作成されたdeployment.jsonファイルを右クリック
してCreate Deployment for Single Deviceを選択
- 先ほど作成したIoT Edge deviceを選択
AI MODEL WITH CUSTOM VISION
81
Jetsonにsshアクセス
Iotedgeを止めていたので起動
sudo systemctl start iotedge
AI MODEL WITH CUSTOM VISION
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
デモ
実際に画面共有しながらデモをお見せします。
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
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
Azure IoT Hub作成の際にPricing and
scale tierでF1: Free tierで無料を選択した
場合はメッセージ数が容量を超えた場合は右
に示すような画像になり、有料枠での再作成
が必要になる
メッセージ数が容量をこえた場合
87
Jetsonにsshアクセス
Iotedgeを止める
sudo systemctl stop iotedge
AI MODEL WITH CUSTOM VISION
88
Azure IoT Central
89
Azure IoT Central
▪ ダッシュボードを作成して現状を把
握しやすくするためのサービス
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
Azure IoT Central
▪ https://apps.azureiotcentral.co
m/buildにアクセス
▪ Azure アカウントにサインイン
▪ Custom Appsをクリック
92
Azure IoT Central
▪ 任意のApplication nameとURLを設定
▪ 例:deep-stream
▪ Application template: Custom Application
を選択
▪ Azure subscriptionでFreeを選択。7日間+5
つのデバイスまで無料で使用可能
▪ Createをクリック
93
Azure IoT Central
▪ Device Templateを選択
94
Azure IoT Central
▪ Create Device Templateをクリック
95
Azure IoT Central
▪ Azure IoT Edgeをクリック
▪ Next: Customizeをクリック
96
Azure IoT Central
▪ Device template Name名で
NVIDIA Jetson Nano DCMを設定
▪ Next:Reviewをクリック
▪ Createをクリック
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
Azure IoT Central
▪ Viewsをクリック
▪ Visualizing the deviceをクリック
99
Azure IoT Central
▪ View nameをDashboardにリネームする
▪ Telemetry sectionで
▪ Primary Detection Count
▪ を選択(コピーペーストすると間違わず選択で
きる。これ以降コピーペースト推奨)してAdd
tileをクリック
100
Azure IoT Central
▪ Configureボタンを押す
▪ Primary Detection Countの項目をAverageか
らCountに変更
▪ Updateをクリック Configure
101
Azure IoT Central
▪ Telemetry sectionで
▪ Secondary Detection Count
▪ を選択してAdd tileをクリック
102
Azure IoT Central
▪ Configureボタンを押す
▪ Secondary Detection Countの項目を
AverageからCountに変更
▪ Updateをクリック Configure
103
Azure IoT Central
▪ Telemetry sectionで
▪ Free Memory
▪ System Heartbeat
▪ を追加(+Telemetryで追加可能)
▪ Add tileをクリック
104
Azure IoT Central
▪ Telemetry sectionで
▪ Change Video Model
▪ Device Restart
▪ Processing Started
▪ Processing Stopped
▪ を追加してAdd tileをクリック
105
Azure IoT Central
▪ Telemetry sectionで
▪ Pipeline State
▪ を追加してAdd tileをクリック
▪ Saveをクリック
106
Azure IoT Central
▪ Viewsをクリック
▪ Visualizing the deviceをクリック
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
Azure IoT Central
▪ Replace manifestをクリック
▪ Uploadをクリック
▪ 先ほどクローンしたディレクトリのconfigディレクトリ
直下にあるdeployment.jsonをアップロード
▪ https://github.com/ebertrams/iotedge-
iva-
nano/blob/master/config/deployment.jso
n
▪ Replaceをクリック
109
Azure IoT Central
▪ Publishをクリック
▪ 確認画面が出るのでPublishを実
行
110
Azure IoT Central
▪ Devices tabへ移動
▪ NVIDIA Jetson Nano DCMを選択
▪ Newをクリック
111
Azure IoT Central
▪ Createをクリック
112
Azure IoT Central
▪ 作成されたデバイスをクリック
113
Azure IoT Central
▪ Connect をクリック
114
Azure IoT Central
▪ ID Scope ,Device ID, Primary keyをコピーして
メモしておく
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
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
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
元々ある“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
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
Azure IoT Central
▪ IoT Central applicationに戻る
▪ Devicesタブに移動
▪ 作成したデバイスを選択
121
Azure IoT Central
▪ View Deviceをクリック
▪ 拡大
拡大
122
Azure IoT Central
▪ しばらくするとRTSP Video URLを
確認できるのでコピー
▪ Back to dashboard viewをク
リック
123
VLC media playerを開く
Media > Open Network Streamを開く
Network urlに先ほどコピーしたものをペースト
Playをクリック
Azure IoT Central
124
Dashboardをクリック
反映されるまで時間がかかるがダッシュボー
ド上でモデルの検出数を確認できる
Azure IoT Central
125
Jetsonにsshアクセス
Iotedgeを止める
sudo systemctl stop iotedge
AI MODEL WITH CUSTOM VISION
126
AI MODEL WITH CUSTOM
VISION + Azure IoT Central
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
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
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
Jetsonにsshアクセス
Iotedgeを止めていたので起動
sudo systemctl start iotedge
RTSPの入力先を変更(デモ)
131
AI MODEL WITH CUSTOM VISION + Azure IoT Central
▪ View Deviceタブをクリック
▪ 拡大
▪ RTSP Video URLを確認できるの
でコピー
132
VLC media playerを開く
Media > Open Network Streamを開く
Network urlに先ほどコピーしたものをペースト
Playをクリック
ずっど動作させておくとJetson Nanoの電源が消え
るので注意
AI MODEL WITH CUSTOM VISION + Azure IoT Central
133
Dashboardに移動して確認
AI MODEL WITH CUSTOM VISION + Azure IoT Central
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
Jetsonにsshアクセス
Iotedgeを止める
sudo systemctl stop iotedge
AI MODEL WITH CUSTOM VISION + Azure IoT Central
136
後処理
137
Administrationを選択して“Delete”をクリック
確認されるが“Delete”を実行
Azure IoT Central
138
下記リンクにアクセス
https://portal.azure.com/#home
作成したIoT Hubをクリック
Azure IoT
139
“Delete”をクリック
Azure IoT
140
Azure IoT Hub名を入力
Deleteをクリック
Azure IoT
141
作成したResource groupをクリック
Azure IoT
142
作成したResource groupをクリック
先ほど学習で使用したリソースがあるので選択して
“Delete Reource Group”をクリック
TYPE THE RESOURCE GROUP NAME:にリソース名を
入力してDELETEをクリック
Azure IoT
Jetson x Azure ハンズオン DeepStream With Azure IoT

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