环境:windows10+ cuda10.0+ vs2015community编译 opencv4.5
1,安装opencv
解压官网压缩包即可,配置环境变量
2,安装visual studio
只选c++编译功能即可
给vs配置opencv, opencv4以上的版本只有opencv2,可只配这个不配opencv,debug选d.lib,release选.lib
配置opencv参考如下:
https://www.cnblogs.com/profession/p/10112315.html
https://blog.csdn.net/zhaojinzhi1992/article/details/108259296
最后需要修改一个lib可以一劳永逸,具体是什么忘了
3,安装cuda(最好先安装vs之后再安装cuda)
cudnn不要复制文件夹,直接复制相应文件到对应cuda文件夹下
4,vs打开darknet进行编译,x64,release
darknet网址https://github.com/AlexeyAB/darknet
生成darknet.exe文件
5,制作数据集
6, cmd或者powershell运行
cmd cd到dakenet build后的路径下,执行训练或者检测或者其他命令
cfg 参数说明
参考https://www.cnblogs.com/zhangmingcheng/p/10874589.html
batch
=
64
一批训练样本的样本数量,每batch个样本更新一次参数
subdivisions
=
8
batch
/subdivisions作为一次性送入训练器的样本数量,
如果内存不够大,将batch分割为subdivisions个子batch
Subdivisions越大,可以减轻显卡压力(分组数目越多,每组样本数量则会更少,显卡压力也会相应减少)
batch=64,sub=16表示训练的过 程中将一次性加载64张图片进内存,然后分8次完成前向传播,意思是每次4张,前向传播的循环过程中累加loss求平均,待64张图片都完成前向传播后,再一次性后传更新参数
decay
=
0.0005
权重衰减正则项,防止过拟合,正则项往往有重要意义
angle
=
0
通过旋转角度来生成更多训练样本
saturation
=
1.5
通过调整饱和度来生成更多训练样本
exposure
=
1.5
通过调整曝光量来生成更多训练样本
hue
=
.
1
通过调整色调来生成更多训练样本
min_crop=128
max_crop/min_crop: 输入图的最小边需要在[min_crop,max_crop]区间内,如果输入和这个不符合,则通过缩放使之符合。另外有一对参数max_ratio/min_ratio和一对参数作用是一样的
max_crop=448
burn_in
=
1000
在迭代次数小于burn_in时,其学习率的更新有一种方式,大于burn_in时,才采用policy的更新方式
max_batches
=
500200
训练达到max_batches后停止学习,多个batches
policy
=
steps 这个是学习率调整的策略,有policy:constant, steps, exp, poly, step, sig, RANDOM,constant等方式
Steps和scales相互一一对应
steps
=
40000
,
45000
下面这两个参数steps和scale是设置学习率的变化,比如迭代到
40000
次时,学习率衰减十倍。
45000
次迭代时,学习率又会在前一个学习率的基础上衰减十倍。根据batch_num调整学习率
scales
=
,.
1
,.
1
学习率变化的比例,累计相乘
损失函数由网络最后[cost]定义,一共有六种损失函数类型
SSE, MASKED, L1, SEG, SMOOTH,WGAN 小写 默认采用 SSE
命令行
darknet.exe classifier(detector) train(test)(valid) 绝对路径\xx.data 绝对路径\xx.cfg
后缀
多块GPU -gpus 0,1,2,3
输出图片,一般用在vali和test -show_imgs
-clear 重新开始训练
-map detect使用。计算map
-topk 计算准确率
训练次数一般选择 (训练次数*batchsize)/训练样本数 == 30
burn_in一般选择训练2-5轮