基于DSP的嵌入式目标跟踪系统①

2019-11-15 07:06时旭东施华君陆国强
计算机系统应用 2019年11期
关键词:检测器矩阵电路

时旭东,施华君,陆国强

(中国电子科技集团公司第三十二研究所,上海 201808)

目标跟踪是计算机视觉领域中一个非常重要的研究方向,其主要工作是通过对图像序列中的指定目标进行特征提取与建模,而后利用所得模型获取或标注出指定目标在动态图像序列中的位置信息,从而实现目标跟踪.近年来,随着计算机视觉领域的快速发展,目标跟踪算法和理论成果也层出不穷.然而,这些算法虽然种类繁多、效果显著,但其大多是基于PC 平台进行算法实现的,这些算法的开发普遍需要借助第三方软件或者软件库进行,很难直接在嵌入式平台上进行算法部署和应用;此外,工程环境中获取的图像包含很多不确定因素,这些因素也会极大影响算法的跟踪性能.这些缺陷使得大量的目标跟踪算法在实际的国防军事、公共安全、工业生产等众多工程领域中的应用大大受限,实际效果也大大折扣.因此,目标跟踪算法在嵌入式平台上的实现一直是该领域中需要着力攻克的难点,设计一种能够适应现实环境复杂性的、具有一定实时性的、性能具有鲁棒性的目标跟踪系统更是目前亟待解决的课题[1,2].

DSP (数字信号处理器)作为一种具有强大运算处理能力的嵌入式系统,具备能耗低、规模小、成本低、稳定性高等诸多优点,这使其在实际工程项目中应用广泛,现已成为目标跟踪算法技术应用的关键平台之一.因此,研究基于DSP 的目标跟踪系统设计及实现方法是十分必要并且具有极高的现实意义的.近年,随着机器学习的迅猛发展,目标跟踪算法已从图像帧差分法[3]、图像帧间特征匹配法等传统方法过渡到基于机器学习的目标跟踪算法,在实际应用中,这对算法的嵌入式平台优化与应用提出了更高的要求.

本文介绍了一种基于TMS320C6414 平台的目标跟踪系统设计及其实现方法,该系统选用了基于机器学习的核化相关滤波算法[4-8](KCF 算法)作为目标跟踪模块的核心算法,在简要介绍系统硬件平台的基础上,详细分析了KCF 算法的原理和特点,与此同时,针对本系统的硬件平台,文章着重解读了系统在算法架构、数据处理、程序编译等方面的优化思路和方法,最后展示了本系统在实际工程应用中的实验结果,并得出相关结论,为计算机视觉领域内的各类算法的嵌入式应用提供参考.

1 系统硬件设计

作为一个能够独立运行于实际工程环境中的目标跟踪系统,其主要功能包括:图像采集和数据缓存、实现目标跟踪算法、上位机通信与跟踪结果反馈等功能.由于系统的外围通信接口较多,通信任务繁重,同时又要运行目标跟踪算法,运算任务繁重,所以在系统的硬件设计中需要根据不同任务,采用模块化的设计思想.FPGA 作为一种典型的半定制电路,拥有丰富的可并行执行的逻辑运算单元,非常适合进行信号调理和时序控制,因此在系统硬件设计中,本文选择FPGA 作为协处理器进行数据通信与外围芯片的时序控制,DSP 则作为核心处理器,主要运行需要大量复杂运算的目标跟踪算法.系统硬件平台的基本结构如图1所示.

图1 系统硬件结构

从图中可以看出,硬件平台包括视频采集电路、视频解码电路、视频显示电路、数据缓存电路、视频处理电路、通信电路以及电源电路等,其中视频解码电路、数据缓存电路以及视频处理电路是本系统硬件平台的核心电路.

1.1 视频解码电路

视频解码电路由TVP5150 及其外围电路组成,该电路功能是将CCD 摄像机采集的PAL 模拟信号转换为符合BT.656 标准的8 位4:2:2 YCbCr 格式的数字信号[9].本系统中,由协处理器FPGA 根据BT.656 帧划分和数据流格式解析出行同步信号、场信号以及YCbCr 数据信号,并将解析结果输出至后级电路进行处理.

1.2 数据缓存电路

数据缓存电路主要负责图像数据的缓存工作.考虑到DSP 读取和处理数据需要较快的速度,因此使用工作频率较高的SRAM 作为DSP 的数据缓存,而协处理器FPGA 的数据缓存则采用经典的“乒乓结构缓冲存储”[10,11]策略,即采用两片SDRAM 作为图像数据缓存主体,输入输出数据选择单元切换由FPGA 控制实现,最终完成图像数据的无缝缓冲处理,提升系统的数据存取速度.

