张 艳,刘 阳,王杜林,王逸群,4
(1.海军装备部驻上海地区第六军事代表室·上海·201109; 2.哈尔滨工业大学 仪器科学与工程学院·哈尔滨·150001; 3.上海航天控制技术研究所·上海·201109; 4.中国科学院 苏州纳米技术与纳米仿生研究所·苏州·215000)
检测与跟踪动态目标主要通过分析视觉图像,从而获取被测目标的运动状态信息。这些运动状态信息用于机器视觉系统完成其它高层任务,有助于发展更高水平的人工智能。因而,检测与跟踪动态目标广泛应用于军事武器、航空航天、安防监控、无人驾驶等领域[1],可以帮助实现空间交会对接、无人机跟踪导航和导弹制导等任务。对于空间非合作目标的探测、跟踪或识别,目前多采用雷达、红外、可见光或其它无线电信号传感器等;近年来,具有灵活机动性能的卫星逐渐成为近距离非合作目标跟踪的重要平台,本文研究的基于相关滤波器的主动视觉目标跟踪方法,可以在卫星平台上与传统方法相结合,提高跟踪的灵活性和实时性。
视觉目标跟踪算法一直是计算机视觉领域中的重要研究课题,目标跟踪算法的相关研究最早可以追溯到上世纪七十年代。根据目标跟踪的基本原理,跟踪算法主要分为两类:生成类方法和判别类方法[2]。生成类方法主要使用特征搜索,即首先在当前帧对目标建模,然后在下一帧中寻找与目标模型最相似的区域作为预测位置。生成类方法的代表性算法包括均值漂移(Mean shift)、粒子滤波(Particle filter)、卡尔曼滤波(Kalman filter)等算法。判别类方法则把目标跟踪归结为二分类问题,使用当前帧正负样本集训练分类器,用分类器在后一帧中寻找最优区域作为预测位置。判别类方法包括:Struck算法、多示例学习(Multiple Instance Learning, MIL)等算法。在2010年,人们提出了最小平方和误差(Minimum Output Sum of Squared Error,MOSSE)滤波算法,这是在目标跟踪领域首次使用相关滤波(Correlation Filter,CF)类方法,最小平方和误差滤波算法也是一种典型的判别类的跟踪算法。该算法利用快速傅里叶变换在频域计算滤波过程,大幅度提高了系统的跟踪速度。在此基础上,研究人员相继提出了核相关滤波(Kernel Correlation Filter, KCF)算法、多通道颜色特征(Color Names,CN)算法,这些研究成果不断提高相关滤波类算法的跟踪效果。尤其是近年来,人们将回归网络通用对象跟踪算法(Generic Object Tracking Using Regression Networks,GOTUNRN)、全卷积孪生网络(Fully-Convolutional Siamese Networks,SiamFC)等深度学习类算法用到了目标跟踪领域,为目标跟踪算法的发展提供了新思路。
值得注意的是,出于对跟踪数据集上的短期跟踪效果的考虑,前述算法往往需要在第一帧中以人工方式给出被跟踪目标,很显然,这样的操作与实际的目标跟踪问题是不相符合的[3]。由此可见,长时间跟踪问题需要结合检测算法与跟踪算法,即由系统自动地锚定被跟踪目标。因此,人们研究了“跟踪-学习-检测”(Tracking-Learning-Detection,TLD)算法[4],研究表明,该算法的跟踪效果稳定可靠。与此同时,大多数跟踪系统的复杂算法都依赖于高性能的计算机处理器,这严重阻碍了跟踪技术的应用前景。近年来,随着微电子技术和计算机技术不断进步,人们开始日趋重视嵌入式机器视觉。为此,本文以检测与跟踪相结合为出发点,以相关滤波类跟踪方法为核心,提出研究一种基于主动视觉理论[5]的实时动态目标跟踪系统,该系统利用伺服机构控制摄像头实现目标主动跟踪,提高目标跟踪系统的鲁棒性、自适应性和实时性,并在基于树莓派的嵌入式平台上研制了跟踪系统,并完成了相关的测试,实验结果表明,该系统方案能够实现大视场高帧频实时监控。
本文所设计的嵌入式动态目标跟踪系统主要包括图像采集模块、运动伺服控制模块、嵌入式控制器、跟踪控制程序及算法。嵌入式动态目标跟踪系统的结构示意图如图1所示。根据主动视觉思想搭建的目标跟踪装置,其核心控制器是嵌入式片上系统(System-on-a-Chip,SOC)。在配套程序控制下,图像采集模块实时获取目标空间视频图像,利用目标跟踪算法处理该视频图像,进而确定被跟踪目标在图像上的位置。对于经过标定的摄像机,利用图像上目标的位置信息计算目标与当前视场中心的角度偏差值,根据该偏差信息控制伺服系统,进而适时调整摄像头位置姿态,确保被追踪的运动目标始终清晰成像在视场的中心位置,从而实现连续准确的目标实时跟踪。
根据图2所示的检测与跟踪主程序流程图,上电启动所设计的目标跟踪装置后,控制程序将自启动并检测相机、电机等下位机设备组件的状态,通过检测并完成初始化后,软件系统读入被跟踪目标的判别模型,整个系统随即进入图像采集、目标检测跟踪的主程序,开始执行动态目标追踪任务。检测与跟踪主程序的基本流程如下:
图2 检测与跟踪主程序的流程图Fig.2 Flow chart of the detection and tracking program
(1) 调用摄像头读取一帧当前图像,并在当前帧进行检测算法;
(2) 若当前帧未检测到被跟踪目标,伺服控制系统旋转一定角度,重复步骤(1),若当前帧检测到被跟踪目标,则执行下一步,进行目标跟踪;
(3) 使用检测到的目标位置初始化目标跟踪算法跟踪器,并根据当前目标位置偏差调整摄像头位置姿态;
(4) 调用摄像头读取的新的一帧当前图像,并送至跟踪器计算目标位置;
(5) 若跟踪器在当前帧图像上搜索到被跟踪目标,则计算目标偏差,然后伺服控制运动系统调整摄像头位姿并跟踪目标,重复步骤(4)和(5),继续跟踪目标;否则,程序跳转至步骤(1),重新扫描检测目标。
为了实现运动目标实时跟踪,本文采用相关滤波类跟踪算法。相关滤波类跟踪算法通过一个滤波器将输入图像映射为一个理想响应图,并使响应峰值与被跟踪目标位置相关联[6],从而实现目标跟踪,在此过程中所使用的滤波器就是前文所说的跟踪器。在系统实施跟踪算法的过程中,首先需要基于当前帧图像中被跟踪目标生成训练样本集,然后创建并初始化一个相关滤波器。在图1和图2所示的系统中,检测算法先检测出当前帧图像中的被跟踪目标,然后通过随机仿射变换扩充产生训练样本集;当输入新的视频帧f时,利用相关滤波器对其进行相关计算,即:
g=f⊗h
(1)
式中,f表示输入视频帧中的目标图像,h表示滤波器模板,g表示输出响应,“⊗”即为相关运算符。输出响应图中,最大值对应的位置就是最大概率跟踪结果;然后使用新的目标位置对跟踪滤波器进行实时更新。
由此可见,跟踪算法的运算速度制约了跟踪的实时性,为了提高跟踪算法的速度,在进行相关运算时采用了快速傅里叶变换。根据傅里叶变换的卷积定理,在频域中,相关运算可以表示为乘法运算,即:
G=F⊙H*
(2)
其中,G=F{g},F=F{f},H=F{h},F{·}表示对函数进行傅里叶变换,“⊙”表示元素的点乘运算,“*”表示复共轭。求解得到H,然后通过傅里叶逆变换即可求得相关滤波器。
本文中,跟踪器采用MOSSE滤波器[7]。为了将训练样本集中的m个输入图像Fi分别映射到理想响应输出Gi上,必须使实际输出H*⊙Fi和期望输出Gi之间的平方误差之和最小,即
(3)
求解公式(3)得到跟踪滤波器初始化和更新公式:
(4)
公式(4)表示将滤波器模型分为分子和分母两部分,分别进行更新,At和At-1分别表示当前帧和上一帧滤波器模型的分子,Bt和Bt-1分别表示当前帧和上一帧滤波器模型的分母;式中,η是学习速率,使过去帧对滤波器的影响随时间变化而指数衰减,通常取经验值η=0.125以达到自适应性和鲁棒性的平衡。
为了求解和验证上述算法的有效性,本文在Intel Pentium 4415Y处理器上进行测试,该处理器的主频是1.60 GHz,跟踪器是利用Python和OpenCV编写的。图3给出了相关滤波器跟踪图像的结果,图3中的三个子图分别表示(a)输入目标图像、(b)跟踪滤波器模板和(c)输出响应图。
(a)
(b)
(c)图3 相关滤波器跟踪图像Fig.3 Tracker chart of the correlation filter
本文中的相关滤波器是利用图像的灰度特征进行训练的,与KCF算法[8]中使用方向梯度直方图(Histogram of Oriented Gradient, HOG)特征、CN算法[9]中的颜色特征等相比,相关滤波器的跟踪准确性相对减小。实际上,相关滤波器的算法复杂度更低、跟踪速度更快,极其符合嵌入式平台计算资源少的特征[10],而且结合检测算法就可以满足快速跟踪的需求。与此同时,根据公式(2),跟踪滤波器的模板尺寸越大,相关运算的复杂度越高,即与跟踪滤波器的模板尺寸决定了跟踪算法的运行帧率[11],图4给出了模板尺寸和运行帧率的关系曲线,很显然,随着模板尺寸的增加,运行帧率急剧下降。并且运行帧率的波动还会影响伺服系统的稳定性。考虑到本文调整摄像头保持目标处于画面中心即可,因此将跟踪器模板设为固定值,有利于实现稳定、可靠的实时目标跟踪。
图4 跟踪帧率随模板大小变化Fig.4 The frame rate varies with the size of the template
为了进一步验证跟踪滤波器及其算法,测试了基于OTB100跟踪数据集[12]中的视频序列。这里使用中心位置误差(Center Location Error,CLE)评估跟踪目标的中心位置(xc,yc)与标定的真实位置(xt、yt)之间的偏差,即:
(5)
计算在既定阈值偏差之内的帧数占总帧数的百分比[13],并绘制了图5所示的跟踪准确率曲线,可见设置位置错误阈值为15时,本文算法跟踪准确率高达80%。
图5 跟踪准确率与中心位置偏差的关系Fig.5 Relation of tracking accuracy rate and central location error
此外,相关滤波类算法对快速运动目标的跟踪能力相对不足。因为跟踪算法运行时,仅对跟踪器模板区域内的图像块进行计算,当下一帧图像中目标由于快速运动脱离跟踪器图像块范围时,跟踪就会失败;同时,受图像预处理阶段余弦窗运算的影响而产生的边界效应,也使得跟踪器对图像块边缘的目标跟踪能力较弱。本文所采用的主动视觉跟踪方法,依靠伺服系统使被跟踪目标保持在图中心区域内,可以一定程度抵消相关滤波对快速运动目标跟踪的劣势,使其更加胜任于相关应用场景。
为了在实验上验证所设计的目标跟踪系统,搭建了如图6所示、基于Raspberry Pi 4B嵌入式控制器的目标跟踪系统,并验证了前文所述的动态目标跟踪方法和搭建跟踪装置。整个装置分为三部分,底部的伺服电机直接驱动装置水平旋转,对目标进行扫描检测及跟踪;中部是控制电路,通过导电滑环与下方伺服电机传输控制信号,并实现跟踪算法;顶部是相机模组与微型舵机,相机通过转接件与舵机固定,在舵机驱动下做俯仰运动以跟踪目标。其中图像采集器件是嵌入式相机模组Raspberry Pi Camera Module V2,伺服运动控制模块为舵机与伺服电机的组合。
①MG90S舵机;②嵌入式相机模组;③锂电池及供电板;④Raspberry Pi 4B嵌入式控制器;⑤PWM驱动板;⑥一体化伺服电机;⑦PCB导电滑环;⑧外壳、旋转平台等支撑连接件;⑨伺服电机底座及安装架 (a)结构设计仿真图
(b)测试装置实物图图6 动态目标跟踪实验装置Fig.6 Experimental schematic of dynamic object tracking system
编写跟踪程序的语言是Python,并基于OpenCV来完成的,在目标检测时,使用基于Haar特征的级联分类器[14],本文以人脸为跟踪对象,训练目标检测模型。将此程序下载至嵌入式控制器,验证该方法的实时跟踪效果。图7是利用本系统及其相关算法实现的目标检测与跟踪效果图,系统用蓝色矩形框来标识被跟踪目标,随着被跟踪目标的移动,通过由伺服电机和微型舵机构成的伺服运动机构对摄像机姿态的调整[15],蓝色矩形框保持跟随移动,始终保证跟踪目标在蓝色矩形框内。在实验过程中,被跟踪目标进行了上下左右四个方向的移动,系统依然具备良好的跟踪性能。实验表明,该实验装置可实现水平360°、俯仰±60°范围内的实时监控。
图7 动态目标实时检测与跟踪效果图Fig.7 Real-time detection and tracking of dynamic object
实验中,作为被跟踪目标的行人绕动态目标跟踪装置做连续圆周运动,记录跟踪图像及时间戳,以单圈圆周运动跟踪成功为判断标准,通过时间戳计算可知,被跟踪行人以约90(°)/s的速度运动时,实验装置依然实现了稳定跟踪;在运行目标检测算法进行目标搜索时,系统的平均运行帧率在6~8FPS;在运行目标跟踪算法时,平均运行帧率约25FPS,能保证跟踪的实时性。
本文研究了基于主动视觉思想的嵌入式系统动态目标跟踪,提出了一种检测与跟踪相结合算法,在最小平方和误差滤波器跟踪算法的基础上完成了检测与跟踪相结合的跟踪程序,基于OTB数据集,使用中心位置偏差进行评估,并搭建了跟踪验证实验装置。实验结果表明,本文所设计的嵌入式动态目标主动跟踪系统具备目标实时跟踪能力,对快速运动的目标跟踪效果准确、稳定,能够实现全时监控。与传统机器视觉跟踪系统相比,嵌入式跟踪系统具有体积小、成本低、易于部署等优势。考虑到嵌入式平台计算资源的限制,后续将研究系统和算法的优化,以实现高速运动目标跟踪。