基于全景视觉图像的实时目标检测方法

2022-07-21 04:12黄天果沈庆阳
计算机工程与设计 2022年7期
关键词:畸变全景投影

黄天果,何 嘉,沈庆阳

(成都信息工程大学 计算机学院,四川 成都 610225)

0 引 言

随着虚拟现实(virtual reality,VR)技术的飞速发展与广泛应用,360°全景视觉图像的应用也随之增加。360°全景视觉图像由于其对周围环境无死角的全感知能力在无人驾驶领域中发挥越来越重要的作用。

基于卷积神经网络(convolutional neural network,CNN)的目标检测方法现已成为目标检测领域的主流方法。根据训练方式的不同,当前目标检测方法主要分为基于区域候选框提取的双阶段方法和能实现端到端训练的单阶段方法,其中双阶段方法以R-CNN[1]系列为主,通过提取候选框后加以训练实现高精度目标检测。但随着实际应用的深入以及对实时要求的提高,R-CNN系列方法很难用于无人驾驶等对实时性要求较高的领域,而端到端的单阶段方法[2]的出现改变了这一情况,在可接受的范围内降低精确度而大幅提高检测速度,使得单阶段方法更受工业界欢迎。

通过实验可以验证,不同图像输入大小对基于全景视觉下的目标检测结果造成很大影响,采用高分辨率全景图像能有效提高检测精确度,但检测速度较慢;目前基于道路场景下的全景目标检测数据集很少,导致训练缺乏足够的样本数,对检测精确度造成影响;针对原YOLO[2]作者Redmon提出的最新目标检测方法YOLOv3[3],改进网络结构使其在可接受范围内降低精确度并有效提高高分辨率全景图像检测速度。

1 相关工作

从三维的球面图像变换到二维平面图像的过程被称为投影,根据球面不同位置的显示需要,投影方式可以分为圆柱投影、圆锥投影和方位投影。在全景视觉图像中等距柱状投影(equirectangular projection,ERP)是最常用的投影格式。ERP投影方式属于圆柱投影,由于其投影方式简单,导致图像在南北极区周围造成畸变,给目标检测带来挑战。但在无人驾驶领域,目标检测对物体的识别主要来自于水平方向目标的检测,所以采用ERP投影是最好的方式。其次由于ERP全景视觉图像的成像方式,决定了全景图像中目标对象的大小与其所在图像中位置有关,不同位置对目标大小的缩放与畸变程度造成影响,从而导致低分辨率下图像中目标的有效像素相对更少,提高目标检测的难度。

目标检测模型训练过程中,在数据集不足情况下为避免出现过拟合,进行数据增强是非常有必要的。针对低分辨率数据集如经典目标检测数据集Pascal VOC(the pascal visual object classes challenge),数据增强方法包括水平翻转、图像旋转、随机剪裁、平移变换、尺度缩放、颜色扰动以及添加噪声等[4],文献[5]中提出马赛克数据增强方法选择4张不同图片经随机缩放和剪裁等操作后拼成一张图片作为训练输入获得4个不同的上下文混合特征,显著减少对大批量数据的需求。当采用高分辨率(512×1024)的全景图片作为输入,对于以608×608为最高输入大小的YOLOv3来说,简单地将图片进行缩放翻转或多张图结合并不能使存在畸变的全景图像目标对象特征得到增强。本文针对全景ERP图像成像原理,提出全景数据增强方法能有效增加目标对象畸变特征,增加模型对不同程度畸变的泛化能力并提高模型检测结果。

本文基于MobileNet[10]网络结构思想为单阶段检测模型YOLOv3框架引入深度可分离卷积结构来构建主干网络,针对全景图像成像特点改进YOLOv3网络。新的网络结构相对原始YOLOv3网络在参数量上减少65.08%。实验数据采用全景数据集OSV(omnidirectional street-view)[6]。为了解决全景数据集不足的问题,本文提出针对全景图像的数据增强方法,对原始数据集扩充一倍训练样本量。实验结果表明,扩充后的训练数据集训练模型在交并比(intersection over union,IOU)为0.5的条件下评估的模型平均精确度(mean average precision,mAP)相比原始训练数据集训练模型提高4.75%。

2 方法分析

2.1 全景数据集增强方法

在全景视觉图像中,采用的全景相机通常会有多个摄像头分布在相机周围,采集后的多个图像采用图像拼接成一个球面后以各种投影格式存储成二维图像,主要有立方体投影、圆形投影、小行星投影和球面投影等。其中球面投影即ERP格式投影图像,如图1所示。

图1 ERP格式全景模版

通过将ERP格式全景图重新投影到球面上,使球面在三维笛卡尔坐标系下随机旋转,再投影到二维平面,获取旋转变换后点的位置对应旋转前位置的像素点,实现图像变换。以此能有效增加图像中目标对象的畸变特征,使目标对象畸变多样化,针对全景图像增加训练样本。数据增强方法过程如下:

