基于改进Mask R-CNN的卫星目标部位检测方法

2021-12-01 07:41杨钦宁佘浩平庞羽佳
计算机测量与控制 2021年11期
关键词:卷积卫星图像

杨钦宁, 佘浩平, 庞羽佳

(1.北京理工大学 宇航学院, 北京 100081;2.中国空间技术研究院 钱学森空间技术实验室, 北京 100094)

0 引言

随着人类对空间探索的不断深入,空间技术对科技的发展也相应地提出了更高的要求。当前,空间任务已不局限于卫星发射与实现卫星功能,在轨服务正成为空间技术研究中一个新的关键领域[1]。其中包括:在轨航天器的维修更换、卫星燃料加注、废弃卫星的回收和空间碎片的回收等[2]。而这些技术都离不开对目标航天器的识别和检测技术[3]。

在空间目标识别检测中,光学传感器因其体积小、成本低、信息内容直观丰富等优点受到了广泛关注,其中,光学相机作为其中最常用、成本最低的解决方案,自然成为了空间目标检测的重要选择之一。

目前针对空间目标识别与检测使用较多的是传统机器视觉算法。这种方法通常根据先验信息设计,在特定识别场景中具有很高的精度,但其泛化能力一般[4-5]。同时,由于大多数的空间任务中服务飞行器的服务对象一般都是不具有固定外形和结构的非合作目标。这就更要求视觉检测算法具有较高的泛化能力[6]。此外,因为目标航天器运动及空间环境的特殊性,使得传统视觉检测算法面临这3个技术难点:1)外形、尺度问题:目标航天器在运动时可能因光学相机的拍摄角度变化导致目标产生较大的成像轮廓变化。同时,在距离光学相机的距离变化比较大时,其在图像上的大小尺度也会发生较大变化;2)光照问题:空间中由于缺少漫反射的存在,导致飞行器不同表面反射太阳光的亮度会有较大差异。当光照太强或过弱时,都不利于视觉识别和检测的进行;3)运动模糊与遮挡问题:当目标在相机视野中移动较快时,会导致视野中目标图像出现模糊;当目标被其他物体遮挡时,可能导致目标的特征部分或全部损失,增大了检测失败的可能性。综合以上原因,传统机器视觉方法可能无法很好地完成空间目标识别检测任务[7]。

近年来,基于深度学习的目标识别检测方法逐渐被广泛使用,其建模灵活方便,综合性强,且能自适应的提取目标不同层级的特征[8]。能将训练好的模型应用在不同场景,其对检测物的泛化能力大大提升。且可以同时识别和检测多类目标,主动性好,目前已广泛应用于车辆[9]和行人检测[10]等领域,在航天领域中使用较多的是对卫星遥感图进行地面物体或云层等信息的识别和检测[11],但在空间目标识别和检测方面的研究目前较少,尚缺乏专用的深度学习框架。Girshick等[12]首次使用RCNN(Regions with CNN),将卷积神经网络运用到目标检测中来,为目标检测开辟了新的道路,但其检测精度和效率均不高。Fast R-CNN在R-CNN的架构上引入了金字塔池化层并进行单尺度池化,极大提高了检测速度[13]。之后,Faster R-CNN在Fast R-CNN的基础上引入了区域建议网络(RPN),进行了端到端的训练,提高了区域提取的速度和网络训练的速度,从此目标检测终于进入到了可实时检测的阶段[14]。Mask R-CNN将Faster R-CNN中使用RoIAlign方法代替RoIPooling,通过双线性插值方法降低了边界框的误差,一定程度上提高了检测精度,同时加入了Mask分支,将每个待检测目标进行了像素级分割,实现了实例分割功能[15]。Chen等[16]使用轻量级的实力分割网络,为改善残差模块,使用了深度可分离卷积的方法,并且使用了非线性激活代替线性激活,简化残差网络的层数以减轻网络负担,通过仿真软件生成卫星的模型图片,经测试可实现对典型卫星部件的识别和检测,但其训练及测试的图像均为理想条件下的正视图,未代入实际空间应用中的实际场景,因此在实用性方面欠缺一定考量。

