機械学習・AI【物体検出】vol.18 :Darknet YOLOv4でRTX3090のベンチマーク

【物体検出】vol.18 :Darknet YOLOv4でRTX3090のベンチマーク

2020年9月に最新GPU RTX3090が発売されました。

これを受け、早速GPU RTX3090を搭載したPCを入手し、YOLOv4の処理速度がどれくらい向上したのか、ベンチマークを比較してみました。

結論:
RTX3090での学習は対RTX2080比で160%、対GTX1070比で280%に高速化しました。
検出の処理速度は多少よくなりましたが、RTX2080とそれほど大きく変わりませんでした。

 

環境の再構築

PCスペック

OMEN by HP 30L Desktop GT13-0827jp
Windows 10 Pro (64bit)
インテル Core i9-10850K プロセッサー(3.60GHz-5.20GHz / 10コア・20スレッド / 20MB)
NVIDIA GeForce RTX 3090

 

darknetに必要な環境の確認(2021/03/05時点)

https://github.com/AlexeyAB/darknet
CMake >= 3.12
CUDA >= 10.0
OpenCV >= 2.4
cuDNN >= 7.0
GPU with CC >= 3.0

GPU:NVIDIA GeForce RTX 3090

https://developer.nvidia.com/cuda-gpus#compute
GPU Compute Capability
GeForce RTX 3090 8.6

 

インストール済みの環境を確認

■インストール済み各バージョン

cmake-3.19.3
cuda V10.1.243 windows10
cudnn v8.0.5.39 cuda10.1 windows10
OpenCV 4.4.0(バイナリ)
VisualStudio2019
python 3.8.5(Anaconda)

■各環境変数の設定確認

CUDA_PATH = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1
CUDA_PATH_V10_1 = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1
CUDNN_PATH = なし
OPENCV_DIR = C:\opencv-4.4.0\opencv\build

PATH
→ C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin
  C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\libnvvp
  C:\opencv-4.4.0\opencv\build\x64\vc15\bin

■python環境チェック

本体の場所
C:\ProgramData\Anaconda3\python.exe

ライブラリ等インストール先
(anaconda)C:\ProgramData\Anaconda3\Lib\site-packages
(pip)?

■各環境チェック

>> 実行ログ
C:\Users\rdcenter>nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Sun_Jul_28_19:12:52_Pacific_Daylight_Time_2019
Cuda compilation tools, release 10.1, V10.1.243

C:\Users\rdcenter>where cudnn64_7.dll
情報: 与えられたパターンのファイルが見つかりませんでした。

C:\Users\rdcenter>where cudnn64_8.dll
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin\cudnn64_8.dll

C:\Users\rdcenter>python
Python 3.8.5 (default, Sep 3 2020, 21:29:08) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32

C:\Users\rdcenter>where opencv_version
C:\opencv-4.4.0\opencv\build\x64\vc15\bin\opencv_version.exe

最新ドライバーのインストール

GEFORCE EXPERIENCEから最新のディスプレイドライバをインストールします。
(ユーザ登録とサイトへのログインが必要です)

 

darknetの構築

■cmake
ENABLE_CUDA
ENABLE_CUDNN
ENABLE_OPENCV
ENABLE_CUDNN_HALF にチェックが入っていればOK

■configure
"configure"クリック後、特に問題がなければそのまま"generate"をクリック

■build(VisualStudio)
構成でRelease、x64を選択
ソリューションエクスプローラー内にある'darknet'を右クリックして、プロパティを選択
C/C++ -> プリプロセッサ -> プリプロセッサの定義に「CUDNN_HALF」 があるか確認(なければ追記します)
ソリューションのビルドを実行

■ビルドしたdarknet.exeを実行する
・"pthereadVC2.dll"がないとエラーが出る場合
alexeyab_darknet_v4\3rdparty\pthreads\binからコピーしdarknet.exeと同じ場所に置く

・CUDA Errorが出る場合
再度、最新のディスプレイドライバをインストール。
darknet.exe detector test cfg/coco.data cfg/yolov4.cfg yolov4.weights -dont_show -ext_output < data/filelist.txt -out results/result.json >
results/result.txt

CUDA Error: CUDA driver version is insufficient for CUDA runtime version: No error

■正常に起動した例
cudnn_halfが有効になっている所がポイントです。