首先需要将二维平面上ERP格式图像上各像素点在位置上进行归一化,将图像像素点信息从平面直角坐标系转化到空间极坐标系,其过程可以表示为

(1)

其中,W表示原始ERP图像宽度,H表示原始ERP图像高度;φ为原点到球面上点的射线与X轴形成的角度,θ为原点到球面上点的射线与Y轴形成的角度。文本设球面为半径置1的单位球,用以简化位置计算量。将图像像素信息从平面直角坐标系转换到空间极坐标系后需要再转换到空间直角坐标系,从而实现球面在空间的旋转操作。其过程表示为

(2)

其中,X、Y、Z分别对应空间直角坐标系下的X轴、Y轴和Z轴,通过空间矩阵变换可以实现球面在空间的旋转,对空间直角坐标系下的各点进行矩阵变换,其变换矩阵表示为

(3)

(4)

(5)

其中,Rx、Ry、Rz分别表示在空间直角坐标系中一点绕X、Y、Z轴旋转的变换矩阵,rx、ry、rz分别表示绕X、Y、Z轴旋转度数(单位:弧度)。

实验结果表明,ERP格式下全景图像在空间中进行绕轴旋转,其中,针对Z轴进行绕轴旋转表现在平面ERP格式图像中是图像左右平移,对于平移的ERP图像,其畸变信息并不会随平移量的增加减少产生变化,所以针对绕Z轴旋转的旋转度数rz可以是任意度数 ([-2π,2π]); 针对X轴的绕轴旋转表现为左右两模块的顺逆时针旋转,引发前后模块上下移动并伴随畸变程度增加;针对Y轴的绕轴旋转表现为前后模块的顺逆旋转,引发左右模块上下移动并伴随畸变程度增加。

针对畸变程度,本文指定绕X轴、Y轴旋转度数控制在 [-π/12,π/12] (其中负号表示反方向旋转),其原因为过大旋转度数对于绕X轴和Y轴会使图像产生不可逆转的畸变程度,直接导致图像中目标对象失去真实性从而降低检测模型性能。实验结果表明旋转度数控制在 [-π/12,π/12] 能有效避免图像产生过大的畸变影响检测效果。

定义空间中一个点坐标为

[XijYijZij];i∈[0,H),j∈[0,W)

(6)

设该点绕X、Y、Z轴旋转弧度分别为rx、ry、rz, 旋转后的点表示为

(7)

经过空间旋转操作后,空间直角坐标系下的像素信息需要重新投影到平面上,其过程为式(1)、式(2)的逆过程,具体操作如下:首先将旋转后的空间直角坐标点重新转换到空间极坐标系,其过程表示为

(8)

最后将空间极坐标转为平面坐标,其过程表现为

(9)

其中,“”表示对W和H取余。

到此完成对ERP图像的旋转投影工作。如图2所示,将平面ERP图像上点在空间坐标系下绕X轴旋转π/12,绕Y轴旋转π/12,绕Z轴旋转π/4后再投影的结果。

图2 ERP旋转投影展示

由图2可以看出,在进行ERP图像旋转投影之后,相比于图1图像整体信息发生改变,针对Z轴旋转实现图像左右平移使原本在正前方的模块移动到右边,针对X轴和Y轴的旋转实现不同模块的旋转。其中也能看出上下模块畸变程度增加最为强烈,但由于全景视觉在实时目标检测中的应用并不关注上下模块,使得其变化对检测的影响不大。

2.2 目标检测已有方法分析

单阶段目标检测方法采用端到端的训练方式,其检测流程通常为:首先输入一定尺寸的图片,然后通过主干网络(backbone)提取深度特征,将提取的特征输入颈部网络(neck)进行特征融合等操作使网络更好地适应特征,最后通过头部网络(head)进行分类回归获取目标对象。其优势表现在端到端训练网络模型在检测速度时更快,相比于双阶段目标检测方法,单阶段目标检测方法省去了提取候选框的步骤引入锚框的概念,实现直接分类回归节省大量时间,但同时也降低了检测精度。

在YOLOv3原文中,作者定义网络输入大小最小为416×416,最大为608×608。由于采用Darknet53[3]作为主干网络,从3个尺度提取特征分别是/8(缩小8倍),/16,/32,所以图像输入需要满足32的倍数。在Darknet53中,主要采用的组件是残差网络[3],其结构如图3所示。

图3 残差网络结构

通过主干网络提取3个尺度下的特征分别对应3种不同大小的目标对象,在YOLOv3头部结构中输出最小的特征(/32)会通过上采样与大尺度特征进行特征融合最后实现融合后的多尺度输出。通过YOLOv3结构输出的特征在与预定义锚框(anchor-box)结合训练时需要首先进行解码操作:将不同尺度目标特征与对应缩小倍数(stride)相乘;对置信度和预测类别进行Sigmoid操作使其控制在[0,1]。

