基于多核DSP的红外目标识别算法

    卞一杰 陈跃跃 扈啸

    

    

    

    摘? 要:近年来红外传感器在军事、安防领域得到广泛应用,基于嵌入式平台的红外目标识别算法是该领域的重点研究方向。该文提出了一种基于梯度方向特征的景象匹配算法,其可利用可见光模板对红外图像进行异源图像间的目标识别。该文阐述了在算法移植过程中,如何基于TI公司的TMS320C6678 DSP芯片底层硬件、指令级流水线设计,对算法及算法框架进行优化设计和编程,该方法可广泛适用于其他图像处理算法在DSP上的移植优化。

    关键词:DSP;目标识别;并行优化

    中图分类号:TP391? ? ? ? ? ? ? ? 文献标志码:A

    0 引言

    随着电子科技的快速发展,红外传感器成本更低,图幅和分辨率等性能更佳,该类传感器凭借着优越的天时/天候适应能力在汽车、航天、军事等领域得到广泛使用。由于异源图像间灰度分布上存在极大的非均态性差异,导致异源图像识别算法更具复杂性,异源图像目标识别一直是计算机视觉领域中重要的研究方向。近年来,基于特征点、区域以及学习模型的异源图像目标识别算法不断推陈出新,各有优劣,大多数算法都是基于PC研发的,计算复杂度比较大,计算时间存在波动性,在嵌入式软件平台上运行,很难达到实时性、稳定性要求。因此,基于嵌入式平台的红外目标识别算法研究,在军事、安防领域仍具有重大意义。

    DSP(Digital Signal Processing)即数字信号处理,是以数字形式对信号进行采集、变换、滤波等处理,以此来得到符合人们需要的信号形式。DSP芯片是特别适合用来进行数字信号处理运算的微处理器,其能够快速实现各种数字信号处理算法,其中C6000系列高性能DSP在图像处理领域的应用最广泛。基于FPGA+DSP架构的嵌入式系统设计充分利用了FPGA出色的半定制化电路扩展管理外设接口,让DSP从繁杂的图像采集以及外部数据通信任务中脱离出来,全力运行图像处理算法。该架构的嵌入式处理平台是图像实时处理领域的主流系统架构,具有极高的工程意义。

    该文介绍了一种基于高速移动的多核DSP平台的红外目标识别算法移植与优化技术,首先简单介绍了一种基于边缘梯度方向特征的景象匹配算法 然后深入分析了DSP的硬件底层加速模块设计对算法加速的支持,结合当前算法对移植优化过程的设计思路进行重点介绍,最后展示了算法優化前后性能上的实验结果。

    1 景象匹配算法

    景象匹配算法是基于区域特征的匹配算法,是利用事先制备的可见光模板,在红外实时图上搜索目标的位置,该算法对每幅图的计算量一致,是在嵌入式平台上应用最多的匹配算法。因为异源图像间非均态的灰度特征分布存在差异,如图1所示,所以直接使用基于区域灰度特征的绝对误差和算法(SAD)、误差平方和算法(SSD)、平均绝对差算法(MAD)、平均误差平方和算法(MSD)和归一化积算法(NCC)等,通常无法定位出目标的位置。分别在MATLAB中实现比较了以上5种算法的匹配结果(其中SAD与MAD、SSD与MSD结果一致),如图2所示。

    从图2中列出的相关系数矩阵曲面图中可以发现,灰度特征的相关系数响应峰值并不明显,灰度特征匹配算法不能有效地将相似区域的特征区分出来。

    通过人类视觉系统对外界信息处理机理进行分析可知,人眼对亮度调节具有自适应能力,对亮度级数的判断能力很差,只能区分存在亮度差异的物体,视觉系统具有侧抑制效应,其类似于一个带通滤波器,大脑对人眼采集到的信号进行加权求和运算,形成一种边缘增强的感觉,使人眼对边缘位置的变化更加敏感[1]。因此该文将边缘梯度方向信息作为异源图像匹配的特征空间,根据横向和纵向梯度的强度差异,得到梯度方向[-π/2,π/2]的角度,然后归一化到[0,255]灰度级,得到边缘梯,图3为可见光和红外图像计算得到的梯度方向图。

    根据方向的几何意义,方向越相近,其相似性越高,在提取特征空间后的特征图中灰度级越相近相似性越高,因此可以使用SAD算法作为其相似性测度。匹配结果如图4所示。

    从图4中的相关系数矩阵可以看出,对图像进行梯度方向的特征提取后,使用SAD算法,图像相似性的相关峰值更明显,根据匹配算法置信度测量标准,次主相关峰和主相关峰值之间的比越小,则匹配结果更可靠。

    2 TMS320C6678 DSP芯片

    TMS320C6678采用TI公司最新研发的KeyStone多核架构,是当前该公司性能最高、功耗最低的多核定点数字信号处理器,继承了C64x+指令集架构(ISA),且全面兼容IEEE 754二进制浮点数算数标准。其内核及外设示意图如图5所示。

    TMS320C6678包含8个C64x DSP CorePac,架构如图5所示,每个CorePac主频高达1.25 GHz,每个核可以提供20GMAC定点计算或者20GFLOP浮点计算能力[2],增加的多核导航器、网络协处理器等功能模块,可以使DSP与其他协处理器以及外设间的数据传输性能得到极大提高。

    C66x CorePac兼容了C64x+内核相同的A、B 2个对称的功能区,每个功能区都包含32个32位的通用寄存器文件组和4个功能单元(.D、.L、.M、.S),各功能单元各司其职,构成了2条数据通路。每个CorePac中的32KB程序和数据L1 RAM以及512KB的L2 RAM赋予了单核极高的SIMD指令处理能力。扩展内存管理器(XMC)负责L2存储器控制器与多核共享内存控制器(MSMC)间的管理以及数据交互,并且还能通过预取功能来提高数据的吞吐率,为数字信号处理提供了硬件加速支持。

    3 DSP平台的移植与优化

    3.1 DSP程序开发移植

    DSP程序开发可分为3个阶段。1)编写程序阶段。该阶段根据需求配置底层驱动,使用C/C++完成算法模块的程序编写。2) 精简代码阶段。通过日志或其他专用剖析工具监测算法的性能是否满足实时性要求,如果不满足则通过开启编译器优化等级,或算法结构的并行设计来提升性能。3)线性汇编优化阶段。如果上轮优化仍不满足要求,需要利用线性汇编对待优化的代码进行编写,使用汇编优化器进行代码优化[3]。

    一般第3阶段增加更多对底层寄存器的操作,耗时比第2阶段要多,因此需要尽量在第2阶段提升代码的性能。下面对该算法的工作模式及優化移植工作进行介绍。

    算法在满足启用条件时,唤醒处于休眠状态的DSP,初始化DSP平台,搬运目标模板进入共享内存中,初始化算法全局变量。处理板FPGA实时接收相机采集的图像数据和相机平台发送的位姿信息,然后通过SRIO转发到DSP0核,触发设定的中断响应,从缓冲区将图像搬运到共享内存,更新串口接收的当前弹体姿态信息,对实时图像进行几何校正和预处理,然后调用目标识别算法识别图像中的目标位置,最后将目标的位置通过串口发送给上位机系统。DSP软件流程图如图6所示。

    3.2 数据传输优化

    在算法处理过程中,图像数据搬运所耗费的时间是不能忽略的,FPGA通过SRIO传输图像到L3 MSM,图像处理算法对图像进行计算时,从L3缓存到L2,从L2缓存到L1D,从L1D缓存到内核都需要耗费一定的时间,DSP软件的底层驱动通过配置数据Cache、DMA以及采用乒乓传输[4]相结合的方式,使传输时间与算法处理时间可以并行操作,以此来忽略数据传输的等待时间。

    3.3 算法编程优化

    代码编写过程中,良好的编程方式同样能提升代码性能。循环运算是图像处理中常用计算单元,能够通过软件流水的方式实现指令级并行,但是在很多for循环中,有些不必要或不可预测的运算破坏了流水线,因此需要对其循环体进行拆分优化。比如均值滤波时除以mask大小,这部分计算是冗余的,首先应在循环体外用常量表示其计算结果,并且可以通过提前求导的方式,将循环体中的除法变成乘法运算,节省了运算量。for循环优化编程如图7所示。

    C/C++编译器支持很多的关键字和预编译宏指令,在某些场合下使用能起到很好的效果。_nassert指令可判断指针x所指的地址是否以单/双字(32/64bit)对齐,语法_nassert(n)中n为1则通过,为0则抛出异常,在DSP程序编程中通过图8所示方法使用。该指令搭配#pragma DATA_ALIGN(symbol,constant)宏指令,在循环前调用该指令,将变量的首地址的字节对齐,便于编译器对循环处理中的数据进行优化,充分利用Cache的行拷贝和块拷贝。

    TMS320C6678多核架构支持OpenMP并行计算模型,配置完omp支持后,使用#paragram omp parallel for XXX宏指令的方式调用OpenMP加速,根据DSP核号,编译器自动分配每个核处理的部分,如图9所示。

    C6000编译器提供了很多内联函数,并在其配套的MCSDK中提供了大量的算法库,如dsplib、mathlib、imglib等,这些内联函数是TI公司编写优化后的汇编代码,可快速优化C代码。SAD匹配算法可将图像分成8×8或16×16大小的子块,每个子块调用imglib中的IMG_sad_8×8/ IMG_sad_16×16函数来实现。

    3.4 算法并行化设计

    目标识别算法中的预处理及匹配过程都需要对全图进行计算,每次计算只针对一个子窗口区域,这样就为算法的并行化设计提供了方便,可以视算法的复杂程度将图像处理区域划分为7份或8份,分配给8个核进行处理,图像区域的划分同样需要考虑到内存地址寻址的便捷、处理结果的融合以及数据处理过程中DMA搬运数据冲突最小等因素。

    图像通常是对灰度图进行处理,只有8位有效数据,可通过线性汇编的编程方式对核心处理算法进行进一步优化,每个核的功能单元可同时处理2~4个像素的图像数据。 DSP优化加速前后结果见表1。

    表1? DSP优化加速前后结果

    功能模块 优化方法 优化前时间/ms 优化后时间/ms

    几何校正 循环展开、浮点转定点 4.16 1.16

    SAD imglib中内联函数(单核) 97.90 88.30

    SAD 汇编优化并行 97.90 22.30

    4 结论

    该文提出的红外目标识别算法适应能力强,计算过程简单快速,符合系统稳定性、实时性的要求。在算法DSP移植及优化过程中,更是结合了TMS320C6678芯片设计时,对快速数据传输通道、指令执行软件流水以及多核并行等模块的支持,对算法进行并行化设计,充分利用DSP多核、多流水的信号处理优势。TI官方提供的优化代码有一定的优化效果,但是结合算法与芯片架构进行深度优化效果更佳。算法优化无止境,优化前需要对算法各模块的性能进行监测评估,优先优化耗时长的模块,使优化效果达到最优。

    参考文献

    [1]吴立德.计算机视觉[M].上海:复旦大学出版社,1993.

    [2]牛金海. TMS320C66x KeyStone架构多核DSP入门实例精解[M].上海:上海交通大学出版社,2017.

    [3]夏际金,赵洪立,李川. TIC66x多核DSP 高级软件开发技术[M].北京:清华大学出版社,2017.

    [4]陈国良.并行计算——结构算法编程[M].北京:高等教育出版社,2011.