yolov4 开发环境搭建_【项目实战】YOLO v4训练自己的数据集
论文题目:YOLOv4: Optimal Speed and Accuracy of Object Detection今天,使用YOLOv4对无人机进行目标检测,将自己的训练过程记录下来,总的来说,和之前Darknet的YOLOv3版本的操作完全相同。环境Ubuntu 16.04Python: 3.6.4OPENCV:3.4.0CUDA: 10.0GPU: RTX2080Ti首先下载代码:1 gi
论文题目:YOLOv4: Optimal Speed and Accuracy of Object Detection
今天,使用YOLOv4对无人机进行目标检测,将自己的训练过程记录下来,总的来说,和之前Darknet的YOLOv3版本的操作完全相同。
环境
Ubuntu 16.04
Python: 3.6.4
OPENCV:3.4.0
CUDA: 10.0
GPU: RTX2080Ti
首先下载代码:
1 git clone https://github.com/AlexeyAB/darknet.git
由于都是AlexeyAB大神的杰作,在使用上与YOLOv3使用过程几乎相同,因此,使用起来较为熟悉。
1. 编译make
如果硬件设备包含GPU加速,需要对makefile文件进行修改,修改后如下图所示。
然后在终端进行编译:
1 # cd到darknet文件夹下:2 make # 或make -j8
2. 下载开源权重,并测试:
使用与训练的权重进行测试:
1 ./darknet detect cfg/yolov4.cfg yolov4.weights data/dog.jpg
3. 训练自己的数据集
构建与YOLOv3相同的数据文件夹(此处仍以YOLOv3的方式构建):
先按照上面的格式准备好数据。其中:
Anontations用于存放标签xml文件
JPEGImage用于存放图像
ImageSets内的Main文件夹用于存放生成的图片名字,例如:
4. 准备YOLOv4需要的label和txt
首先,从路径为"/home/vtstar/yolov4/darknet/scripts"下的voc_label.py复制到项目根目录下(darknet),并对其内容进行修改。
其中,#后为注释掉的为原先的,未被注释掉的是修改后的,sets中为年份(VOC后的数字,例如VOC2007中的2007)和包含的数据集(Main文件夹中划分数据集的txt的种类),classes中填写标注文件中包含的待识别物体的类别标签。
由于是将voc_label.py复制到项目的根目录下,所以不需要对相关文件的路径进行修改。
执行voc_label.py,在根目录下将会生成训练需要的文件,即各个训练集中包含图像的路径。
5. 修改配置文件
这里同yolov3的使用是一致的,需要修改的配置文件包含三个部分:
cfg目录下:
voc.data / coco.data (二选一即可,本篇使用voc.data)
存放相关文件的路径:
类别的数量
训练过程中训练数据和验证数据的txt文件(voc_label.py生成的)
类别标签名称
存放权重的路径
yolov4-custom.cfg
yolov4训练参数和相关网络结构的修改:
输入图像大小和训练测试阶段中batch的数量和划分次数;
图像的大小可以是32的倍数。
训练代数;
github中给出了max_batches的基本设置方法,2000 × classes。当然,设置的大一些也是可以的,只不过后期基本上在某一值附近震荡
值得注意的是,steps的设置是max_batches × 80% 和 max_batches × 90%/。
网络结构;
根据待测目标类别的数量更改YOLO层(3个)和YOLO层前一层的卷积层(3个)
包含YOLO前一层卷积层的卷积核个数:(classes + 5)*3
YOLO层的类别数classes。
锚框(可选,kmeans聚类)
data目录下:
voc.names / coco.names (二选一即可, 多个类别隔行输入即可,本篇修改voc.names)
6. 开始训练
训练指令(与yolov3依旧相同):
1 ./darknet detector train cfg/voc.data cfg/yolov4-custom.cfg yolov4.conv.137 gpus 0
在训练过程中,与之前yolov3不同的是yolov4在训练过程中会弹出训练过程中的loss的实时图像,如下图所示,会动态的显示每一代的损失,当前代数和预计剩余时间。
对于下图,值得一提的是起初loss在图像上看到的是平的,并不是意味着损失不下降,只是loss相对与18.0而言都太大了,在固定坐标的图像上难以显示,因此可视化的是平的。
7. 预测
预测指令:
1 ./darknet detector test cfg/voc.data cfg/yolov4-custom.cfg yolov4-custom_xxxx.weights
然后在提示的Enter Path中输入待测图像的路径。如下图所示。
或者直接在预测指令后添加图像的路径。
这是单张图像的测试方式。
总的来说,和之前yolov3的操作完全相同,可以很好的迁移!

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)