JetPack 4.2をインストールしたJetson TX2に、TensorRTを用いたYOLOの推論専用の実装であるtrt-yolo-appをインストールして、YOLOv3とTiny YOLOv3を試してみました。
trt-yolo-app
trt-yolo-appは、deepstream_reference_apps(https://github.com/NVIDIA-AI-IOT/deepstream_reference_apps)リポジトリに含まれるTensorRTを用いたYOLOの推論専用の実装です。
なお、リポジトリの名前がdeepstream…となっていますが、trt-yolo-appは、DeepStream SDKを必要としません。
予め~/githubディレクトリを作成しておき、リポジトリをクローンするために、以下のコマンドを実行します。
$ cd ~/github $ git clone https://github.com/NVIDIA-AI-IOT/deepstream_reference_apps
依存パッケージのインストールと、YOLOv2、Tiny YOLOv2、YOLOv3及びTiny YOLOv3のweightsとcfgファイルをダウンロードするために、以下のコマンドを実行します。
なお、YOLOv2とTiny YOLOv2を使用しない場合、prebuild.shの該当箇所をコメントアウトしておきます。
$ cd ~/github/deepstream_reference_apps/yolo $ ./prebuild.sh
trt-yolo-appをコンパイルするために、以下のコマンドを実行します。
$ cd ~/github/deepstream_reference_apps/yolo/apps/trt-yolo $ mkdir build && cd build $ cmake -D CMAKE_BUILD_TYPE=Release .. $ make
YOLOv3 & Tiny YOLOv3
YOLOv3とTiny YOLOv3は、以下の記事で紹介した物体検出用のネットワークです。
ここ(http://cocodataset.org/#explore?id=533917)からダウンロードした画像を~/github/deepstream_reference_apps/yolo/dataディレクトリにコピーし、533917.jpgにリネームしておきます。
次に、533917.jpgの物体検出を行うために、~/github/deepstream_reference_apps/yolo/dataディレクトリのtest_images.txtを開き、内容を以下のように書き換えます。
なお、<username>
の部分は、環境に合わせて変更します。
/home/<username>/github/deepstream_reference_apps/yolo/data/533917.jpg
YOLOv3
物体検出結果を画像として保存するために、以下のコマンドを実行してyolov3-save.txtを作成します。
$ cd ~/github/deepstream_reference_apps/yolo/config $ cp yolov3.txt yolov3-save.txt
yolov3-save.txtの以下の部分を
#--save_detections=true #--save_detections_path=data/detections/
アンコメントし、--prob_thresh=0.24
を追加して保存します。
--save_detections=true --save_detections_path=data/detections/ --prob_thresh=0.24
また、YOLOv3モデルを入力サイズが416×416のYOLOv3-416に対応させるため、~/github/deepstream_reference_apps/yolo/dataディレクトリのyolov3.cfgファイルの以下の部分を
width=608 height=608
次のように変更して保存します。
width=416 height=416
YOLOv3モデル(YOLOv3-416)で物体検出するために、以下のコマンドを実行すると、~/github/deepstream_reference_apps/yolo/data/detectionsディレクトリに物体検出結果の画像が保存されます。
$ cd ~/github/deepstream_reference_apps/yolo $ ./apps/trt-yolo/build/trt-yolo-app --flagfile=config/yolov3-save.txt
物体検出の結果として、以下の画像が得られました。

trt-yolo-appにおけるYOLOv3 (YOLOv3-416)の物体検出結果
Tiny YOLOv3
yolov3-save.txtの作成と同様に、yolov3-tiny.txtをベースにyolov3-tiny-save.txtを作成します。
Tiny YOLOv3モデルで物体検出するために、以下のコマンドを実行します。
$ cd ~/github/deepstream_reference_apps/yolo $ ./apps/trt-yolo/build/trt-yolo-app --flagfile=config/yolov3-tiny-save.txt
物体検出の結果として、以下の画像が得られました。

trt-yolo-appにおけるTiny YOLOv3 (YOLOv3-tiny)の物体検出結果
下の画像が、前回の記事のDarknetにおけるTiny YOLOv3の物体検出結果です。
Tiny YOLOv3モデルの場合、物体検出結果が数カ所で異なっています。

DarknetにおけるTiny YOLOv3 (YOLOv3-tiny)の物体検出結果
まとめ
JetPack 4.2をインストールしたJetson TX2に、TensorRTを用いたYOLOの推論専用の実装であるtrt-yolo-appをインストールして、YOLOv3とTiny YOLOv3を試してみました。
YOLOv3(YOLOv3-416)の場合、Darknetと同様の結果が得られましたが、Tiny YOLOv3(YOLOv3-tiny)の場合、数カ所でDarknetとは異なる結果となりました。