1.3 视频处理电路

视频处理电路由协处理器FPGA、核心处理器DSP 以及它们的外围电路组成.为达到系统“小规模、低成本、高能效”的设计需求,FPGA 选用Altera 公司Cyclone IV 系列的EP4CE40F29I7N 芯片,该产品具备532 个可用I/O,39 600 个基本逻辑单元(LEs),1134 Kbit片上存储空间,芯片面积仅为29×29 mm2,其资源足够满足系统功能需求;DSP 则选用TI 公司TMS320C6000系列最高性能的定点DSP 产品TMS320C6414,该产品具有2 个FMIF 接口,工作频率最高可达850 MHz,其运算能力足够满足系统的算法需求.

2 核化相关滤波算法(KCF 算法)

目标跟踪算法在本系统中嵌入在DSP 的监控程序中,算法的具体要求是,在视频中的每一帧图像中均能识别并框选出所指定的跟踪目标,并将跟踪结果反馈至控制台上位机以供观察.针对本系统的研制需求,本文提出了一种核化相关滤波算法(KCF 算法)在本系统硬件平台上的优化与实现方法.

KCF 算法是一种典型的判别式目标跟踪算法[5,6],该算法的核心思想是根据图像中给定的跟踪目标,在线学习得到一个能够区分目标和背景信息的目标检测器模型,然后使用该检测器模型在下一帧图像上进行相关滤波计算,从而得到图像的输出响应并框选出目标区域,并用得到的目标区域更新目标模板.算法的优势在于,在目标检测器模型的训练过程中引入“核技巧”,该方法可以隐式地使用图像的高维特征,增强模型的泛化能力和目标识别的准确率[12];与此同时,在算法实现过程中巧妙地使用循环矩阵来拓展训练集,在一定程度上解决了目标跟踪中训练样本匮乏的问题[13];并且算法利用循环矩阵在傅里叶域内可对角化的性质,将原本时域中复杂的矩阵求逆运算转化为傅里叶域中的向量Hadamad 积运算,大大降低了算法运行的时间复杂度,极大提高了运算速度[5,12].

2.1 循环移位

在样本训练过程中,将图像中选定的目标区域I作为基样本,记其中的一行1×n维向量为x.使用置换矩阵P对该基样本中的行向量x进行循环移位,从而得到移位集合,集合中的每个元素都可以看作是一个向量的变换,集合则可以看作是一个矩阵的变换.对于行向量x,其置换矩阵可以表示为:

置换矩阵与行向量相乘可构成循环矩阵X:

循环矩阵可通过离散傅里叶变换实现矩阵的对角化:

上式可以看作是循环矩阵的特征值分解[12],其中,G被称作DFT 矩阵,是一个与基样本行向量无关的常量矩阵,GH表示G的共轭转置,表示x的离散傅里叶变换.对于二维图像,可以对图像中的每一个行向量或者列向量进行上述操作,从而获得循环矩阵.由于离散傅里叶变换是一种线性变换,对角化过程等价于对向量做元素级的线性变换,所以,其可大大简化后续计算,提升算法性能.

2.2 训练目标检测器

训练目标检测器的本质是一个岭回归问题,即寻找一个线性函数f(z)=wTz,使得该函数的输出与样本标签值之间的残差最小,该过程可以表示为:

上式最优闭式解的复数形式为:

对其进行傅里叶逆变换即可得到w.可以看出,原本O(n3)复杂度的矩阵求逆运算被转换成了O(n)复杂度的元素乘法和O(nlogn)的傅里叶变换,计算复杂度减少了几个数量级[5].

2.3 核技巧

2.2 节中训练得到的目标检测器是线性的,为得到具有更优性能的非线性目标检测器,KCF 算法引入“核技巧”来解决非线性目标检测器的在线训练问题.即首先将问题的输入X映射到一个非线性空间 φ(X)中,将φ(X)作为岭回归问题的输入,由算法文献[5]可得,该问题的最优解为样本的线性组合:

然后,KCF 算法引入核函数来表示高维空间中映射值的点积,即:

其中,κ为核函数,其计算结果通常存储在核矩阵K中,从式(8)可以看出,核函数可以在不实例化任何向量的前提下隐式地使用向量的高维特征[12].根据算法文献[5]可以得到,核函数下岭回归的闭式解为:

文献[5]中证明大部分常用的核函数构成的核矩阵K是循环矩阵,利用循环矩阵的性质可以对(9)式进行对角化,结果为:

