YOLOv5 with OpenCV on Jetson Nano

yolov5 YOLOv5

こちらの記事ではオリジナルのYOLOv5をJetson Nanoで実行する方法を解説しましたが、この記事ではOpenCVを使用してYOLOv5をJetson Nanoで実行する方法を解説します。

こちらの記事を参考にpython3.8で使用できるCUDA、cuDNNを有効にしたOpenCVライブラリを導入します。

OpenCVの導入が終われば、残りはYOLOv5アプリをビルドして実行するだけです。以下のレポジトリはC++とpythonの両実装がありますが、C++の方が高速なのでそちらを実行します。詳しくはREADMEを参照してください。オリジナルの https://github.com/doleron/yolov5-opencv-cpp-python.git はmodelがうまく動作しないためフォークして修正した https://github.com/otamajakusi/yolov5-opencv-cpp-python.git を使用します。

git clone https://github.com/otamajakusi/yolov5-opencv-cpp-python.git cd yolov5-opencv-cpp-python g++ -O3 cpp/yolo.cpp -o yolo_example `pkg-config --cflags --libs opencv4` ./yolo_example cuda
Code language: Bash (bash)

USB cameraを使用するためには以下のパッチを適用します。

diff --git a/cpp/yolo.cpp b/cpp/yolo.cpp index c26df9e..2727eaf 100644 --- a/cpp/yolo.cpp +++ b/cpp/yolo.cpp @@ -129,7 +129,7 @@ int main(int argc, char **argv) std::vector<std::string> class_list = load_class_list(); cv::Mat frame; - cv::VideoCapture capture("sample.mp4"); + cv::VideoCapture capture(0); if (!capture.isOpened()) { std::cerr << "Error opening video file\n";
Code language: Diff (diff)

FPSは6.6程度出るようです。(下のビデオは、yolov5-opencv-cpp-python.gitレポジトリのデモです)

以上です。

参考