已经装好了CUDA9.0+cudnn7.1+vs2015
1.1 darknet.vcxproj文件修改
1)记事本打开darknet-master/build/darknet/darknet.vcxproj文件,将所有CUDA 10.0修改为自己对应的CUDA版本,本人使用CUDA 9.0(CUDA与9.0之间有一个空格),全部replace;
2)compute_75和sm_75分别改为compute_70和sm_70,因为cuda9.0不支持75
1.2 配置opencv3.4
打开darknet.sln,将项目改为release x64,同时点击项目属性,进入属性管理器,配置包含目录、库目录和链接器-输入
1.3 拷贝CUDA 9.0.props等文件
CUDA解压目录下visual_studio_integration\MSBuildExtensions拷贝所有文件到C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140\BuildCustomizations。
1.4 生成exe文件
右键项目,生成,成功后会生成一个darknet.exe在...\darknet-master\build\darknet\x64目录下,然后将..\opencv\build\x64\vc14\bin下的opencv_world340.dll 和opencv_ffmpeg340_64.dll 复制到 darknet.exe的同级别目录下。
2.制作自己的样本集
3.修改参数
1)修改voc.data
voc.data是在E:\darknet-master\build\darknet\x64\data这下面的,做如下修改:
类别数为对应你想检测的类别,train和valid对应的路径,backup就是最后训练好的权重存放位置。
classes= 1
train = data/2007_train.txt
valid = data/2007_val.txt
names = data/voc.names
backup = data/weights
2)修改voc.names
记住这里的voc.names是在E:\darknet-master\build\darknet\x64\data下的,做如下修改:
写上自己需要检测的类别名即可,一行一个,我这里只有一个。
3)修改yolov3-voc.cfg:网络结构文件
这里的yolov3-voc.cfg是在E:\darknet-master\build\darknet\x64下的,做如下修改:
一共需要改三处,每处有两个地方需要修改,每次都是先修改[yolo]下的classes为对应的类别数,再修改[yolo]对应上面的[convolutional]下的filters为(classes+5)*3
[convolutional]
size=1
stride=1
pad=1
filters=18 #(classes+5)*3
activation=linear
[yolo]
mask = 3,4,5
anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326
classes=1 #类别数
num=9
jitter=.3
ignore_thresh = .5
truth_thresh = 1
random=1
4)修改anchor
4.训练
cd darknet-master\build\darknet\x64
darknet.exe detector train data/voc.data yolov4.cfg yolov4.conv.137 >> log/train_yolov4.log