基于RetinaNet及优化损失函数的夜间车辆检测方法*

2021-08-31 03:21:14张炳力秦浩然郑杰禹吴正海
汽车工程 2021年8期
关键词:预设损失定位

张炳力,秦浩然,江 尚,郑杰禹,吴正海

(1.合肥工业大学汽车与交通工程学院,合肥230041;2.安徽省智能汽车工程实验室,合肥230009;3.浙江百康光学股份有限公司,嘉兴314113)

前言

在汽车自动驾驶系统和高级辅助驾驶系统(advanced driving assistance system,ADAS)中,车辆检测准确性直接影响行车安全。在夜间环境中,道路及前方车辆的可视性变差,驾驶员在缺乏路面信息、视野变差以及视力疲劳的情况下,极易引发交通事故。同时,多数目标检测算法易受路灯和反光等光源的干扰而产生误判[1],严重影响了自动驾驶系统和ADAS的安全性。因此,研究高精度夜间车辆检测算法尤为重要。

基于传统图像处理的夜间车辆检测算法通常利用夜间环境中较为明显的灯光特征,其主要流程包括提取候选区域、分类和灯光配对3个部分。首先使用阈值分割、连通域分析等方法得到候选区域,然后利用车灯的空间位置、高宽比、形状等信息选取出灯光,最后利用对称性对灯光进行配对,将配对成功的灯光对视为车辆并输出[2-6]。部分研究在分类过程运用Adaboost[7-9]或支持向量机[10]等机器学习算法,但仍需依赖灯光进行检测。上述算法中均忽略了车辆的其他特征,致使其极易受到路灯、反光及其他光源的干扰,算法鲁棒性较差,难以应用于智能驾驶系统。

随着深度学习的发展,基于卷积神经网络的目标检测技术在准确性上比传统方法有极大的提高。以Faster R-CNN为代表的两阶段算法[11-13]专注提高检测精度,但检测速度极低,无法达到实时,YOLO系列算法[14-16]和SSD[17]等单阶段算法则追求实时的检测速度,而检测精度不足,不能直接应用于智能驾驶系统。

RetinaNet[18]对经典特征提取网络ResNet[19]进行改进,引入了图像特征金字塔,将高低分辨率的特征层相融合,提高了网络学习特征的能力,并引入Focal loss解决了正负样本不均衡的问题,使单层检测网络在保证检测速度优势的同时,在检测精度上超过Faster-RCNN、R-FCN等两阶段检测网络。然而,在RetinaNet损失函数的设计上,仍存在以下两个问题:(1)没有充分利用分类与定位之间的联系,造成定位更准的检测框有可能获得较低的分数,从而被NMS过程抑制,导致检测精度下降;(2)定位损失的归一化过程中导致了小目标产生的损失与大目标相比较小,影响了对于远处小目标车辆检测精度。对于问题(1),部分研究通过添加交并比(intersection over union,IoU)预测子网络[20]或使用基于IoU的标签[21]来利用正样本IoU信息提高分类与定位的关联性,但均没有研究如何利用负样本IoU信息。

为解决上述问题,本文中进一步优化了RetinaNet的损失函数:

(1)提出了基于IoU的分类损失函数,将其定义为IoU系数与交叉熵的乘积,建立了分类与定位子网络的相关性,利用正样本IoU提高检测框定位精度,利用负样本IoU加强网络对于难分类负样本的学习;

(2)改进了定位损失函数对高宽进行归一化的方式,降低训练对目标尺度的敏感性。此外,根据应用场景中车辆目标的特点,对网络的特征层和预设框进行了优化设计,同时简化分类和定位子网络,进一步提高了网络的精度和速度。最后,在夜间车辆数据集上进行了试验验证。

1 RetinaNet损失函数分析

RetinaNet的作者提出了Focal loss,其通过两个可调参数修正样本的分类损失,使网络能够充分利用所有正负样本,有效解决了训练过程中的正负样本不均衡问题。同时,根据样本检测的难易程度对其损失进行衰减,促使了网络在训练过程中可以更集中于学习相对困难的样本。其损失函数由分类损失与定位损失两部分组成:

式中:N为正样本个数;p与̂分别为预测框的分类概率与相对于预设框的定位偏移;c和g分别代表目标框的类别标签与位置信息;λ为两类损失的权重比。

对于单个预设框,采用Focal loss后其分类损失可表示为式(2),其中为对应目标框种类的预测概率,γ为可调节的超参数。

单个预设框的定位损失为Smooth L1损失[22],如式(3)所示。包括了中心点损失和高宽损失,并使用预设框的高宽进行了归一化。

