我用AI回怼美女汽车销售系列[yolo车牌识别](三)
作者:互联网
前期回顾:
在上一期中,正当我信心满满的准备将模型应用在车牌识别的时候,遇到了很大的问题。就是在视频中,会把同一个车牌识别成很多不同的车牌号。这样会严重影响最终的统计精度。如下图所示,同一个这牌,由于拍摄角度不同会被识别出很多不同的车牌号。因此这期的主要目的就是要解决同一个车牌的不同角度下,被识别成不同车牌号的问题。
把该车牌在不同帧里面截取下来,进行预测,结果如下所示:
不同角度下,识别出了不同的车牌号,这显示是有问题的。
审核之前的数据增强
首先我对之前的车牌识别网络的数据增强做了审核,发现自己竟然使用了水平反转操作。要知道我们是7个车牌号一起识别的,水平翻转之后,车牌号的顺序是完全乱的,因此属于一个大Bug。我抑制住内心的激动,感觉找到了问题的本质。于是我删除了这个水平翻转的数据增强,重新进行了训练。最终的top1准确率从原来的0.9683提升到了0.9699,好像没有太大的提升。然后在同一个车牌的不同拍摄角度上进行测试,发现并没有实质性的改善。依然很糟糕的识别。
增加数据量
第一个直觉就是要增加数据量,但是由于ccpd中的蓝牌非常多,而绿牌非常的少,一共就1万张左右。因此通过增加数据量或许能够解决蓝牌的识别问题,但是依旧无法解决绿牌的识别问题。因此我pass掉了这个方案。
MixUp数据增强
再次审核代码,感觉数据增强确实有点少,但是对于现在这个特殊的车牌识别,左右顺序是非常重要的,因此不敢做一些几何增强。突然我想到了MixUp数据增强方式,刚好适合我这个项目。Mixup的原理非常简单。将多张图片按照比例粘贴在一起。计算loss的时候,分分计算两种图片的loss,再按照贴图的比例,加权loss。
使用了mixup数据增强之后,测试集的Top1准确率提升到了0.9806,相对于之前的0.9683有1.2个点的提升,看来还是有效果的。然后在之前的三个车牌上做测试,后面两个角度仍然出现了预测错误。
仿射变换数据增强
再次分析训练数据,由于在实际推理的时候,车牌的角度和透视形状往往是千差万别的,那么是否可以利用图像的彷射变换进行数据增强,从而提升精度呢?利用opencv的彷射变换函数,可以很方便的对车牌进行彷射变换,如下图所示:左边为原图,右边为经过彷射变换后的图片。
增加彷射变换之后,最终测试集的Top1准确率为0.9866,比mixup的0.9806提升了0.6个点,看来还是有效果的。然后在之前的三个车牌上做测试,发现第一个和第三个出现了错误。
由于增加mixup以及彷射变换后,都没有增加训练的epoch,理论上增加丰富的数据增强,需要增加epoch数目。于是,我将epoch从9增加到18个。最终的精度为0.991,推理可视化之后,效果非常nice。全部预测正确了。
模糊数据增强
同时考虑到车牌通常会有一些模型的情况,因此对车牌又增加了模糊处理,如下图所示,左边为原图,右边为模糊后的图片。期望能够增加模型的泛化性能。
训练后的最终top1精度0.9885,稍微差了一点,看看推理效果,如下图所示:
真实视频测试
通过上面的各种数据增强,已经训练出了比较好的模型,用之前拍摄的一些真实视频进行测试,发现仍然存在一个车牌被检测出多个不同的车牌号的情况发生。也就是说虽然模型在CCPD数据集里面已经拟合的很好,但是在真实环境下,准确率大大降低!因此不光从数据增强角度。还需要从网络设计等其他方面重新审视我们的车牌识别网络。真是道阻且长,但是不能放弃,坚持!
总结
这一期通过数据增强角度,对车牌识别进行了mixup,彷射变换,模糊处理等,最终在ccpd数据集的测试集上面将top1准确率从0.9683提升到了0.991(提升了2.3个点),但是在实际拍摄的视频中,仍然出现了很多的误检。将一个车牌的不同角度图片识别成很多个不同的车牌。虽然这期没有达到目的,但是也让我们更加清晰的认识到,深度学习项目落地的困难。并不是在公开数据集或者某一个数据集上效果很好,在落地项目中效果也会很棒。还是需要针对具体项目进行具体分析。下一期将会从网络结构等角度重新审视我们的车牌识别项目,敬请期待哦。
标签:增强,彷射,回怼,AI,数据,yolo,车牌号,识别,车牌 来源: https://blog.csdn.net/cjnewstar111/article/details/123614709