Xi IoT上でYOLOv5マスク検出を動かしてみる
せっかく作った YOLOv5 マスク検出を Xi IoT 上にも展開してみます
Xi IoT上で動いてしまえば、Service Domain(エッジOS)を増やしていけば、プラネットスケールの展開を目論むことができます。
【今回やってみること】
1.Xi IoT用 YOLOv5 runtimeを作成
2.Xi IoTで runtime 読み込み
3.YOLOv5 の detect.py を Xi IoT 用に改良して自作
4.Data Pipeline の作成
5.nodered で可視化
Xi IoTでこんなの作ってみる
一回作ってしまえば、プラネットスケールと書いたように Service Domain(エッジOS)に、Webカメラを通信させればエッジAI をゼロタッチ展開できるのが特徴です
あちこち設置してみたいので頑張って作ってみましょう
1.Xi IoT用 YOLOv5 runtimeを作成
まずは、YOLOv5 を Xi IoT 上で動かすにはいくつか方法があるようです
・Kubernetes Apps - Dockerコンテナイメージを作り込み丸っともってくる。シンプル
・Runtime - Function で呼び出し、Data Pipeline で活用。自由度が高い
(きっとML modelがこの辺うまくできそうだけどあんま分かってない)
今回は、自由度の高い Runtime 作戦でいきます
YOLOv5 は PyTorch を使っていますので、これを参考に Xi IoT用 Runtime を作っていきます
konchangakita.hatenablog.com
YOLOv5 の中に Dockerコンテナ作る用の requirements.txt があるので、これを利用します
あとは、学習済みパラメータ(xxx.pt)も一緒に設置します
2.Xi IoTで runtime 読み込み
自作したRuntime のコンテナイメージを Dockerhub に push しておきます
https://hub.docker.com/repository/docker/konchangakita/kon_yolov5_env/general
Xi IoT ver2.0 になって Runtime Environments の場所が変わりました。Projectごとにそれぞれ選ぶようになりました
3.YOLOv5 の detect.py を Xi IoT 用に改良して自作
Data Pipeline に登録する Function を作っていきます
RTSP からの映像から画像を切り出す
RTSP で受け取った映像から jpg 形式で切り出し、base64 でエンコードして次へ渡します
runtime は、Tensorflow Python を選択します
(opencv が必要)
画像に対してマスク検出
ここで 自作した YOLOv5 Runtimeを指定します
YOLOv5 の detect.py を参考にしながら、自作しました
4.Data Pipeline の作成
まずはWebカメラを Data Source に登録します
RTSP のアドレスは、Webカメラによって異なります
プロジェクトを選んで、Data Pipelineを作成します
Input: Data Sourceで作ったカテゴリを選択
Transformation:Sampling interval 30 seconds / raw_to_jpg → maskdetect
Output:Stream Domain / MQTT / maskdetect
Data Pipeline を作った後は、しばらく待ちます
Deployment タブで RUNNING となれば、無事完了です
(Functionでプログラミング記述がミスったりしていると、RUNNINGになりません)
View Real-time Logs でデバックすることができます
5.nodered で可視化
Dockerhub で公開されている コンテナイメージをそのまま使います。
Xi IoTで外部アクセス用に必要な socat も一緒記述しておき、公開する port番号を指定します(今回は 11880)
ブラウザで 「Service DomainのIP:11880」へアクセスし、MQTTで受け取った画像出力するだけのフローを作ります
フローはこんな感じです
今回 nodered 上の詳細説明は省きますが、Youtube に Webカメラを向けて撮影してみると、良い感じに判定結果を表示してくれています
全容はコチラ
GitHub - konchangakita/xiiot_MaskDetect
Xi IoTの良いところは、これを一回作ってしまえばナンボでも、どこにでもスケールできることです
早速福岡オフィスに適用しましたので、福岡お立ち寄りの際はNutanixさんへお声がけください
(名古屋にもはやく設置したい)