李宗凌,汪路元,禹霁阳,程博文,郝梁
(中国空间技术研究院 北京空间飞行器总体设计部,北京 100094)
光学遥感卫星成像数据量大,船舰目标的遥感成像结果一般具有稀疏特性,采用传回地面进行处理的方式势必会占用大量星地通信带宽,降低星地网络通信效率[1]。星上在轨实时检测识别技术能够有效地解决这一问题,近年来已经成为当前遥感领域的研究热点[2]。基于光学遥感图像的在轨目标检测识别技术能够有效地提高卫星的使用效率,并及时发现陆地、海面显著性目标,相比于电子侦察手段具有抗干扰能力强、目标切片可译读性高、场景适应广泛等优点。虽然光学遥感图像目标信息具有一定的稳定性,但船舰目标容易受到场景变化影响,特别是随着光照强度、气候条件、海面地形等变化,船舰目标在复杂背景下的显著性差异较大。单纯依靠传统特征检测技术难以有效分离出目标,致使检测正确率降低、虚警率升高,导致无法进行正确的识别分类[3-4]。因此,设计适应于不同光照、气候条件、海面场景下船舰检测识别技术,成为当前在轨信息处理的关键[5]。
早期的在轨实时检测技术主要应用于SAR图像[6-7]。近几年随着光学遥感分辨率的提高,提出了大量光学遥感船舰目标检测技术。程红等[8]提出了一种显著性特征引导的舰船目标快速精细检测方法,可准确快速地定位舰船目标和精确刻画目标轮廓。李晓博等[9]提出了一种静止轨道遥感卫星海面运动舰船快速检测方法,利用多结构多尺度滤波结合多目标移动式邻域判决、计算船舰动态信息。Gong等[10]提出了一种基于邻域分析的海洋遥感图像舰船检测方法,根据邻域窗口的均值方差积特性消除海面背景,结合船舰相关特征进行虚警鉴别。陈韬亦等[11]提出了一种基于面向对象的图像分割和分类软件Ecognition的技术方法来提取高分辨率遥感卫星图像中的海上船船目标。徐芳等[12]提出了一种无监督海面舰船目标自动检测方法,可成功提取海面上大小不同、位置随机分布的舰船目标,准确获取舰船目标的数量和位置信息。黄洁等[13]提出了一种将卷积神经网络(convolution neural network,CNN)与支持向量机(support vector machine,SVM)相结合的舰船目标检测方法,应用迁移学习的概念,利用大量民船样本辅助军舰目标的检测,取得较好的效果。在轨船舰检测识别技术的基本思想是采取措施降低船舰目标的背景噪声,提高有用目标的显著性,避免背景干扰过多影响目标的检测或识别。
目前的目标检测识别算法常采用软件来实现,比如C 语言、C++语言、Matlab和OpenCV等,由于计算机软件支持各种高级语言以及友好的用户界面互动,而且一些功能可直接用软件里自带的函数库完成,所以比较方便编程,能很好地实现算法的验证和仿真,但是,这些方法在处理速度上比较慢。随着技术的飞速发展,为了能更好地满足图像处理的速度和质量,要求对图像进行实时处理,所以采用现场可编程门阵列(field programmable gate array,FPGA)等嵌入式硬件来实现是一个较好的选择。由于FPGA有全并行流水处理的先天优势,能很好地提高计算速度和处理效率[14-15]。
通过以往文献可知,光学遥感船舰目标背景复杂干扰众多,传统的特征工程方法无法对目标特性进行全面准确描述,检测鲁棒性差、虚警率高;基于支持向量机的目标鉴别方法由于模型较简单、特征提取单一,导致目标分类鉴别准确性不高;基于深度学习的目标检测鉴别方法特征提取能力强,检测识别效果好,但对于海量遥感图像数据来说,计算量巨大,难以直接在轨应用。与此同时,采用C++、Matlab或OpenCV等高级语言实现算法,虽然具有编程简单、便于快速实现等优点,但存在对处理器硬件资源要求高、效率差、能效比低等缺点。遥感光学成像距离远,通常得到的图像背景噪声高、空间分辨率较低,船舰目标检测过程中容易受到云朵、强浪、浅海地形、岛屿暗礁等因素干扰,检测识别算法应当具有较强的适应性,能够适应复杂邻域、背景环境下的应用。此外,星上可用计算资源及功耗有限,在设计有效在轨实时检测识别算法的过程中必须考虑硬件资源,以满足低功耗、小型化设计要求。另外,为方便用户快速获取海面信息,在轨处理系统应具有良好实时性。
针对上述情况,本文提出了一种基于深度学习的遥感舰船目标检测识别方法。该方法采用形态学运算+深度学习的方法,基于视觉增强技术快速筛选疑似目标,大幅降低后续处理的数据量;采用深度学习网络,实现对上述步骤快速筛选出的疑似目标切片进行细分类,大幅降低虚警,提取目标有效信息。深度学习网络采用图形处理单元(graphic processing unit,GPU)并行化计算提高训练效率;采用FPGA实现目标检测和深度学习网络推理模型,充分发挥FPGA全并行流水处理的特点,提高目标检测、识别分类的实时性,降低系统功耗、提升系统能效比。经过实验,本设计针对海况地形复杂、背景显著性差的遥感舰船目标,检测识别准确性和实时性,性能优异。
经过研究,提出了一种面向光学遥感卫星应用的船舰目标实时检测算法。通过对待检区域统计特性分析,区分出复杂环境下疑似船舰目标区域,从而快速得到检测结果。
可见光遥感图像船舰目标检测算法主要流程如图1所示,分为3个部分。①背景噪声抑制。对原始图像采用高斯滤波、中值滤波去除周期性和随机噪声,并经过形态学开闭运算消除由噪声引起的目标内部孔洞,连接临近目标和平滑边界,实现目标增强。②疑似目标筛选分割。首先通过对图像进行切片,比对当前检测区域与邻域直方图方差特性,区分出纯海域、陆地、疑似目标3种类别,然后对疑似目标区域进行自适应迭代分割,采用最大类间方差法求取二值分割阀值,得到二值图像后进行连通域标注,得到疑似目标标注结果。③基于质心快速求取疑似船舰的位置信息,便于后续基于深度学习的目标识别算法对目标切片进行精细分类和鉴别。光学遥感图像目标检测结果如图2所示。
图1 可见光遥感图像船舰目标实时检测算法流程
图2 光学遥感图像目标检测结果
该方法兼顾了算法的有效性及工程实现的可行性,在嵌入式电路中采用本方法对不同复杂邻域、背景下船舰目标进行检测试验,能够有效地检测出船舰目标。
1)算法分解及模块划分。目标检测算法是由7个流水卷积核、自适应分割、局部统计分类组成的深度计算结构。单个卷积核单元是一种基本的二维滤波结构,卷积核层内部包括串联层和并联层,串联层层与层之间相互连接,并联层层内连接主要包括模加减操作。卷积层输出的结果进入自适应分割网络,通过自适应迭代调整输出显著性前景目标。局部统计分类器对目标上下文进行判决,最终判定结果是否为船舰,并输出目标坐标及面积大小。
目标检测算法的优势在于模型具有层次性,参数比较多并且能够并行流水执行,因而可以更好地适用于并行流水计算,特别是在卷积核计算输出之后进行了分割降维,有效降低了传统计算过程中90%以上的计算量,极大地减少了在轨应用对硬件资源的依赖。
采用可编程逻辑电路设计语言Verilog实现了该目标检测算法。采用全并行流水、模块化、参数化、硬件资源复用等设计思想,有效提升了算法实现的效率和可移植性。通过顶层分解,算法实现的模块和流程如图3至图6所示。
图3 目标检测算法功能实现框图
图4 图像预处理功能实现框图
图5 图像分割流程图
图6 坐标求取流程图
2)硬件资源占用情况。上述所有模块均按处理图像尺寸为1 024像素×1 024像素设计。处理过程需占用大量存储资源。由于FPGA等可编程逻辑器件存储资源有限,因此,需使用外部存储资源DDR3完成整个处理流程。图像尺寸为1 024像素×1 024像素,完成上述整个处理流程需使用24 Mbit外部存储资源。
除此之外,其他硬件开销见表1。表1中FPGA以Xilinx公司K7-325T为例。
表1 目标检测算法在K7-325T上实现资源占用情况
3)处理性能分析。上述处理过程中,图像分割、连通域标注、坐标求取3部分不能实现全并行流水处理,需要先将处理过程的中间结果全部缓存,等到处理完成后,再读出缓存数据进行再处理。其中,图像分割处理时间仅与图像尺寸相关,处理时间是图像数据读取的时间。连通域标注时间与连通域的个数、形状以及图像尺寸均有关,为系统延时产生的主要因素。坐标求取时间与目标个数成正比,但是,每个坐标的求取耗时较少,对系统处理延时影响较小。
在FPGA平台上实现整个处理过程,主处理时钟为200 MHz。输入数据速率200 MByte/s,连通域个数为16,原始图像尺寸为8 192像素×8 192像素,将其分辨率降采样至1 024像素×1 024像素,整个处理过程消耗时间最大约为1 s。
如图7所示,在Xilinx公司开发板上完成了实时处理工程实现,结合该板卡外围千兆以太网总线、DDR3存储及视频图形阵列(video graphic array,VGA)显示接口,形成可演示实时信息处理系统。
图7 船舰目标检测功能验证框图
采用高分2号遥感卫星图像,验证了目标检测算法的有效性和实时实现的可行性,为后续在轨应用奠定理论和工程基础。
图8和图9为基于Xilinx官方开发板KC-705搭建的验证系统及相应处理结果。
图8 目标检测效果图
图9 目标检测算法原理验证系统工作图
本文从舰船疑似目标的图像切片作为CNN分类器的样本数据,人工标定目标切片作为分类器训练输入样本。其中CNN模型选用VGG-16模型。VGG-16网络是一种典型深度CNN模型,由Simonyan和Zisserman在2014年首次提出,在ImageNet2014分类大赛上Top-5错误率仅为7.4%,仅次于GoogleNet的6.7%,是一种非常强大的深度卷积神经网络,能提取图像中更深层特征,分类能力突出。
标准的VGG-16网络结构如图10所示,包含13个卷积层和3个全连接层,使用不断增加的3×3卷积层,并通过2×2 最大池化来减小运算规格,然后是2个4 096节点和1个1 000节点的全连接层,最后是一个Softmax分类器,能够实现1 000类目标分类。
图10 标准VGG-16模型结构图
1)VGG16模型训练。舰船目标鉴别的过程分为训练与预测2个过程。首先根据人工标定的目标图像切片作为CNN分类器的学习输入,经过训练后得到对应的分类器,然后根据得到的分类器对待分类目标切片进行预测,实现目标鉴别,鉴别过程如图11所示。
图11 基于深度学习的目标切片鉴别流程
CNN较传统方法可以学习到更高效的高层图像特征,但是训练一个识别率高、泛化能力强的CNN模型,往往需要大量有标签样本。目前光学遥感图像数据集相对有限,而多数深度学习模型是面向自然场景图像识别任务,研究充分,数据量大,本项目通过采用迁移学习的方法,将在大样本数据集ImageNet上预训练好的模型应用在其他不同空间尺度不同传感器的少样本应用中,是提升舰船样本应用效率,提升系统扩展能力的关键技术。
本文设计的分类器在标准VGG-16模型基础上修改,根据需要,设计成可完成4类目标的分类鉴别,分别为船、岛屿、云及海堤/人工建筑。将4类目标共计8 128个目标切片进行人工标定,作为数据集,4类目标切片图取自高分2号光学遥感卫星图,切片样本如图12所示。数据集中船目标切片包含2 820个,云目标切片包含1 734,岛屿目标切片为1 593个,海堤/人工建筑目标切片包含1 981个,随机选取其中7 000个样本作为训练集,约占数据集的86.12%,在ImageNet数据集模型参数基础上完成训练,得到新的模型参数,剩余1 128个目标切片作为测试集。
图12 目标样本切片(从上至下分别为云、岛、海堤/人工建筑、船)
2)算法分解及模块划分。目标识别算法采用深度CNN网络VGG-16模型,该模型运算规律性强,便于利用FPGA实现并行加速。如图13所示,VGG-16模型加速器按功能分为控制层、卷积层和分类层。整体控制由控制层完成,主要包含数据流控制模块、通信控制模块、存储控制模块、特征图运算控制模块;卷积、池化以及激活运算由卷积层完成,主要包含卷积模块、最大池化模块以及Relu激活;全连接运算以及Softmax分类由输出层完成,主要包含FC-X和Softmax模块。加速器所有模块设计均采用全流水并行设计思想,通过数据流驱动,便于后续模块复用和构建参数化的加速架构。
图13 VGG-16模型加速器功能分解图
3)硬件资源占用。将加速器布置在Virtex7-690T FPGA中,硬件资源占用情况如表2所示。当前卷积神经网络主要实现方法技术指标对比情况如表3所示。同样的输入图像数据,在相同处理效果的基础上,该加速器能效比为CPU-I7-6700的260倍以上,相对于GPU-GTX1050能效比为28倍以上。并和当前业内采用FPGA实现CNN的加速方案进行了对比,相同条件下,均有不小优势。考虑星上在轨应用,该加速器可布置在V5-130T FPGA上。
表2 目标识别算法在V7-690T上实现资源占用情况
表3 主要技术指标对比
将VGG-16网络布置在Net-FPGA开发板的Virtex7-690T FPGA上,VGG-16模型加速器基本架构如图14所示。模型参数为基于船、岛屿、云及海堤/人工建筑4类目标样本的训练参数。随机选择验证集图像切片进行分类结果验证,该加速器对应验证分类结果如图15至图18所示。由图可知,该模型参数对4类目标分类效果良好,基于FPGA-NET开发板实现的加速器功能正确,可完成目标分类识别功能。另外,由于FPGA量化处理的影响,加上4类目标特征明显,模型训练样本库数据不多,模型参数出现了过拟合。因此,所得到的目标置信度很高,达到了1。这个问题随着后续样本库的丰富,模型训练参数会越来越完善,分类会更细致可靠。
图14 VGG-16模型加速器架构
图15 处理结果1(海堤/人工建筑)
图16 处理结果2(岛)
图17 处理结果3(云)
图18 处理结果4(船)
将本文的目标检测、目标识别功能模块以及主控台(PC机)构建一个验证系统,框图如图19所示。其中,目标检测单元通过传统的形态学匹配方法从大幅宽遥感图像中快速获取疑似舰船目标,生成疑似目标切片,输出给基于深度学习的目标分类单元,完成目标鉴定和精细分类,从而有效提升系统处理效率和正确率。
系统工作流程如下:首先,主控台控制软件通过PCIe总线将模型参数发送给目标识别板FPGA(Virtex7-690T);其次,通过千兆以太网将图像数据发送给检测板FPGA(kirtex7-325T),检测板完成处理后,将检测结果通过千兆以太网发送给主控台;再次,主控台控制软件根据检测结果的目标位置从原始图像中提取目标切片,并将切片数据通过PCIe总线发送至目标识别板;然后,目标识别通过CNN模型网络处理切片图像,将得到的分类结果通过PCIe总线发送给主控台;最后,主控台将目标切片及相应分类结果显示在控制软件,直到所有的目标切片完成分类识别。
图19 验证系统框图
验证系统实物组成由图20所示,具体处理效果如图21所示。输入原始图像尺寸为8 192像素×8 192像素,图像分辨率为0.8 m,目标切片尺寸为224像素×224像素。每个目标的检测时间不超过100 ms;每个目标的识别时间不超过1 s。系统具有良好的实时性。
图20 验证系统实物组成
图21 系统处理效果图
目标检测识别后,3.2节已对实时性指标作了说明。本节使用检测正确率和虚警率对本文舰船目标检测识别算法准确性能进行定量评价。
检测正确率:
(1)
虚警率:
(2)
式中:Nt是图像中正确目标的总个数;Ntt是正确检测的目标个数;Nfa为虚警个数。为客观评价本文方法的有效性,将其与2种目标检测方法(文献[5]和文献[13])的检测结果进行对比。实现数据如表4所示。由表4可知,本文方法正确率和虚警率指标均优于近几年业内方法。
表4 不同方法的检测结果
本文提出了一种基于深度学习的遥感舰船目标检测识别方法,可用于星载平台的船舰目标在轨实时检测。该方法通过对遥感图像进行背景噪声抑制,增强了船舰目标相对于背景的灰度对比度,然后采用待检区域-邻域直方图方差比对的方法结合分割标注结果区分出疑似目标区域,快速提取出疑似船舰目标,保证目标检测率和速率。最后,通过采用深度学习网络模型VGG16,对上述传统方法获得的检测结果做进一步的分类识别,在背景复杂、虚警率高的情况下,能够有效判读出舰船目标以及其他背景干扰项,降低虚警率。
通过2块Xilinx公司官方开发板,搭建了一个实时处理验证系统,使用高分2号光学遥感卫星图像进行测试,可以看到本方法能够准确地从云、岛屿、人工建筑等复杂背景干扰中识别出图像中的船舰目标。本方法具有易于在星上嵌入式硬件实现的优点,经过实际验证,能够在2片Virtex5-130T FPGA上实现,处理8 192像素×8 192像素8位灰度遥感图像,目标数不超过16的情况下,单幅检测时间小于1 s,识别时间小于16 s,满足低功耗、小型化光学遥感图像在轨船舰目标实时检测处理需求。
在取得以上成果的同时,本研究也存在许多不足,需要在将来的研究中做出改进。首先,由于遥感数据分辨率较低,目标特征表现相对高清图像较弱,再加上样本数不够丰富,本文训练的模型存在过拟合的风险,因此后续需进一步研究样本数量与质量对数据模型训练效果的影响,使模型在分类种类、精度和鲁棒性方面有更好的提升。第二,在实验中仅测试了一种CNN模型,不同模型对性能的影响缺乏实际效果的说明。第三,网络剪枝可以有效降低参数量,稀疏网络,降低处理计算量,本文在此方面没有做研究,在后续运算效率上还有很大提升空间。