yolov4训练已标柱的数据集

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
    • 1.下载数据集
    • https://github.com/ncs-niva/traffic-cone-image-dataset ![在这里插入图片描述](https://img-blog.csdnimg.cn/8edb1eb3b74447d0a1b46459a71b77e0.png) 其中 images 文件夹中为数据集.jpg图片,labels 文件夹中为与每张图片对应的标签 ![在这里插入图片描述](https://img-blog.csdnimg.cn/b84f6822b2ec4bc582138c2f15f51bfa.png)
    • 2.新建数据集目录
    • 3.修改配置文件
    • 5.训练
    • 5.检测目标
    • 6.ZED2i相机实时识别并测距
    • 7.参考
  • 总结


前言

在已经安装配置好yolov4及opencv4.5.5的前提下,想要实现对交通锥筒的识别,下载已标柱好的交通锥筒数据集,yolov4训练

ubuntu 18.04

显卡:GTX1050

CUDA: 11.6

cuDNN: 8.4.1


1.下载数据集

https://github.com/ncs-niva/traffic-cone-image-dataset
yolov4训练已标柱的数据集_第1张图片
其中 images 文件夹中为数据集.jpg图片,labels 文件夹中为与每张图片对应的标签
yolov4训练已标柱的数据集_第2张图片

2.新建数据集目录

位置可自定义,能够与.cfg .data .txt .names 涉及的路径对应上就OK。

我是在data下新建了trafficcone文件夹,并将数据集图片、标签、配置文件都放进去了。

再在trafficcone文件夹下新建 build ,用于存放训练后生存的 .weights 文件。

yolov4训练已标柱的数据集_第3张图片
PS: 可以将 labels 的内容全部复制,都粘贴在数据集图片所在的文件夹,也许配置时简单些
yolov4训练已标柱的数据集_第4张图片

3.修改配置文件

几个配置文件的名称也可以自定义,但要保证文件名后坠正确

1)obj.names
由于只有交通锥筒需要识别,所以只有1类,名称定为trafficcone

trafficcone

2)obj-cone.data
classes:表示数据集中需要检测的物体有几类
train:表示保存训练数据集的地址
names:表示可检测物体的名称地址
backup:表示保存训练权重文件的地址

classes = 1
train = /home/xxx/darknet-master/data/trafficcone/train-cone.txt
names = /home/xxx/darknet-master/data/trafficcone/obj-cone.names
backup = /home/xxx/darknet-master/data/trafficcone/backup/

3)train-cone.txt
数据集中每张图片所在的地址

/home/xxx/darknet-master/data/trafficcone/images-labels/1.jpg
/home/xxx/darknet-master/data/trafficcone/images-labels/10.jpg
/home/hao/darknet-master/data/trafficcone/images-labels/100.jpg
/home/hao/darknet-master/data/trafficcone/images-labels/101.jpg
/home/hao/darknet-master/data/trafficcone/images-labels/102.jpg
...

4)yolov4-obj-cone.cfg

复制 build/darknet/x64/cfg文件下yolov4-custom.cfg,进行修改:

# step1: 修改batch和subdivisions
L2: batch=64                # 原来就是64
L3: subdivisions=64        # 原来是64,如果报错增大这个值
 
# step2: 修改图片的尺寸
L7: width=416             # 越大越吃显卡
L8: height=416           # 越大越吃显卡
 
# step3: ctrl + F搜索yolo,修改classes(每个yolo层都需要修改一次,一共需要修改三次)
L968: classes=1             # 只需要识别1类物体,因此需要修改成1
L1056: classes=1
L1144: classes=1
 
# step4: ctrl + F搜索yolo,修改每个yolo相邻的上一个convolution层的filter
L961: filters=18            # 因为我预测两类物体:18 = 3*(5+**1**)
L1049: filters=18
L1137: filters=18
 

5.训练

先下载预训练权重: yolov4.conv.137

./darknet detector train data/trafficcone/obj-cone.data data/trafficcone/yolov4-obj-cone.cfg yolov4.conv.137 -dont_show

PS: -dont_show 非常重要, 可能会帮助解决Dbus报警;

训练完在build 文件夹中,会看到生成 的权重文件:
yolov4训练已标柱的数据集_第5张图片
yolov4训练已标柱的数据集_第6张图片

5.检测目标

./darknet detector test data/trafficcone/obj-cone.data data/trafficcone/yolov4-obj-cone.cfg yolov4-obj-cone_final.weights 

PS: detector 跟的是test,与demo不同;

运行后,需要输入待识别图片的位置

yolov4训练已标柱的数据集_第7张图片

或者可以直接在命令后加上图片路径,如:

./darknet detector test data/trafficcone/obj-cone.data data/trafficcone/yolov4-obj-cone.cfg yolov4-obj-cone_final.weights data/xxx.jpg

6.ZED2i相机实时识别并测距

C++环境

LD_LIBRARY_PATH=./:$LD_LIBRARY_PATH ./uselib data/trafficcone/obj-cone.names data/trafficcone/yolov4-obj-cone.cfg yolov4-obj-cone_final.weights zed_camera

用zed2i相机拍另一个屏幕的交通锥筒图片,也可以在室外识别真实交通锥筒(如果条件允许):
yolov4训练已标柱的数据集_第8张图片

7.参考

官方说明:
https://gitcode.net/mirrors/alexeyab/darknet

csdn博客:
https://blog.csdn.net/qq_38316300/article/details/106771964
https://blog.csdn.net/qq_44703886/article/details/109555946
https://blog.csdn.net/m0_62114628/article/details/124356097

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

你可能感兴趣的:(Vins,深度学习)