文章目录
- 开源算法选择
- win10下搭建darknet环境
- 模型训练
- 数据增强
- 修改cfg文件
- 标注
- 数据集整理
- 训练
开源算法选择
darknet源码github地址
win10下搭建darknet环境
注:每一步比如cuda、cudnn安装环境变量配置等等网上都有详细讲解,如果是完全零基础开始可以结合我的步骤与网上每一步的讲解,或者留言我看到后会尽快回复
-
下载visual studio 2017 community(只安装C++和windows SDK即可,大概需要15个G空间)注:先下载vs2017再下载cuda和cudnn
旧版本vs2017官方下载地址 -
下载cuda11.1 (11.1自动配置环境变量,其他版本看情况添加)
注:如果之前下载过cuda可以考虑卸载重新安装,使用程序与功能将所有cuda相关的nvdia产品卸载干净 -
下载cudnn8.0.5(将bin include lib\x64相应文件拷贝至cuda目录)
cudnn下载地址
-
验证cuda和cudnn安装成功
- cmd内输入nvcc -V查看cuda是否安装成功
1.cd C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\extras\demo_suite
后运行deviceQuery.exe和bandwidthTest.exe
-
下载CMake >= 3.18
cmake官方下载地址
cmd内输入cmake --version查看是否安装成功 -
下载opencv >= 2.4
opencv官方下载地址
添加环境变量如下后重启生效
-
下载darknet源码
git clone https://github/AlexeyAB/darknet.git
- 打开darknet中makefile文件 修改对应参数并保存
- 打开darknet.vcxproj文件,将cuda版本改为自己的版本号(共两处)
- 使用vs2017打开darknet.sln文件,vs2017会弹出:
直接点确定即可 - 右边栏配置darknet头文件,如opencv等(网上教程很多)
- Vs2017上方调成release x64
右侧侧边栏配置头文件,右键项目点击属性
首先选择VC++目录中的包含目录和库目录
点击链接器 → 输入 → 附加依赖项
添加opencv\build\x64\vc14\lib目录下的opencv_worldXXXX.lib,带d的是debug文件,我们是release模式所以选择不带d的,我的是opencv_world3413.lib,不同版本的opencv后面数字不一样
最后右键项目点击生成即可
在x64目录下可找到darknet.exe
- 依次按上面方法编译yolo_cpp_dll.sln文件和yolo_console_dll.sln文件(顺序不能错)
- 网络顺利生成,进入darknet源码中build\darknet\x64目录下打开cmd,运行命令:
darknet.exe detector test data/coco.data cfg/yolov4.cfg backup/yolov4.weights
(yolov4.weight去上方给出的github链接darknet源码下载)
15. 输入图片路径person.jpg看到如下预测图即搭建成功
模型训练
数据增强
-
先对数据集重命名为自然数排列
-
水平或竖直方向进行平移
-
图片缩放
通过opencv的resize函数
-
图片翻转(垂直、左右、180度)
-
任意旋转
-
平移剪裁
-
高斯噪声
-
色彩增强
(1)亮度
(2)清晰度
修改cfg文件
cfg文件参数意义可参考:参考帖子
- 在x64\cfg目录下找到yolov4-custom.cfg复制一份到该目录下重命名为:yolo-obj.cfg,使用vscode打开yolo-obj.cfg文件
- 修改cfg文件中batch=64
- Subdivisions=16,32,64(训练时显示out of memory则调大,需要是32的倍数)
- Max_batches=classes * 2000(三个目标6000,五个目标10000,最低不低于6000)
- Steps=80% * max_batches, 90% * max_batches
- Width,height416 * 416或者618 * 618(32的倍数,越大精确度越高,训练时长越长)
- Ctrl + F打开搜索工具输入yolo共三处,将class=调为自己的目标类数
- 修改yolo层上最近的convolutional层的filter参数:filter=(class+5)* 3
(如果class=1,filter=18,class=2,filter=21)
标注
使用LabelImg
下载地址:labelImg下载地址
压缩包解压后双击labelImg.exe即可打开,GUI界面后命令行窗口可忽略
左边功能栏annotion默认格式为pascalVOC,即xml格式,本人训练基于darknet的yoloV4,故再次点击切换至YOLO格式,即txt格式
数据集整理
- 在x64\data目录下创建obj文件夹,将数据集放入
- 在x64\data目录下创建pru.names(可根据自己需要修改XXX.names
- 在x64\data目录下创建pru.data
其中classes问训练目标类数,train和valid问训练集和验证集的路径,names为步骤1里创建的XXX.names文件,backup照写即可 - 在对应路径下创建train.txt和valid.txt文件
- 按照一定比例将数据集生成训练集和验证集,本人设置为0.75和0.25
注:训练集和验证集格式为绝对路径,不然会出错
- 生成后将txt文件放入obj文件夹中
训练
- 下载权重文件(本人训练yolov4-custom.cfg,下载yolov4.conv.137)
- 在x64目录下打开cmd,使用指令开始训练:
Darknet.exe detector train data\pru.data cfg\yolov4-pru.cfg yolov4.conv.137
- 训练过程中loss可视化
训练结束后会给出多个weights文件,在x64目录下打开cmd使用指令:
Darknet.exe detector map data\pru.data cfg\yolov4-pru.cfg backup\yolov4-pru_XXXX.weights
map指令使用的是之前XXX.data文件中指定的验证集路径(同样需要为绝对路径)
选择mAP(mean average precision)或者IOU最高的权重文件作为最终使用的就行了
更多推荐
【全网最全最完整】windows下darknet安装搭建与模型训练方法【亲测有效】
发布评论