其中,kxx'为核矩阵K的第一行元素.从上述推导可知,该求解过程可以避开式(9)中原本复杂的矩阵求逆运算,将式(10)的计算结果进行离散傅里叶逆变换即可得到目标向量α.值得注意的是,当样本规模线性增加时,式(9)求解的复杂度呈指数级提升,而式(10)则是线性级的[12].

2.4 快速目标检测

对于输入的待检测图像块z,其在训练得到的目标检测器中的输出响应为:

其中,x为目标检测器的训练基本样本,设Kz为训练样本和所有候选图像块的核矩阵,其可表示为:

代入式(11)并对角化可得:

对上式结果进行离散傅里叶逆变换即可得到所有候选图像块的响应值.

以上过程的实质就是计算当前帧中的待检测图像块和训练检测器模型时所使用的目标模板之间的相关性,并找出计算结果中相关性最高的区域作为目标位置.结合本工程的实际情况,本文选用高斯核进行算法实现,高斯核的核相关运算表达式为:

将其代入式(13)中即可得到最终结果.

2.5 模板更新

在实际的工程应用中,引入超参数η作为更新因子用来调节目标检测器的更新率[12,14,15],以保证目标检测器模型的跟踪准确率,并尽可能减弱噪声、干扰以及目标形变等对检测器性能的影响.

对于模板更新因子η,当跟踪目标被遮挡或短暂消失时,为保证系统的鲁棒性,应停止对目标检测器的模板更新,此时更新因子取值为1;当目标能够被正常检测时,为保证目标跟踪的平滑性,更新因子η应根据实际工程的调试情况,取一个大于0 的较小值[15],以保证目标跟踪的连贯性和平滑性.

3 基于硬件平台的算法优化与实现

KCF 算法的作者Henriques 在其个人主页上公开了算法基于OpenCV 开发的C++源码以及Matlab 源码,相关资料[5,16]也给出了该源码在标准测试集上的性能指标.但是由于本系统硬件不支持OpenCV 的开发环境,即源码无法在DSP 上运行,且当算法在以实际工程环境中所采集的视频数据作为测试数据时,原算法提供的评测指标也不再适用,因此,为满足系统在实际工程中的指标需求,使其能够适应实际工程环境,本算法需要基于系统的硬件平台进行多方面的优化和改进.

在本系统中,算法的优化和改进主要面临以下问题:其一,在原代码中使用的大量OpenCV 库函数无法在DSP 上直接运行;其二,KCF 算法中涉及大量的浮点运算,而本系统中所使用的型号为TMS320C6414的DSP 为定点DSP,浮点运算非常慢;其三,此算法中的二维傅里叶变换、图像插值、矩阵变换等函数运算量大,未优化前,这些函数在本硬件平台上运行时无法满足实时性需求.鉴于以上问题,本文针对TMS320C6414进行了以下优化[14,15,17-21]:

(1)对原有的OpenCV 函数进行了重构,包括图像插值、矩阵变换、HOG 特征提取、矩阵运算、二维傅里叶变换等经典算法模块,在保留功能的基础上进行适当裁剪与优化,使其能够适配DSP 的硬件底层.

(2)优化算法的内存分配机制,采用静态内存分配的策略,消除DSP 在算法不断申请和释放内存过程中的隐患.

(3)为提高算法的运行效率,将算法中的高运算量函数通过C64X DSP 库函数进行实现,使得计算过程与底层硬件严格适配.在本系统的算法实现中使用了DSPLib、ImgLib、FastRTS 3 个由TI 公司提供的官方库,主要负责算法中高运算量步骤的计算,提升计算效率.

(4)针对算法中大量的浮点运算,在保证计算精度指标的前提下采用浮点运算转定点运算的策略.

(5)开通软件流水线操作,将多层循环转化为多次迭代并行执行.

(6)将算法中大量的数据存取和常用的数学运算等操作使用instrinsic 函数进行优化[22],提升算法的运行速度.

