APP下载

基于HLS 的红外遥感图像连通域快速提取方法

2021-09-11成昊天丁荣莉胡博文欧阳尚荣

上海航天 2021年4期
关键词:等价红外像素

成昊天,丁荣莉,胡博文,李 杰,李 焱,欧阳尚荣

(1.上海航天智能计算技术重点实验室,上海 201109;2.上海航天电子技术研究所,上海 201109)

0 引言

在星载船舰识别技术领域,目前基于合成孔径雷达(Synthetic Aperture Radar,SAR)和可见光载荷的技术已经相对成熟并工程化,基于红外载荷的舰船识别发展相对滞后。红外传感器受到大气、海洋热辐射以及探测器噪声等因素影响,使舰船目标在红外图像上呈现为低信噪比的小目标,这就要求红外舰船识别技术能在各种复杂的背景环境下,克服各种恶劣因素影响,同时要具有较好的实时性和较高的检测率,这也是红外舰船目标识别技术亟待解决的问题[1-2]。近年来,目标检测在深度学习的帮助下取得了不错的进展[3-4],在SAR 和可见光波段已有一些基于深度学习神经网络检测目标的成果[5-7]。由于神经网络算法工程化部署较复杂,利用传统现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)开发方法部署于在轨系统难度较大,于是采用高层次综合(High Level Synthesis,HLS)代替了传统FPGA 开发方法。为了降低在轨系统的功耗,减少神经网络的无用计算,跳过一些明显无目标的图像,需要增加一个计算量较小的粗检模块。

粗检模块包含多个小算法,用来粗略提取特征,其中,连通域的提取在工程化阶段属于一个难点[8],常用的算法是基于CPU 运算而设计,具有较大的随机性,而FPGA 优势更多的在于流水线式数据处理的加速,更偏向于顺序性。目前,有关FPGA端部署的方法均采用了传统的设计方法,算法原理方面主要有基于像素扫描[8-14]和基于游程扫描[15-19]的方法。基于游程的方法由于每行的游程数不确定,导致游程间关联的循环次数不定,在通过HLS进行设计开发时容易导致时延增大,算法稳定性不高;而基于像素扫描的方法通常都会结合等价标记模式,其中多数方法采用了4 连通规则,虽然更简单但是对于目标分辨率较低的红外图像来说容易出现连通断开的情况,相对8 连通规则能够更全面地提取连通情况[19]。因此,本文针对基于像素扫描的8 连通域,结合等价表方法,通过分析简化连通标记情况,采用HLS 开发环境完成连通域算法的快速设计输入,并在Xilinx 开发板ZCU102 上进行部署测试。

1 连通域算法框架和原理

1.1 算法应用框架

本文提出的连通域快速提取方法是红外遥感图像目标检测算法中的1 个子模块,该模块的功能是对二值图像提取出所有连通域,通过筛选连通域面积对图像中的目标进行粗筛,完成图像的粗检功能。对存在疑似目标的图像,粗检模块将发送检测指令给精检模块,采用深度学习神经网络对图像目标进行精确检测。对于不存在疑似目标的图像,则发送指令给精检模块跳过该图像的检测,降低整体功耗和计算量。整体算法的框架图如图1 所示,其中突出显示的即为本文的连通域算法。

图1 红外遥感图像目标检测算法框图Fig.1 Block diagram of the infrared remote sensing image target detection algorithm

载荷图像原始数据包含各种干扰成分,通常不能直接作为输入图像,经过预处理后消除了部分干扰成为常见的遥感灰度图像。将遥感灰度图像输入粗检模块,经过中值滤波去噪和基于均值滤波的显著图提取方法后生成一张显著图的二值图。再经过腐蚀和膨胀操作去除部分杂点,生成的新二值图作为连通域模块的输入。在模块内完成连通域的标记统计,生成连通域个数和对应的面积,经过对面积筛选,留下满足条件的疑似目标个数。若疑似目标数大于0,则向神经网络模块输出检测当前图像的指令;若小于0 则输出跳过指令。

整个粗检模块在移植至硬件的过程中,发现基于CPU 计算逻辑设计的算法不能满足FPGA 硬件平台流水线式的处理过程。特别是采用种子填充法[20]的连通域提取原算法,由于嵌套循环过多且循环数量不定,不适合部署在硬件端,难以达到利用硬件加速的目的。因此,本文针对FPGA 重新设计了一种基于像素扫描的连通域快速提取方法。

1.2 算法开发平台

FPGA 以其高度并行化的优点在数字信号处理领域得到了广泛应用。常规的FPGA 开发需要使用硬件描述语言如VHDL/Verilog 来完成功能模块的设计,但是需要较长的开发时间。HLS 开发工具的出现,使得广大设计人员能够采用更高级的语言(C/C++等)完成设计输入,大大提高了FPGA 的开发效率[21]。

