提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
在已经安装配置好yolov4及opencv4.5.5的前提下,想要实现对交通锥筒的识别,下载已标柱好的交通锥筒数据集,yolov4训练
ubuntu 18.04
显卡:GTX1050
CUDA: 11.6
cuDNN: 8.4.1
位置可自定义,能够与.cfg .data .txt .names 涉及的路径对应上就OK。
我是在data下新建了trafficcone文件夹,并将数据集图片、标签、配置文件都放进去了。
再在trafficcone文件夹下新建 build ,用于存放训练后生存的 .weights 文件。
PS: 可以将 labels 的内容全部复制,都粘贴在数据集图片所在的文件夹,也许配置时简单些。
几个配置文件的名称也可以自定义,但要保证文件名后坠正确
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
先下载预训练权重: 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报警;
./darknet detector test data/trafficcone/obj-cone.data data/trafficcone/yolov4-obj-cone.cfg yolov4-obj-cone_final.weights
PS: detector 跟的是test,与demo不同;
运行后,需要输入待识别图片的位置
或者可以直接在命令后加上图片路径,如:
./darknet detector test data/trafficcone/obj-cone.data data/trafficcone/yolov4-obj-cone.cfg yolov4-obj-cone_final.weights data/xxx.jpg
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相机拍另一个屏幕的交通锥筒图片,也可以在室外识别真实交通锥筒(如果条件允许):
官方说明:
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提供了大量能使我们快速便捷地处理数据的函数和方法。