引言
近年来,随着经济的快速发展,中国城市化发展迅速,城市车辆增多,交通网络也日益复杂。但交通的发展在给人们生活和工作带来便捷的同时,车多路繁的状况也给出行安全带来了隐患,更是给交通管理和监控提出了难题。在这一背景下,智能交通成为了解决问题的方向之一。
交通监控系统是智能交通系统的重要组成部分,包含道路监控,巡查,检测等功能,可以快速采集有效道路交通信息,进行自动的分析检测统计。现有的交通监控还是主要依赖于部署在各个路段的定点摄像头,但其本身的固有特点比如视角固定且狭隘,图像清晰度低,存在众多监控死角等,使得定点监控摄像头很难应对交通事故、堵塞等突发状况,难以获得第一手资料信息。因此,我们需要新的技术与方法应用到智能交通中。
而随着无人机技术和成像处理技术的进步,无人机为交通监控系统提供了一个新的动态的空中平台,并拥有越来越高的应用价值,这可以从一系列的基于无人机的交通运输研究就可以看出来。相比较于传统的机载遥感和卫星遥感技术,无人机遥感作为一种新型的对地观测手段,操作简便,灵活性高,不易受到场地限制。同时,无人机体积小,便于携带以及经济实惠,这使得无人机已经能够广泛的应用于生活的方方面面,包括智能监控,电网维护,资源勘探,交通监测等多个军用和民用领域。无人机技术的一项重要应用就是加强提升交通状况和紧急事故监视系统,这些系统已经成为智能交通系统基础设施的支柱。因为无人机的高度便携性和可操作性,无人机能够在一些人迹罕至的地方或者交通堵塞的情况下收集交通数据,并查探潜在的交通相关的问题,这是传统的定点摄像头或是交通巡逻车难以完成的。
在基于无人机的交通状况和紧急事故的监控中,车辆检测是一项必要且具有挑战性的任务。一方面,这是由车辆固有的特点所引起的。车辆的种类繁杂,外形多变,具有复杂的细节变化,如不同的颜色,大小,根据不同的形状又分为轿车,卡车等等。另一方面,是由外在的拍摄条件变化所引起:
(1)由于无人机一般位于百米以上的空中进行拍摄,导致车辆目标过小,细节模糊不清。
(2)场景复杂巨大,难免会有遮挡物和相似的非车辆目标。
(3)图像的成像条件复杂,如光照导致的图像亮度、对比度的影响,摄像设备的焦距、成像距离的影响等。
本文实验一方面将航拍数据集DLR 3K[1]切割转换为类似于DOTA格式数据集;另一方面基于BBAVectors斜框检测算法进行改进,对车头中点进行预测,实现了航拍车辆目标的正斜框检测,并在该基础上预测车辆的运动方向。
研究背景
现有的旋转目标检测算法大部分是基于anchor的,而基于anchor的二阶段旋转框检测算法有一些缺点:
(1)anchor的设计非常的复杂,要去设计不同的比例,不同的尺寸;
(2)正负样本会非常的不均衡,这会导致训练很慢,而且无法达到最优的效果;
(3)第二个阶段的crop和regress策略在计算量上也比较大。
在基于anchor的方法之外,最近anchor free的物体检测方法得到了较大的发展。CenterNet[2]的方法是先检测物体的中心点,然后直接回归出物体的宽和高。
在CenterNet的基础上再回归一个旋转角度θ是实现有向的物体检测的最简单方法。但是,对于任意的旋转物体,宽和高实际上依赖于不同的旋转坐标系统,所以直接回归会有些难度。
BBAVectors[3]扩展了CenterNet的方法,将其应用到有方向物体的检测中,但并不是直接回归物体的宽,高和旋转角,而是学习一个box boundary-aware vectors(BBAVectors),如图1,然后得到物体的有方向的包围框(OBB)。
图1 box boundary-aware vectors
BBAVectors网络结构
网络结构如图2,是一个U型的结构,采用了ResNet101的Conv1-5作为主干,然后进行多次上采样,得到一个原始图像14 大小的特征图。在上采样的过程中,会有下采样时候的层的跳跃连接拼接到一起。我们使用YOLOX的特征提取部分来替换原来的BBAVectors的特征提取网络。
图2 BBAVectors网络结构
BBAVectors的Heatmap预测
Heatmap用来定位检测物体的中心点。热图有k个通道,分别对应了不同类别的物体。热图的每个像素点的值表示物体的置信度。
Groundtruth 假设c=(cx,cy)是旋转框的中心点,本文以c为中心,构建一个2D的高斯分布来作为热图的groundtruth,其中,高斯分布的方差是和物体的尺寸相关的一个自适应的值。
在训练热图的时候,只有中心点c是正样本,其他的点,包括高斯分布范围中的点都是负样本。由于这个正负样本的极度不平衡,所以直接去学习中心点是比较困难的,所以,BBAVectors对高斯分布以内的点的损失做了一定程度的衰减,使用了一个focal loss的变体来训练这个热图。
BBAVectors的偏移预测
在预测阶段,从热图中提取峰值点作为物体的中心点,这个中心点c是一个整数,但是,原始图经过下采样之后,得到的中心点的坐标是一个浮点数,为了弥补这个量化的误差,还需要再预测一个偏移量o:
这个偏移通过smooth L1损失进行优化
smooth L1损失函数可以表示为
BBAVectors的检测框预测
为了得到带方向的包围框,一个很自然的想法就是回归出宽,高,和角度θ,本文把这个base line称为Center+wh+θ,如图3。这个方法有几个缺点:
(1)小的角度的变化对于损失来说可能是微不足道的,但是对于IOU却会产生较大的影;
(2)OBB中的w,h是在各自独立的旋转坐标系统中定义的,角度θ是相对于y轴的,这样,网络很难去联合训练所有的物体。
BBAVectors提出了一种描述OBB的方法,回归4个向量,t,r,b,l;这4个向量分布在笛卡尔坐标系的4个象限中,所有的旋转物体都共用一个坐标系,这样可以高效的利用共同的信息,并提升模型的泛化能力。BBAVectors设计了4个向量,而不是2个,为的是当某些局部特征不是很明确的时候可以得到更多的交互信息。
此时,包围框的参数定义为:b = [t,r,b,l,w,h],其中w,h是外接水平包围框的宽和高,如图2所示。这样,每个包围框就有2x4+2=10个参数,并且使用L1 loss来回归box的参数:
BBAVectors的检测框类型预测
我们发现,当物体框和xy轴对齐的时候,可能是象限的边界问题,这种类型的向量的差别很难区分,导致检测失败。我们把这个问题叫做corner case,我们把OBBs分为两类,一类是水平的,一类是旋转的,当OBBs是水平的,通过回归w和h就得到准确的包围框。另外,外接矩形的参数也可以更好地描述OBB。
我们定义了一个旋转特征图α:
IOU是有向检测框(OBB)与水平检测框(HBB)的交并比。检测框的类型通过交叉熵进行训练:
图3 基于旋转角度θ的旋转检测框回归
算法原理
航拍车辆定向检测主要基于BBAVectors进行改进。由于用于航拍车辆定向检测的DLR 3K车辆数据集只包含20张5616×3744的航拍图像,远远不足以满足BBAVectors的训练需求;此外,BBAVectors训练默认输入为DOTA[4]数据集格式,因此需要对DLR 3K数据集进行拓展并进行格式转换。
数据集处理
BBAVectors训练所使用的DLR 3K数据集具有图像数量少、图像尺寸较大、图像内类别个数不均以及标注数量较小的特点,数据中各类别标注数量如表1。
表1 DLR 3K数据集统计
Category | Number |
Truck | 54 |
Pkw | 3419 |
Bus | 12 |
Cam | 5 |
Truck trail | 7 |
Pkw trail | 2 |
Van trail | 2 |
为了解决以上问题,我们以500像素为步长,将数据集图像切割为1000×1000的小图,并将得到的其中80%图像用于训练,20%图像用于测试。训练集及测试集图像数量如表2所示。
表2 DLR 3K数据集切割分配
训练集 | 616张 |
测试集 | 154张 |
通过坐标变换将DLR数据集格式转换为类DOTA标注格式
其中Xi,i=1,2,3,4 目标在DOTA格式下旋转框各点坐标,旋转框坐标点总是从目标前进方向的左上角出发沿顺时针方向依次列举;center、size、angle表示DLA数据集格式下旋转框中心位置、旋转框大小及旋转框旋转角度,即车辆前进方向沿x轴逆时针旋转的角度;T为变换矩阵。
航拍车辆运动方向预测
对车辆运动方向的预测,我们尝试了两种方式:引入新的网络分支对车辆方向的角度进行直接预测以及对车头中点进行预测。
基于车辆角度的车辆运动方向预测
车辆前进方向总是可以用一个绕x轴旋转α度的单位向量表示。由于α以360度为周期,因此两个相同前进方向可以由无穷多个相距360k度的α值表示,如果此时直接用预测的α与真实的α的距离作为损失,可能会导致训练过程中即使车辆前进方向的预测值与真值是一致的,仍会导致较大的损失。
图4 基于车辆角度的车向预测
为了避免以上问题,我们用绕x轴旋转α度的单位向量来替代α求损失函数。设预测α为αp,,真实的α为αg ,则损失函数为
实际训练时发现,该损失函数并不能很好地使网络收敛,我们对该损失函数进行了分析,
该损失函数的关于αp 的梯度在预测值接近真值时接近0,使得网络具有严重的梯度消失问题。
基于车头中点的车辆运动方向预测
为了解决3.2.1中的梯度消失问题,我们对车头中点位置进行预测替代对车头方向角度预测,如图4。
图5 基于车头中点的车辆运动方向预测
车头中点的真值通过车辆旋转框在车头方向的左上角及右上角的坐标求均值求得,损失函数为
作车辆检测框中点与车头中点的连线,该连线指向车辆运动方向。
基于YOLOX的网络组件替换
BBAVectors旋转目标检测网络采用Resnet+UNet结构对图像特征进行提取。提相较于较早提出的Resnet与UNet,最新提出的YOLOX[5]网络的特征提取能力更强。我们通过将BBAVectors中的Resnet+UNet结构用YOLOX的backbone+neck进行替换以测试检测网络性能是否得以提升。
图5 YOLOX替代后BBAVectors结构
实验结果
实现细节
我们使用RTX A5000对网络进行训练,并图像缩放为864×864放入网络训练;训练batch大小为8,使用Adam进行网络优化,学习率使用指数衰减进行更新,初始学习率为1.25e-4, 衰减系数为0.97;训练时对图像进行随机裁剪与随机旋转进行数据增强以提高网络鲁棒性;由于数据集其他类别数据较少,因此主要针对Pkw类进行测试。
与其它检测方法对比
我们与去年航拍车辆定向检测方法进行对比,如表3。
表3
方法 | mAP50 |
去年组1-二分图 | 79.5 |
去年组2-角度预测 | 88.11 |
去年组3-角度向量 | 80.15 |
Ours | 88.89 |
我们提出的方法的mAP50指标达到了88.89%,相对于去年三个组提升了0.8%-10%,在我们的设备上,当输入图片大小为1000×1000时,速度可以达到19fps,车头朝向预测准确率在90%以上,可以看出提出的算法具有一定的优越性。部分检测结果可视化如图6。
图6 检测结果可视化
消融实验
我们对比了3.2节中航拍车辆方向预测的两种方法,如表4。
表4
方法 | 方向预测准确率(%) |
YOLOX+BBAVector+角度预测 | 20.38 |
YOLOX+BBAVector+车头中点预测 | 91.25 |
其中,当预测的车辆方向与真实的车辆方向夹角小于10度时认为该车辆方向预测正确。
可以看出通过直接预测车辆方向角度导致的梯度消失问题使得网络欠拟合,而通过预测车头中点能够很好地实现车辆方向预测。部分车辆方向检测结果可视化如图7。
图7 车辆方向检测结果
此外,我们通过对比3.3节中使用YOLOX的backbone与neck替换BBAVectors的backbone与neck前后网络检测结果,如表5。
表5
方法 | mAP50 |
Vanilla BBAVectors | 87.56 |
YOLOX+BBAVectors | 88.89 |
使用YOLOX的backbone与neck替换BBAVectors的backbone与neck使得网络mAP50提高了1.33%,可见更强的特征提取网络能够提升网络检测效果。
结论
本文提出的方法很好的解决了本实验要求的对旋转车辆的旋转框检测和车辆前进方向的检测;本文提出的方法相比于去年提出了车头中点检测代替角度直接检测的创新方法,检测精度等超越去年方法,并创新性的对backbone进行替换,实现了较好的性能。
由于不同种类的车辆实例数量差异巨大,本文只实现了单类目标检测,后续可以尝试进行多类目标检测。本算法已同步到:https://github.com/liuyuan000/BBAV_work