开发人员通过如图2 所示的HLS 开发流程即可将采用C/C++语言设计的算法实现为RTL 级代码。通过用户定义约束文件优化设计的性能与速度,HLS 会根据约束文件的要求自动生成相应RTL 代码,极大地节省了FPGA 的开发时间,使得开发具有高灵活性和高效性。

图2 HLS 的设计流程Fig.2 Design process of the HLS

整个粗检模块作为一个独立的知识产权(Intellectual Property,IP)核,与其他IP 核共同组成整个检测系统,由于其中涉及多种复杂算法,适合采用更灵活高效的HLS 进行开发。各个内部子模块能够更好地配合优化,利用dataflow 形成函数级流水,进一步提高整体算法的执行效率。

1.3 算法原理

连通域类型主要包含4 连通和8 连通,基于不同的需求可以采用不同的连通类型,而本文所用遥感图像分辨率较小,舰船目标又是细长形,其宽度较小,在经过腐蚀膨胀后容易出现对角形式的连通情况如图3 所示。

图3 对角式连通情况Fig.3 Connectivity in diagonal form

8 邻域连通的关联范围更为广泛全面,更适用于该种情况。采用逐行扫描像素的方式记录提取连通域信息,如图4 所示,连通域提取的流程主要包含像素标记、等价表记录和真连通域统计3 个部分。

图4 连通域提取流程Fig.4 Extraction process of the connected domain

算法接收来自上个模块的二值图像,逐个扫描像素,对每个像素获取二值图和临时标签图中,如图5(h)所示的2×3 邻域范围内的像素值P1~P4和标签值L1~L4。根据邻域信息,对当前点X进行连通域标签标记,同时对应标签面积记录+1,对应标签行列最大最小值更新。接着对满足新增等价条件的情况进行等价关系更新。待全部像素扫描完毕后扫描一次等价表统计真实连通域数量、面积和行列范围,经过阈值筛选去掉非目标区域,输出最终的检测/跳过信号。由于该算法不需要记录最终的标签图像,因此,只需要扫描一遍图像,达到获取连通域信息的同时避免不必要的资源、时间和功耗的浪费。

1)像素标记部分。对于图像中间的某一点,本文选取了如图5 所示的2×3 的窗口,其中需标记点为X点,由于是逐像素扫描,因此,X点的标签值只与其之前的4 个点有关,即图中的1、2、3、4。这4 个点共分16 种情况,如图5 所示。

图5 标记点窗口所有情况(点X 不为0 时)Fig.5 All cases for the mark point window(when point X is not 0)

图5 列出了2×3 窗口的所有情况,其中右下角像素不考虑,黑色为像素值为0 的背景像素,白色为像素值为1 的前景像素。设定P为二值图像素点,L为其标签值,本文采取的像素标记方法只需满足一个原则即先行后列,对于不为0 的点X来说:

(1)同行前一像素P1>0 时,无论上一行的P2~P4为何值,点X的标签都直接与P1相关联(当前行优先);

(2)当P1=0 时,再对上一行的3 个点逐列依次判 断,从P2到P4,将第一个不为0 的点与点X相关联;

(3)当P1、P2、P3、P4全为0 时,表示X点为一个可能的新连通域的起始,此时为点X分配一个新标签值。

在设置点X标签的时候,并不采用直接复制标签值的方法,而是以标签值为索引获取其等价表中关联的连通域标签值,将该值作为标签赋值给点X。过程示例如图6 所示。这样的好处是当出现多个连通域互联时任意一个新关联的像素点都能直接标记为统一的最小标签号。

图6 利用等价表的标记过程Fig.6 Labeling process with the equivalence table

2)等价表部分。等价表主要用来记录连通域的关联状态,操作主要分为3 部分:一是像素扫描时的新增标签号;二是新增等价关系时将相关联的两个标签统一设置为两者中的最小值,这样可以确保多个标签互相关联时都直接对应至其中的最小值,同时扫描像素进行标记时也能够直接赋值该最小值;三是等价表刷新,由于新增等价操作局限于两个标签号,而多标签连通的情况下容易导致等价关系丢失,因此,需要确保等价表中只存在一层映射关系,即等价关系变更后所有相关的等价映射都更新至最小标签号,即使用E(L)=E(E(L))遍历一次等价表。

对于新增等价关系的情况,由于P1、P2、P3点的等价关系已经由P1完成,因此,当前点X只需要考虑与P4点的等价情况。当除P4外没有其他点>0时,X直接与P4关联,无需建立新等价关系;当P3>0,P4>0 时,无论P1是否为0,都不存在需要新建等价关系的情况,因此,只有当P3<0,P4>0 且P1+P2>0时,才需要新建等价关系,3 种情况如图7 所示。

图7 需要新增等价关系的3 种情况Fig.7 Three cases where new equivalence relations are required