1.1 分类与定位关联性分析

由损失函数的定义可知,分类与定位两个子网络的训练通过相互独立的损失函数进行。分类分数仅由分类子网络决定,不考虑其定位精度,而定位精度则由检测框与目标框的IoU表示,致使最终所得分类分数与定位精度IoU相关性较弱。如图1所示,在损失函数的设计上忽略分类分数与定位的联系,则有可能导致与目标框IoU较大的预测框A1的分数低于IoU较小的预测框B2,则在非极大抑制(non maximum suppression,NMS)环节中,A1会被B2所抑制,最终输出定位精度较低的预测框B2。部分研究[20-21]利用正样本的IoU信息,将体现定位精度的IoU信息与预测正样本的类别分数联系起来,保证具有较高定位精度的检测框可得到更高的分类分数,从而被NMS过程选择成为最终的输出框。

图1 分类与定位相互独立可能导致的误检

然而,现有的研究仅考虑了正样本的IoU信息。事实上,训练过程中被划分为负样本的预设框在经过回归后仍可能与目标框产生IoU,但在已有的损失函数中,对所有负样本不加区分地计算其损失,会使网络不能注意到更应该被训练的负样本,即未与目标框产生交并比或交并较小的样本,从而产生误检。对于夜间车辆检测系统来说,成对的路灯由于其外形特点与车灯类似,极易被误检为车辆,如图2中的误检1。同时,对于部分经过回归后与目标框产生一定交并比的检测框,如图2中的误检2,这类检测框被分类为目标而非背景是相对可接受的。已有的算法在训练过程中,没有将误检1和误检2加以区分,而结合IoU为0这一信息,使IoU较小的负样本产生更大的损失,即强调IoU为0的检测框属于背景,能够降低误检率。

图2 车辆检测中的误检

1.2 定位损失函数分析

定位损失分为中心点定位偏差损失与高宽偏差损失,现分别对其进行分析。

(1)对于高宽定位偏差,由于采用对数形式定义,其计算出的损失与预设框高宽无关,以宽度损失为例,可以看出输入到Smooth L1的宽度损失部分仅与预测框和目标框宽度之比有关,如式(7)所示。

(2)对于中心点定位损失,预设框的高宽在其中承担归一化的作用,其高宽的设定对于后续损失的计算影响巨大。以cx定位损失为例,输入到Smooth L1的中心点位置偏差如式(8)所示,可以看出其与预设框宽度成反比。

如图3所示,黑色框代表预设框,绿色框代表目标框,红色框代表预测框。图3(a)和图3(b)中预测框与目标框的相对位置一致,应产生相同的损失,然而,图3(a)中预设框较小而图3(b)中预设框较大,由于式(7)使用预设框的尺寸进行归一化,导致了图3(a)的中心点定位损失大于图3(b),从而促使模型训练比预设框大的目标框,降低了较小目标的检测精度。

图3 大目标与小目标产生损失的不平衡

在实际车辆检测模型构建中,为保证精度与计算速度的平衡,一般采用K均值聚类[15]对预设框大小进行设计,所选取的预设框接近于目标框大小分布的中位数,因此实际样本中必然存在小于预设框的目标框,在夜间车辆检测中该类目标框的占比较高,因此采用式(7)中的定位损失将降低夜间对小目标车辆的检测精度。

2 损失函数优化

2.1 分类损失函数优化

为在训练时将网络的定位与分类联系起来,在不同样本的分类损失函数中增加了与IoU关联的系数,并针对正负样本的特性分别设计其对应系数,如式(10)所示。图4为正样本IoU系数曲线,图5为负样本IoU系数曲线。

图4 正样本IoU系数

图5 负样本IoU系数

对于正样本,引入IoU信息后,与目标框的IoU越大的预测框将产生更大的损失,进而经过训练后,IoU越大的检测框将拥有更高的分类分数,这样使目标的分类与定位联系起来,更重要的是,这样有利于具有较高IoU的检测框经过NMS之后被选为最终的输出框,提高了定位精度。

对于负样本,为方便说明引入IoU系数后误检率降低的原因,设计了如图6所示的示例,图中A、B、C均为3个被误检的负样本,即预设框与目标框IoU<0.5,且分类过程被判定为车辆而非背景。

图6 3种类型的误分类示例

对于预设框A,尽管与目标框的IoU<0.5,但是其经过回归得到的预测框与目标框的IoU较高(为便于理解,假定为0.8),从最终预测结果来看其应该被分类为车辆。然而,由于已将其划分为负样本,分类子网络将更倾向于将其分类为背景,这造成了检测精度的降低,因此通过设置权重(0.04)将该样本的损失降低至几乎为0,使其仍然被分类为车辆。