2.3 YOLOv3网络轻量化

通过对原始YOLOv3网络的分析与实验可知,在高分辨率全景图像输入情况下,图像检测耗时主要在网络计算和解码操作上。针对耗时原因,采取以下方式实现实时检测。

2.3.1 基于深度可分离卷积神经思想的主干网络

深度可分离卷积神经网络经过实验验证[11]可以在更少的参数量实现同等卷积效果,其运算过程可以表示为

(10)

其中,βi表示网络第i层的输入特征图;ξin表示第i层特征图的第n个通道;k表示卷积核;通过D(·) 操作实现深度可分离卷积操作中逐通道卷积操作,与常规卷积操作中输入层中各个通道都需要与每个卷积核对应通道进行卷积不同,逐通道卷积中卷积核通道数不是输出通道数,而是采用输入通道数,通过对应通道卷积实现深度可分离卷积的第一次卷积操作;S(·) 是将逐通道操作的输出进行逐点卷积操作,其过程为通过输出通道个数的1×1大小卷积核与当前输入特征图进行常规卷积操作,从而实现卷积计算量的大幅下降。τ为D(·) 操作的输出表示第i层特征在经过逐通道卷积后的状态,并作为S(·) 操作的输入。最终输出βi+1表示第i+1层的输入。

假设输入特征图通道数为n, 卷积核大小为k×k, 输出通道数为m, 相比于常规卷积操作,深度可分离卷积参数量减少1-1/m-1/k2。 基于以上分析,采用深度可分离卷积替换Darknet53残差网络中的两次常规卷积操作能有效减少网络参数量,本文称其为深度可分离特征融合块(depth separability feature fusion block,DSFF_Block)。

2.3.2 针对解码耗时问题改进头部网络

通过Darknet53主干网络会输出3种尺度(/8,/16,/32)的特征图,在YOLOv3头部网络中,将最小尺度(/32)的特征图直接进行分类回归,并对其上采样与中型尺度(/16)结合进行输出,同理上采样与最大尺度(/8)结合作为最大尺度输出。在YOLOv3中作者没有加入全连接层(fully connected layer,FC),而是分别对3种尺寸特征图解码到标签格式,以供训练。

针对3种尺寸的解码会造成大量计算,而根据高分辨率全景图像目标对象分布情况,本文取消头部网络中中尺度特征图(/16)的输出,改进为将其进行向上向下采样并分别与最大尺度和最小尺度结合的方式实现特征融合。改进后的网络结构如图4所示。

训练图像在输入模型后,会首先经过一个32×3×3的卷积操作主要是为提取图像特征进行图像通道数预扩大。之后连续经过5次DSFF_Block,每一个DSFF_Block都有不同大小的特征图输出(经过不同个数卷积核进行卷积操作,如图4中64,128分别表示经过64×3×3和128×3×3的卷积操作)和不同的循环次数(如图4中1×,2×,4×分别表示进行1、2、4次循环),且每一个DSFF_Block循环块在进行循环前包含一次下采样操作,每执行一次DSFF_Block操作对其输出进行一次非线性运算:表现为批量归一化和线性修正单元(rectufied lear unit,ReLU)的组合。

图4 改进网络结构

经过主干网络输出3种尺度的特征图,在颈部网络中通过上下采样实现多维特征融合,最后网络输出为两种尺寸的多维向量,再经过解码操作后,网络输出为向量

(batch_size,r_h,r_w,3,num_class+5)

(11)

其中,batch_size表示批处理数,即单次向模型输入图像的数量;r_h和r_w表示两种尺度的特征图;3表示3种预定义的anchor-box;num_class表示目标种类个数,采用one-hot编码表示;5表示预测框信息(中心点位置以及宽高)和置信度。

3 实 验

本文进行了3个实验:实验一针对原始YOLOv3采用不同分辨率全景图像作为输入,考察不同分辨率输入对模型检测精度和速度的影响;实验二验证扩充数据集的有效性;实验三量化改进网络结构后模型的性能。

3.1 损失函数及训练超参数

网络训练损失函数采用多目标函数衡量,分别是目标框回归损失函数、类别损失函数以及置信度损失函数。其中目标框回归损失采用CIoU[12]指导损失,类别损失函数采用原始Sigmoid交叉熵损失函数,并采用Focal Loss[13]指导置信度损失。

在训练过程中,由于图像大小输入分辨率高,batch_size设置为8,Epoch为100;对于多世代(epoch)的深度神经网络训练,学习率(learning rate,LR)直接影响网络损失收敛方向,也对有网络收敛速度造成影响,通常学习率调整策略包括在训练中微调、随迭代次数增加的线性变化以及周期性变化等。本实验通过设置动态学习率实现学习率随迭代次数增加的非线性变化,其过程可以表示为

