之前训练了云服务器上训练了YOLOV3,后来想训练一下YOLOV4,结果发现自己忘得差不多了,因此在训练完打算写一篇备忘,记录一下过程
需求:自己在图片中标注对象,然后训练自己的权重文件,拿到opencv中去用,不涉及到tf,Keras这些东西,就是最简单的训练出yolov4.weights,然后给cv::dnn::readNetFromDarknet()去用就OK
数据:个人习惯性先处理数据,因为简单,在任何电脑上只要安装了anaconda即可处理
需求:即标注数据,得到网络输入,终极目标:得到图像中目标的描述文件(txt文件)+图像的目录
最终是要在darknet-master\build\darknet\VOCdevkit\VOC2007\labels文件夹下得到如下 格式的TXT文件
其中darknet-master是从GitHub下载的YOLOV4源码的压缩文件的解压目录文件夹
第一个参数:0是指类别编号
第二个参数:0.4641255605381166是归一化后的中心点X坐标
第三个参数:0.34266926449098883 是归一化后的中心点Y坐标
第四个参数:0.04633781763826607是归一化后的目标宽度W
第五个参数:0.03263516804676084是归一化后的目标高度Y
为了实现这一步,过程与方法有两种:
法一:
(1)安装anaconda,在anaconda中新建labelImgenv环境,在labelImgenv环境中安装labelImg
(1.1)conda create -n labelImgenv
(1.2)conda activate labelImgenv
(1.3)pip install labelImg
(1.4)labelImg
直接使用labelImg标注工具进行标注,这块儿我一直喜欢用anaconda工具安装,使用是选择保存格式为YOLO格式(在save按钮下面,原为pascalVOC,点一下就是YOLO)
(2)第二种方法就是借用以前的coco, vol数据集,写函数把从这些数据集读取目标信息,进行转换,然后写入\labels文件夹中的TXT文件,这种方法我操作过,确实比第一种繁琐一些,主要需要去