硬件设备
i7-11800H +RTX3060
准备数据
数据标注
- 在网上下载自己需要的数据集,或者自己通过摄像头获取自己需要训练的数据;
- 通过标注工具labelImage进行标注,windows版下载链接:链接:https://pan.baidu.com/s/10jby2x-fL-iWDiJbCg55iw
提取码:quo6 - 打开labelImage,选择如下红框标注的按钮,用该模式标注出的文件满足yolo要求的训练数据格式,不用进行转换了,按w开始进行标注
- 标注完成后选择一个文件夹进行保存即可;
数据保存形式
-
新建VOC2018,在此文件夹中添加以上图中四个文件夹
VOCdevkit
----VOC2018 # 文件夹中年份可以自己取
------Annotations # 存放所有.xml文件,如果用labelimage中yolo模式进行标注则该文件夹没有用
------ImageSets
--------Main #存放train.txt和test.txt;train.txt中存放所有训练图片的路径,test.txt中存放所有测试图片的路径
------JPEGImage #存放所有的图片
------labels # 存放所有标注得到的.txt文件
- .data文件的说明
以我自己的data文件为例说明:
classes:表示想要识别的种类数量;
train: 表示train.txt的路径;
test: 表示test.txt的路径;
name: 表示LR.name的路径;
backup:表示训练完成模型保存的路径; - .name文件的说明
里面的内容为想要识别物体的名称;
训练前darknet中文件的更改
makefile文件的修改
GPU=0
CUDNN=0
CUDNN_HALF=0
OPENCV=0
AVX=0
OPENMP=0
LIBSO=0
ZED_CAMERA=0
根据自己电脑硬件情况进行修改,如果有GPU则修改为GPU=1,其余同理;
.cfg文件的修改
- 新建名为yolov3_LR.cfg的文件为自己训练时用的.cfg文件, 复制yolov3.cfg的内容到yolov3_LR.cfg
[convolutional]
size=1
stride=1
pad=1
filters=21 #---------------修改为3*(classes+5)即3*(2+5)=21
activation=linear
[yolo]
mask = 6,7,8anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326
classes=2 #---------------修改为标签类别个数,2类
操作方式:打开该文件ctrl+F 进行搜索关键字classes改为自己的类的个数,对应的classes上方有一个filter 改成自己的,计算方式为3*(classes+5);一共有三处需要更改的地方;classes有三处,filter 有三处;
训练数据
- 在win10下通过cmd进入终端,cd到D:\darknet1\darknet-master\darknet-master\build\darknet\x64 根据自己路径而定;
- 并下载darknrt53.conv.74到x64/scripts/路径下
- voc.data和yolov3-voc.cfg在当前路径的cfg文件夹下
darknet detector train cfg/voc.data cfg/yolov3-voc.cfg scripts/darknet53.conv.74
//以上文件根据自己的路径而定
测试训练模型
训练完成后的权重文件保存在bachup文件夹中
darknet detector test cfg/voc.data cfg/yolov3-voc.cfg backup/yolov3-voc_600.weights data/210.jpg
//根据自己文件路径而写