(12)

(13)

其中,Lx表示最大学习率设为10-4,Ls表示最小学习率设为10-6;i为训练到第几个Epoch;G为训练样本总数;E为预热阶段Epoch数;由此,学习率在第U步达到最大值;T为总的训练步数,在达到最大值后以非线性曲线下降,在最后一个Epoch达到最低值。

3.2 不同分辨率输入对模型的影响

本实验中算法模型采用YOLOv3进行实验主要验证不同分辨率图像作为输入时对模型检测精度和速度的影响。在原始YOLOv3中作者采用416×416作为图像输入大小,针对全景图像目标对象大小与原图像比例的关系,本实验最小输入采用608×608,再分别使用1024×1024,512×1024作为输入大小进行验证。实验结果见表1。

表1 不同分辨率输入大小在YOLOv3上测试结果

由表1数据可知,相对于608×608输入大小,1024×1024输入大小在mAP上提高了31.68%,但在检测速度上,每秒帧数下降47.5%,由此可以得出结论,由于深度神经网络多次卷积操作提取特征造成感受野的固定化,高分辨率全景图像输入能提取更大的感受野使得检测精度提高,同时需要更多的计算造成检测速度下降。通过将512×1024作为输入和1024×1024输入进行比较可以看出,尽管在检测精度上只有较小的下降,但仍无法满足实时检测的要求(通常认为20 FPS以上基本满足实时)。

3.3 针对全景数据集的数据增强方法的有效性验证

由表2数据显示,扩充后的数据集相比原数据集对基于全景图像的目标检测平均精确度有积极作用,在采用YOLOv3和MobileNet作为检测方法进行训练的模型在检测精度上分别提高了4.75%和7.49%,验证了全景数据集数据增强方法能有效提高全景视觉图像目标对象的畸变特征,增强模型对畸变检测的泛化能力。

表2 全景图像数据集数据增强方法有效性测试结果

3.4 YOLOv3轻量化网络模型性能测试

本实验验证所提出的轻量化YOLOv3结构能有效提升高分辨率全景图像输入下目标检测速度。与经典双阶段目标检测方法Faster R-CNN[7]以及各种单阶段目标检测方法包括SSD[15]、YOLOv3以及轻量化模型MobileNetv3进行比较,实验采用512×1024作为图像输入大小,采用扩充的全景数据集(OSV-EX)作为实验数据集,实验结果见表3。

表3 针对全景目标检测的YOLOv3轻量化 网络结构测试结果

由表3数据显示,Faster R-CNN作为R-CNN系列双阶段目标检测算法,也是第一次通过RPN网络引入Anchor概念,其在全景图像中的检测精确度上达到最高的88.81%,但检测速度只有1.81 FPS,验证双阶段目标检测算法在实时检测性能上的不足;而端到端训练的SSD方法在高分辨率的全景图像输入下也难以达到实时检测。相比YOLOv3目标检测方法,本文提出的轻量化网络结构在网络参数量上减少了65.08%,在可接受范围内下降一定检测精度(3.08%),模型检测速度提升31.81%,达到25.03 FPS,实现实时检测。作为对照实验,MobileNetv3尽管在检测速度上达到23.64 FPS,但检测精度相对较低,不利于实际应用。

4 结束语

本文针对全景视觉图像实时目标检测进行相关研究。首先针对全景图像训练数据集不足的问题,提出一种适用于全景图像数据增强的方法,该方法能有效增强全景ERP格式图像中目标对象的畸变特征;基于YOLOv3结构和深度可分离卷积实现主干网络轻量化,同时对头部网络进行优化减少解码过程计算量。实验结果表明,轻量化的网络结构在网络参数量上减少了65.08%,实现高分辨率(512×1024)全景图像输入下的实时目标检测。

本文提出的轻量化网络的方法在实现实时检测的同时也造成了检测精度的少量下降,主要是由于深度可分离卷积在降低参数量的同时对提取的特征造成压缩对检测器造成一定影响。在未来的工作中,将研究采用自适应剪枝的方式对网络进行轻量化,并量化其对检测性能的影响。

猜你喜欢
畸变全景投影
全息? 全息投影? 傻傻分不清楚
大型焊接容器局部热处理防畸变工装优化设计
戴上耳机,享受全景声 JVC EXOFIELD XP-EXT1
基于最大相关熵的簇稀疏仿射投影算法
几何特性对薄壁箱梁畸变效应的影响
找投影
找投影
全景敞视主义与侦探小说中的“看”
在Lightroom中校正镜头与透视畸变
从5.1到全景声就这么简单 FOCAL SIB EVO DOLBY ATMOS