YOLO V4を利用する
AlexeyAB Darknet YOLO V3をJetson Nano、Windows、Ubuntuで利用しています。YOLO V3でまったく不満がないのですが、2021年GWは在宅時間も長く、YOLO V4をインストールして使ってみました。手元の動画や写真での結果ですが、1.5倍は早く物体検出・推論が出来ております。
以前に、WindowsへAlexyAB Dark YOLO V3を利用した際と、インストール手順は変わっておりませんでした。Ubuntuなど、他プラットフォームは、どんどん楽になって行きますね。
- Microsoft Visual Studio
- CMake
- CUDA (cudnn)
- OPENCV
公式のヘルプに必要な情報は、すべて記載されています。
トラブったら、公式のReadmeが一番おすすめです。
https://github.com/AlexeyAB/darknet
1.Microsoft Visual Studioインストール
Microsoft Visual StudioのCommunity版をダウンロードし、インストールします。2017年版のVSインストールを推奨するWEBページが多かったです。コンフィグ時にエラーが出たので、私も2017版をインストールしました。
https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community
2.CMakeインストール
Windows win64-x64 Installer版のCMake GUIを入手し、インストーラーを実行して、インストールしてください。
https://cmake.org/download/ cmake-3.20.2-windows-x86_64.msi
3.CUDA (Cudnn)導入
CUDAインストール
https://developer.nvidia.com/cuda-toolkit-archive cuda_11.3.0_465.89_win10.exe
Windows 10 用のインストーラーを入手して、インストールします。Cudnnを導入
- Developerネットワークに登録
https://developer.nvidia.com/developer-program でデベロッパー登録 - 必要ファイルのダウンロード、導入したCUDAに合うバージョンを!!
https://developer.nvidia.com/cudnn または、
https://developer.nvidia.com/rdp/cudnn-archive からダウンロード - ダウンロードしたファイルをCUDAイントールフォルダーへコピー(/移動)
Cudnnをダウンロードして展開したフォルダー:<Cudnn_path>
CUDAインストールフォルダー:C:\Program Files\NVIDIA GPU Computing Toolkit\- 「binフォルダのDLLファイルをコピー」
<Cudnn_path>\cuda\bin\cudnn*.dll to C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vx.x\bin. - 「includeフォルダの.hファイルをコピー」
<Cudnn_path>\cuda\include\cudnn*.h to C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vx.x\include. - 「lib/x64フォルダーのライブラリーをコピー」
<Cudnn_path>\cuda\lib\x64\cudnn*.lib to C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vx.x\lib\x64.
- 「binフォルダのDLLファイルをコピー」
- Developerネットワークに登録
4.OPENCV導入
https://opencv.org/releases/
Windows向けのOPENCVをダウンロードして、適切な場所に解凍すれば良いです。
あとは、OPENCV関係のPath、環境変数を設定します。
※ 個人的には、この手順が出来るようになれば、同じ要領でOPENCVも自分でコンパイルできるので、自分の環境でビルドすることをお勧めします
【重要】各種環境変数
タスクバーなどの「ここに入力して検索」のダイアログボックスへ「ファイル名を指定して実行」または、「Run」といれて、ファイル名を指定して実行のダイアログを開きます。
「sysdm.cpl」を指定し、システムのプロパティを開きます。
上部のタブ「詳細設定」を選択し、「環境変数」のボタンを押し、設定画面を開きます。
以下の環境変数、PATHを設定する、または、設定されていることを確認します。
- CUDA_PATH = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1
- CUDA_PATH_V11_1 = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1
- OPENCV_DIR = C:\opencv4.3.2\opencv\build
- PATH
- C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\bin
- C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\libnvvp
- C:\opencv4.3.2\opencv\build\x64\vc15\bin
AlexeyAB Darknet YOLO ビルド
以下のリンクから、AlexeyAB Darknet をダウンロードし、ZIPファイルを解凍します。
この回答したフォルダーを使ってビルドを進めて行きます。
https://github.com/AlexeyAB/darknet/archive/master.zip
- CMake(gui)を開きます
- source codeとbinariesのフォルダーを指定する場所に、ダウンロードしたdarknetを解凍したフォルダーを指定します。
- Configureボタンを押します。
- Visual Studioで作成したソリューションファイルを開きます
「Darknet.sln」 - ビルド方法をリリースに変更して、ソリューションをビルドすると、darknet.exeが作成されます
darknet.exeコマンド実行
ビルドして作成したdarknet.exeファイルの場所で、exeファイルを実行した際に、「pthreadVC2.dll」が見つからないとエラーが出ました。
各種コミュニティを確認しましたが、darknet/build/darknet/x64の中にある、pthreadVC2.dllを実行ファイルdarknet.exeと同じ場所にコピーします。
- Yolo v4 COCO - image: darknet.exe detector test cfg/coco.data cfg/yolov4.cfg yolov4.weights -thresh 0.25
- Output coordinates of objects: darknet.exe detector test cfg/coco.data yolov4.cfg yolov4.weights -ext_output dog.jpg
- Yolo v4 COCO - video: darknet.exe detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights -ext_output test.mp4
- Yolo v4 COCO - WebCam 0: darknet.exe detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights -c 0
- Yolo v4 COCO for net-videocam - Smart WebCam: darknet.exe detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights http://192.168.0.80:8080/video?dummy=param.mjpg
- Yolo v4 - save result videofile res.avi: darknet.exe detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights test.mp4 -out_filename res.avi
私の環境では、mp4ファイルを入力として、物体認識結果を動画ファイルに書き出す処理が、実行中に落ちる現象が見られました。そのほかのコマンドなりに不具合は見つけておりません。