在本系统实现过程中,由于算法基于硬件平台的适配性优化较多,在此仅攫取这些适配性优化中的一例以说明优化思路和方法.本算法中,点积运算的使用频率较高,对点积函数的优化会极大影响系统的工作效率和性能.首先,可对代码进行编译器优化,C6000的C 优化器是TI 的一个创新,它对程序循环的流水处理使得C 代码的效率得到很大提高,使用时只需在编译时加入优化选项即可,在使用中,具体的优化编译命令可参考TI 公司提供的使用指南[22,23].采用优化选项进行优化后,点积函数的执行时间从1800 周期缩短至159 周期,执行效率提升超过10 倍.除此之外,本算法在运算过程中,点积运算所使用的数据大多是16 位的short 类型,而C6000 的内部数据总线和寄存器都是32 位的,因此还可以采用字长优化的方法进行优化[23].具体做法是:做点积运算时,每次使用1 个LD 指令取2 个16 位数据,并进一步用C6000 的2 个16 位乘法器在1 个周期内并行完成2 个16 位乘法.在C6000的C 编译器中提供了两个特殊的内联函数_mpy 和_mpyh,该函数可以实现汇编语言中的MPY/MPYH 功能,高效率实现C 语言中的字长优化问题,使C 代码的效率可以达到90%以上.经过字长优化以后,点积算法的核心循环变成了单周期,而且执行包达到了8 条指令并行的最佳性能,点积函数的执行时间也从159 周期缩短至了66 周期,性能提高1 倍,由此可见,采用以上优化方法可以大大提升系统的数据处理性能.

在进行上述诸多硬件适配性优化后,系统成功实现了基于DSP 的KCF 算法,并且算法在本平台的运行效率也相对较高,在实际的工程环境中能够实现平均25 fps 的运行速度,满足系统实时运行的需求以及其他目标跟踪性能指标要求.最终的算法流程图如图2所示.

对于整个目标跟踪系统,其在实际工程环境中的工作步骤如下:

步骤1.系统上电后进入自检,自检完成后进入工作状态;

步骤2.视频采集电路启动拍摄,并将图片帧流传入视频解码电路进行模/数转换,随后将转换结果输出至FPGA 进行数据缓存控制;

步骤3.视频显示电路将数字视频信号发送至上位机控制台进行显示,并等待操作人员框选目标区域(目标框的大小可根据跟踪目标的实际情况进行手动调整);

步骤4.目标区域框选完成后,系统进入目标跟踪状态,并将含有该目标区域的图片作为跟踪视频的第一帧图片;

步骤5.DSP 从缓存区域读入帧数据,并调用目标跟踪算法更新检测器参数,输出计算得到的目标区域,同时输出控制量使视频采集电路中的摄像头跟随目标区域进行移动跟踪;

步骤6.对后续帧数据重复上述步骤4 到步骤5,若更换跟踪目标,则重复步骤1 到步骤5.

4 实验结果与分析

根据本系统的应用场景,实验测试分为标准数据集测试和实际工程场景测试两部分.

4.1 标准数据集测试

标准数据集测试实验中使用的测试视频为Wu 等人在2013年CVPR 上提出的测试基准[24],该测试集Benchmark 中有50 个测试视频.在本实验中,由于系统的硬件平台是以DSP 为核心的嵌入式平台,其核心处理器的处理性能与通用PC 机的处理性能不在同一级别,这就导致平均跟踪帧率这一性能评价指标与原算法差距较大,但由于硬件平台本身的应用背景不同,对比该指标的性能优劣并没有实际意义,因此,在标准数据集测试实验中,本文仅关注跟踪准确率这一指标.Benchmark 中的50 个测试视频提供了每一帧图像的人工标注值ground truth,该值反映的是每一帧图像中目标框的中心坐标值.KCF 算法的作者使用20 像素精度作为算法准确率的评判标准,即目标框中心的预测值与ground truth 之间的欧氏距离在20 个像素以内则认为该帧跟踪正确,并以正确跟踪帧数的比例作为算法的准确率.本实验以KCF 作者公开的算法的Matlab代码在Benchmark 上的测试结果[5,12]作为实验基准与本系统在相同测试集上的运行结果进行横向比较(Gaussian 核+HOG 特征),测试结果如表1所示.

图2 目标跟踪算法流程图

从测试结果来看,算法在本平台上的准确率与原算法相比下降了0.7%,可以认为本系统对原算法进行了复现,算法移植效果良好,与原作者算法的准确率比较来看符合实验预期.

4.2 实际工程场景测试

为模拟真实的工程环境,保证测试视频片段的多样性,本实验使用了不同场景、不同复杂度的多段视频作为测试素材,以检测本系统在不同测试环境下的鲁棒性.测试视频均由本系统的图像采集电路实时采集,视频单帧图像的分辨率为720×576,通过视频解码电路、视频显示电路和上位机通信电路将采集到的实时信号投射在上位机界面,操作人员可通过键盘操作选定信号中的待跟踪目标,并调整跟踪框尺寸.操作完成后系统便进入工作状态,视频采集电路的CCD 摄像机可自动跟随目标进行二维转动(控制信号由本系统的控制模块产生),以保证跟踪目标在整个实验过程中一直处于视野范围内,并在每一帧图像中框选出目标位置,同时在上位机的视频显示界面实时显示.其中每一帧的坐标原点默认为图像中心位置,在跟踪过程中,视频下方会实时显示跟踪框的中心坐标值.