对于预设框B,其预测框与目标框的IoU为0.4,从预测结果来看其没有准确定位出目标,由于分数较低,在NMS环节其可能被附近预测框抑制,因此对于这类误判的负样本,给予其一定损失权重(0.36),保证其分类分数较低即可。

对于预设框C,其预测框与目标框的IoU为0,该类负样本难以通过回归与目标框相交,且其预测框也无法被其他正确预测框所抑制,可将其理解为训练中的难分类负样本(hard negative example),因此需要对该误检给予尽可能大的惩罚,其IoU系数被设定为1,进而促使模型将其正确分类为背景,降低误检率。

2.2 定位损失函数优化

基于1.2节中的分析,在式(1)的基础上做出调整,以消除预设框高宽对于定位损失的影响,如式(11)所示。

其中

如式(11)所示,对于高宽偏差损失,依旧保持原定位损失的定义,而对于中心点定位损失,引入了综合预设框、目标框以及预测框信息的系数,以横坐标定位为例,修正后的损失模型中输入到Smooth L1损失的偏差可表示为

基于式(13)可知,改进后偏差与预设框信息完全解耦,仅与当前训练过程中的预测框和目标框有关,中心点在横坐标维度上的偏差以预测框和目标框宽度之和进行了归一化,消除了模型对不同大小目标框的敏感度。图3所示的相对位置完全相同而整体尺度不同的两子图的定位损失完全一致,使网络不会在训练过程中倾向于忽视小目标。因此,采用改进后的方法,对于较小目标的检测更有利,对于夜间车辆检测系统来说,可以提高对远处车辆的检测精度。

3 网络训练

3.1 数据集

目前缺乏公开的夜间车辆数据集,为验证本文的方法,在夜间高速公路上采集了数据集。夜间高速公路光照条件较差,照明仅依赖车辆灯光、反光板和少量路灯,多数车辆目标位于前方50~200 m。该场景下收集的图片数据中,车辆像素信息较少且光源特征类似,易产生误检,该数据集可以有效验证算法的可靠性。原图片为车载摄像头采集的连续帧图片,帧率为10 fps,分辨率为1280×720。为验证模型的可靠性,按照每0.5 s取一帧图片的规则得到了5 465张图片,包含11 924个车辆目标,并按4∶1划分训练集和测试集。

3.2 网络架构优化

本文使用RetinaNet作为基础模型,RetinaNet-50在ResNet50上构建图像特征金字塔,使用了金字塔 的P3~P7层,其 中P3、P4、P5由ResNet50的conv3_x、conv4_x、conv5_x通过上采样和横向连接产生,P6是在conv5_x的基础上通过3×3卷积得到的,P7在P6的基础上增加了Relu激活函数和一个3×3卷积得到。为适应夜间车辆检测的应用场景,将图片输入大小设置为640×360。考虑到车载运算单元算力的限制以及智能车辆对感知系统实时性的要求,对RetinaNet模型进行了部分修改。

(1)由于车辆在图片中所占尺寸通常较小,舍弃了特征图中的P6和P7两层,同时,为提高对极远处车辆的检测能力,添加了P2特征层,改进后的网络结构如图7所示。

图7 改进的RetinaNet网络结构示意图

(2)使用K均值方法对训练集中的车辆标签进行聚类[8],并根据聚类结果设置了适合于检测任务的预设框。考虑到速度与精度的平衡,在P2上只设置了一个尺度20,在P3~P5上各设置了两个尺度,其中P3上的尺度为32和58,P4上的尺度为64和90,P5上的尺度为135和190,预设框的高宽比设置为0.7。

(3)RetinaNet的分类子网络和定位子网络均使用了4个3×3的卷积,极大影响了检测速度,将其替换为2个3×3卷积,以提高检测速度。

3.3 网络训练参数配置

使用pytorch1.7实现网络模型,在两个GTX 1080Ti 11GB显卡上进行训练。批尺寸设置为8,所有模型均使用随机梯度下降方法训练了30个周期。初始学习率设置为0.002,动量为0.9,权重衰减为0.000 5,每5个周期学习率降低一半。

4 试验结果分析

4.1 评价指标

采用精度-召回率曲线(precision⁃recall curve,P-R曲线)和COCO评价指标对模型性能进行分析。

