前: Jetson AGX Xavier テスト YOLOv4
次へ: Jetson AGX Xavier に ROS をインストールする
I.はじめに
以前、Xavier で YOLOv4 アルゴリズムをテストしたところ、検出速度が遅く、TensorRT を使用して高速化できることがわかりました。現在、多くの大物がそれを実装しています。この記事では、Github の JK Jung 著者のtensorrt_demosプロジェクトを使用して、yolov4 の検出速度を向上させます。
2. 準備を加速する
1. tensorrt_demos プロジェクトのクローンを作成します
git clone https://github.com/jkjung-avt/tensorrt_demos
2. 環境構築
①yolov5とTensorRTアクセラレーションの環境設定についての私の記事を参考に、python環境を設定し、yolov5envという名前の環境を取得します。
②pycudaとonnxをインストール
conda activate yolov5env
pip install pycuda
pip install onnx==1.4.1
onnx の最新バージョンを使用しないように注意してください。エラーが報告されます。ここで pycuda のインストールに問題がある可能性があります。ソース コード インストールを使用することをお勧めします。私も最初は解き方を忘れていて、インストールに失敗したことしか覚えていません。関連する多くのチュートリアルがオンラインにあります。
3. プロジェクトをコンパイルする
/tensorrt_demos/plugins/ ディレクトリに入ります。
make -j8
或者
make
4. ファイルを生成する
①スクリプト修正
/tensorrt_demos/yolo/ ディレクトリに download_yolo.sh スクリプトがあります.スクリプトを開くと、スクリプトが YOLOv3 と YOLOv4 の多くのバージョンを含む cfg ファイルと weight ファイルをダウンロードし、関連ファイルを生成することがわかります.異なるサイズ。しかし、いくつかのファイルは必要ありません。また、国内のネットワークがブロックされやすいか、ダウンロードが遅いです。
テストの便宜上、この記事では主に yolov4-tiny.weights と yolov4.weights を例として取り上げます。したがって、download_yolo.sh の一部の指示は削除されます. まず、事前にダウンロードされた yolov4-tiny.weights、yolov4-tiny.cfg、yolov4.weights、および yolov4.cfg ファイルをダウンロードします (ファイルが必要な場合は、プライベート メッセージを送信できます理由はわかりませんが、CSDN にアップロードされたファイルは自動的に課金されます) /tensorrt_demos/yolo/ ディレクトリに配置します。次に、download_yolo.sh スクリプトの内容を次のように変更します。
#!/bin/bash
set -e
echo
echo "Creating yolov4-tiny-288.cfg and yolov4-tiny-288.weights"
cat yolov4-tiny.cfg | sed -e '6s/batch=64/batch=1/' | sed -e '8s/width=416/width=288/' | sed -e '9s/height=416/height=288/' > yolov4-tiny-288.cfg
echo >> yolov4-tiny-288.cfg
ln -sf yolov4-tiny.weights yolov4-tiny-288.weights
echo "Creating yolov4-tiny-416.cfg and yolov4-tiny-416.weights"
cat yolov4-tiny.cfg | sed -e '6s/batch=64/batch=1/' > yolov4-tiny-416.cfg
echo >> yolov4-tiny-416.cfg
ln -sf yolov4-tiny.weights yolov4-tiny-416.weights
echo "Creating yolov4-288.cfg and yolov4-288.weights"
cat yolov4.cfg | sed -e '2s/batch=64/batch=1/' | sed -e '7s/width=608/width=288/' | sed -e '8s/height=608/height=288/' > yolov4-288.cfg
ln -sf yolov4.weights yolov4-288.weights
echo "Creating yolov4-416.cfg and yolov4-416.weights"
cat yolov4.cfg | sed -e '2s/batch=64/batch=1/' | sed -e '7s/width=608/width=416/' | sed -e '8s/height=608/height=416/' > yolov4-416.cfg
ln -sf yolov4.weights yolov4-416.weights
echo "Creating yolov4-608.cfg and yolov4-608.weights"
cat yolov4.cfg | sed -e '2s/batch=64/batch=1/' > yolov4-608.cfg
ln -sf yolov4.weights yolov4-608.weights
echo
echo "Done."
②スクリプトを実行して関連ファイルを生成します。
sh download_yolo.sh
完了すると、次のファイルが生成されます。
③onnxファイルとtensorrtエンジンファイルを生成
/tensorrt_demos/yolo/ ディレクトリでターミナルを開きます。
conda activate yolov5env
例として yolov4-tiny-288 を取り上げます。
python yolo_to_onnx.py -m yolov4-tiny-288
上記のコードを実行すると、yolov4-tiny-288.onnx ファイルが生成されます。
次に実行します。
python onnx_to_tensorrt.py -m yolov4-tiny-288
yolov4-tiny-288.trt ファイルを生成します。この時点で、加速の準備手順はすべて終了です。
上記の例では、 yolov4-tiny-416.trt 、 yolov4-208.trt 、 yolov4-416.trt 、 yolov4-608.trt が生成できます。およびその他のドキュメント。
3. 実現の加速
この記事では例として yolov4-tiny モデルを取り上げ、/tensorrt_demos/yolo/ ディレクトリに入ります。ターミナルを開きます。
conda activate yolov5env
python trt_yolo.py --usb 0 -m yolov4-tiny-288
python trt_yolo.py --usb 0 -m yolov4-608
テスト結果によると、640*480 の画像では、yolov4-tiny-288 モデルの検出速度は非常に高速ですが、検出精度が低く、冗長なフレームが発生していることがわかります。yolov4-608 の検出速度は、元のプロジェクトの 4 倍です。
4.まとめ
ターゲット検出アルゴリズムは、実際のアプリケーションで高いリアルタイム性能を必要とします.しかし、現在多くのモバイル組込みデバイスは、計算能力が低く、処理速度が遅いため、TensoRT を使用することは、ディープラーニングのアプリケーションに大きな実用的意義があります.
余談ですが、Xavier で YOLOv5 と YOLOv4 の検出コードを実行した後、個人的には、YOLOv5 の全体的な検出効果は YOLOv4 よりもわずかに優れていると感じています。