葛 雯,姜添元
(沈阳航空航天大学电子与信息工程学院,辽宁 沈阳 110136)
视频监控一直是计算机视觉邻域的热门应用,监控场景中的目标识别与跟踪更是研究热点,其不仅用于日常生活中的交通监控、防盗监控等,甚至在安防以及军事邻域都发挥着至关重要的作用。
现阶段监控场景中常用的目标检测方法为帧间差分法,由于其实现简单得到了最为广泛地应用,但是如果视频中的目标移动过快或过慢,就会造成运动物体内部灰度值相近,物体边缘轮廓过粗,也就是俗称的“空洞”和“双影”现象,对检测造成不良影响。Minoh M 和 Kameda Y提出了基于帧差分法改进的三帧差分法提取目标,轮廓清晰但效果仍不尽人意。JosephRedmon和Ross Girshick提出的YOLO算法,是将目标检测转换成一个回归问题,使检测速度得到了极大的提升,但精度不高。目标跟踪进展要落后于目标检测,其中基于目标检测跟踪的方法[1],这类方法场景适应性强,鲁棒性高,所以发展迅速并逐渐普及,其中就以Sort算法[2-5]为代表的,但其对物体遮挡几乎没有处理,在有遮挡的情况下准确度非常低。而Deepsort算法[6]利用YOLO算法选取窗口,卡尔曼滤波进行预测,结合匈牙利算法匹配出跟踪目标的方法精度高且鲁棒性强,但在对运动目标进行预测以及匹配时工作量很大,有很多无关要素拖慢运行速度。
针对上述这些传统算法存在的问题,本文从图像预处理和图像分割技术方面进行改善,通过对图像预处理和图像分割中的选择性搜索来消除干扰,提高检测跟踪的准确率。然而,因为使用帧间差分法对视频帧进行预处理,增加了流程复杂度,会相应地增加运行时间。而利用K邻域搜索进行筛选目标框,消除了很多无关干扰项,减少了预测和匹配工作量,进而缩短时间。
在对目标进行检测时,传统CNN算法使用滑动窗口思想对候选框内的目标进行识别,在准确率和定位精度上较有优势,但是实时性的视频流中,检测的速度才是重中之重,其中YOLO算法将目标的检测问题处理为回归问题,利用单个神经网络直接预测目标边界和类别概率,实现端到端的物品检测,节省了大量提取边框的时间,使得模型的运行速度快,可以直接学习图像的全局信息,能更好地应用于视频实时检测[7]。但其准确性无法和最先进的检测系统相比,难以精确检测某些对象,包括监控视频中的运动目标。其对特征提取卷积网络图如图1,得到bounding boxes坐标,包括检测出的目标类别以及置信度,然后通过NMS算法[11]筛选出最优boxes。
图1 卷积网络图
本文研究的是视频图像,针对视频帧中的运动目标检测,因为相邻两帧中运动目标的位置差别不大,对应在图像上来说就是两帧只有运动的目标的像素点会发生变化。利用帧间差分法[8]将视频两帧图像做差分,将不同像素点相减,通过减去图像中灰度信息不变或者变动幅度小于某个阈值的部分,求出灰度信息变化较大的部分,从而就能检测出视频中的运动目标。
图2 二帧差分法流程图
这里用到的是二帧差分法,其流程图如图2。将视频中的第n帧和第n-1帧图像记为fn和fn-1,两帧对应像素点的灰度值记为fn(x,y)和fn-1(x,y),将两帧图像对应像素点的灰度值进行相减,并取其绝对值,得到差分图像Dn
Dn(x,y)=|fn(x,y)-fn-1(x,y)|
(1)
设定阈值T,逐个对像素点进行二值化处理,得到二值化图像Rn。其中,灰度值为255的点即为前景点,灰度值为0的点即为背景点;对图像Rn进行连通性分析,最终可得到含有完整运动目标的图像Rn
(2)
但二帧差分仅选取一段视频中的相邻两帧进行处理,在运行实验中发现对运动目标的检测效果很差,鲁棒性不足,所以为了得到更好的结果图,为了避免光线等因素引起的噪声扰乱图像的可观测信息,对图像造成亮、暗点干扰,从而降低了图像质量,影响图像特征提取、图像识别等后继工作的进行。所以这里先对图像进行预处理,第一步是将图像灰度化,然后为对灰度化处理后的图像进行高斯模糊,对相邻两视频帧进行差分时,忽略掉与上一帧较小的差别,最后得到差分处理图。
由于监控场景中的目标检测只需检测出运动目标,若使用YOLO算法则需将视频帧图像分成S×S个网格,每个单元格还需预测B个边界框,进而检测出目标,这样难免做了很多无用功,而若先对视频帧进行预处理,即二帧差分,得到运动目标的候选框,利用YOLO算法中的卷积神经网络[9-11]进行预测筛选,保证每个边界框都含有目标,也就是说Pr(object)=1,Pr(object)是这个边界框含有目标的可能性大小,而边界框的准确度可以用预测框与实际框的IOU来表示,记为IOU,则置信度可以定义为Pr(object)。对于每个单元给出C个类别概率值(各个边界框置信度下的条件概率),记为Pr(classi丨object),这样排除了该帧静止目标的干扰,只检测运动目标,从而大大地提高了运行速度和精度,效果如图3。
图3 改进YOLO算法效果图
基于检测的跟踪主要涉及的问题就是检测之后的预测、匹配、更新问题,简单说就是要准确地将上一帧中的目标匹配定位到下一帧中,若使用一个8维空间展示某时刻的轨迹状态,分别记录目标的中心点坐标、纵横比、图片高度以及这四个信息对应的运动速度。通过卡尔曼滤波对目标预测,将得到的预测目标框与当前的目标框计算马氏距离,当其值小于规定的阈值时,则说明预测到的目标框是合理准确的,从而完成对目标的跟踪。其具体的标准公式如下
(3)
其中d(1)(i,j)表示第j个检测目标和第i条轨迹之间的运动匹配度,其中Si是轨迹使用卡尔曼滤波器后预测出当前时刻观测空间的协方差矩阵,yi表示轨迹在当前时刻的预测观测量,di则为第j个检测目标的位置信息。
仅使用马氏距离来作为预测标准会导致关联不准确即ID不停变化,所以使用预测目标和轨迹中含有的预测目标的特征向量之间的最小余弦值作为表观匹配程度衡量预测准确度。其表达式如下
(4)
c(i,j)=λd(1)(i,j)+(1-λ)d(2)(i,j)
(5)
最后引入匈牙利算法检测当前帧的某个目标,是否与前一帧的某个目标相同。为了避免一条轨迹被遮挡了一段时间或长时间丢帧后,卡尔曼滤波器预测会导致概率弥散的问题,采用级联匹配保证预测的目标就是被遮挡前或长时间丢帧前的目标。Deepsort算法采用的就是上述的思想,在得到检测目标后准确地定位到下一帧中该目标的位置信息。
因跟踪目标在相邻的两视频帧中的位移不会过大,而多目标视频跟踪过程中使用文中检测方法会有很多的运动目标,不同的运动目标在使用Deepsort算法进行跟踪时产生的不同的目标框以及预测的目标框在匹配时难免会互相干扰,增加了很多处理时间。所以在使用YOLO算法选取运动目标的目标框时引入K邻域搜索,在上一帧检测出的目标框为基础框,后一帧搜索区域在上一帧基础框周围,并满足搜索区域中心点与基础框中心点位置一致,同时保证宽高比(记为K)一致。示意图如图4,红色笑脸为目标物体,绿色框为前一帧所得目标框,红色框为当前帧K邻域搜索矩阵框,其中K=2。
图4 K邻域搜索示意图
利用此方法在卡尔曼滤波预测出预测目标框时,仅将出现在K邻域内的预测目标框与上一帧的目标框进行匹配,通过匈牙利算法验证是否正确,若不正确,则增加K的值,扩大K邻域搜索范围,直到匹配成功。这有效减少了工作量,筛选去除在K邻域之外的无用目标框,并增加运动目标的检出率,提高跟踪效果。
同时,为了保证跟踪目标的准确性,在算法中引入“轨迹展示”,即将每个跟踪目标在帧与帧之间的运动轨迹展示出来,这样就可以保证跟踪目标不会发生跳脱与丢失,保证跟踪准确性。
在实际监控场景中进行运动目标的检测与跟踪时,输入监控视频,通过融合帧间差分法的YOLO算法检测出每一帧中的运动目标,并提取出目标框后,引入K邻域搜索,对运动目标框加以限制,结合卡尔曼滤波进行预测下一帧某一运动目标的目标框,然后利用匈牙利算法将两者完成匹配,从而达到跟踪目标的目的。
为了验证真实监控场景下算法的可行性,这里使用的视频图像来源于某街道,以多目标检测与跟踪验证这里算法的可行性。将二帧差分法、YOLO算法和融合帧间差分法的YOLO算法的数据集对目标的检测进行对比,同样都选取视频1第23帧进行处理,勘验效果如图5。从对比处理图可以看出:二帧差分虽说可以检测出运动目标,但对同一目标精度不高,YOLO算法会检测出当前帧的所有物体,误检过多,无法很好完成检测目的,而改进算法很好地提取出了当前帧的运动目标以及其识别准确率。
图5 不同方法对比图
通过表1(对视频进行目标检测的速度及mAP对比表)并结合图5对比可以看得出,处理相同视频帧时,二帧差分可以检测出运动目标,但是由于其自身的缺点——空洞和双影现象导致检测效果不尽人意,普通YOLO算法虽速度够快,但准确率较低,而且不能检测出运动的目标,而这里使用的融合帧间差分法的YOLO算法虽然速度有些许降低,但其不仅能检测出当前帧的运动目标,且准确率较高,mAP增长了1.24倍。
表1 实验结果
通过表1(对视频进行目标检测的速度及mAP对比表)并结合图5对比可以看得出,处理相同视频帧时,二帧差分可以检测出运动目标,但是由于其自身的缺点——空洞和双影现象导致检测效果不尽人意,普通YOLO算法虽速度够快,但准确率较低,而且不能检测出运动的目标,而这里使用的融合帧间差分法的YOLO算法虽然速度有些许降低,但其不仅能检测出当前帧的运动目标,且准确率较高,mAP增长了1.24倍。
同样为了验证跟踪算法的可行性,这里使用街道或公路视频对几种跟踪算法进行对比。这里分别使用经典Sort算法、Deepsort算法和这里改进的Deepsort算法对视频处理,进行比对以勘验效果。同取视频2的33帧与35帧、取视频3的12帧与15帧进行处理,效果如图6。
图6 不同跟踪方法对比图
很明显的可以看到,Sort算法因其自身的缺点跟踪效果并不好,Deepsort算法和改进的Deepsort算法有较好的检出率,改进的Deepsort算法有更好地准确率,并将视频中的跟踪目标轨迹标注了出来。然后使用中心点距离误差、平均速度以及准确率来衡量三者差别。其中中心点距离误差是指预测目标中心点和实际目标中心点的欧氏距离,其算式为
(6)
式中,xp1,yp1,xp2,yp2分别表示预测目标中心点坐标和实际目标中心点坐标。取视频1中的黑色汽车为验证目标,计算其从第0帧到第40帧的欧氏距离,得到部分可视化结果如图7所示。
图7 不同算法的欧氏距离
从图中数据和曲线可以得出,Deepsort算法和改进的Deepsort算法表现总体比经典Sort算法优良很多,Sort算法当出现目标被遮挡时欧氏距离会突增。而改进的Deepsort算法中心点距离误差平均值为21.6,相比Deepsort算法的28提升了1.3倍。
表2 实验结果
如表2所示,这里所使用的改进Deepsort算法跟踪速度比Sort算法减少了6%、比Deepsort减少了5%;而准确率比Deepsort提高了2%。
为了验证复杂条件下目标被遮挡的情况改进的Deepsort算法的表现,采用一段公路视频分别用Sort算法和改进Deepsort算法进行对比,查看效果。同取视频4中的出现目标遮挡情况的17帧、20帧与23帧进行检验,效果如图8。
图8 不同算法应对遮挡情况效果图
从图8可以看出,在使用Sort算法进行视频跟踪时,17帧中的“人”被遮挡,23帧中的同一“人”ID发生改变,即被跟踪为另一目标。而改进的跟踪算法对同一目标进行跟踪时,即使目标被遮挡,也会在后续帧匹配到同一目标,对发生遮挡情况下有很好的鲁棒性。
文中所提出的改进方法,在解决了传统算法自身存在的不足的同时,对运行时间、准确率和误检率都加以改善,下面对检测、跟踪的研究进行总结:①在检测方面,融合帧间差分法的YOLO算法mAP比传统YOLO算法增长了1.24倍;②在跟踪方面,改进的Deepsort算法比传统Deepsort算法运行时间减少了5%;③目标跟踪准确率提高了2个百分点;④在应对遮挡场景时也能很好地跟踪目标。
但仍然存在不足之处,比如在检测时因为对图像进行预处理导致运行时间有所增加,这就需要更好地升级YOLO算法提高检测效率,在保证准确率的同时缩短运行时间。