>> コマンド
darknet.exe detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights -dont_show -ext_output data/test.mp4 -prefix results/video/img -out_filename
results/video/result.mp4 > results/video/result.txt

>>実行ログ
darknet.exe detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights -dont_show -ext_output data/test.mp4 -prefix results/video/img -out_filename
results/video/result.mp4 > results/video/result.txt

CUDA-version: 10010 (11020), cuDNN: 8.0.5, CUDNN_HALF=1, GPU count: 1
OpenCV version: 4.4.0
0 : compute_capability = 860, cudnn_half = 1, GPU: GeForce RTX 3090
layer filters size/strd(dil) input output
(省略

 

ベンチマーク

今回使用したPC


RTX3090 Super(HP OMEN Desktop )
 GPU : NVIDIA GeForce GTX3090
 CPU : Intel Core i9-10850K 3.60GHz(10コア、論理20)
 RAM:64GB
 cuda V10.1.243 windows10
 cudnn v8.0.5.39 cuda10.1 windows10
 OpenCV 4.4.0

RTX2080 Super(HP OMEN Desktop )
 GPU : NVIDIA GeForce GTX2080 SUPER 8GBRAM
 CPU : Intel Core i7-7700 3.6GHz(4コア、論理8)
 RAM:32GB
 cuda V10.1.105 windows10
 cudnn v7.6.0 cuda10.1 windows10
 OpenCV 4.3.0

RTX2080 MAX-Q(Alienware M17)
 GPU : NVIDIA GeForce GTX2080 with Max-Q Design 8GBRAM
 CPU : Intel Core i7-9750 2.6GHz(6コア、論理12)
 RAM:16GB
 cuda V10.1.243 windows10
 cudnn v7.6.4 cuda10.1 windows10
 OpenCV 4.3.0

GTX1070(HP OMEN Desktop)  GPU : NVIDIA GeForce GTX1070 8GBRAM
 CPU : Intel Core i7-7700 3.6GHz(4コア、論理8)
 RAM:32GB
 cuda 10.1.105 windows10
 cudnn v7.6.0 cuda10.1 windows10
 OpenCV 4.2.0

 

ベンチマークの方法

YOLOv4を同じcfg、同じデータセット、同じモデル(weight)を用いて、同条件で学習させ、1000イテレーション毎の時間を計測する。

 

結果(学習)

PC学習時間
HP OMEN Desktop(GeForce RTX 3090) 49分
HP OMEN Desktop(GeForce RTX 2080 SUPER) 80分
Alienware M17(Geforce RTX 2080Max-Q) 120分
HP OMEN Desktop(Geforce GTX 1070) 136分

rtx3090_1.png

 

結果(検出)

静止画:1801枚

動画:1796フレーム
darknet.exe detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights -dont_show -ext_output data/test_2K.mp4 > results/result_test_2K_v4.txt

ベンチマーク:1796フレーム
darknet.exe detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights -benchmark data/test_2K.mp4 > results/test_2K.txt

PC静止画2K静止画4K動画2K動画4KBM2KBM4K
HP OMEN Desktop(GeForce RTX 3090) 5.25 1.62 32.1 31.5 32.1 32.1
HP OMEN Desktop-1(GeForce RTX 2080 SUPER) 4.30 1.33 32.0 21.3 32.0 32.0
HP OMEN Desktop-2(GeForce RTX 2080 SUPER) 4.51 1.38 39.2 30.1 40.7 41.0
Alienware M17(Geforce RTX 2080Max-Q) 3.57 1.04 30.6 21.0 34.2 27.0
HP OMEN Desktop (Geforce GTX 1070) 3.44 1.14 20.4 19.4 20.4 20.3

rtx3090_2.png

 

▼この記事を書いたひと

R&Dセンター 野原 佐知世

R&Dの「ちょっとしたものづくり」を主に担当。360°パノラマ、機械学習などシステム、画像処理を中心に活動しています。

 

機械学習・AIの最新記事


お問い合わせ

ご意見・ご質問などお気軽にお問い合わせ下さい。
ナカシャクリエイテブ株式会社

●富士見事務所 TEL : 052-228-8733 FAX : 052-323-3337
〒460-0014 愛知県名古屋市中区富士見町13−22 ファミール富士見711  地図
R&Dセンター

Email:メールでのお問い合わせ