基于类人视觉的多任务交通目标实时检测模型*
2021-02-02陈岚磊李汉冰
刘 军,陈岚磊,李汉冰
(江苏大学汽车与交通工程学院,镇江 212013)
前言
在无人驾驶应用中,计算机视觉技术主要用于:交通目标检测[1-5](如车辆、车道线、行人、交通标志、可行驶区域)、目标跟踪[6]、目标状态估计[7]等。
随着深度学习技术的快速发展,计算机视觉逐渐由传统的机器视觉走向更具备人类智慧的深度视觉,尤其是卷积神经网络(CNN)对图像处理发挥着重要的作用。
当前基于深度学习的目标检测算法可分为两类:基于候选区域的二阶段目标检测算法(如Faster R⁃CNN[8]、Mask R⁃CNN[9]等)、基于回归的单阶段目标检测算法(如SSD[10]、YOLOv3[11]、FCOS[12]等)。二阶段目标检测算法首先获取图像的感兴趣候选区域,再在候选区域中进行目标分类和定位;而单阶段目标检测算法直接提取图像特征进行目标分类和定位,将分类问题转换为像素回归问题,检测速度明显提升,但精度较差。此外,自Faster R⁃CNN 提出了anchor 机制后,基于anchor 检测模型精度有了明显提升。anchor 机制[11]是利用密集采样的思想,通过大量预定义的anchor 枚举目标可能的位置、尺寸和纵横比的方法来搜索对象,但由于anchor 自身设计的限制,同时会引入大量额外超参数,使计算量增大。当前anchor⁃free 算法比较热门,如FCOS 网络,利用目标中心点所在位置进行回归预测,有效解决anchor尺寸的不通用性,减少重复计算量。
可行驶区域检测是对车辆安全行驶不发生碰撞的道路路面进行检测,通常是自车行驶车道,在计算机视觉领域属于语义分割算法的应用之一。当前基于深度学习的可行驶区域检测算法大多来源于全卷积网络思想,如FCN[13]、SegNet[14]、UNet[15]等,实现了端对端像素级可行驶区域的分割。
目前现有交通场景检测算法中单个模型很少有同时进行多个任务检测(如Mask R⁃CNN,对目标进行分类定位和实例分割),通常是多个模型各自分别进行检测任务再进行整合,这样不仅会增加硬件需求,也会降低实时性。因此,如何实现单个模型同时鲁棒地进行交通场景多任务实时检测是一个亟需解决的工程问题。
为了解决上述问题,本文中提出了一种基于类人视觉的多任务交通目标实时单阶段检测模型,实现可行驶区域和交通目标鲁棒地统一检测。同时,模型基于anchor⁃free[12],对图像进行像素级别的检测,增强预测框的自由性,提高检测精度和泛化性;并且底层采用轻量化模型MobileNetV3[16],减少模型参数量,保证检测实时性。
1 类人视觉算法
目前在计算机视觉领域所采用的类人视觉注意力机制[17]的作用机理,大致可以划分为两种:自底向上的模型和自顶向下的模型。自底向上的模型受数据驱动,主要利用图像中的颜色、亮度、边缘等特征,考虑像素与周围区域在特征上的不同,计算该像素的显著性;自顶向下的模型主要受任务驱动,受到人类主观意识的影响,包括先验性知识、当前的目标或对未来的预期。在交通场景中,如图1 所示,利用大规模的驾驶员眼动数据,模拟驾驶员的驾驶主观意识,实现自顶向下的注意力机理。
2 基于类人视觉的多任务交通场景实时检测理论模型
图1 交通场景下注意力机理可视化
本文中建立类人视觉注意力机制,即利用驾驶员人眼注意力作为交通场景感兴趣区域自顶向下引导检测模型,从而更加直接地贴近驾驶员的视觉意图。模型可分为3 个部分:人眼注意力监督模块(eye fixation prediction)、可行驶区域检测模块(driving area prediction)和交通目标检测模块(traffic object prediction),整体结构如图2所示。
2.1 特征提取网络
目前,CNN 广泛应用于计算机视觉领域,其具有自动提取图像特征的能力,通过堆叠卷积块,可以获得丰富的高层次特征。
为了提高计算效率,从SqueezeNet[18]开始模型参数量就不断下降,尤其是MobileNet 系列。MobileNetV1[19]开创性地提出了深度可分离卷积,其结构如图3 所示。深度可分离卷积将传统的标准卷积分解为深度卷积和1×1 卷积,深度可分离卷积相对于标准卷积参数量压缩率s为
式中:DK为卷积核尺寸;DF为输入的特征尺寸;M 为输入通道数;N 为输出通道数;分母为标准卷积参数量;分子为深度可分离卷积参数量。
MobileNetV2[20]融合了残差思想,在一代的基础上加入了线性bottlenecks 和反残差模块构成了高效的基本模块,其结构如图4(a)所示。
MobileNetV3 综合前两代的深度可分离卷积和反残差思想,并加入MnasNet[21]的互补搜索技术组合模块,其结构如图4(b)所示。
本文中采用轻量化模型MobileNetV3 作为底层进行特征提取,并将参数共享于整个模型。
2.2 人眼注意力监督模块
图2 类人视觉交通场景多任务实时检测模型结构
图3 深度可分离卷积结构示意图
该模块基于MobileNetV3,提取C3、C4和C5层特征图,随后加入一个卷积核为3×3×40、步长为2的卷积操作得到C6层特征图;再加入一个卷积核为3×3×1、步长为1 的卷积操作并用Sigmoid 激活函数激活,最终得到4×13×1 的人眼注意力预测图,利用人眼注意力损失函数LATT(见2.6.1 节)与真实值进行比较。此模块与交通目标检测模块共享网络,从而进行监督。
2.3 动态注意力算法
由于驾驶员眼动是一个动态过程,仅仅只利用卷积的空间操作会打破上下帧图片的密切联系。随着循环神经网络的快速发展,特别是LSTM 网络在时序数据的处理上能力非常强。本文中引入动态注意力算法(dynamic attention network,DAN),其结构见图5 左,利用convLSTM[22]和特征金字塔[23](FPN)思想,对图像的特征进行时序记忆。convLSTM 是在LSTM网络的基础上加上卷积操作,而FPN是利用底层特征与高层特征上采样进行有机融合,底层特征具有高分辨率,目标位置信息更加准确,高层特征语义信息比较丰富,能准确地识别目标,融合能获得更丰富的信息,使检测效果更为显著。
图4 MobileNet系列模型结构示意图
动态注意力算法过程具体见图5 右,首先对MobileNetV3提取的特征层Cn(n=3,4,5)进行一个卷积核为1×1×64、步长为1 的卷积操作并用Sigmoid 激活函数激活,同时对MobileNetV3 提取的特征层Cn+1进行一个卷积核为1×1×160、步长为1 的卷积操作,得到FPN 的原始特征Pn+1并进行2 倍上采样,两者按通道叠加(64+160)作为输入特征Xt送入convLSTM层。convLSTM 层可分为内部隐藏层H 和记忆细胞层C,两者之间利用门运算进行连接。门运算分为3种:输入门it、遗忘门ft和输出门ot。对于每一步时间t,都会有输入特征Xt被送入。如果输入门it打开,Xt的信息被存入记忆细胞层C中。如果遗忘门ft打开,上一个记忆细胞Ct-1会被遗忘。输出门ot决定最新的记忆细胞Ct是否传入内部隐藏状态Ht中。具体运算公式为
图5 动态注意力算法结构图
式中:‘*’为卷积运算;‘o’为元素数乘运算;σ 为Sigmoid 激活函数;tanh 为双曲正切激活函数;W 和b为学习的权重和偏差。
对于所有输入特征Xt,本文中令t=5,都有:X1=X2=…=Xt=X。可以得到最新的隐藏状态Ht的特征信息,再进行一个卷积核为1×1×160、步长为1 的卷积操作并用Sigmoid激活函数激活,得到FPN 的新特征Pn。以此类推,可以得到FPN 的新特征P5、P4、P3层,并作为交通目标检测模块的基础进行共享。
2.4 可行驶区域检测模块
由于可行驶区域不需要耗费人眼注意力进行监督,于是冻结convLSTM 算法层,利用FPN 思想进行特征获取,其结构如图6 所示,即把上采样的结果和CNN前向传播过程生成的特征图相加。此模块网络特征独立于人眼注意力监督模块,也不与交通目标检测模块共享。首先对MobileNetV3 提取的C3、C4、C5特征层分别进行一个卷积核为1×1×160、步长为1的卷积操作,得到FPN 的P3、P4、P5原始特征,再对P5原始特征进行2 倍上采样与P4原始特征相加,得到P4新特征。随后,对P4新特征进行2 倍上采样与P3原始特征相加,得到P3新特征。对P3新特征进行8倍上采样,再进行一个卷积核为1×1×1、步长为1 的卷积操作,同时用ReLU 激活函数激活,最终得到256×832×1 的可行驶区域分割预测图。该预测图与输入的原始图片大小一致,利用可行驶区域损失函数LDA(见2.6.2节)与真实值进行比较。
图6 FPN网络结构图
2.5 交通目标检测模块
为了增强预测框的自由性,该模块基于anchor⁃free 思想利用多尺度特征图进行检测。即对动态注意力算法的FPN新特征P5层进行2次卷积核为3×3×160、步长为2 的卷积操作,如图2 所示,得到64 倍(相比于原图)下采样P6层和128 倍下采样P7层,并与FPN 的新特征P5、P4、P3层组成5 个尺度特征图。其中,P3层是8 倍下采样,P4层是16 倍下采样,P5层是32倍下采样。
2.5.1 交通目标分类
如图2 所示Head 部分,为了加深特征提取,首先同时对P3、P4、P5、P6、P7这5个尺度特征图进行4个卷积核为3×3×160、步长为1 的卷积操作,然后利用3×3×c 的卷积核进行卷积并采用ReLU 激活函数激活,得到最终预测的h×w×c 交通目标类别置信度图。其中h×w 为置信度图的大小,c为类别数。利用交通目标分类损失函数LCLS(见2.6.3 节)与真实值进行比较。
2.5.2 交通目标边界框回归
本文中定义交通目标边界框的坐标为(xb1,yb1,xb2,yb2),其中(xb1,yb1)表示左上角坐标,(xb2,yb2)表示右下角坐标。对于每一个特征图Pn,n=3,4,5,6,7,都有像素点坐标(x,y),其映射到原图的坐标为(sx+s/2,sy+s/2),其中s 表示下采样倍数,s=8,16,32,64,128。为了得到预测框的大小,如图7 所示,利用每一个特征图Pn正样本(除去背景)内的像素点(x,y)与每层特征图下的边界框的左、右、上、下的距离差,分别为l*,r*,t*,b*,其计算公式为
图7 多尺度特征图下预测框示意图
然后限制max(l*,r*,t*,b*)>mn-1或者max(l*,r*,t*,b*)<mn,其中m表示预测框的长度限制,n=3,4,5,6,7。本文中设置m2=0,m3=52,m4=104,m5=208,m6=416,m7=∞,即对应特征图P3、P4、P5、P6、P7的预测框大小分别限制在[0,52],[52,104],[104,208],[208,416],[416,∞]范围内。
与交通目标分类网络分支一样,但互不共享,如图2 所示Head 部分,得到最终预测的h×w×4 交通目标边界回归框,即将h×w 大小的特征图作为一个像素单元组,预测4 个像素单元组的坐标。最后利用交通目标边界框回归损失函数LREG(见2.6.4 节)与真实框坐标进行比较。
2.5.3 交通目标中心点预测
为了更好地让预测的边界框接近真实框,模块增设了目标中心点位置预测分支,其与目标分类分支共享网络参数,最终得到h×w×1 的交通目标预测边界框的像素中心点,即将h×w 大小的特征图作为一个像素单元组。目标中心点的中心性(Center⁃ness)是指正样本内的预测回归的像素点与边界框中心点的远近距离比率centerness*,其计算公式为
利用交通目标中心点损失函数LCNT(见2.6.5节)将centerness*与值1进行比较。
2.6 损失函数
2.6.1 人眼注意力损失函数LATT
采用二分类交叉熵(BCE)损失函数,公式为
式中:G 表示人眼注意力显著图的真实标签;P 表示人眼注意力预测显著图;x 表示样本序号;N 表示样本总数。其中G∈[0,1]4×13,P∈[0,1]4×13,Gx∈G,Px∈P。
2.6.2 可行驶区域损失函数LDA
采用均方差(MSE)损失函数,公式为
式中:G 表示可行驶区域的真实标签;P 表示可行驶区域预测图。其中G∈[0,1]256×832,P∈[0,1]256×832,Gx∈G,Px∈P。
2.6.3 交通目标分类损失函数LCLS
为了解决正负分类样本数不均衡问题,采用Focal Loss损失函数,公式为
式中:G 表示交通目标类别的真实标签;P 表示交通目标类别的预测概率;c 表示交通目标的类别;γ 表示调节参数(取γ=2.0);h×w 表示预测的特征图大小。其中G∈[0,1]h×w,P∈[0,1]h×w,Gx∈G,Px∈P。
2.6.4 交通目标边界框回归损失函数LREG
采用距离交并比(Distance-IoU)损失函数,公式为
式中:G 表示交通目标边界框的真实标签;P 表示交通目标边界预测框坐标;IoU(Gx,Px)表示预测框与真实框的交并比;ρ2(B,Bgt)表示预测框的中心点与真实框的中心点之间欧式距离的平方;cor2表示预测框与真实框并合时最小外界矩形的对角线距离的平方。其中Gx∈G,Px∈P。
2.6.5 交通目标中心点损失函数LCNT
采用均方差(MSE)损失函数,公式为
式中centerness*表示交通目标中心点的中心比率。
2.6.6 模型整体损失函数LTOTAL
式中ω 表示人眼关注度的监督程度,本文中设置为0.3。
最后模型在测试时通过非极大值抑制(NMS)[24]算法将质量比较差的预测框过滤掉,得到干净的交通目标检测图。
3 实验
3.1 数据准备
本实验招募至少有2 年驾驶经验的驾驶员对采集的道路视频进行眼动记录,如图8(a)所示。将驾驶员每帧的眼动点叠加整合为驾驶员注意力显著性像素区域,即20 帧整合一张图片,如图8(b)的黄色区域所示。
利用目标检测标注工具labelImg 对采集的道路图片进行标注,分为car、bus、rider、person 类,并用KITTI 2d object 数据集进行扩充,制作成VOC 数据集格式。利用图像分割工具labelme 对数据集进行车道可行驶区域分割标注。然后做数据增强,即对图片进行调整亮度。图9 为交通场景数据集实例,包括白天、夜晚、强光照、低亮度等道路环境。实验原始数据集共使用9 000 张图片,其中7 480 张来源于KITTI 数据集,520 张为数据增强图片,其余为道路采集图片。将数据集按8∶1∶1 的比例划分为训练集、验证集和测试集,即训练集包括7 200张图片,验证集和测试集各包括900张图片。
图8 驾驶员眼动采集的眼动数据处理
图9 交通场景数据集实例图
为了提高模型整体泛化性,利用1 000 张来源于Tusimple国外高速公路数据集的图片进行再次扩充。将其中800 张进行测试,得到预测正样本目标类别和边界框坐标以及车道可行驶分割像素区域进行标记,制作成伪标签集扩充到原始训练集,其余200张扩充到原始测试集。
3.2 实验过程
实验模型训练平台为Ubuntu18.04,GPU 型号为NVIDIA GeForce GTX 1080Ti,深度学习框架为Pytorch,Batchsize 设为16,采用Adam 优化器,初始学习率设为0.001,并采用余弦退火法调整学习率。图10 为原始数据集训练时的损失曲线图,其中横坐标表示迭代次数,纵坐标表示损失函数大小,可以看出经过80 000次迭代后损失函数趋于平稳。训练结束后对Tusimple 伪标签集进行再训练,设置同上。最后,在NVIDIA Jetson Xavier 车载设备上进行实车道路实验,如图11所示。
图10 训练损失曲线图
图11 实车道路实验平台搭建
3.3 实验结果与分析
3.3.1 评价指标
对于交通目标检测,本文中选用的评价指标为平均类别精度(mAP)、F-值(F-measure)、参数量大小和检测所需时间(ms)。P-R 曲线是指以查全率R和查准率P 作为横、纵坐标的曲线,其围起来的面积即是类别精度AP(average precision),而mAP 是所有类AP 的平均值。其中,查准率precision 和查全率recall的计算公式为
式中:TP 为正确划分为正样本的个数;FP 为错误划分为正样本的个数;FN 为错误划分为负样本的个数。
为了更好地将查全率和查准率两者关系定量地直观表示出来,于是利用F-值(Fmeasure)指标,计算公式为
式中β2=0.3,用来强调查全率更高的重要性。F-值指标数值越大,说明性能越好。
对于可行驶区域检测本文中选用的评价指标为准确率(accuracy)、MAE 值(mean absolute error)和检测所需时间(ms)。准确率公式为
式中:Cdrivingarea表示预测正确的可行驶区域样本数;Sdrivingarea表示可行驶区域样本总数。
MAE 值是指可行驶区域内平均每个像素估计的概率与相应的真实标签之间的绝对误差,其具体公式为
式中:G 表示可行驶区域的真实标签;P 表示可行驶区域的预测概率。其中G∈[0,1]256×832,P∈[0,1]256×832。MAE值越小,说明性能越好。
3.3.2 交通目标检测的模型对比
实验首先在本文中采集的数据集上进行分析,模型各部分对整体mAP 的影响对比,其结果如表1所示。可以看出,利用人眼注意力以及动态注意力算法进行监督,对mAP 的影响最大,增加了3.60%,有效提升了模型的检测精度。
为了进一步验证模型的有效性,本文中在KITTI数据集上进行分析,设置检测的交并比(IoU)为0.5,对car 类别进行检测,并与不同算法进行比较,其结果如表2 所示。可以看出,利用MobileNetV3 模型作为Backbone,使得参数量大幅度减少,仅为YOLOv3模型的15.8%,而检测精度却相当,同时检测时间减少了8.41 ms。通过F-值对比看出,本文中模型在兼顾精度的同时,查全率仅次于二阶段模型Mask R-CNN,很好地保证了模型的鲁棒性。
表1 模型各部分在本文中采集的数据集上对mAP的影响对比
表2 不同算法在KITTI数据集上对车辆类别的检测效果对比
3.3.3 可行驶区域检测的模型对比
实验在Tusimple 数据集上与不同分割算法进行比较分析,其结果如表3 所示,利用MobileNetV3 轻量化模型作为Backbone,大幅提升了检测速度,而精度也仅差于Mask R-CNN,可有效降低多任务计算消耗,保证模型的整体实时性。
表3 不同算法在Tusimple数据集上的检测效果对比
图12 为模型在不同数据集下的部分实验结果图,左边一列是原图,中间一列是人眼注意力显著图,右边一列是检测结果图。在复杂的城市交通场景中,模型引入人眼注意力监督,将更多视觉算力集中在驾驶安全的注意范围,更符合驾驶员视觉意图,同时模型使用了不同道路环境下丰富的数据集,有效提高检测整体的鲁棒性。从Tusimple 数据集实验结果图可以看出,模型基于anchor-free 算法在高速公路检测精度较高,并能在环境开阔的道路场景中识别出较远处目标。
4 结论
为了解决复杂交通场景下单个模型无法鲁棒地同时对可行驶区域和交通目标统一检测以及检测实时性较差的问题,本文中建立类人视觉注意力机制,采用轻量化模型MobileNetV3作为骨架,利用FPN的思想对可行驶区域进行检测,采用动态注意力算法和anchor-free 思想对交通目标进行检测。实验结果表明,本文中提出的模型实现了可行驶区域和多类交通目标的统一检测,实时性和精度较好,同时引入人眼注意力监督,有效提高了检测鲁棒性。本文模型在实车上平均运算速度达到了12帧/s。未来的工作重点是将目标跟踪引入网络中,融合前方目标的行为意图,使交通场景动态目标检测更加稳定,从而为智能安全驾驶提供保障。
图12 模型在不同数据集不同场景下的部分实验结果