邹 斌,蒲东兵,陈智强,孙英娟
(1.东北师范大学信息科学与技术学院,吉林 长春 130117;2.长春师范大学计算机科学与技术学院,吉林 长春 130032)
动态目标跟踪技术广泛应用于智能驾驶、体育竞技以及军事武器等众多领域,其关键问题是如何快速、准确检测并定位到被跟踪目标。基于相关滤波的方法检测速度快,但鲁棒性不足,而滑动窗口或特征点匹配方法对图像平移、尺度变换的支持较弱[1-2]。SIFT[3](Scale Invariant Feature Transform)特征提取方法具有图像平移、旋转和尺度不变性,适合于目标快速匹配。融合深度学习技术的Faster R-CNN(Faster Region-based Proposal Convolutional Neural Networks)[4]、SSD(Single Shot MultiBox Detector)[5]、YOLO(You Only Look Once)[6]等网络模型在检测速度和精度上都有很好的表现,而Siamese FC(Fully-Convolutional Siamese Networks)[7]和SiamRPN(Siamese Region Proposal Networks)[8]通过融合RPN结构实现了对特定目标的检测。尽管Siamese系列算法能够实时检测定位目标,但当遇到目标被遮挡、相似物干扰、目标产生形变甚至丢失等情形时,该类算法的效率就会大打折扣,本文提出的融合SIFT特征和相似度比较的SiamMask(Siamese Mask)[9]改进算法SSC-SiamMask(SiamMask-based of SIFT Features and Similarity Comparison for Single Object Detection and Localization)可有效解决上述问题。
孪生网络Siamese由两个完全相同的模块组成,以实现对跟踪目标与后续图像的特征提取。孪生掩码网络SiamMask通过RPN实现分类、定位与对目标轮廓的预测,同时保留了跟踪目标和当前帧的空间信息,但缺少对算法输出错误结果的解决方案。本文提出的SSC-SiamMask算法在SiamMask算法的基础上增加了SSC模块(图1),SSC模块由正确性验证与目标寻回两部分构成,正确性验证实现对SiamMask算法受到干扰时输出的错误结果进行过滤,目标寻回实现对SiamMask的输出结果进行矫正,确保在跟踪目标丢失后重新找回目标。
图1 SSC-SiamMask网络
正确性验证包括历史记录队列保留和相似度对比两个部分(图1),历史记录队列作为目标历史状态保留的缓冲区,为后续检测提供参考,相似度对比则计算当前SiamMask的输出与真实目标的相似度,以判断本次SiamMask输出结果正确与否。
历史队列中的记录项由定位信息和目标图像两部分组成。SiamMask所输出的坐标信息由[tx,ty,w,h]表示,其中,tx,ty,w,h分别表示目标中心点的坐标(x,y)和预测边界框的宽度与高度。
历史记录队列为双端队列,以提高数据检索的效率,由近N次SiamMask的正确输出和系统初始化时选定的跟踪目标坐标及其区域组成,共N+1条历史记录项。尽管初始化目标在当前运动状态下已发生较大变化,但诸如颜色、纹理、边界形状等低层特征改变较小,可为正确性验证提供更多参考。当SiamMask实现正确输出后,使用此历史记录项对队列尾部元素进行替换,确保队列为最新的定位结果,以保证目标实时变化的状态可以被完整保留。当后续需要重新初始化SiamMask或进行相似度对比时,可以从该队列中提取出目标的最新状态特征作为参考。
相似度对比则计算当前SiamMask的输出与真实目标的相似度,以判断是否输出结果。在进行相似度对比时,首先使用SIFT算法提取目标的SIFT特征Ts,然后从历史记录队列中逐一将N条历史记录项取出,提取历史记录项中保存图像的SIFT特征Hsi,i=1,2,…,N,计算Ts与Hsi的欧氏距离,取最大值并记为Sn。然后将原始记录图像从队列中取出,提取其SIFT特征Os,计算Ts与Os的特征相似度So, 将两次结果进行加权求和计算相似度:
S=λ1×Sn+λ2×So,
(1)
其中,λ1和λ2为权重,本文中λ1取值0.7,λ2取值0.3时,SSC模块验证效果达到最好。
当SiamMask输出大量错误结果时,说明跟踪器已丢失跟踪目标,本文采用目标寻回方法对SiamMask的输出进行矫正。目标寻回时,首先对历史记录项进行循环读取,同时在线替换SiamMask中所保留的跟踪目标特征参数,使网络可以充分利用目标近期不同状态的特征,将其作为识别目标的参考。在后续图像帧中进行目标检测定位时,使用正确性验证模块对SiamMask的每次输出进行验证,若验证结果表明已找回目标,则使用本次SiamMask的输出结果对历史记录队列进行一次更新,其流程如图2所示。
图2 目标寻回流程
本文设计的跟踪系统架构如图3所示,包括上位机和下位机两部分。系统中的下位机(具有网络传输功能的小车)即为本文的跟踪器,上位机为服务器,上位机与下位机通过无线Wi-Fi进行通信。其中,下位机主要对移动目标进行跟踪,包含网络传输、图像采集、避障、测距、硬件驱动等任务;上位机实现SSC-SiamMask算法与数据处理,主要包含目标检测定位、网络传输以及GUI等。
图3 系统架构
当上位机通过SSC-SiamMask计算来自下位机的图像数据,输出检测目标的二维像素坐标后,下位机基于双目测距算法计算其与目标之间的距离,将相关数据传回到上位机。双目视觉一般用于空间三维建图,通过构建像素坐标系,将视差值作为参数,使用相似三角形定理计算跟踪器至观测目标的距离,其具体过程如图4所示。正常跟踪时,本文设定跟踪器与目标之间的参考距离为2 m。
图4 双目测距流程
为了实现跟踪过程中下位机自主避障,系统采用红外传感器和超声波传感器协同避障的方式,多传感器协同避障逻辑如图5所示。跟踪器在跟踪过程中,其超声波传感器不断检测跟踪器正前方障碍物,若存在障碍物,则将该信号反馈至红外传感器,红外传感器将对跟踪器两侧障碍物存在情况进行检测。
图5 多传感器协同避障
在跟踪过程中,上位机根据SSC-SiamMask发出指令,驱动跟踪器运动。跟踪器在寻找目标过程中,不断接收来自上位机的指令,当上位机发现目标后,以发送定位坐标的方式,通知跟踪器目标已被找到,跟踪器收到指令后退出目标寻回模式,同时利用接收到的定位信息,调整舵机姿态并驱动电机移动至目标所在方向。
跟踪系统上位机与跟踪器采用Ubuntu操作系统,通过Python编程,实现系统的集成测试。图6为跟踪系统的综合控制GUI,用于设定初始目标区域,显示实时采集的图像、目标区域、测距距离、目标中心点坐标、时间戳等信息。
图6 上位机综合控制GUI
图7和图8分别表示SSC-SiamMask正常跟踪时的网络初始化过程和实际检测定位效果对比。
图7 网络初始化
图8 目标检测定位
本文拍摄两组视频,每组视频中目标正常存在的图像和目标消失的图像各500帧。通过统计错误输出率进行过滤效果的验证,利用系统单位时间内处理图像的速率(帧/s)作为指标,验证该模块对系统实时性产生的影响,结果如图9和表1所示。
图9(a)表示SiamMask检测正确目标的情形;图9(b)表示当目标消失后,系统在未进行正确性验证的情况下检测到错误目标,说明SiamMask算法的局限性;图9(c)表示当目标消失后,使用SSC正确性验证模块对SiamMask输出进行过滤,未在图中进行任何错误标识,说明正确性验证模块的有效性。
(a)目标正常结果输出
(b)目标消失错误结果输出
(c)目标消失正确结果输出
表1 正确性验证算法过滤效果
表1说明引入正确性验证模块后,SSC-SiamMask的错误输出率显著低于SiamMask,尽管牺牲了少部分检测速度,但获得了更高的准确率。
图10表示目标丢失时信息记录与处理结果,图10(a)中保留了目标消失时的最后图像信息,时间戳表明目标于16点04分50秒时消失。由于系统使用正确性验证模块对网络的错误输出进行了过滤,所以图10(b)未输出任何错误定位信息,说明正确性验证模块起到了过滤错误的效果。
(a)丢失时间戳
(b)定位结果
图11(a)表示目标再现,图11(b)显示的时间戳为16点05分01秒说明目标消失了11 s,此时检测定位算法尽管还未检测到待跟踪目标,但也没有任何错误的检测结果输出。
(a)目标再现
(b)目标再现时间戳
图12(a)表示当目标消失一段时间再现后,系统能够找回丢失的目标,并输出其坐标信息,同时将跟踪目标的位置实时地通过矩形框标注在图中。图12(b)的时间戳为16时05分03秒,进一步验证了通过保留历史记录的方式,使用目标寻回模块找回目标的有效性。
(a)目标寻回
(b)目标寻回时间戳
图13(a)表明当遇到相似颜色特征的干扰物(椭圆形包),网络仍然正确识别并定位出目标。图13(b)显示检测到的目标,目标的距离为40.29 cm。
(a)“颜色相似物”干扰
(b)“颜色相似物”干扰时间戳
为了解决目标被遮挡时无法识别或错误定位的问题,本文采用了扩大搜索域策略。图14(a)表示目标部分区域被遮挡,SSC-SiamMask使用相似度比较算法对网络输出进行正确性验证,并对错误输出结果进行过滤,只输出了正确的定位结果,如图14(b)所示。
(a)“遮挡”干扰
(b)“遮挡”干扰时间戳
图15(a)(b)(c)分别表示第三视角(从跟踪器和跟踪目标以外的视角)下跟踪测试的结果。
(a)跟踪开始
(b)跟踪进行
(c)跟踪转弯
图16(a)(b)(c)分别表示上位机实时显示跟踪状态的视角效果,该视角对应第一视角(从跟踪器角度观察的视角)。
(a)跟踪开始
(b)跟踪进行
(c)跟踪转弯
本文将计算机视觉技术与深度学习算法相结合,设计并实现了一个基于SSC-SiamMask的目标跟踪系统。该系统通过SSC-SiamMask算法对目标进行检测定位,跟踪器收到定位信息后跟踪目标。经测试,SSC-SiamMask算法能够过滤环境中96%以上的视觉干扰,跟踪器在保持与目标间距2 m的同时,有效规避障碍物,实时跟踪动态目标。