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 cudaCode 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レポジトリのデモです)

以上です。

参考