基于YOLOv3与卡尔曼滤波的行人短时社交冲突预测
2021-06-25于继宇杨明业
于继宇,李 宪,2,杨明业
(1.青岛大学 自动化学院,山东 青岛 266071;2.青岛大学 未来研究院,山东 青岛 266071)
0 引 言
行人的轨迹信息在无人驾驶和无人配送领域是一项重要的参考数据。在行人密集的区域经常发生人流堵塞的现象,继而导致无人驾驶汽车或无人配送机器人长时间在行进路径上停滞,为此所设计的一种基于多目标检测与卡尔曼滤波的行人短时社交冲突预测模型能够提前预测出堵塞区域,有效解决上述问题。
目前对于行人轨迹预测的研究领域中主要存在深度学习类和模型类两种不同的研究方法,前者较为典型的代表有S-LSTM[1]和S-GAN[2],这类方法预测精度高,能在一定程度上描述行人间的交互情况,但网络运行速度慢,时间性能差,同时引入的注意力机制通常以行人间的距离作为生成规避动作的判定条件,缺少对静态目标与并行目标的检测,误判率高。模型类方法主要有隐马尔科夫模型[3]、卡尔曼滤波[4,5]等。隐马尔可夫模型是一种基于概率统计的模型,受目标的运动状态影响大,从而导致其预测的准确性偏低。卡尔曼滤波通过上一帧的轨迹点与当前帧的轨迹点对下一帧的轨迹点进行估计,在预测精度方面,该方法要低于深度学习类方法,但所得数据的时效性高,满足动态目标运动状态变化程度高的场景。同时,上述两种类型的方法都仅仅是针对行人的轨迹点进行预测,无法实现对于行人密集区域内即将出现的社交冲突的预测。
在对行人轨迹进行预测之前需要先对视频内的图像进行行人检测,常用的检测算法有Faster-R-CNN,SSD[6]与YOLO[7]类。Faster-R-CNN针对其上一代算法Fast-R-CNN[8]进行了改进,运行速度更快,但Two-stage类算法都用区域来辨别目标物体而非一次性浏览所有图像,从而导致系统的性能表现取决于前面步骤的表现水平。SSD算法对于每个Feature map cell都使用了多种横纵比的Default boxes,所以,算法对于不同横纵比目标的检测都有效,但对小目标的检测能力要低于Faster-R-CNN与YOLOv3[9];运行速度要远高于Faster-R-CNN,但低于YOLOv3。
综上,针对现存问题设计了一种基于YOLOv3检测与卡尔曼滤波估计的行人间短时社交冲突预测系统,补充了模型类与深度学习类行人轨迹预测算法未对人—人间潜在的冲突状态进行检测的空缺,具有实时性高、误判率低的优点,适用于人流密集情况下的社交冲突预测。
1 行人间短时社交冲突点预测算法
1.1 行人检测器
YOLOv3检测算法属于One-stage类算法,相比Two-stage类算法而言计算量更小,速度更快,在行人检测领域能够取得良好的效果,所以,选择该算法网络所输出的检测框数据作为卡尔曼滤波器的输入。
1.1.1 网络结构
YOLOv3网络结构中将YOLOv2[10]时期的Darknet—19换成了Darknet—53,加深了网络层数,提升了特征提取的效果,同时新增了Resnet中的跨层加和操作,输入信号可以从任意低层直接传播到高层,可以在一定程度上解决网络退化的问题。如图1所示。
图1 YOLOv3网络结构
如图1所示,在YOLOv3的网络结构中只有卷积层,不再设置全连接层,可以通过调节卷积的步长来调整输出特征图的尺寸,输入视频帧的规格设置为416×416。特征图的输出尺寸为
N×N×(m×(4+1+80))
(1)
式中N×N为对输入图片设置的网格数,m为Anchor box的数量,设置为3,每个Anchor box包含4维Bounding box数据tx,ty,tw,th,1维Bounding box的置信度,80维目标种类数。第91层特征图上采样,与第36层特征图做卷积融合,得到相对输入图像8倍下采样的Feature map 3,它的感受野最小,适合检测小尺寸的对象,能够满足所设计的系统中由于距摄像头距行人较远导致的目标面积过小的问题。
1.1.2 输出数据处理
对检测框数据进行解码的过程如图2所示。
图2 行人目标检测框各项数据的计算方式
σ(tx),σ(ty)为回归的检测框中心点对于其所在网格的左上角坐标的偏移量,σ为sigmoid激活函数,pw,ph为先验框的宽、高,通过图中公式计算出实际检测框的宽高bw,bh。
1.2 基于卡尔曼滤波器的行人轨迹预测
1.2.1 数据格式转换
将YOLOv3输出的原数据格式转换为:检测框中心点x坐标cx,y坐标cy,高宽比r,高度bh,并将其各自的变化速度分别设置为vx,vy,vr,vh(初始值为0)。将以上数据作为卡尔曼滤波器状态矩阵的输入
M=[cxcyrbhvxvyvrvh]
(2)
1.2.2 基于卡尔曼滤波器的行人位置估计
卡尔曼滤波器对行人数据的处理过程如下:
1)将上一时刻的状态向量M(t-1)(t≥2)送入系统状态方程中,得到当前时刻下的状态估计向量M(t,t-1),同时计算出此过程所产生的协方差矩阵F(t,t-1),有
M(t,t-1)=T(t)M(t-1)
(3)
F(t,t-1)=T(t)F(t-1)TT(t)
(4)
式中T(t)为8×8维的状态转移矩阵,用来反映状态向量的变化趋势,F(t-1)为初始状态下的协方差矩阵
2)计算当前时刻下的状态估计向量M(t,t-1)的观向量Z(t,t-1)及协方差矩阵F(t,t-1)的观测矩阵S(t,t-1),有
Z(t,t-1)=G(t)M(t,t-1)
(5)
S(t,t-1)=G(t)F(t,t-1)GT(t)
(6)
式中G(t)为4×8维的观测矩阵,用以从状态向量与协方差矩阵中提取观测值。
3)计算当前时刻下的卡尔曼滤波增益K(t,t-1)为
K(t,t-1)=F(t,t-1)GT(t)S-1(t,t-1)
(7)
4)根据当前时刻下的观测向量Z(t)来校正M(t,t-1),并得到当前时刻下的最优估计向量M(t),有
C(t)=Z(t)-Z(t,t-1)
(8)
M(t)=M(t,t-1)+K(t,t-1)C(t)
(9)
5)通过状态转移矩阵T(t)与当前时刻下的最优估计向量M(t)计算出下一时刻的预测向量M(t+1,t)为
M(t+1,t)=T(t)M(t)
(10)
在上述步骤(1)~步骤(5)的算法执行过程中,将第5步迭代n次可得到由当前帧与上一帧的行人轨迹数据所预测的第n帧的行人轨迹数据,取n为25。
1.3 冲突点判定模型
1.3.1 行人轨迹直线方程
由式(3)~式(9)可知,当计算出状态向量M(t)时,其后4维变量vx,vy,vr,vh分别被赋予了前4维变量的变化速度:即在1帧内cx,cy,r,bh的数值变化量,所以在对式(10)进行迭代时得到的轨迹坐标点cxi,cyi(i∈[0~24])呈线性关系,故取当前帧的轨迹坐标与第n帧的轨迹坐标可求得单个行人的轨迹直线方程
y=kx+b
(11)
k=(cy(24)-cy(0))/(cx(24)-cx(0))
(12)
b=cy(0)-kcx(0)
(13)
1.3.2 静态检测
为优化系统在判定行人轨迹冲突点时的运算量,先排除视频帧内静止的行人目标。当行人目标的移动速度过小时,会使得状态向量M(t)中的vx,vy,vr,vh的数值过低,从而导致迭代n次所得的行人轨迹终点与起始点间的长度远小于正常移动速度下的轨迹长度,故设行人轨迹长度d与其当前帧下的状态关系为
(14)
即状态位置0时判定静止,dmin设置为Bounding box对角线长度的1/8。静态检测实际效果如图3。
图3 静态检测实际效果
1.3.3 用于各类动态检测的数据
当视频帧内检测到的行人个数n大于等于2时,对其数据进行两两排列组合,设排列组合的结果所构成的集合为H,∀h∈H,在每组组合中h内,设行人1的起始点坐标为(ax1,ay1),预测终点坐标为(bx1,by1)
h=hahb={[cxacyarahavxavyavravha]
[cxbcybrbhbvxbvybvrbvhb]}
(15)
行人2的起始点坐标为(ax2,ay2),预测终点坐标为(bx2,by2);设直线1的斜率为k1,截距为b1,直线2的斜率为k2,截距为b2,则每个组合中两直线的交点(x1,y1)为
(16)
交点到行人1起始点的距离d1为
(17)
依次可求得交点到行人1终点的距离d2;交点到行人2起始点的距离d3;交点到行人2终点的距离d4;以及行人1起始点到行人2起始点的距离d5;行人1终点到行人2终点的距离d6;行人1的轨迹长度d7;行人2的轨迹长度d8,对应关系如图4所示。
图4 行人轨迹数据的对应位置
1.3.4 并行检测
为进一步优化系统的运算量,在冲突点判定前先进行并行状态检测,具体过程如下:对任一组合h中行人1起始点到行人2起始点的距离d5取3帧内的数据,设为U
U={b5(n-2)b5(n-1)b5(n)},n≥3
(18)
3帧内行人间距离的变化幅度用方差来描述
(19)
表1 出现并行状态时U内行人间距离的方差
1.3.5 冲突状态检测
当每个组合内的2个行人都不处于静止状态并且互相不构成并行状态时,对其进行冲突状态检测。为排除行人轨迹直线延长线的干扰,在进行冲突状态检测前先设置判定的前提条件
(20)
图5 无效交点
将冲突状态的检测分为以下3种情况进行处理:
1)每组h内两条轨迹直线的交点同时在行人1与行人2的轨迹线段内,即d1 L1/v1=L2/v2 (21) 式中L1与L2为行人轨迹线段的长度,V1与V2为行人当前时刻下的行进速度。 故对2条轨迹线段按相同的比例s取对应的长度时,行人1与行人2行进到所设长度的2个节点处所需的时间tx相同 tx=sL1/v1=sL2/v2 (22) 图6 情况(1)原理图与实际效果 综上,若选取交点到起始点间的距离占轨迹线段长度的比例较大的行人轨迹作为参考系,会导致所求的tx时刻下的轨迹点的位置超过交点Pc,到达点B,从而错过冲突点产生前的场景,无法进行判定阈值的设定等后续操作。 当两条轨迹直线的交点到各自起始点间的距离占各自轨迹线段长度的比例不同时 (23) 式中Lx为tx时刻下每组内行人1与行人2之间的距离。 行人相遇时的几种常见情况如图7所示,因为dx3>dx1>dx2,所以,dx3的判定宽容度最高,故将其作为轨迹冲突点的判定阈值,即当Lx≤dx3时将交点判定为社交冲突点。 图7 行人相遇时的几种常见情形 当两条轨迹直线的交点到各自起始点间的距离占各自轨迹线段长度的比例相同时,易得此时交点为社交冲突点。 2)每组内两条轨迹直线的交点在行人1或行人2的轨迹线段内,此时各项数据对应关系的限制条件为 (24) 同样选取交点到起始点间的距离占轨迹线段长度的比例较小的行人轨迹作为参考系,如图8(a)所示。tx时刻下每组内行人1与行人2之间距离Lx的求解方法与情况(1)相同,当Lx≤dx3时判定为冲突点。 图8 情况(2)的原理图与实际效果 3)每组内两条轨迹直线的交点不在行人1与行人2的轨迹线段内时,各项数据对应关系的限制条件为 (25) 前两个限制条件是为了排除图9(a)中点Pc2所示的无效交点(交点与轨迹终点的距离大于轨迹线段的长度,预测可信度低)。 图9 情况(3)的原理图实际效果 实验环境为Windows10系统,NVIDIA GTX 965M GPU,Intel Core i7—6700HQ CPU,编程语言为Python3.7.4,深度学习框架为Tensorflow-gpu1.14.0,运行环境为CUDA10.0。为验证所设计系统的预测和判定效果,选取校内4处人流量密集的场所作为实验场地,拍摄器材为Nikon Z6,视频的像素规格为4 096×2 160,帧率为每秒30帧。此次实验选取并行状态与冲突状态作为待检测状态,其中并行状态与冲突状态判定成功的标准分别为: 1)对视频素材内4个不同场景中出现的当前帧下起始点间距离较近的组合h进行观测,若未来25帧内未出现轨迹交点,则认为并行状态判定成功。 2)对视频素材内4个不同场景中出现交点的组合h进行观测,如果在出现交点后,组合内任意一个行人出现静止状态或对其预测的轨迹线段的长度明显缩短,又或轨迹直线与x坐标轴夹角的变化幅度大于20°,则认为出现了规避动作;此后出现规避动作的行人由静止状态或减速状态恢复到正常行进状态,或重新调整了自己的行进路线,则认为冲突点判定成功。 图10 并行状态与冲突状态判定成功的过程 4个场景下对并行状态与冲突状态判定误差的检测结果如表2所示。 表2 不同场景下对于并行状态与冲突状态判定的误差 由表2可以看出:系统对于人流密集区域内行人间冲突状态与并行状态的误判率均低于10 %,检测的成功率较高,能够实现大多数情况下行人间社交冲突点的预测与判定。其中造成误判的原因主要包括:拍摄时的俯角不够导致行人的轨迹直线方程在错误的平面产生交点;拍摄时镜头的抖动导致当前时刻下行人的位置产生偏移,进而造成轨迹直线的斜率发生瞬时变化,产生了错误交点。 卡尔曼滤波、S-LSTM,S-GAN对于行人轨迹的平均预测时间和三种算法分别采用YOLOv3作为行人检测器时的实时FPS如表3所示,此测试环节所用的测试集为公开数据集中UCY中的Univ部分,预测步长设置为8步,平均预测时间是对单组行人数据预测所花费的时间。 表3 不同预测算法的时间性能比较 由表3可得:卡尔曼滤波算法在对行人轨迹进行预测时的耗时明显小于S-LSTM与S-GAN,在与YOLOv3算法相结合时的实时FPS高于S-LSTM(+YOLOv3)与S-GAN(+YOLOv3)。 不同行人数对应的冲突点判定环节的平均耗时、卡尔曼滤波的平均预测时间以及与这两个环节YOLOv3结合后的整体FPS表现如表4所示,此处所用的测试集为2.1节中所提的4种视频素材。 表4 不同行人数所对应的算法时间性能 由表4可得:当视频帧内行人的数量不断增加时,行人间排列组合的运算量随之增加,进而导致冲突点判定环节的时间损耗逐渐增大;同理,卡尔曼滤波在行人数量增加时的预测轮次随之增加,从而导致平均预测时间变长。 但对比表3中不同算法对单组行人数据的预测时间可知,由于所提方法中冲突点判定环节与卡尔曼滤波预测环节相结合后的时间损耗基数始终小于深度学习类算法的时间损耗基数,所以,在行人数量不断增加的过程中,其在时间性能上的优势会不断扩大,即该方法相比于S-LSTM与S-GAN而言,更适用于人流密集情况下的短时社交冲突预测。 针对行人密集区域内经常发生的人流堵塞现象设计了一种行人间短时社交冲突预测算法,其中采用YOLOv3网络作为行人检测器,选择卡尔曼滤波来估计行人的轨迹数据。在冲突点判定环节中分3种情况分析了目标预测轨迹区间内的时空特性,能够实现静态、并行、冲突3种短时社交状态检测。实验结果表明:所提出的方法对于行人各种状态的判定精度较高,相比S-LSTM与S-GAN两种典型深度学习类算法而言,优化了运算成本,实际运行时的FPS有明显提升,并降低了预测行人产生规避动作时的误判率。在无人驾驶领域,所设计的判定模型可以准确地预测出行人间即将出现的短时社交冲突,为无人驾驶汽车与无人配送机器人的行进路径规划提供依据。同时,对于拍摄角度的影响而导致的行人轨迹在错误平面产生交点的问题将在后续工作中进行解决,以便进一步降低模型的误判率。2 实验结果与分析
2.1 判定误差分析
2.2 时间性能分析
3 结 论