1.数据集介绍:UA-DETRAC
数据集主要拍摄于北京和天津的道路过街天桥,多为摄像头俯视视角;
数据集:
DETRAC-Train-Images (5.22GB, 60 sequences)
DETRAC-Test-Images (3.94GB, 40 sequences)
DETRAC-Train-Annotations-XML
2.数据集格式转换----转换为VOC格式(该部分来自于CSDN搜索,链接:
https://blog.csdn.net/w5688414/article/details/78931910 感谢大佬的分享,若该部分书写有涉及侵权,将立即删除)
代码共分为三个部分:(代码使用过程中请注意相关数据集的路径问题
)
第一部分:从数据提供的XML文件中,提取出每张图片voc格式的xml文件,代码为DETRAC_xmlParser.py
;
第二部分:根据生成的XML文件,迁移相应的图片到目标目录中。代码为voc_data_migrate.py
,图片和XML文件生成后,按照VOC数据格式的目录结构来制作该数据;
第三部分:利用代码ImageSets_Convert.py
, 产生trainval.txt,test.txt,train.txt,val.txt
文件;
1. 实现算法在该数据集上的训练,需要修改三份文件,分别为:
cfg目录下的网络配置文件:**.cfg
文件、.data
文件;
data目录下的 .names
文件;
具体的修改方法如下文所示;
yolov3.cfg
文件的修改,共计三处
需要修改,改完后在同一目录下另存为car.cfg
:
由于我们只需要做一类目标的检测,因此,class数量为1
, 需注意:模型训练的batch以及subdivision
请依据自己硬件水平来调整;
修改的代码为:
(第一部分)
[convolutional]
size=1
stride=1
pad=1
filters=18 ##255 f=3*(class+5)
activation=linear
[yolo]
mask = 6,7,8
achors=10,13, 16,30, 33,23, 30,61, 62, 45, 50.119, 116,90, 156,198, 373,326
classes=1 ##80
num=9
jitter=.3
ignore_thresh=.7
truth_thresh=1
random=1
(第二部分)
[convolutional]
size=1
stride=1
pad=1
filters=18 ##255 f=3*(class+5)
activation=linear
[yolo]
mask = 3,4,5
achors=10,13, 16,30, 33,23, 30,61, 62, 45, 50.119, 116,90, 156,198, 373,326
classes=1 ##80
num=9
jitter=.3
ignore_thresh=.7
truth_thresh=1
random=1
(第三部分)
[convolutional]
size=1
stride=1
pad=1
filters=18 ##255 f=3*(class+5)
activation=linear
[yolo]
mask = 0,1,2
achors=10,13, 16,30, 33,23, 30,61, 62, 45, 50.119, 116,90, 156,198, 373,326
classes=1 ##80
num=9
jitter=.3
ignore_thresh=.7
truth_thresh=1
random=1
voc.data
文件的修改(同级目录下另存为car.data
):
classes = 1
train = /your/train/data/train.txt
valid = /your/train/data/test.txt
names = data/car.names
backup = backup
data目录下.names文件的修改:
新建一个names文件car.names
,文件内容为:
car
此部分可参考Darknet官网的教程
1. darknet官网下载预训练model---- darknet53.conv.74
2. 开始训练模型
在终端内输入指令
./darknet detector train cfg/car.data cfg/car.cfg darknet53.conv.74 -gpu 0,1
模型的实际检测效果相对不错,yolo还是很强大的;
Ps:由于数据的拍摄都属于道路监控类型的角度,因此本人训练出来的模型对于该角度的车辆检测效果还是很不错的,但是,其他角度的检测效果还有提升空间;
总结:该博客仅供参考,属于个人学习经验,有不足之处请多多谅解,互相交流,学习。