冯志刚,贾宁宁,朱琳琳
(沈阳航空航天大学 自动化学院,沈阳 110136)
随着机器学习与人工智能技术的发展,视频目标检测与跟踪技术成为当下计算机视觉处理领域的核心内容,同时也是无人汽车驾驶、现实增强、人机智能交互中的目标检测、行为识别以及目标跟踪的基础[1]。目前国内外主流的视频跟踪系统在满足跟踪精度和鲁棒性前提下,因其高复杂计算量,硬件性能限制,多应用实现于PC设备[2],针对成本、功耗、体积要求较为严格等原因,使移动设备无法满足工程应用。为解决上述问题,本文设计一种基于Hi3516a的视频跟踪系统,构建该系统硬件平台电路,利用核相关滤波器跟踪算法(Kernelized Correlation Filter,即KCF)实现对视频目标运动物体的跟踪,并将其运用到无人机视觉系统中,实现对视频序列中的目标实时跟踪。
本视频跟踪硬件系统主要是由Hi3516a核心系统电路、SDI解码电路、复位电路、电源电路和无线网络通讯电路构成。系统通过工业CCD相机采集视频图像,经SDI数字解码电路完成由SDI接口到BT1120数据接口视频图像的传输,Hi3516a将图像信息经过图像跟踪算法处理后完成目标图像跟踪,并将检测跟踪的视频图像通过无线网络通信电路上传至上位机进行跟踪结果显示。其系统硬件框架图如图1所示。现对系统各个电路功能模块进行说明,在这里无线网络通信电路采用USB接口的3200M双频无线网卡作为图传模块, Hi3516a处理器内部集成USB控制器,仅需两路信号线和一路电源线即可完成图传模块的硬件连接。
图1 系统硬件框架图
本视频系统核心由Hi3516a处理器、Nor Flash电路和DDR3L电路构成。Hi3516a处理器是针对高清IPCamera应用产品开发的一款专业高端Soc芯片,最高主频达800 MHz,片内集成丰富的音视频解码单元,提供一路BT1120/BT656视频输出接口,用于外扩HDMI或SDI接口,最大支持1080P输出,同时由于高性价比被广泛应用于视频监控和车载导航等诸多图像处理领域。Nor Flash电路由芯片MX25l25635及外围电路构成, 在本系统中Hi3516a处理器通过配置4bytes address boot mode 从NOR Flash中启动uboot,然后加载Linux内核与根文件系统到内存单元。DDR3L电路由两片16bitH5TC2G63FFR芯片及外围电路构成32位的SDRAM。
本系统采用I/O电源和内核电源(3.3 V和1.1 V)的双电源供电模式,减少芯片运行时的功耗。利用MP1471A降压转换输出3.3 VI/O电压,该芯片输出电流最高可达2.5 A,转换效率高达95%,同时内部集成短路和过温保护电路,图2所示为I/O电源电路原理图。经过I/O电源输出的3.3 V电压由MP2122电源管理芯片转换输出1.1 V内核电压,为Hi3516a处理器以及DDR3L电路提供工作内核电压,其最大内核电流达2A,内核电源电路原理图如图3所示。
由于输入电源中存在脉冲电流和外部电压干扰,因此须在内核电源电路以及I/O电源电路的输入端和电源地之间并联加入22 μF和0.1 μF电容以减少外部扰动。为了保证电源电压高效输出,减少输出纹波,输出端串联4.7 μH电感,并联100 nF电容,如图2中标号1、标号2所示。同时在芯片反馈端引入偏置电压调节目标电压的输出。另外在输出端添加47 μF电容以保证电压稳定输出。
利用SDI解码芯片GV7601完成SDI视频输入信号解码,其数据传输速率最高可达2.97Gb/s,通过SPI接口完成8-bit、10bit和12-bit分量数字视频信号寄存器配置。其电路图如图4所示,图中SDI视频信号通过6.2nH电感与1 μF电容对输入SDI信号进行滤波,抑制高频噪声。
本视频跟踪系统的复位设计采用单独精密电源电压监控电路设计,在上电启动、异常关断和掉电情况下,在输入复位引脚MR上发生低电平跳变,并产生复位输出,完成对NOR Flash电路、DDR3L电路、Hi3516a以及SDI解码电路复位工作。当供电电源VCC低至1V时,复位输出仍能保持工作。其中PFI引脚为监测电源输入端,是芯片内部比较器的同相输入端,通过配置电阻R222与R221进行监控电压设置,如图5所示。
图2 I/O电源电路原理图
图3 内核电源电路原理图
图4 SDI编解码电路原理图
图5 复位电路原理图
根据上述电路原理图的设计,完成6层PCB电路制版,并对电路功能进行焊接调试,完成硬件电路平台搭建。最终硬件平台如图6所示。
通过以上跟踪系统硬件电路设计完成了基于Hi3516a视频跟踪系统的嵌入式硬件平台搭建。现在通过Hi3516a软件系统设计完成应用程序开发,最终实现视频跟踪功能。
图6 Hi3516a视频跟踪系统硬件平台
针对目标机Hi3516a平台,将跟踪应用程序在宿主机上经过“编译-链接-定位”得到可执行文件[5]。最终将可执行文件烧写到Hi3516a硬件平台中。整个Hi3516a软件平台搭建主要分为uboot移植、linux内核移植和根文件系统制作。其搭建步骤如下:
(1)安装交叉编译工具链arm-hisiv300-linux。
(2)编译与移植uboot。在命令行下输入“make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux-hi3516a_config”进行编译环境配置,通过配置表格完成DDR SDRAM寄存器配置,合并reg-infor-Hi3516a.bin文件与uboot.bin文件生成uboot镜像文件zImage。
(3)编译与移植linux内核。执行指令“make menuconfig”进行内核配置,选择需要安装功能模块完成编译内核,生成镜像。
(4)根文件系统制作。对busybox源码进行配置、编译和安装,最终生成yaffs2格式的根文件系统,并将生成的根文件系统烧写进NOR Flash指定地址。
至此,一个基于Hi3516a的视频跟踪系统的嵌入式软件开发平台已经搭建好,现在可以使用Qt-linux IDE平台进行应用程序的设计。
在开发视频跟踪应用程序同时,还需要用到OpenCV函数库,OpenCV是由Intel公司于1999年推出的一款基于BSD许可的跨平台计算机视觉库[7],它实现了图像处理和计算机视觉方面的很多通用算法,因此被广泛应用。本系统在linux平台下对OpenCV进行交叉编译和安装,将最终生成的库文件和头文件移植到根文件系统上。
此外,在进行应用程序编程时,还需要对相机采集到的视频信号流进行多媒体处理,例如,跟踪框的叠加、视频输出流编码等。海思提供的媒体处理软件平台(Media Process Platform,简称 MPP)对应用软件屏蔽了芯片相关的复杂底层处理,并且对应用软件直接提供MPI(MPP Programe Interface)接口完成相应功能,可以很好地支持应用软件快速开发。
目标板将视频图像通过实时流传输协议(Real Time Streaming Protocol,即RTSP)搭建流媒体服务器并将视频流上传地面上位机,选取待跟踪目标并将跟踪目标图像帧发送至Hi3516a目标板,当目标板得到跟踪目标图像便开启跟踪线程对当前帧进行检测跟踪,并将检测跟踪结果以叠加图层形式将跟踪窗反馈至视频图像上。系统程序主流程图如图7所示。
图7 系统程序主流程图
得益于机器学习技术的长足发展,许多优秀的判别式目标跟踪算法相继提出,KCF高速目标跟踪算法是一种基于相关滤波框架之上的目标跟踪算法[4]。该算法主要由样本训练和目标检测两部分构成[5],其核心思想是将目标区域通过循环位移构建出大量训练样本,并将所有样本对岭回归分类器进行训练,在目标检测部分,通过岭回归分类器选取出匹配度最佳的目标候选区域作为新的跟踪目标[6]。下面对该算法原理进行简要描述,图8为该算法流程图。
图8 KCF跟踪算法流程图
由循环位移构建出来的循环矩阵作为训练样本对岭回归分类器进行训练,其训练目的是为了找出目标函数f(z)=wTz,使得训练样本xi和其回归目标值yi的损失函数最小[1],即
(1)
其中λ是用来防止函数过拟合的正则化参数。在傅立叶域中,可求得式(1)的一个闭环解为
w=(XHX+λI)-1XHy
(2)
式中XH表示训练样本矩阵X的共轭转置,y是由回归目标值yi构成的列向量。
(3)
为了改善分类器性能,通过引入核函数把输入样本映射到高维特征空间φ(x)中,最终得到的非线性相关滤波与线性相关滤波几乎是一样的效率。同时核函数的引入使得分类器的解可以表示为所有输入样本的线性组合,即
(4)
此时,求解w转化为求解α。其基于核函数的岭回归分类器的解为
α=(K+λI)-1y
(5)
上式中的K为n×n的核矩阵,其元素为Kij=κ(xi,xj),α为以系数αi为元素的向量,代表着对偶空间的解。
引入傅立叶域可得
(6)
至此,训练出的岭回归分类器将应用到下一帧图像的目标检测当中[9-11]。
在新的一帧目标候选图像块z中,其分类器的回归函数为[8]
(7)
设分类器的训练样本和候选图像的核矩阵为Kz,Kz的每一个元素都可由κ(Pi-1z,Pj-1x)表示,且Kz同样是一个循环矩阵[9],可写为
Kz=C(kxz)
(8)
式中kxz是x与z的核相关。则各个候选样本的响应为
f(z)=(Kz)Tα
(9)
对(9)式进行傅立叶变换可得
(10)
则输出响应最大的值即为目标检测范围[12-13]。
在对目标源进行跟踪的过程中,无人机在飞行过程中摄像头与跟踪目标之间的距离以及形变发生的变化导致采集训练样本不准确,相对于第一帧样本变化尺度较小时,背景图像信息过多进入训练样本,尺度变大时,则会导致一部分目标信息进入负样本[13]。为解决尺度变化带来的跟踪误差提出一种多尺度的KCF目标跟踪算法。该算法在原有的KCF跟踪算法基础上加入双线性插值算法[16],可以对多尺度下的目标进行跟踪。
首先定义一个尺度集合N
N={n1,n2,…,nk}
(11)
该集合中的元素n表示目标大小的缩放尺度,假设前一帧目标所在位置为Pospre,对应的目标尺度大小为nt,对当前帧采集k个不同尺度下的检测样本,且nk∈N。则采样结果记为{nist|ni∈N}。
当对目标进行检测时,需要采用固定的外观模型进行核相关性计算。将目标尺度大小nt作为固定尺度大小,根据双线性差值算法对当前帧下的不同尺度采样结果进行缩放,使得采样结果大小与nt大小一致[16]。
则目标在固定尺度下的采样结果的响应回归值为:
(12)
由于当前帧的偏移量通常由采样结果的响应回归值表示,而实际的偏移量大小需要根据缩放尺度ni进行相应的调整,根据式(12)可以得到目标的缩放尺度ni而获得当前帧中实际目标大小nist,同时根据实际的偏移量大小得到当前帧中目标位置。
通过对Hi3516a硬件平台和软件平台的搭建,在Qt-IDE环境下进行视频跟踪应用程序设计,实现Hi3516a的视频跟踪系统。将本系统搭载到小型无人机平台进行跟踪实验,跟踪结果如图9所示,跟踪精度如图10所示。图中视频源分辨率为1920*1080,跟踪目标初始大小120*320,在视频帧率达到30帧/秒时,图像未出现花屏卡顿现象。同时当目标人物在逐渐接近无人机摄像机的过程中尺度姿态发生变化,跟踪系统仍能够对运动目标进行实时正确的跟踪。根据测试结果可以看出改进后的KCF算法满足实时性要求,对跟踪目标尺度变化有较好的跟踪效果。图11为地面上位机显示的跟踪结果界面。
图9 Hi3516a平台跟踪结果
图10 跟踪精度曲线图
图11 地面接收跟踪结果上位机
本文以Hi3516a处理器为核心,针对无人机平台对目标跟踪的需求完成了基于Hi3516a的硬件电路设计以及嵌入式软件环境搭建和跟踪应用程序的编写。同时应用双线性插值算法对KCF跟踪算法进行改进,提升KCF跟踪算法在多尺度变化下的跟踪精度。最终将本跟踪系统应用在无人机平台进行跟踪测试,测试结果能够很好地满足跟踪实时性要求,对跟踪目标的尺度变化有较好的跟踪效果。