苏 浩,丁 胜,3,章超华
(1.武汉科技大学计算机科学与技术学院,湖北 武汉 430065;2.智能信息处理与实时工业系统湖北省重点实验室(武汉科技大学),湖北 武汉 430065;3.福建省大数据管理新技术与知识工程重点实验室(泉州师范大学),福建 泉州 362000)
遥感图像具有宏观、综合、实时、动态、快速等特点,为地球资源调查与开发、国土整治、环境监测以及全球性研究,提供了新的手段[1]。船只目标自动检测技术是遥感图像智能解译领域的重要研究方向之一。船只作为一类重要的军事和民用地物目标,其检测识别技术在国防安全、海洋经济、水上交通安全和应急救援等方面具有重要的应用。
近年来,深度学习在图像识别领域发展迅速[2],其通过多层网络直接对图像卷积和池化操作来提取图像本质特征,在目标检测领域有突出的优势。特别是卷积神经网络(Convolutional Neural Networks, CNN)的出现,为图像特征提取带来全新的解决方法。卷积神经网络不需要人为设计参数,会根据海量数据和标注对数据集自行进行有效特征提取和学习[3-4]。在训练数据充足的条件下,模型具有良好的泛化能力,能够在复杂多变的背景下依然保持良好的鲁棒性[5]。因此,卷积神经网络模型已被广泛应用于图像目标检测与识别领域,并且将其用于遥感图像的检测任务也是目前研究的热点。
目标检测任务按照框架不同可以分为2类:两阶段检测算法与单阶段检测算法。两阶段检测算法首先通过区域候选网络(Region Proposal Network, RPN)生成区域推荐框,再对其进行进一步分类与回归操作[6]。比较典型的算法有Fast-RCNN[7]、Faster-RCNN[8],以及在其基础上改进的Mask-RCNN[9]等。单阶段检测算法一般通过卷积神经生成特征图,然后直接通过特征图计算出物体的位置信息与类别信息,具有代表性的算法有YOLO[10]和SSD[11]等。
通常认为,两阶段检测算法相当于对物体做了2次位置预测,具有更高的精度但是耗时过长,而单阶段检测器速度较快但精度稍显逊色。
绝大多数检测器的检测方法都是以多个不同大小比例的锚框(Anchor)作为物体定位的参考点,检测效果一定程度上取决于预选Anchor的好坏程度,同时也增加了网络的计算消耗。
2018年,Law等人[12]提出了CornerNet算法,它将目标检测问题当做关键点检测问题来解决,通过检测目标框的左上角和右下角2个关键点得到预测框,因此CornerNet算法中没有锚框(Anchor)的概念,这种做法在目标检测领域是比较创新的,且能够取得不错效果是很难的。
从CornerNet开始,基于锚框的Anchor-Free类的检测算法层出不穷[13-16],随后达到了井喷的状态,意味着目标检测迈入了Anchor-Free时代。它凭借着简单直观的构造和优秀的检测性能受到了工业界的青睐,也是目标检测近年来重要的研究方向之一[17]。
2019年,Zhou等人[18]提出了CenterNet算法,其借鉴CornerNet的思想,将检测任务建模为对物体的中心点检测,检测精度与速度较主流两阶段和单阶段检测算法有不少提升。因其结构简单、功能强大,亦可用于人体姿态估计[19]和3D目标检测,迅速在目标检测领域引起了广泛讨论。
与通常从水平视角拍摄的自然图像不同,遥感影像通常采用鸟瞰视角拍摄,这意味着图像中的物体始终是具有任意方向的。特别是当在遥感影像中检测密集的物体时,用于普通目标检测的水平边界框的方法经常与横纵比较大的车辆、船只等物体不匹配,这将导致最终目标分类置信度和定位精度之间存在偏差[20]。而输出具有方向性的旋转边界框的目标检测方法能较好地改进这个问题。因此,研究使用输出旋转边界框的目标检测框架用于遥感目标检测具有十分重要的意义。
2017年,Ma等人[21]在Faster-RCNN的基础上提出了旋转区域候选网络(Rotation Region Proposal Networks, RRPN),可以生成具有方向角信息的倾斜候选框,用于检测自然场景中任意方向的文本信息。该算法在RPN网络采用旋转anchor生成具有方向参数的建议区域(Rotation Region-Of-Interest, RROI),并提出了RROI池化层,能将具有方向角度的建议区域映射到特征图上,实现能输出旋转候选框的目标检测框架。随后,Jiang等人[22]提出了旋转区域卷积神经网络(Rotational Region CNN, R2CNN),在RRPN的基础上修改了角度参数的表示方法,舍去了旋转anchor以精简网络参数,并且在池化层根据待检测目标横纵比较大的特性,额外添加了3×11和11×3这2种池化尺寸,最后在全连接层中保留水平边界框的预测支路,进一步提升了网络的性能。
旋转框目标检测框算法在一些遥感数据集[23]中取得了较好的结果,但适用于该框架的数据集标注相比普通的输出水平边界框算法增加了用于表示方向的参数。目前仍然有遥感数据集仅有水平边界框标注,无法直接适用于旋转框目标检测框架。若重新手动为其标注适用于旋转框检测的标签,则存在工作量较大、成本较高等问题。
针对上述问题,本文在CenterNet的基础上加入旋转角度预测分支,使其成为旋转框目标检测器,本文将其命名为CenterNet-R,用于遥感图像中的船只目标检测,并提出一种主动迁移学习方法,在仅有水平框标注的遥感图像数据集上,完成能检测海上任意方向船只目标的学习任务。
CenterNet是Zhou等人[18]在2019年提出的单阶段Anchor-Free目标检测器,其在CornerNet角点检测器的基础上发展而来。其思路是将待检测目标建模为一个点对象,通过提取网络最后的热力图上的峰值点来得到目标的中心点,并且同时回归出物体的边框大小等信息。它的特点是结构简单且性能优异。
一般的水平框目标检测算法采用x,y,w,h这4个值表示水平候选框,即矩形边框的中心点的坐标、框宽度与高度,通过这4个参数很容易计算水平框各个顶点的坐标。
在本文中,使用x,y,w,h,θ这5个值代表旋转框,其分别为旋转框中心点的横纵坐标、框的宽度、高度和旋转角度。旋转角度θ定义为将水平轴沿逆时针方向旋转,相对于矩形遇到的第一条边所旋转的角度,同时将此边定义为宽w,另一条边定义为高h,如图1所示。为了符合一般性的表述,本文作如下处理:如果w的值小于h的值,那么交换w与h的值,并将θ的值在原描述上加上90°,即:
图1 旋转框角度定义
(1)
对于旋转框在水平位置处的采样点坐标(xh,yh),可由如下公式将其转换为旋转框中的坐标(x,y):
(2)
其中,cx与cy分别为中心点的横纵坐标。
CenterNet-R可分为特征提取网络和检测头2个部分。特征提取网络可使用残差网络(Residual)、深层聚合网络(Deep Layer Aggregation, DLA)或者沙漏网络(Hourglass,HG)[24]等不同结构,其中沙漏网络精度最高但速度较慢。特征提取网络将输出的特征图送入检测头部,网络会在每个位置输出85个值,所有输出共享一个全卷积的Backbone。网络结构如图2所示,将一张图片输入到特征提取网络后,得到一张特征图。然后在特征图上作4个分支预测,分别是关键点预测、中心点偏移预测、目标尺寸预测和旋转角度预测,最后通过解码得到目标的分类与位置信息。网络最后的热力图对原图做了4倍下采样,大小为128×128,一共有85维。其中80维(与参考文献[18]设置相同)用于分类预测和中心点预测,每一维代表一个分类,每一张热力图上的峰值点即代表该类物体预测的中心点。剩下的5维即代表中心点的偏移、尺寸大小和旋转角度。
图2 CenterNet-R网络结构
在深度学习中,决定网络性能好坏的主要因素就是特征的好坏。对于目标检测一般而言,较浅的网络具有丰富的位置信息;网络越深,提取的特征就越抽象,语义信息也就越丰富。在本文的旋转框检测器中,为了追求精度,使用的特征提取网络是沙漏网络Hourglass-104。沙漏网络结构最初用于人体姿态估计任务,随着技术的发展,研究者们证实该网络模型在目标检测任务中也具有较高的精度[12,18],但仍具有速度较慢的缺点。该网络为全卷积网络,重复使用自底向上和自顶向下的多尺度特征信息,并联合多个中间结果的监督机制,来提高特征的精细程度。沙漏块是其主要组成部分,可以进行堆叠串联,其结构如图3所示。每一个沙漏块包含数个连接通路,负责把两端的特征融合。融合方式是在沙漏两端取出大小与通道完全相同的特征图进行融合,融合方式为“⊕”,即通道拼接(concatenate)操作。
图3 沙漏块结构
(3)
其中,px和py分别是中心点p的横纵坐标,δp是标准差,与目标的长宽相关。每个类别C单独使用一个通道,如果同类别高斯分布产生重叠,取最大值。
网络的损失函数包含4个部分,分别是热力图中心点损失Lk、物体长宽预测损失Lsize、中心点偏移损失Loff和旋转角度损失Lang,即:
Ldet=Lk+λsizeLsize+λoffLoff+λangLang
(4)
中心点损失是对Focal Loss[25]的改写,用来均衡难易样本和正负样本,其公式为:
(5)
物体长宽损失采用的L1 loss公式为:
(6)
(7)
旋转角度损失同样采用L1 loss,公式为:
(8)
λsize、λoff与λang为常数因子,在本文中均设为0.1。
迁移学习是机器学习领域用于解决标记数据难获取的这一基础问题的重要手段,其目的在于将已有的知识恰当地引入到新领域中。迁移学习的形式化定义为:给定一个源域DS和源域上的学习任务TS,目标域DT和目标域上的学习任务TT,利用DS和TS学习在目标域上的预测函数f(•),限制条件为DS≠DT或TS≠TT。
在基于深度学习的目标检测领域中,机器学习一直面临着可用样本不足等问题。大多数情况下,标签数据的获取成本很高,而未标记的数据则很容易获取且数量众多[26]。在真实的数据分析场景中,数据标注的代价通常较大。因此为了尽可能减少标注成本,在机器学习领域中,本文提出主动学习(active learning)方法。主动学习的过程可表示为:给定已标注的数据集L(初始可能为空)、未标注的数据集U和一组或一个分类器C,通过查询函数Q从未标注的样本池U中查询信息,并存在督导者S可为U中样本标注正确的标签。学习者通过少量初始标记样本L开始学习,通过一定的查询函数Q选择一个或一批最有用的样本,并向督导者S询问标签,然后利用获得的新知识来训练分类器和进行下一轮查询。主动学习是一个循环的过程,直至达到某一停止准则为止。
本文需要迁移的数据是2017年CCF大数据与计算智能大赛(BDCI)主办方方一信息科技公司提供的海上船只图像,图像共有货船、游艇、游轮等3类船只目标,其包含水平框标注的训练样本共有13668张。中间数据集采用由旋转框标注的大型公开数据DOTA[23]数据集。该数据集包含不同传感器和设备采集的2806张图像,选取其中一半的图像作为训练集,1/6的图像为验证集,1/3的图像作为测试集,其中测试集标注不公开,含有各种尺度、方向和形状的遥感目标。标注目标有飞机、棒球场、桥梁、田径场、小型车辆、大型车辆、船舶、网球场、篮球场、储油罐、足球场、环形车道、港口、游泳池和直升机15个目标。
在本文中,源域DS为包含船只目标及其水平框标签的遥感图像数据集,目标域DT为同一遥感图像数据集,其标签信息为旋转框标签;目标域上的学习任务TT为在该数据集上习得能输出旋转框的包含细类分类的船只目标检测方法。
本文采用主动学习的方法,初始状态将DOTA作为已标注的数据集L,而目标数据集BDCI为未标注的数据集U,分类器C为CenterNet-R神经网络,下文所提出的约束筛选算法为监督者S。
本文方法总体结构如图4所示。该方法首先采用CenterNet-R旋转框目标检测算法在中间数据集上训练出检测模型,使其能识别船只,充当查询函数Q。然后使用该模型直接对原始数据集BDCI进行检测,只保留船只类目标的预测结果。
图4 方法框架
由于数据集不同,因此该模型直接检测精度较低,但是仍有少量图片具有较好的检测效果。接下来结合原始数据集的水平框真实标签使用水平框-旋转框约束筛选算法,筛选出检测效果较好的图片及其对应的旋转框标签,将其加入L集合中,继续训练网络。再次训练后的模型,精度会有所提升,也能输出更多符合要求的图片及其对应的旋转框标签。然后重复图4的过程②~过程⑤,直至筛选出原始数据集中绝大多数符合要求的图片及其旋转框标签。即使待检测的图片数据包含部分训练集样本,模型也难以达到百分之百的准确率。对于还剩下的少量图片,可由人工手动标注。最后,对处理完成的图片,结合原始数据集的真实标签,使用类别匹配算法,将“船只”这一粗类目标替换为“货船”“游艇”“游轮”等细类分类目标,完成对数据集的旋转框标签标注任务。
迁移学习的核心在于选择合适的源任务添加进训练集中[27]。本文提出的筛选算法在主动学习过程中扮演督导者的角色,旨在筛选出检测效果最接近地面真值(Ground Truth)的图片加入训练集。在迭代过程中,对于每个目标,检测网络输出的预测框和真实框的可能偏移情况如图5所示,椭圆代表船只目标,实线矩形为水平框地面真值,虚线矩形为旋转预测框。由于无法获取旋转框地面真值,因此只能根据水平框地面真值坐标对预测框进行约束。
图5 旋转框预测偏移
图5(b)为预测框位置信息偏移过大的情况,首先可通过预测框中点坐标与水平真值框中点坐标的欧氏距离△d1进行判别。图5(c)为预测框中心点位置信息正确,但旋转角度与待检测目标偏移过大。理想情况下旋转框的旋转角度值应与水平真值框的对角线的旋转角度值接近,因此可通过旋转框相对水平坐标的倾斜角度θp与水平真值框的对角线倾斜角度θg的差值Δθ进行判别。在中心点偏移和角度偏移符合要求的情况下,预测框还可能出现过长、过短、过宽或者过窄等情况。从图5(a)可以看出,理想情况下旋转框的短边应与水平框的对应顶点较为接近。由于对称特性,在中心点匹配的情况下可以通过计算短边中点坐标Mp与其对应水平真值框顶点Vg的最小欧氏距离△d2进行判断,当一个中点接近真实水平框顶点时,另一边也不会产生偏移过大的情况。由于船只目标具有横纵比较大的特性,对于预测框宽度偏移的情况,在其长度确定的情况下可通过其宽wp与长hp的比值r来进行约束,使其不会产生过大的偏差。图6展示了筛选结果,其中水平边界框为Ground-Truth,旋转边界框为预测框。
图6 筛选效果
具体算法如算法1所示。
算法1 水平框-旋转框约束筛选过程
输入:图像与其对应水平真值框坐标集合S,旋转预测框坐标集合P
输出:图像与其对应的精确的旋转框坐标集合D
1.FOR数据集每张图片DO
2.计算图片的真实船只目标数量ng,检测船只目标数量np
3.IFnp>=ngDO
4.将水平真实框坐标与旋转预测框坐标按照中心点欧氏距离最近原则一一对应,舍去多余的未与水平真实框坐标对应的预测框坐标。
5.i=0
6.FOR图片中的每个目标DO
7.IF △d1
8.IF |θp-θg|<αDO
9.IF△d2
11.i+=1
12.IFi==ngDO
13.将该图片与旋转框坐标加入集合D。
14.returnD
对于算法中各个参数的选取,本文从原始数据集中每个类别随机选取100个目标手动测量其宽的值和高与宽的比值作为参考,结果如图7和图8所示。
图7 船只目标宽度
图8 船只目标高与宽的比值
从图7和图8可以看出数据集中的小目标特别是游艇类小目标长度较短,但宽与长的比值较货船和游轮类目标大。本文以预测宽度为125 px作为大目标与小目标的分界点,对大小目标的筛选要求不同,具体参数如表1所示。
表1 筛选算法参数选取
训练所使用的中间数据集只有“船只”这一粗类目标,但原始数据集中船包含“货船”“游艇”“游轮”等细类船只目标,在获取完数据集目标的精确坐标信息后,需要将目标的坐标信息与其对应的细类类别进行匹配,才能完成最终的数据集标签迁移任务。由于在筛选过程中已经完成预测框与真实框的中心点的配对,只需将地面真值的细类别分类分配给中心点对应的预测框,即可完成对图片的自动化标注,过程如图9所示。
图9 类别匹配示意图
本文实验所使用的设备是64位Ubuntu 16.04.6 LTS操作系统的服务器,CPU型号为Intel Xeon E5-2683 v3,GPU型号为NVIDIA GeForce GTX2080Ti,显存为12 GB。软件配置为Cuda 10.0和Cudnn 7.5.0。使用深度学习框架为Pytorch 1.2.0版本,编程语言为Python 3.6.6。
BDCI数据集分为清晰和非清晰2种场景,非清晰场景主要干扰为云、雨、雾等,图像分辨率为1024×1024。该数据集所有图片均使用文献[28]的方法进行清晰筛选与去雾处理。对于DOTA数据集,图像分辨率范围是800×800到4000×4000,为降低resize对高分辨率图像中小目标的影响,在训练时采用类似滑动窗口的方法,统一将所有图像裁剪为512×512的子图像,重叠为256 px。
本文实验训练采用512×512分辨率作为图像输入。训练采用Adam优化器,BatchSize设置为16,初始学习率设置为0.000125。总训练轮数为50个epochs,每训练10个epochs将学习率降低至原来的0.1倍。
本文的迭代实验结果如表2所示。
表2 迭代结果
从表2可以看出,在第0次迭代,也就是训练集仅包含中间数据集DOTA时,直接对BDCI数据集检测的精度非常低,仅有8.61%的背景简单、目标单一的图片符合要求。在将少量源任务的图片加入训练集后(第1次迭代),检测精度获得明显的提升,符合筛选条件的图片达到3196张。在训练集获取足够的样本,即第2次迭代后,检测精度再一次提升,符合条件的图片达8891张。由于原始水平框标签本身标注不够精准,且筛选算法存在误差和检测器性能等原因,仅能对简单场景下的图像完成筛选,对于一些复杂场景的图像识别精度和筛选效率还不够高,所以在迭代3次后就逐渐达到了瓶颈值。但得益于卷积神经网络强大的特征提取能力,即使在部分旋转框标注存在误差的条件下,依然能准确预测半数以上的数据集图像。本文最终迭代5次,对源数据集13668张图片中的8965张进行了旋转框自动化标注工作。
为了验证文本自动化标注的旋转框的有效性,本文将标注完成的8950张图片作为训练集,使用预训练模型重新进行训练。在剩余的未标注的4718张图片中随机选取1000张作为验证集,1000张作为测试集,人工手动为其标注旋转框标签,以验证模型的精度。训练的损失曲线如图10所示。
从图10可以看出loss在不断震荡后,最终约在训练42个epochs后收敛。图11为该模型的检测效果展示。
图10 训练损失函数
图11 CenterNet-R检测效果展示
本文使用mAP(mean Average Precision)对模型识别精度进行定量评价,mAP值越大说明网络的性能越好。在计算mAP时,会计算预测坐标与真实坐标的IOU值,大于某一阈值时则认为检测结果正确,反之为错误结果。IOU代表预测框和真实框的交并比,即:
本文选择的IOU阈值为0.5,也是旋转框目标检测器的常用设置。mAP的计算公式为:
(9)
其中,n是目标类别数,AP是每个类别的平均精度,即召回率-准确率曲线下所包围的面积。召回率计算公式为:
(10)
其中,M为预测正确目标个数,K为数据集该类目标的总个数。
准确率计算公式为:
(11)
其中,M为预测正确目标个数,N为模型检测出该类目标的总个数。
除CenterNet-R实验外,本文还将该部分数据集与其他常用深度学习检测算法对比,结果如表3所示。其中HBB(Horizontal Bounding Box)表示水平框检测器,OBB(Oriented Bounding Box)表示旋转框检测器。
表3 检测精度对比
从检测结果可以看出本文的旋转框检测器CenterNet-R模型在测试集上的精度明显优于其他旋转框检测器,AP50达到了90.41%。图12展示了CenterNet-R与R2CNN的检测效果对比,可以看出,相比于R2CNN检测器,CenterNet-R得益于沙漏网络的多尺度特征提取能力,对游艇类小目标的检测更具有优势。同时CenterNet的水平框检测精度也比其他检测器较优,且旋转框检测器仅比水平框检测器低了1.24个百分点。这些检测结果说明文本的方法可以有效地应用于海上船只目标检测任务中,大大节省了人工重新标注旋转框标签的成本,并可进一步用于探究对船只目标航行方向的预测。
图12 检测结果对比
本文在常规的Anchor-Free单阶段目标检测器CenterNet上额外添加了预测旋转角度的分支,使其成为旋转框目标检测器,且在遥感图像的检测任务中精度优于其他旋转框目标检测算法。同时提出了一种主动迁移学习的自动化标注方法,在仅有水平框标注的遥感船只数据集上,完成了对海上任意方向船只目标的旋转框检测任务,节省了人工重新标注标签信息的成本,具有一定的工业应用前景。但本文方法仍然存在检测器速度较慢和筛选方法不够完善等问题。下一步会在提升网络速度和将迁移方法应用到其他目标检测领域这2个方面进行更深入的研究。