本文提出了Ring-Engine-Mask R-CNN,是一种改进的Mask R-CNN。针对卫星这一特定目标下特征部位检测任务的特点和要求,使用深度学习方法完成对卫星目标部位的检测,主要工作包括:1)建立专用于卫星目标识别检测的数据集,确保数据具有代表性,提高训练数据集的质量;2)针对Mask R-CNN对大面积遮挡目标检测效果差的问题,采用局部标注方法,以使网络能学习到卫星目标部位的更多的局部特征信息,以提高在遮挡情况的网络对于目标局部外形的识别能力。3)将其主干网络规模进行改进,减少卷积运算量,同时缩减分类回归、Mask分支,以减少网络模型在末端的运行量,保证网络模型更适合卫星目标部位的检测任务。

1 待检测目标的选取及数据集的建立

针对卫星目标,由于其星箭对接环作为最常用的对接装置[17],所以它与其同一面的远地点发动机喷管也成为了卫星的识别与检测中最常用的特征部位之一。

所选取的检测目标为卫星星箭对接环和远地点发动机喷管,如图1所示。为了提高模型的泛化能力,数据集样本分别采集于实物模型和仿真平台。

图1 卫星星箭对接环和远地点发动机喷管示意图

1.1 实物图像数据集

实物图像采集自实验室中卫星星箭对接环和远地点发动机喷管及卫星舱体的1:1实物模型,使用光学相机拍摄,物理分辨率为4 000*3 000,分别以多种不同视角和过曝光-正常曝光-欠曝光3种不同照度情况,拍摄实物模型的全局图片,通过图像旋转拉伸翻转的操作进行数据增强,并筛选掉效果不佳的图片,最终选定1 000张图片用于制作数据集。同时,因为本课题应用背景为空间对接、抓捕等,在航天器对目标卫星进行对接过程后期,由于目标距离光学相机较近,目标难免会溢出光学相机的视野,导致相机无法获得目标的全部图像。针对该问题,采用局部标注方法,制作了两种目标的局部图像数据集。使用相机在较近距离下拍摄目标,使其部分轮廓溢出相机视野,在该情况下拍摄了1 000张图片,同样经过数据增强和筛选,选定1 000张图片制作数据集。

将获取到的图片使用Labelme软件进行标注,标注之后生成一个对应的json文件,使用Labelme软件进行处理得到训练所需数据集,其可视化后的全局图像数据集如图2所示,局部图像数据集如图3所示。最终得到目标的实物图像数据集2 000个,按照训练集:验证集:测试集=6:2:2的比例进行随机分配,所得三者的数目分别为1 200、400、400。

图2 两种目标的实物全局图像数据集

图3 两种目标的实物局部图像数据集

1.2 仿真图像数据集

受空间限制的约束,实验室中采集的目标实物图像的距离较近,只满足了较近距离下数据集的构建。由于仿真平台不受现实空间约束,可采集目标距相机任意距离的图像。为了增加中远距离时的数据集样本,同时提高近距离时的样本丰富性,在3dsMax中建立了某卫星的三维模型,并渲染生成仿真图像。同样,为了解决目标距离光学相机较近时可能会导致的检测失败问题,也同制作实物图像数据集时一样,建立其全局图像数据集和局部图像数据集,数量均为1 000张。生成数据集的方法与实物图像数据集相同,均使用Labelme软件完成。建立的全局图像数据集如图4所示,局部图像数据集如图5所示。最终得到目标的仿真图像数据集2 000个,按照训练集:验证集:测试集=6:2:2的比例进行随机分配,所得三者的数目分别为1 200、400、400。

图4 两种目标的仿真模型全局图像数据集

图5 两种目标的仿真模型局部图像数据集

最终,形成了样本量为4 000个的深度学习数据集,其中,实物样本数据量与仿真样本数据量均为2 000,它们各自包含1 000个全局图像样本和1 000个局部图像样本。

2 卫星目标检测方案

2.1 网络结构

Ring-Engine-Mask R-CNN分别由主干网络、区域建议网络(RPN)、ROI分类器和边框回归、Mask分支构成,网络结构如图6所示。

图6 网络结构图

在Ring-Engine-Mask R-CNN中,主干网络是一个残差网络结构,同Mask R-CNN主干网络原理相同,其使用shortcut直接将输入连接至后面的层,以降低特征损失[18]。相对于基于ResNet-101作为主干网络的Mask R-CNN,其改进处为网络的第3阶段的4个Block增加至6个,第4阶段的23个Block缩减至4个,每个Block内部为标准残差结构,包含3个卷积层。这两个阶段的通道数与卷积核大小均不变。改进后的网络的仍然采用5阶段方式,第1、2、5阶段的卷积核尺寸、通道数、Block数量均不变。所以,改进后的主干网络5个阶段共计68个卷积层,其结构见表1。

