流程
一.模型选取
将YOLO和Faster RCNN进行搭配,通过多次实验,我们最终选择了基于YOLOv3框架,具体选择YOLOv3-tiny算法进行模型训练, YOLOv3对小物体识别的精准度较高,在对具体某个特征识别的时候不会因为背景产生较大影响,是目前使用中速度和精度最均衡的网络。YOLOv3通过借鉴残差网络,在不同层之间增加了快捷链路,通过上采样,联合多尺度特征,调整了感受野,形成了更深的网络层次,实现细粒度的检测提高了精度,提升了mAP和小物体的检测效果。 同时,该算法训练出的模型体积更小,检测速度更快,将该模型部署到NUC(微型电脑)中,可以达到实时检测的需求。
二.数据集处理
1.采集:保证数据集的丰富性、多样性,解决过拟合问题。
- 前后左右多场景采集数据集:在比赛场地的四个顶点都采集一定数量的数据集,保证数据集的差异性。
- 早中晚多时刻采集数据集:适应多种光照变化和保证数据集的差异性。
2.标注: - 工具:LabelImg是一个可视化的图像标定工具。
- 标注文件的格式:生成的 XML文件是遵循 PASCAL VOC 的格式的。
- 原则:标签(分类:red-small-front 和 blue-big-left)每个label的数量均衡。
3.数量:总共标注了 4800(600*8) 张图片,分为
训练集:测试集=9:1
。
三. 算法选取
- 使用的算法:YOLOv3-tiny;
- 网络结构:
该网络总共只有24层,相比于YOLOv3的107层,大大减少了层数,使得网络计算时间大大减少。此外,该网络只有两个YOLO层,只对13x13(每个类别的置信度) 和26x26(框的坐标)两个尺度特征进行融合计算,同样减少了神经网络的计算量。这样使得在使用移动端上进行检测计算时,同样能够以出色的性能来进行。
- 训练过程
- 预训练:
使用在ImageNet数据集上训练了80个epoch的参数下进行继续训练。
初始学习率:0.002;
分段常数衰减: [360,600,780] [0.002,0.001,0.0005,0.0002];
权重衰减:L2正则化权重衰减,0.00005; - 训练参数设置
总epochs:150
train_batch_size:48
input_size:[3,448,448] - 数据增强方法:
采用常用的随机亮度、随机对比度、随机饱和度、随机色调、随机裁剪、随
机扩展等图像增强方法。 - 优化器设置:
采用随机梯度下降法SGD求解,在疲劳数据集 上训练了总共150个epochs
参数设定:
初始学习率:0.002
分段常数衰减:[1370,6165,10960,15070,18,495,21,920,24,660]
[2e-3,1e-3,5e-4,2e-4,5e-5,8e-6,2e-6,1e-6]
权重衰减:L2正则化权重衰减,0.00005。 - 损失函数:交叉熵损失。
四.训练结果
由于实验的第一个epoch的loss(162)比较大,画出来的曲线看不出来后续
loss的变化结果,因此剔除了第一个epoch的loss进行绘制。但从实验的loss曲线当中我们可以看出,YOLOv3-tiny对loss的收敛过程比较缓慢,大概在120~140epoch的时候才收敛到接近15的样子,在后续的训练的过程中loss逐渐趋于平稳。反观mAP曲线,也较为符合实际情况,在loss猛烈降低的阶段内,mAP的值也在猛烈上升。只是mAP的效果不太好,最终稳定在0.6附近,说明YOLOv3-tiny对物体检测的准确度不是很高。此外,通过两组曲线可以判断出大致在160、170epoch的
时候将趋于稳定。
这里仅仅对打电话、吸烟违规和检测速度进行统计分析。其中打电话的测试
样本总数为70张,打电话为32张,如表6-1所示;吸烟的测试样本总数为170张,
吸烟为43张,如表6-2所示。检测速度如表6-3所示
从表中的数据我们可以看出,随着阈值的提高,准确率总体呈现上升趋势,
误检个数和检测正确的个数呈下降趋势。这也较为符合实际情况,因为随着阈值
的提升,模型对物体类别的判断也越来越自信,误检的情况也就随之减少。但反
观召回率,随着阈值的提升呈现猛烈的下降趋势,这就与预期的理想情况较为不
符。我认为这表明模型对检测物体的特征并没有很好的提取,并且它们每个类别
的置信度得分并不高,因此才会出现随着阈值慢慢提升的过程中,召回率猛烈下
降的现象。因此可以在进一步的实验中从网络模型和数据集两个方面进行考虑优
化。