李程启,郑文杰,黄文礼,温招洋
(1.国网山东省电力公司电力科学研究院,山东 济南 250000; 2.安徽南瑞继远电网技术有限公司,安徽 合肥 230069)
卷积神经网络[1]将计算机视觉学习推向了高潮,在许多领域都取得了瞩目的成就。比如目标检测、语义分割、人脸识别、强化学习等。在过去几年,涌现出一系列优秀的目标检测模型(SPP-Net[2]、YOLO[3]、R-CNN[4]等),计算机视觉方面的目标检测发展速度很快,算法已经成熟,检测的精度也越来越高。随着社会经济的发展,人们的生活质量不断的提高,愿意工作在一线的工人越来越少。然而在企业当中,缺陷检测[5]是设备维护当中一个不可或缺的任务,需要大量的劳动力,因为缺陷检测任务量大,分布性广,因此需要大量的人力资源,但是由于缺陷识别机械性强,枯燥性大,越来越少的工人愿意从事这一工作。将深度学习中的目标检测技术应用到企业的实际生产当中已经迫在眉睫。
缺陷识别技术应用起来并不困难,并且有广阔的应用前景,将需要识别的缺陷图像分批送入网络进行训练,当训练损失或者在验证集上的精度满足要求后即可停止训练,此时模型即可用于检测。但是在检测模型上线运行后往往会出现有些目标因前期训练数据较少而出现漏检率较高的情形[5]。因为在一些极端情况下数据收集难度非常地大,出现率低,但却是实际应用当中需要的并需要解决,如数据量较少的斜视目标检测。
通过对数据集做不同角度的透视变换,来模拟实际应用场景中的斜视目标能够很好地解决斜视目标识别问题。本文主要考虑训练集中斜视样本较少的情况下如何显著提高斜视目标的检测精度,以此来提高整体的检测精度。提高检测精度往往会采用数据增强的方法,本文通过对比各种数据增强方法,验证基于透视变换的数据增强模型训练方法对于提高含有斜视目标训练集检测精度的优越性。
图像增强[6]操作是在1998年提出的,然后在Chapelle等人[7]于2000年提出的Vicinal Risk Minimization(VRM)准则中被正式标准化。常用的图像增强手段包括图片翻转[8]、图片尺寸缩放[9]、图片裁剪[10]、图片旋转等。
斜视目标是指监控设备安装位置受限时,或者采集样本过程中由于摄像头没有正对着要检测的目标,或目标没有正对着摄像头,使得目标在一定程度上发生畸变,而形成的样本图片,如图1所示。一般的数据增强方式都能在一定程度上提高模型的泛化能力,提高检测精度,但是对于应用当中出现的斜视目标,上述数据增强方式并不能准确有效地模拟这种场景,因此本文提出用透视变换来模拟实际应用中的斜视目标问题,实验结果显示,透视变换能够很好地解决斜视目标识别问题。
图1 斜视目标实例图片
透视投影[11],就是在坐标空间中,将图片通过透视性质从视图空间到目标空间的变换,如图2所示。
想象将点E当做视点,把P′平面看作视平面,通过点E从P′看向物体,此时P′平面就是近截面,P为远截面,P与P′之间的棱台区域为可视区域。观察者的视线穿过P′平面投影到P平面,就可以形成物体的透视图。
图2 透视投影的标准模型
将点E看作视点,看向P′平面上的矩形,视线经过P′平面到达P平面时,由于视点与P′平面有一定的夹角,矩形发生透视畸变,投影成为新的矩形,如图3所示。
图3 透视变换示意图
以矩形区域的4个角点为例,经过透视变换后A′→A,B′→B,C′→C,D′→D,矩形的形状发生改变。透视投影实质上就是P′平面上的每一点在视角的作用下投影到P平面的过程。若将P平面定义为物体的正视图平面,那么透视变换就是透视投影平面上的每一个像素点变换到正视图上对应的像素点的过程。为了实现透视畸变的校正,只需要找到P平面上的点和物体正视图上对应点的变换公式。
二维图像透视变化公式[12]如下所示:
(1)
(2)
其中,(x,y)是投影图像的坐标,(u,v)是正视图上的坐标。(a,b,c,d,e,f,g,h)是畸变参数。
本文采用透视变换方法对非斜视目标使用透视变换来模拟斜视目标可能出现的场景。透视变换实例如图4所示,图中第一行是原图,第二行是透视变换之后的图片,方框部分为要检测的物体,分别为油杯、鸟巢、表盘破损。
图4 透视变换实例
Faster RCNN框架是目前较为成熟且被广泛使用的一种目标检测框架。其前身为RCNN和Fast RCNN,Faster RCNN在它们的基础上实现了图片特征信息的复用,且抛弃了传统的滑动窗口和SS[13](Select Search)方法,而是使用RPN网络(Region Proposal Network)生成检测框,然后对检测框进行统一的池化,使得Faster RCNN训练时间减少。框架前端是一个特征提取网络,常用的有VGG系列网络和ResNet系列网络,后者出现的时间更晚,有着更好的性能,但在本文中仅针对ResNet101网络进行说明,没有对Faster RCNN的网络结构进行修改,在模型训练时,加入了根据原始数据集利用透视变换算法得到的数据,使得训练出来的模型能够对斜视目标有更好的检测精度。Faster RCNN网络架构如图5所示。
图5 基于透视变换的Faster RCNN网络框架
2015年He等人[14]提出ResNet网络,在ResNet之前最深的网络只有19层。在ResNet网络出现以前,如果加深卷积层的深度会导致训练集准确率出现下降的现象,由于在训练集上出现下降,可以肯定这不是因为Overfit[15]过拟合造成的,因为过拟合在训练集上精度很高,但是在测试集上精度较低,很明显不是这种情况。而作者提出了一种能够加深卷积层的深度并且提高检测精度的网络模型,叫深度残差网络。深度残差网络最深可以达到1000层,并且不会出现过拟合的现象。
ResNet网络由残差学习单元和基本的卷积核组成。为了减少网络的计算量,作者在每一个残差模块之上都使用了一个1×1的卷积核,来减少输出卷积层的维度。为了更加公平地在各种算法之间比较基于透视变换数据增广模型训练的检测性能,如果不做特别说明,使用的检测算法中都是以ResNet101作为骨干网络。因为ResNet101能够很好地从图片中提取特征,并且不增加系统的计算量。ResNet中一个单元结构如图6所示。
图6 基于透视变换的ResNet单元结构
实验是在Ubuntu16.04系统上进行的,使用1个GTX 1080ti显卡,主机的运行内存为32 GB,实现代码是基于Tensorflow深度学习框架。
本文使用经典的PASCAL VOC2007数据集[16]作为训练和测试数据集(以下简称VOC2007)。VOC2007包括5011幅的训练集和4952幅的测试集,共计9963幅图片,训练集和测试集当中都包括20个种类。为了体现斜视目标的检测精度,本文对9963幅图片的数据集进行了透视变换,来模拟实际应用中的斜视目标场景。表1列举了目标检测领域的基准数据集。
表1 目标检测基准数据集
由于卷积神经网络需要连接全连接层,要求所有图片的特征图具有相同的尺寸,因此在训练时对图片进行了统一的缩放处理,其中图片最短边为600像素,最长边为1000像素。虽然使用图像金字塔能够提高模型的准确率,但是由于过度的系统开销放弃了这种方案。在实验中,学习率设为0.001。
在anchor的使用上,提供3种面积的anchor:128×128、256×256和512×512,其中每个anchor分别使用1:1、1:2、2:1这3种长宽比例。由于Faster RCNN在一幅图片上有17100个anchor,经过非极大值抑制和IoU过滤,最终每幅图片只选取256个anchor。在使用IoU时,本文规定anchor和标注区域重叠面积大于0.7的认为是目标区域,重叠面积低于0.3的认为是非目标区域,对于重叠面积介于0.3和0.7之间的anchor舍弃掉不参与训练。另外在训练中对参与训练的图片不再使用翻转操作,因为参与比较的数据增强方式中存在图像翻转类型。
训练使用的是经典的ResNet101作为骨干网络。根据官方提供的在ImageNet数据集上的预训练模型,已经提供了其中的卷积层参数,通过使用预训练模型可以让所有参数都不随机初始化,这样能够加快模型训练速度,这是常用的方法。
由于本文使用的是PASCAL VOC2007数据集,所有类型的数据增广都是进行了70000次迭代训练,为了公平,每一类数据增广方式中都选取最好的模型参与比较。
本文在其他经典检测算法上对透视变换的效果进行验证,选用了流行的两阶段算法代表Faster RCNN和R-FCN,以及单阶段算法代表YOLOv3和SSD进行测试。
首先讨论透视变换增强对于其他基于Faster RCNN的算法的效果。如表2所示,从检测结果可以看出,透视变换对于其他基于Faster RCNN的检测方法,也能显著提高斜视目标的精确度。这也从另一方面验证了透视变换对于斜视目标检测能够提高精度。其中AP0.5表示在训练和测试中使用的阈值。AP0.5是指当检测框与标注框重叠的交并比超过0.5即认为检测到目标时的平均精度,下文当中AP0.6、AP0.7、AP0.75和AP0.5的意义相同。
表2 基于透视变换的Faster RCNN变种模型的检测结果 单位:%
本文引用了文献[19]的检测结果,R-FCN在最后一个卷积的后面,添加了一个1×1的卷积来生成k2(C+1)个通道的位置敏感的特征图和k2(C+1)个通道的回归特征图,通过这种改变,与Faster RCNN相比精度有一点点的提高。本文对R-FCN中的数据进行了透视变换的数据增强,结果如表3所示。在R-FCN网络当中,对于训练时的前向传播,每幅图片选用2000/300个感兴趣区域参与网络的训练,在测试时每幅图片选用300个感兴趣区域参加测试。
表3 基于透视变换数据增广的R-FCN在PASCAL VOC2007上的测试结果
Faster RCNN和R-FCN都是经典的两阶段的算法,为了验证透视变换对斜视目标检测的鲁棒性,本文在经典的单阶段算法YOLOv3上进行了测试。YOLOv3[12]在特征图上对每个位置进行包围框的预测,最大不同是YOLOv3提供了3种尺度的特征图,分别是23×23、46×46、92×92,对于特征图运用了上采样,这样能提供更多的语义信息和细粒度的特征,类似特征金字塔方案(FPN[13])。
本文在YOLOv3上使用COCO2014[20]数据集进行训练和测试,对COCO2014的测试集进行了透视变换。从表4可以看出,运用透视变换之后,YOLO的检测效果有1~2个点的提升,需要知道的是,在COCO2014数据集上提高精度是很困难的事情。为了充分验证斜视目标对检测效果的影响,本文对测试集进行了不同角度的斜视角度变换,图7的实验结果显示,当斜视的角度变得越来越大时,原始的YOLOv3检测精度下降明显,而基于透视变换数据增广的YOLOv3效果好于原始的YOLOv3。
图7 不同斜视角度的目标检测精度
表4 基于透视变换数据增广的YOLOv2/3在COCO2014上的测试结果 单位:%
在目标检测领域,另外一种应用广泛的单阶段检测方法是SSD算法,SSD算法使用了6种不同尺寸的特征图来预测不同大小的目标,具有较好的检测效果。本文也对SSD算法进行了测试,结果如表5所示,在SSD算法上,透视变换也有明显的效果提升。
表5 基于透视变换数据增广的SSD513在COCO2014上的测试结果 单位:%
本文在基准PASCAL VOC2007数据集上进行实验。图8显示了Faster RCNN在VOC2007上的检测效果,对测试集进行了±10°的变换。表6显示了在各种变化之下数据集的检测效果。需要注意的是,因为本文比较的是各种数据变换方法对斜视目标的模拟能力,因此在训练集和测试集当中,只加入了变换后的图片,并没有使用原图。因此表6的实验结果中,对所有的原始数据都进行了变换,也就是训练集和测试集当中没有任何的原图。
图8 基于透视变换数据增广的Faster RCNN模型检测结果
表6 基于Faster RCNN的不同数据变换类型在PASCAL VOC2007上的性能对比(对整个数据集进行变换)
表6的实验结果显示,在AP0.5的情况下,使用透视变换比其他类型的变换最好的检测结果要高4个百分点,在AP0.6时高8个百分点,在AP0.7时高5个百分点。实验结果表明透视变换在斜视目标检测时优于其他种类的数据变换。检测结果加粗的部分为实验中最好的检测精度。为了充分验证斜视目标对检测效果的影响,本文对测试集进行了不同角度的斜视角度变换,实验显示,基于透视变换数据增广的Faster RCNN效果好于原始的Faster RCNN。
为了充分验证透视变换对斜视目标场景的模拟,在表7中对表6的实验数据进行了一点改变。随机在PASCAL VOC2007数据集的训练集上对各个类别数据的30%进行了变换,测试集都进行了透视变换。实验结果显示,由于30%的变换率使得对斜视目标场景模拟不够充分,透视变换在检测结果上相比其他类型的数据变换并没有明显的提升。实验结果显示透视变换相对于其他最好的变换模型只有1~2个百分点的提升。虽然检测提升效果较小,但是也从侧面反映了透视变换对斜视目标的模拟能力。
表7 基于Faster RCNN的不同数据变换类型在PASCAL VOC2007上的性能对比(随机对数据集的30%进行变换)
在分析了不同IoU标准下的检测结果后,本文对不同尺度物体的检测精度进行了分析,如表8所示。选用的IoU为0.5,目标的标注面积小于322为小目标,用APs来表示;目标的标注面积介于322和962之间的称为中等目标,用APm来表示;目标的标注面积大于962的称为大目标,用APl来表示。其中数据集的变换采用表6的方法。实验结果显示,在各种目标尺度下,透视变换也是显著优于其他种类的数据变换,尤其是对中等目标,透视变换在实验中显示了更加优越的结果。
表8 基于Faster RCNN的不同数据变换类型在PASCAL VOC2007上的性能对比(APs、APm、APl分别表示小目标、中等目标、大目标)
斜视目标的识别不是学术领域研究的重点对象,但却是工业应用中面临的重大难题。实现高正确性、高精度和快速高效的透视变换是企业的需求。
本文通过研究数据增强的几种方法,提出了基于透视变换数据增强的模型训练方法来解决检测率不高的问题,运用透视变换来模拟实际检测中的斜视目标。通过在主流的算法上进行测试,实验验证了透视变换是一种很好的方法,能够在不对复杂的检测算法进行修改的情况下,显著提高斜视目标的检测精度。
透视变换只是应对斜视目标漏检误检的权宜之计,可以运用在各种检测场景当中,因为在实际运用中摄像机的位置、物体的移动都会造成斜视样本的生成。透视变换只是一种数据增强技术,想要对斜视目标识别进行突破,还需要从理论上、检测算法层面对网络进行设计,相信这将是企业未来的主要研究方向。