表1 Ring-Engine-Mask R-CNN主干网络结构表

针对待检测的两类卫星特征部位,Ring-Engine-Mask R-CNN中分类回归分支和Mask分支中的通道数均将Mask R-CNN的80修改为3,分别对应着背景(background)、星箭对接环和远地点发动机喷管。

对于每一张输入的图片,在第1阶段中,使用零填充和7×7的卷积核对其进行卷积运算,在这之后接有BatchNorm层进行归一化,ReLU层进行非线性激活,MaxPooling层进行池化。除第1阶段外,每个阶段都采用Block块的方式,Block数代表每一阶段中含有的残差结构模块数量,每一个Block包含3个卷积层,其后都跟随着一个BatchNorm层和ReLU激活层。其中每个Block的首端卷积层和末端卷积层采用的是1×1的卷积核,中间采用的是3×3的卷积核,这样做的目的是在保证网络精度的情况下降低网络的计算消耗,以第5阶段的第1个Block为例,首先通过1×1的卷积进行降维,将输入的降低为512维,然后是正常的3×3的卷积操作,最后通过1×1的卷积将维度提升至与shortcut对应上。

经主干网络计算得到的特征图经由RPN网络得到RoI,它与主干网络提取的特征图共同经由RoIAlign处理,RoIAlign使用双线性插值的方法,相比Faster R-CNN中的RoIPooling降低了由于像素无法对齐引起的误差。从RoI出来后分为两个分支,第一个分支经过一个卷积核为7×7,通道数为256的卷积,再经过两个1 024维的全连接层,完成目标的分类和边界框的回归;另一个分支经过多个3×3卷积层生成5个14×14×256的特征图,一个反卷积生成28×28×256的特征图,最终通过全连接层为每张图片生成Mask掩码,完成目标的实例分割。

2.2 损失函数设计

在Ring-Engine-Mask R-CNN中,损失函数由三部分组成,其损失函数具体为:

L=Lcls+Lbox+Lmask

(1)

其中:Lcls为多分类损失;Lbox为边界框损失;Lmask为掩码损失。

多分类损失Lcls和边界框损失Lbox这两部分与Faster R-CNN相同,分别用来预测目标的类别和进行边界框的回归。掩码损失Lmask即实例分割损失,使用平均二值交叉熵损失来定义,Mask分支对于每个RoI有个k*m2个输出,即k个类别数和每个类别所包含的分辨率为m*m的掩码,对于每一个像素,利用了sigmoid函数计算相对熵,最后得到平均相对熵误差,这里需要注意的是,由于掩码分支与分类回归分支共享一个RoI,所以对于一个确定RoI,在分类回归分支计算出其所属类别后,掩码分支就仅计算这一类分类的相对熵误差,并作为其误差值进行loss运算,这样做可以不需要去区分每一个像素属于哪一个类别,避免了类别竞争,最后通过与阈值0.5进行比较,最后生成二值掩码。

3 目标检测实验与结果分析

3.1 实验平台配置

本次实验平台选用台式计算机,其硬件环境配置为:CPU:i5-4750 3.2 GHz×4核心,GPU:NVDIA GeForce RTX2080s 8 GB,内存:8 GB。软件环境配置为:操作系统:Ubuntu 18.04.5LTS,编程语言:Python,网络框架:Keras + TensorFlow1,IDE:Jupyter Notebook。

3.2 实验方法及流程

图像采集及数据集的建立见前文内容。

这里用于训练完测试的图片也使用前述的图像采集方法,分别有实物图片及仿真模型图片。

为了提高模型的适应性,减少对标定数据的依赖,从侧面扩大数据集,使用迁移学习的方法,使用已经在COCO数据集上训练好的Mask R-CNN模型对网络进行初始化[19]。COCO数据集为微软推出的通用数据集,包含80个语义分割的类别[20],可以为网络提供一个较优的初始化结果。

Ring-Engine-Mask R-CNN实验流程如图7所示,其具体流程步骤如下:

图7 Ring-Engine-Mask R-CNN实验流程图

1)采集目标图像,制作两种目标的数据集,按6:2:2的比例将其分为训练集、验证集和测试集[21]。

2)搭建Ring-Engine-Mask R-CNN并配置软件环境。

3)使用COCO数据集对网络进行初始化,同时使用数据集进行Ring-Engine-Mask R-CNN的训练,经训练得到对应模型。