对于一般目标,使用P-R曲线(IoU阈值取0.5)、AP以及APIoU=0.50(下文简写为AP50)进行分析。其中,AP为不同IoU阈值下的平均精度,可反映检测框的定位精度。对于小目标,其定义通常有两种:(1)长宽小于原图像长宽1/10的目标;(2)像素面积小于32²的目标。本文采用第2种定义,并使用小目标的P-R曲线(IoU阈值取0.5)和APSmall(像素面积小于32²的目标的AP,下文简写为APS)单独对小目标检测效果进行分析验证。

4.2 检测精度分析

首先验证对于RetinaNet网络结构的优化是否有效,测试结果如表1所示。由于选择了分辨率较高的浅层特征层,有利于对远处目标的检测,相比于原始的RetinaNet,AP提高了6.3%,在此基础上,通过K⁃means聚类的结果设置预设框,使其尺寸和高宽比更接近目标框,更有利于网络定位,使AP进一步提高了5.4%。测试结果表明了选择合适的特征层并依据聚类结果设置预设框对检测精度的提高是显著的。在对子网络进行简化后,精度有所降低,但减少了网络运算的时间,提高了检测速度。

表1 RetinaNet网络结构优化效果

以改进后的RetinaNet为基准,通过5组试验测试对于损失函数的优化方法。损失函数的优化是对训练过程的改进,不影响其检测速度,故只需关注精度指标。测试结果如表2、图8和图9所示。其中,表2中的APS指标和图9反映的是小目标的检测效果。

表2 损失函数优化效果对比

图8 数据集中所有目标的检测效果

图9 数据集中“小目标”的检测效果

对于一般目标,试验2为定位损失优化,提高了1.5%的AP,检测精度总体上升。试验3、试验4和试验5为分类损失优化,其中,仅使用正样本IoU优化,提高了1.1%AP,表明IoU较大的检测框获得较高分数是合理的;仅使用负样本IoU优化,提高了2.0%AP,表明该损失函数正确地利用了负样本的IoU信息,使网络更加合理地学习了负样本;同时应用两种分类损失,提升了2.4%AP。试验6为同时应用定位和分类损失优化,AP提高了3.7%,AP50提高了6.1%,表明本文对于损失函数的优化在总体上有效。

对于小目标,试验2使APS提升了3.1%,表明定位损失的优化增强了网络对于小目标的学习。试验3、试验4和试验5分别使APS提升了1.6%、3.7%和4.4%,表明了分类损失函数的优化对于小目标具有良好的效果。试验6使APS提升了6.3%,表明本文提出的方法极大地改善了小目标的检测效果。

4.3 定位损失函数关键参数优化

为得到效果最优的α和γ,首先,将α固定为1.0,调整γ的大小确定其大致范围,试验结果如表3所示。当γ=1.5时,AP和AP50均达到最大值,表明最佳的γ应在区间[1,2]之内。

表3 γ优化试验结果(α=1)

然后,在[1.0,2.0]的区间内对γ的取值进行更精细的划分。同时,在[0.8,1.2]的区间内以0.1为步长改变权重α,以确定最优的(α,γ)。表4的试验结果表明,当α=1.75、γ=1.1时效果最优。

表4 α和γ联合优化试验结果

5 结论

根据夜间车辆数据集中目标框的特点,优化了RetinaNet的网络结构,通过改进特征层、K均值聚类设置预设框及子网络简化,构建了具有较高性能的网络模型,提高了10.9%AP。在此基础上,对损失函数提出以下改进。

(1)提出了基于IoU系数的分类损失函数,利用负样本IoU信息,根据IoU的大小对其损失进行修正,增强了网络对难分类负样本的学习,利用正样本IoU信息提高了定位精度,使AP提升了2.4%,APS提升了4.4%。

(2)对L1损失中的中心点偏差损失进行改进,消除了训练过程中不同尺度目标归一化不一致的问题,使网络更加关注小目标检测,使AP提升了1.5%,APS提升了3.1%。

同时采用两种损失函数,使AP在网络结构优化的基础上提升了3.7%,同时APS提高了6.3%。表明了其对于夜间车辆检测中尤为关键的小尺度目标的检测具有较好的效果。试验结果证明,所提出的方法大幅改善了对夜间车辆的检测效果,具有较高的应用价值。

猜你喜欢
预设损失定位
少问一句,损失千金
胖胖损失了多少元
《导航定位与授时》征稿简则
Smartrail4.0定位和控制
玉米抽穗前倒伏怎么办?怎么减少损失?
今日农业(2019年15期)2019-01-03 12:11:33
找准定位 砥砺前行
问题是预设与生成间的桥
一般自由碰撞的最大动能损失
青年择业要有准确定位
学习月刊(2015年1期)2015-07-11 01:51:12
论幽默语境中的预设触发语