こちらの記事ではオリジナルの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レポジトリのデモです)
以上です。