3)真连通域统计部分。将整张图像扫描完成后,需要统计真连通域个数、面积和行列范围,只需要扫描一次等价表,对E(L)=L的标签给一个新的真连通域标号Cl(以自然数顺序),而E(L)=M的情况则将标签L累计的面积加至标签M对应的真连通域标号Cm的面积统计值中。统计完毕后获得真实连通域个数、面积和行列范围,经过阈值筛选后根据目标情况向后续模块输出对应信号。

2 算法部署与测试

2.1 算法部署

本文算法采用256×256 大小的图像作为输入数据进行设计,算法在HLS 开发环境中完成设计输入后,分别进行C 仿真、C 综合和RTL 联合仿真,通过后即可导出IP 核。在Vivado 中建立工程,添加各种功能IP 模块完成布局布线,这一步是完成可编程逻辑(Programable Logic,PL)端中算法功能和与处理系统(Processing System,PS)端的交互功能设计,确保整个系统能正确运作,该工程最终生成PL 端使用的比特流文件。接下来从Vivado 中启动软件开发工具包(Software Development Kit,SDK),完成PS 端嵌入式控制程序的编写,之后便可以连接开发板将包含PL 和PS 的整个工程导入开发板进行测试。

2.2 测试结果

本文算法测试所采用的红外遥感例图,如图8(a)所示。经过算法提取出的二值显著图,如图8(b)所示。再经过腐蚀和膨胀去除杂点,即可获得用于提取连通域的二值图,如图8(c)所示。由于本文连通域算法属于整个检测算法中的一部分,测试性能时需要单独将模块独立出来,于是直接采用图8(c)作为输入图像分别测试连通域提取正确性和部署至硬件后的运行效率。连通域提取算法将标记完的图像保存为二进制文件,在Matlab 中读取文件数据后得到的连通域标记图,如图8(d)所示,参考标签数值可见算法标记出的连通域正确无误。经过对比与采用种子填充法的PC 版原程序得到了一致的结果。

图8 粗检算法过程Fig.8 Process of the coarse screening algorithm

将本文的连通域算法在HLS 开发环境中完成各种“#pragma”优化设置后进行综合,待综合完成后会出具综合报告,内含总时延和资源消耗量。原版PC 算法种子填充法由于循环条件多变,HLS 无法确定总时延,对其进行适当改写将循环数量固定后,综合报告才给出分析结果,但时延变动范围很大。通过RTL 级仿真后将IP 核导出,在Vivado 中完成PL 端设计并生成比特流文件,此处Vivado 会再次对资源进行优化分配,给出算法最终资源消耗。两种算法的比特流文件通过软件开发工具SDK 编程至芯片上,针对相同输入进行了运算性能测试。以上对比结果见表1。

表1 算法测试结果对比Tab.1 Results of algorithm testing

从结果中可以发现:1)本文算法最大最小时延完全一致,非常稳定,对比算法时延浮动巨大,稳定性差,且最小时延远大于本文算法;2)本文算法实际资源使用量明显小于对比算法;3)本文实测运行速率远大于对比算法,效率极高。

种子填充法的总时延很不稳定,会导致实际单次运行的时间波动,在整个粗检模块中是影响运行效率与稳定性的最大隐患,更重要的是粗检模块需要采用流式数据输入来减小缓存的使用量,而种子填充法的处理逻辑存在非连续访问,并不适合流式数据输入的方式。再从资源消耗量上看,本文算法的逻辑资源消耗量在HLS 的资源报告中除查找表(Look-Up Table,LUT)资源略高于对比算法外其他均更低,而Vivado 实际资源使用量更是均低于对比算法。此外,在开发板实测部分,同样时钟频率和输入下,本文算法达到了797 帧/s 的速度,约是对比算法的5.5 倍,在处理速度方面提升很大,更能满足在大数据量的情况下对计算速度的需求。

3 结束语

连通域提取是红外遥感图像目标粗检模块中的重要组成部分,粗检算法所提取的信息经过连通域提取后能够筛去多数假目标,降低精检模块运算压力的同时也能减少系统的功耗。本文所提出的适合FPGA 平台的连通域快速提取方法结合HLS的开发模式,简化了开发流程,提高了算法开发验证的效率,使得软件设计人员也能够进行算法的FPGA 硬件端部署实现。本文算法通过只扫描一次二值图像,将面积和等价信息均记录在比图像更小的等价表中,提高了运算速度又节省了大量缓存。通过分析归并标记窗口的所有情况,简化了标记规则和新增等价关系的判别,同时结合等价表刷新方法,将等价表内部保持为仅有一层映射关系,防止多重映射导致的关联信息丢失。本文所采用的连通域提取方法不仅可应用在红外遥感图像的处理中,也适用于大部分FPGA 端二值图像连通域的提取。

猜你喜欢

等价红外像素
像素前线之“幻影”2000
网红外卖
等价转化
“资源一号”02卫星可见近红外相机、宽幅红外相机在轨顺利开机成像
闪亮的中国红外『芯』
汤定元:中国红外事业奠基人
“像素”仙人掌
n次自然数幂和的一个等价无穷大
高像素不是全部
将问题等价转化一下再解答