硬件环境
1.操作系统 Windows 10 64位 ( DirectX 12 )
2.处理器 AMD Ryzen 5 2600X 六核
3.显卡 Nvidia GeForce GTX 1070 Ti ( 8 GB / 索泰 )
软件环境
1.Opencv 3.2.0
2.CUDA 9.2.148
3.Cudnn 7.1.4
3.YOLO3 Windows版
4.VS2017 企业版
配置流程
1.修改darknet-master\build\darknet
路径下darknet.vcxproj
文件,使用Notepad++
打开
1.1 修改1:CUDA版本号,在第55行和第303行,修改为上面的9.2.
ATTENTION:不要尝试最新的10.0,不管用
1.2修改2:编译darknet的时候,显示nvcc fatal : Unsupported gpu architecture 'compute_75'
这是显卡算力与CUDA配置文件里不一致导致的。还是修改darknet.vcxproj
下的156行
compute_30,sm_30;compute_75,sm_75
修改为
compute_30,sm_30;compute_61,sm_61
为甚么修改为61呢?
Tesla V100
# ARCH= -gencode arch=compute_70,code=[sm_70,compute_70]
GTX 1080, GTX 1070, GTX 1060, GTX 1050, GTX 1030, Titan Xp, Tesla P40, Tesla P4
# ARCH= -gencode arch=compute_61,code=sm_61 -gencode arch=compute_61,code=compute_61
GP100/Tesla P100 DGX-1
# ARCH= -gencode arch=compute_60,code=sm_60
For Jetson Tx1 uncomment:
# ARCH= -gencode arch=compute_51,code=[sm_51,compute_51]
For Jetson Tx2 or Drive-PX2 uncomment:
# ARCH= -gencode arch=compute_62,code=[sm_62,compute_62]
显卡是1070,所以修改为61。
2.在Release|x64的属性页里修改Microsoft.Cpp.x64.user
配置文件,并将VS的调试模式修改为
Release和x64
在配置文件里仅仅填上opencv的环境即可,bin,include,lib,dll等
使用
1.权重下载https://pjreddie.com/media/files/yolov3.weights
2.在darknet-master\build\darknet\x64
路径下新建文件夹weights
,将权重文件放进去
3.打开cmd界面,cd到darknet-master\build\darknet\x64
下,输入
darknet.exe detector test data\coco.data yolov3.cfg .\weights\yolov3.weights .\data\dog.jpg
上述为检测单张照片
4.调用摄像头
darknet.exe detector demo data\coco.data cfg\yolov3.cfg weights\yolov3.weights -c 0
5.检测视频
darknet.exe detector demo data\coco.data yolov3.cfg .\weights\yolov3.weights .\data\TownCentre.avi
6.训练语句
darknet.exe detector train data/obj.data cfg/yolo-obj.cfg darknet53.conv.74 -map
cd C:\darknet-master\build\darknet\x64
darknet.exe detector test data/obj.data cfg/yolo-obj.cfg .\backup\yolo-obj_last.weights .\data\0.jpg
7.可视化权重文件和配置文件
darknet.exe visualize cfg/yolo-obj.cfg .\backup\yolo-obj_last.weights
8.mAP可视化
For example, bigger mAP gives weights yolo-obj_8000.weights - then use this weights for detection.
Or just train with -map flag:
训练语句后加上map后缀即可
darknet.exe detector train data/obj.data yolo-obj.cfg darknet53.conv.74 -map
So you will see mAP-chart (red-line) in the Loss-chart Window. mAP will be calculated for each 4 Epochs using valid=valid.txt file that is specified in obj.data file (1 Epoch = images_in_train_txt / batch iterations)
(to change the max x-axis value - change max_batches= parameter to 2000*classes, f.e. max_batches=6000 for 3 classes)
环境配置总结
win10path
C:\opencv320\opencv\build\x64\vc14\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\libnvvp
VS
包含目录:
C:\opencv320\opencv\build\include\opencv2
C:\opencv320\opencv\build\include\opencv
C:\opencv320\opencv\build\include
库目录:
C:\opencv320\opencv\build\x64\vc14\lib
附加依赖项:
opencv_world320.lib
附加包含
..\..\include
..\..\3rdparty\stb\include
..\..\3rdparty\pthreads\include
附加库目录
..\..\3rdparty\pthreads\lib
格式调成 RELEASE x64