表1 标准数据集测试结果

由于每次实验中所框选出的目标区域大小不同,因此系统在不同实验中的跟踪速度也有差别,实际测试中,其平均处理帧率为25 帧/秒,满足工程应用中的实时性指标;在跟踪准确率方面,由于测试数据由系统实时采集得到,无法对视频进行ground truth 标定,因此跟踪准确率无法精确量化.从视觉上看,系统的跟踪准确率处在较高水平,平均可达95%以上,与标准数据集测试实验相比性能有较大提升,这主要是由于本系统应用于实际工程环境中时,视频采集电路由二轴云台进行稳定控制,云台的控制模块可以根据视频处理模块计算输出的目标脱靶量对云台运动进行实时修正,进而可以最大限度地保证CCD 摄像机的视轴始终处于稳定状态,因此,采集到的视频数据相较于标准测试集中的视频数据更加稳定,抖动较小,且目标运动更连贯,目标区域可以一直处于视野中心附近,这对目标跟踪模块的功能实现具有积极作用.图3为实际工程场景测试实验中使用的上位机主界面,界面左上角为视频跟踪显示区域.

图3 上位机主界面

4.2.1 场景一

目标的平移运动是目标跟踪过程中的最简单最基本的运动,本场景目的是用来测试系统的最大跟踪角速度,视频中跟踪目标在测试人员的控制下以一定速度在桌面上沿椭圆轨迹做循环往复运动,测试结果如图4所示.在实际的工程环境中,本系统的最大跟踪角速度可达20 度/秒.

4.2.2 场景二

在实际的工程环境中,待跟踪的目标所处的背景环境中往往会出现与目标相似的物体,这对跟踪结果会产生一定的干扰,同时目标在视野中的远近位置变化还会引起尺度变化,系统能否顺利应对这种干扰和变化也是系统鲁棒性的重要参考标准.本场景是实际公路的航拍片段,以道路上某辆行驶中的小汽车作为跟踪目标,其余汽车以及背景中的道路标识为干扰项,同时在汽车由远及近的过程中会发生明显的尺度变化.测试结果如图5所示,从测试结果来看,本系统在该场景下能够顺利避开背景干扰信息,准确跟踪指定目标,且目标在由远及近的过程中,系统均可实现对目标的跟踪.

图4 场景一下的跟踪结果

图5 场景二下的跟踪结果

4.2.3 场景三

实际应用场景中,跟踪目标所处环境一般会出现明暗、阴影等变化,目标有时也会被遮挡,导致其在视野中发生较为明显的形变等.跟踪系统能否在这种复杂多变的环境下完成跟踪任务,亦是衡量系统可靠性和稳定的重要参考标准.本场景中将对公路上行驶的大巴车进行跟踪,在其行驶过程中会经过阴影区、树木遮挡区等,并会发生一定程度的形变.测试结果如图6所示,在整个跟踪过程中,当跟踪目标所处的环境出现阴影、遮挡时,系统均能正常工作,完成跟踪任务.

5 结语

为实现目标跟踪算法的工程应用问题,本文提出一种以DSP 为核心处理器、FPGA 为协处理器的嵌入式目标跟踪系统设计方案,并基于此平台对KCF 算法进行优化与实现,使之能满足实际工程应用的指标要求.本系统具有“小规模、低成本、高能效”的特点,在典型工程环境中能实现良好的目标跟踪效果.本目标跟踪系统中还配套开发了上位机操作平台和视频采集电路的运动控制模块,使得本系统可很好兼容其余功能模块,极大提高工程项目的开发效率.本系统的嵌入式硬件平台和算法优化思想具有通用性,为计算机视觉领域内的各类算法的嵌入式应用实现提供参考.

图6 场景三下的跟踪结果

猜你喜欢
检测器矩阵电路
电路的保护
基于高速公路事故黑点的检测器优化布设
基于用户和电路的攻击识别方法
参数可调的联合子空间目标检测方法 *
海杂波背景下雷达目标贝叶斯检测算法
“简化法”巧解电路问题
用于录井专用气相色谱仪的FID检测器
多项式理论在矩阵求逆中的应用
巧用求差法判断电路中物理量大小
矩阵