AI

日本システム開発株式会社からAIに関するコラムをお届けします。

推論システム開発に2017年から携わっている実績に基づき、様々な情報を発信しています。

日本システム開発の技術、
覗いてみませんか。

AIコラム 第11回「ADVANTECH社製MIC-710IVX上で、マルチカメラDeepStream SDKを用いたサンプルアプリケーションを実行する」

今回から以下の2部構成で、ADVANTECH社から販売されている “MIC-710IVX” の紹介をしていきたいと思います。

今回:ADVANTECH社製MIC-710IVX上で、マルチカメラDeepStream SDKを用いたサンプルアプリケーションを実行する

次回:ADVANTECH社製MIC-710IVX上で、弊社で開発したナンバープレート検出のモデルを使用したベンチマークを実施する

MIC-710IVXとは

NVIDIA社のJetson Xavier NX embeddedが搭載、8チャンネルのPoE Video Inputがサポートされているため、複数台のIPカメラの映像解析を高スループット、低レイテンシで処理出来るエッジAI用のプラットフォームになります。
主な製品スペック
CPU6 cores NVIDIA Carmel ARM®v8.2 64bit CPU
GPUVolta GPU, 384 CUDA core, 48 Tensor cores
Memory8GB LPDDR4
Flash16GB eMMC
Storage2x 3.5” HDD
DisplayHDMI (Max Resolution 3840×2160 @ 60Hz)
USB1x USB 3.0, 1x USB 2.0
Ethernet10/100/1000 Mbps
OtherSupports 8ch PoE Video input
詳細は、製品ページのデータシート[https://advdownload.advantech.com/productfile/PIS/MIC-710IVX/file/MIC-710IVX_DS(051923)20230524135026.pdf]をご確認ください。

映像解析アプリを動かしてみる

前述した通り、複数の映像解析が可能なプラットフォームということで、

以前、本コラムでも紹介したNVIDIA社のDeepStream SDKを用いることで、簡単に複数映像を解析するアプリケーションを動かすことが可能です。

実際に複数映像に対して人間、車、自転車を物体検出するサンプルのアプリケーションを動かしてみたいと思います。

開発用キットのJetpackでの手順とは少し異なるので、セットアップ方法から紹介します。

セットアップでは、パッケージダウンロードのためインターネットへのアクセスが必要です。

事前にネットワーク接続をご確認ください。

尚、eMMCが16GBのため、apt installコマンドのみでパッケージのインストールを行うと途中で容量不足になってしまいます。

その対策として、途中、キャッシュファイルの削除とDeepStream SDK をeMMC以外のストレージにインストールするための手順を含んでおります。

  1. Jetson用のパッケージリポジトリを有効化し、パッケージリストを更新する
    以下のコメントアウトされた行を有効化し、レポジトリを有効化します

$ sudo vim /etc/apt/sources.list.d/nvidia-l4t-apt-source.list

# deb https://repo.download.nvidia.com/jetson/common r32.4 main

# deb
https://repo.download.nvidia.com/jetson/t194 r32.4 main

deb https://repo.download.nvidia.com/jetson/common r32.4 main

deb https://repo.download.nvidia.com/jetson/t194 r32.4 main

 次のコマンドを実行し、レポジトリの情報を更新します。
$ sudo apt update
  1. CUDAのインストール
$ sudo apt install nvidia-cuda
  1. TensorRTのインストール
$ sudo apt install tensorrt
  1. キャッシュファイルの削除
$ sudo apt clean
  1. DeepStream SDKのインストール場所変更

$ sudo mkdir /media/mic-710ivx/vms_storage_0/deepstream

$ sudo ln –s /media/mic-710ivx/vms_storage_0/deepstream /opt/nvidia/deepstream

  1. DeepStream SDKのインストール
ここまででDeepStream SDKが使用出来るようになりました。
$ sudo apt install deepstream-5.0

続いて、同梱されているサンプルアプリの設定ファイルを、IPカメラ8台分の映像解析が出来るように変更します。

予め、PoEのポートにRTSPに対応したIPカメラを接続してください。

また、IPカメラの設定でエンコーディングをH.264としてください。

当コラムではHIKVISION社製のネットワークカメラを利用しております。

他メーカ製品での設定方法は、メーカの製品説明書をご確認ください。

  1. ベースにする設定ファイルをコピーする

$ cd /opt/nvidia/deepstream/deepstream-5.0/samples/configs/deepstream-app

$ sudo cp source30_1080p_dec_infer-resnet_tiled_display_int8.txt source8_1080p_dec_infer-resnet_tiled_display_int8.txt

$ vim source8_1080p_dec_infer-resnet_tiled_display_int8.txt
  1. 8台分のIPカメラの映像を取り込めるように変更する

タイル表示する列数と行数を変更します。

今回は8台ですが、3×3で9の方が縦横比が合うので、rows=3, columns=3とします。

[tiled-display]

enable=1

rows=5

columns=6

width=1280

height=720

gpu-id=0

[tiled-display]

enable=1

rows=3

columns=3

width=1280

height=720

gpu-id=0

次に8台分の入力映像の設定を行います。

下記の[source(N)]のブロックを8台分コピーしてください。

(N)は、他と被らないようにしてください。今回の場合は、分かりやすくsource0~source7の連番とします。

※尚、既に[source1]が存在しているかと思いますが、消してしまって問題ありません。

[source0]

enable=1

#Type – 1=CameraV4L2 2=URI 3=MultiURI 4=RTSP

type=3

uri=file://../../streams/sample_1080p_h264.mp4

num-sources=15

#drop-frame-interval=2

[source0]

enable=1

** 省略 **

[source1]

enable=1

** 省略 **

** 省略 **

[source6]

enable=1

** 省略 **

[source7]

enable=1

** 省略 **

各[source(N)]ブロックの設定を変更します。

type=4 (RTSPを入力ソースにする設定) に変更し、uriに入力ソースのIPカメラのURIを指定します。

また、各[source(N)]ブロックのストリーム数は1なので、num-sources=1に変更します。

※URIなどは、IPカメラの説明書に記載されています。

[source0]

enable=1

#Type – 1=CameraV4L2 2=URI 3=MultiURI 4=RTSP

type=3

uri=file://../../streams/sample_1080p_h264.mp4

num-sources=15

#drop-frame-interval=2

[source0]

enable=1

#Type – 1=CameraV4L2 2=URI 3=MultiURI 4=RTSP

type=4

uri=rtsp://user:pass@192.168.11.13

num-sources=1

#drop-frame-interval=2

ここまでで設定ファイルの変更は完了しました。

それでは実際に実行してみます。

$ deepstream-app -c source8_1080p_dec_infer-resnet_tiled_display_int8.txt

弊社の環境のカメラはフレームレートが25となっていますが、全ての映像で秒間25フレーム分の処理が出来ています。

以下、各映像のフレームレートを示すログになります。

**PERF: 25.01 (25.01) 25.17 (25.10) 25.01 (25.01) 25.01 (25.10) 25.20 (25.08) 24.96 (25.08) 25.20 (25.08) 24.96 (25.08)

**PERF: 24.97 (25.03) 24.82 (25.11) 24.97 (25.03) 24.97 (25.11) 24.79 (25.11) 25.01 (25.11) 24.79 (25.11) 25.01 (25.11)

**PERF: 25.00 (25.03) 25.00 (25.10) 25.00 (25.03) 25.00 (25.10) 25.00 (25.10) 25.00 (25.10) 25.00 (25.10) 25.00 (25.10)

また、レイテンシに関しても問題なく、ほとんど遅延がありません。

いかがでしたでしょうか。

Jetson Xavier NXが搭載されているだけあって、かなりのパフォーマンスが出ていたと思います。

今回は、DeepStream SDKのサンプルに同梱されているリファレンスモデルを使用したアプリケーションの確認でしたが、次回は、冒頭でも記載した通り、弊社が開発しているナンバープレート検出を使用したベンチマークも実施してみたいと思います。

最後までお読みいただき、ありがとうございました。

■関連サービス

AIソリューション

オープンソースを活用したAIのシステム構築・開発を支援!

車両ナンバープレート検知全国版

車両のナンバープレートをAIが検知・処理!全国のナンバープレートに対応!

人数カウントBODY_ロゴ

カメラ撮影した映像から指定領域内の滞在人数をAIが認識!

人数カウントHEAD_ロゴ

密集した空間から指定領域内の滞在人数をAIが認識!

ラインクロスカウント

来店人数のカウントや通行量調査などを自動化!

pagetop