SiMa.ai(以降SiMa)はGPU(グラフィックス処理ユニット)を提供するα社の性能に匹敵する、エッジでのAIに強みを持ったデバイスです。そんなSiMaのMLSoC(Machine Learning System-on-Chip)を実際に使ってみたいという声も上がっています。今回は、α社のGPUで動作していたモデルをSiMaに移植し、実際に動かす方法をご紹介いたします。
移植の手順は以下の通りです。
なお、今回デモ動画結果は以下です。
α社動画
SiMa動画
アプリケーションの実装
今回は、いよいよα社のGPU上で実行した人の動きを追跡して
滞在状況をヒートマップ分析するシステムをSiMaで構築していきます。
YoloV7のデモを複製
CvHelpersにヒートマップ描画用メソッドを実装
overlayプラグインにheatmapオプションを追加
ビルドとデプロイ
UDPで送られた動画をホストマシンで再生
なお、上記の手順はすべて「ホストマシンの環境構築」の章で構築したDockerコンテナの中での実行を前提としています。
app_zooディレクトリにあるYoloV7デモを複製するために、以下のコマンドを実行してください。
また、フォルダの中には固定でファイルパスの値を持つものが多数あるため、パス名の一斉置換も行います。
sima-user@docker-image-id:/home$ cd /usr/local/simaai/app_zoo/Gstreamer/ cp -r YoloV7 YoloV7_heatmap_demo
sima-user@docker-image-id:/home$ find YoloV7_heatmap_demo -type f \( -name "*.json" -o -name "*.sh" \) -exec sed -i 's/YoloV7/YoloV7_heatmap_demo/g' {} \; -print
sima-user@docker-image-id:/home$ find YoloV7_heatmap_demo -type f \( -name "*.json" -o -name "*.sh" \) -exec sed -i 's/yoloV7/yoloV7_heatmap_demo/g' {} \; -print
draw_heatmapメソッドをCvHelpersクラスに追加してヒートマップの描画処理ができるようにします。
ソースコードの修正差分は以下です。
なお、今回はNV12のみを利用するので、実際に実装をしているのは具象クラスのCvHelpersNV12クラスだけですが、CvHelpersYUV420クラスにも同様の実装を行うことでYUV420でも利用可能です。
overlayプラグインの呼び出し時にheatmapオプションを指定するように改修します。
ソースコードの修正差分は以下です。
なお、application.jsonのgst内にある location=rtsp://192.168.2.10:5005/routecam といったカメラのrstpサーバー情報はお手持ちのカメラの仕様に合わせて適宜修正をしてください。
プラグイン追加後のビルドのために、以下のコマンドを実行してください。
プラグインは通常のMPKツールを使ったビルド手順とは別でビルドを行う必要があります。
sima-user@docker-image-id:/home$ cd /usr/local/simaai/plugin_zoo/a65-apps/build &&
source /opt/poky/4.0.10/environment-setup-cortexa65-poky-linux &&
cmake -DCMAKE_INSTALL_PREFIX=/opt/poky/4.0.10/sysroots/cortexa65-poky-linux/usr/ .. &&
sudo make install
※DCMAKE_INSTALL_PREFIXに指定しているパスはMPKツールでビルドの際に必要なプラグインのビルド済みのsoファイルを探しに行く先と同様のため、そのパスに吐き出されるように指定しています。
※今回はまとめてビルドしていますが、対象のプラグインだけをビルドしても問題ありません。
次にデプロイのために、以下のコマンドを実行してください。
sima-user@docker-image-id:/home$ PIPELINE_PATH='/usr/local/simaai/app_zoo/Gstreamer/YoloV7_heatmap_demo' &&
mpk device connect -t sima@192.168.2.10 &&
mpk kill -i yoloV7_heatmap_demo_Pipeline &&
mpk remove -a com.sima.awesome_app -t 192.168.2.10 &&
mpk create -s $PIPELINE_PATH -d $PIPELINE_PATH &&
mpk deploy -f $PIPELINE_PATH/project.mpk -t 192.168.2.10
overlayプラグインの方はMPKツールでcreateする際に自動でビルドされるため、個別でmakeコマンドを実行してビルドする必要はありません。
ビルドやデプロイがうまくいかない場合、/var/log/simaai/ に各エラーログが出力されるので確認してみるとよいかと思います。
動画データの再生のために、以下コマンドを実行してください。
sima-user@sima-user-machine:~$ gst-launch-1.0 udpsrc port=9000 caps="application/x-rtp, encoding-name=H264, payload=96" ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! autovideosink
ホストマシンで9000番ポートが許可されているか確認してください。許可されていない場合、ポートを変更するか、許可の設定をしてください。
結果、以下の動画が出力されます。
ここまでの作業を行うことでα社のGPUからSiMa.ai MLSoCへの移植が完了しました。
α社から無事に移植ができることを確認していただけたと思います。
全章を通して実際の性能などを体感いただき、今後の開発に役立てていただければ幸いです。
本章についてご質問などありましたら、以下よりお問い合わせください。