4)使用验证集对得到的模型进行验证,得检测及分割图像并计算mAP指标。

5)根据检测分割图片及mAP指标,重新进行(2)~(4)步,直到效果达到预期。

3.3 实验结果及分析

3.3.1 Ring-Engine-Mask R-CNN模型网络结构选择

为了得到较优的改进网络模型的性能,在实验开始前对Ring-Engine-Mask R-CNN模型的网结构进行了多次调优测试,使用平均交并比(mIoU,mean Intersection over Union),来评价模型的检测分割精度,测试的结果见表2。其中,改进模型1、2和原Mask R-CNN在阶段4拥有不同的Block数,其他阶段的Block数相同,可以看到改进模型1的的精确度较原模型有1.6%的提升。改进模型3、4在原Mask R-CNN基础上调整了阶段3的Block数,但模型3改进效果很小,模型4效果变差。改进模型5、6在改进模型1的基础上分别将阶段3改为2个Block和6个Block,其中改进模型5的精度出现下降,分析原因为该模型在阶段3模型使用2个Block未能充分提取训练集特征,而模型6的精度提高,较改进模型1提高了3%,较原Mask R-CNN提高了5.6%。综上,选用改进模型6作为Ring-Engine-Mask R-CNN的最终主干网络结构,其卷积层和全连接层共68层。

表2 Ring-Engine-Mask R-CNN网络参数调优

3.3.2 不同模型性能对比

为了比较Ring-Engine-Mask R-CNN模型与现有模型的性能差异,使用了制作的4 000个样本的数据集对改进模型和基于ResNet-101的Mask R-CNN进行训练。之后使用相同的测试图片在Ring-Engine-Mask R-CNN模型与Mask R-CNN模型进行检测与分割,结果如图8所示。

图8 两种网络模型检测分割结果比较图

由两种网络模型检测分割的结果图来看:Ring-Engine-Mask R-CNN模型与原版Mask R-CNN模型均可以正确地进行目标分类;在分割精度上Ring-Engine-Mask R-CNN模型优于原版Mask R-CNN模型,且在目标较大时,Ring-Engine-Mask R-CNN在两种目标图像轮廓接触处和轮廓角较锐利处拥有更高的精度。

本研究服务于空间在轨服务,目的是检测和分割卫星星箭对接环和远地点发动机喷管。使用环境为太空中的星载嵌入式系统,这必然对模型的大小,检测运算量和实时性有较高的要求,因此最后在这几个方面对两种模型进行性能比较,结果见表3。

表3 两种网络模型性能比较

本文算法模型相比于传统的Mask R-CNN网络,在检测分割精度上有5.6%的提升,说明了对于该场景下星箭对接环和发动机喷管的检测分割,网络结构不是越复杂越好,过深的网络的结构会导致网络分割性能的过拟合,不能很好的处理两种目标的边缘接触区的分割问题,同时还造成了运算资源的浪费。同时,也要适当增加网络中部分结构的卷积层数,这样可更好的提取图形的特征信息,能使分割精度进一步提高。改进的Ring-Engine-Mask R-CNN模型比原版Mask R-CNN体积缩小了27.2%,检测分割所用时间减少17.8%,同时,检测分割精度提高了5.6%,具有较好的效果。

4 结束语

本文提出了一种改进的卫星目标识别检测实例分割网络模型Ring-Engine-Mask R-CNN,可应用于空间在轨服务的目标航天器识别检测中,该网络模型在Mask R-CNN基础上改进了主干网络结构和分类回归、Mask分支通道数,以便更好的适应所需任务。

1)Ring-Engine-Mask R-CNN模型在测试集上均得了较好的效果,检测分割精度达到了91.2%,比Mask R-CNN在同样情况下的精度提高5.6%。相比于Mask R-CNN,在网络模型规模上缩小了27.2%,检测速度也提升17.8%。

2)改进模型对空间卫星目标检测性能较好,可用于空间在轨服务抵近停靠和抓捕控制阶段的卫星目标的识别检测。

猜你喜欢
卷积卫星图像
基于全卷积神经网络的猪背膘厚快速准确测定
基于图像处理与卷积神经网络的零件识别
摄像头连接器可提供360°视角图像
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
浅析p-V图像中的两个疑难问题
静止卫星派
Puma" suede shoes with a focus on the Product variables
名人语录的极简图像表达
What Would Happen If All Satellites Stopped Working? 假如卫星罢工一天