宋 灿,吴 谨,朱 磊,邓慧萍
(武汉科技大学 信息科学与工程学院,武汉 430081) (冶金自动化与检测技术教育部工程中心,武汉 430000)
国民经济的高速可持续发展,离不开能源这种基础物质.目前,人类获取能源的基本来源主要是化石,比如天然气、石油和煤炭等[1].因为化石能源的不可再生和巨大的污染性,改善能源结构就成了亟待解决的问题.太阳能因其环保安全可再生的特点,成为了优化能源结构和改善环境问题的一种可行办法[2].近年来,国民经济越来越大的能源需求,引起光伏产业的迅猛发展.太阳能光伏越来越广泛的应用,带来了统计和规划管理上的巨大挑战.由此,如何快速、准确地获取光伏面板的数量和分布状况,成为了一个极具经济价值的问题.
目前,通过遥感图像来获取光伏面板的面积是一个可行的方案.主要的解决思路是首先从遥感图像里分割出光伏面板,然后根据遥感图像的相关参数计算光伏面板的面积.现今,一些研究者已经提出了部分光伏面板[2-4]的分割算法.根据算法种类分,包含阈值[5]、边缘[6]、区域[7]和聚类[8]等方法.而根据图像种类分,目前的算法包含红外[9,10]和航空影像[11].这些方法大多是基于传统图像处理方法和非遥感图像的研究,而基于深度学习和遥感图像的光伏面板分割研究很少.
虽然光伏面板分割在深度学习方面的研究非常少,但是该任务作为语义分割的一种应用对象,可以将相关的算法[12-17]迁移过来.语义分割作为基本的图像处理任务之一,许多科研工作者已经对其进行了大量的研究.相关的研究包含以下几类:
1)通过金字塔的方式增强模型的多尺度分割能力[18];
2)通过带孔卷积或者跳跃连接增加网络的空间分辨率[19-21];
3)通过上下文相关性提升网络的分割性能[22-26].
这些相关工作都是针对卷积网络在语义分割上的相关问题来研究的.不同于图像分类,目标检测和语义分割所处理的目标在尺度上存在着很大的跨度,这种尺度上的差异性会影响网络的性能,因此准确检测多尺度目标可以有效提升网络性能,典型的研究比如PSPNet[18].语义分割可以看成是一个密集型的分类任务,既需要丰富的高层语义信息来进行像素分类,也需要足够的空间信息来达到逐像素的分割精度.卷积神经网络(Convolutional Neural Networks,CNN)能够提取鲁棒性非常好的高层语义特征,但是存在两个问题:1)经过多次卷积后,隐层特征容易出现扩散效应,导致目标边缘平滑,造成分割结果边缘模糊;2)在经过池化这种下采样操作后,通过简单的双线性插值进行上采样会丢失空间信息,影响像素级的分割精度,并且存在小目标丢失的风险.因此,很多科研工作者对此进行了研究.例如,CRFasRNN[22]通过递归神经网络(Recurrent Neural Networks,RNN)的方式把条件随机场(Conditional Random Fields,CRFs)嵌入到CNN的末端,引入像素间的相关性来缓解目标边界模糊的问题.HRNet[27]通过不断融合高低层特征的方式,获取具有高层语义特征的高分辨率网络来提升分割精度.UNet[28]通过跳跃连接直接把低层特征引入高层进行融合,以此补充高层特征的空间信息来提升网络性能.Deeplabv3[20]则是通过带孔卷积来替换池化层,以此避免池化层丢失空间分辨率的问题.此外,目前主流的CNN使用局部卷积作为基本模块,这种局部响应的方式虽然节省了计算量和存储空间,以及有效提升了网络性能,但是破坏了目标之间空间上的长依赖关系,难以获取长距离的上下文信息.因此,Wang等人[21]提出了非局部神经网络(Non-local Neural Networks),通过非局部的网络处理来获取长距离的依赖关系.此后,异步非局部神经网络(Asymmetric Non-local Neural Networks)[20]对此进行了改进,通过非对称的方式来降低计算量.DANet[25]则可以看做是非局部网络的一个特例,通过融合空间和通道维的依赖关系来提升网络性能.
针对以上3个方面的相关研究,本文设计了一个分割光伏面板的卷积神经网络.首先,以ResNet[29]作为骨干网络,抽取相对于输入图像原始分辨率的1/8、1/16和1/32这3个尺度的特征图,分别使用金字塔池化模块(Pyramid Pooling Module,PPM)[18]提取多尺度的特征,以此提升网络的多尺度性能.然后,使用异步融合非局部模块(Asymmetric Fusion Non-local Block,AFNB)融合长距离的依赖关系,获取上下文相关性信息来提升网络性能.最后,本文提出了一种自适应的上采样模块(Adaptive Upsample Module)和模糊融合策略.通过高分辨率的低层特征来自适应地学习采样系数,以此缓解池化操作带来的空间信息丢失现象,解决目标边缘模糊问题.
光伏面板分割作为一个二分类的语义分割任务,其模型设计可以借鉴常见的语义分割模型.由于卫星的高度变化范围广,容易导致光伏面板的尺度不一.因此,使用多尺度模型可以提升检测效果.受到PSPNet的启发,本文采用PPM模块来提取多尺度的特征,分别作用在ResNet50骨干网络的1/8、1/16和/1/32分辨率的特征层(如图 1所示).此外,目标之间存在着一定的相互关系,比如,密集的市区不可能出现大量的光伏面板,因此,融合全局的场景依赖关系能更准确的检测目标.为了降低计算量,将1/32分辨率的特征图作为全局场景信息,并使用AFNB模块分别融合到1/8、1/16和/1/32的特征图上.AFNB模块是一种局部和全局信息非对称处理的方式,全局信息通过金字塔池化进行降分辨率,而局部信息仍然使用高分辨率的特征图.这种方式在减少计算量的情况下也能保持不错的性能.
图1 系统框架图Fig.1 System framework diagram
神经网络在经过多次卷积和池化后会丢失空间信息.通过简单的双线性插值或者反卷积重构原始分辨率,并不能完全恢复原有信息.双线性插值可以看作是使用固定采样系数进行加权求和,而反卷积则是使用可学习的采样系数进行加权求和,这两种方式在每个像素点的采样系数都是相同的.而理想的情况是采样系数随着输入图像自适应的变化,当像素落在目标边缘时,如果该输入图像的像素与目标的特征更相似,则在目标一侧的采样系数应该要更大.而当像素落在目标中间或者是背景区域,则需要采样系数均衡一点.因此,使用双线性这种位置平均或者反卷积这种固定系数是不太合适的.为了解决这个问题本文提出了一种自适应上采样的方法,使用输入图像的函数来生成采样系数,通过像素特征间的相似性调整权重.
此外,在自适应上采样后,对跨尺度融合的方式进行了改进,即不采用常规的加权平均融合而采取最大值融合的方式.大多数的网络做跨尺度融合时,要么简单的直接相加,要么使用卷积融合,这两种方式都可以理解为加权求和.与此不同的是,本文直接取两者的最大值.使用这种融合方式的原因是:文中使用的模型会在3个尺度输出结果,可能在某个尺度上,模型无法判断某个区域是否属于前景还是背景.这种情况下,在该尺度上只要在前景和背景上都输出较小的值,就会被抑制.后续的网络和反向传播都不会产生影响,因此,这种模糊处理的方式可以避免网络发生无法判断时必须进行响应的现象.需要注意的是,为了训练更平稳,网络收敛更快,本文在AFNB的输出结果上添加了辅助损失.后续章节中,本文将对每个模块做详细的介绍.
遥感图像拍摄面积广,场景丰富,内容繁杂,林区,农田,城市,湖泊和山川等都囊括其中.卫星的高度变化和场景的多样性造成了目标和背景的尺度变化较大,需要网络具有良好的多尺度特征检测能力.因此,本文在模型设计中增加了多尺度结构,并且在每个尺度的特征图上使用金字塔池化[16]来进一步增强网络的多尺度性能.
池化操作能够增加网络的感受野,有利于检测大尺度的场景信息,但是会降低图像的空间分辨率,丢失图像的位置信息.因此本文使用PSPNet网络模型中金字塔池化的方式,融合多种尺度的池化操作进行处理.小尺度的池化能获取小场景和小目标的信息,具有较高的分辨率,大尺度的池化获取大尺度或者全局的场景信息,但分辨率较低.通过这种金字塔池化的方式,可以平衡处理尺度和分辨率,获取更好的分割结果.
本文的金字塔池化模块如图 2所示,与PSPNet原有结构不同的是,本文并不是输出固定尺寸的特征图,而是固定池化层的感受野生成对应尺寸的特征图.4个尺度的大小依次为9×9,7×7,5×5和3×3,而步长依次为5,4,3和2.这样设置的原因是在PSPNet中,只抽取了ResNet网络模型中1/32分辨率的特征图,而本文抽取了3个尺度的特征图,每个特征图负责对应尺度的结果预测.如果采用PSPNet的方式,在1/8和1/16分辨率这两个尺度上,与1/32分辨率相比,原始特征图和池化后的特征图之间会出现4倍的分辨率差异,这会导致在网络设计上尺度过渡不平滑.
图2 金字塔池化模块Fig.2 Pyramid pooling module
深度卷积神经网络是通过许多个局部卷积操作叠加而成的.在网络的最后一层使用全连接层或者是平均池化层来汇聚全局信息,这是一般分类网络的模型搭建方法.这类网络最后输出的特征图为1×1,也就是说,所有的特征都汇聚到了一点上.这种方式能有效地融合全局的信息,而语义分割网络通常会移除全连接层,或者将全连接层替换成参数相同的局部卷积[30].虽然这种处理方式成功地将分类网络转换成了可以做逐像素密集预测的语义分割网络,但是破坏了网络的全局特性,可能会使得网络丢失某些长距离的依赖关系[24,26].比如当两个目标分别位于左上角和右下角时,距离过远,网络的感受野不够就无法捕获到这种长距离的依赖关系,造成信息丢失.
在深度神经网络中,如何捕获长距离的依赖关系一直是一个比较重要的问题.对于序列数据,比如语音,文本和视频数据,通常使用递归操作来进行长距离的依赖关系建模.在此方面也出现了很多优秀的模型,如:递归神经网络(Recurrent Neural Network,CNN)[30],长短时记忆(Long Short Term Memory,LSTM)[31],门控递归单元(Gated Recurrent Units,GRU)[32].对于图像数据,长距离的依赖关系通过增大感受野来获取,常见的结构是通过深度网络来反复叠加卷积操作[33].卷积和递归操作都是用于处理局部信息的,因此,需要反复叠加才能增大网络的感受野,通过不断汇聚的方式融合长距离的信息.在语义分割网络中,由于没有全连接层汇聚全局信息,可能会造成网络的感受野不足以覆盖整个图像的问题.此外,当感受野足够大时,在距离较远的情况下,这种不断叠加汇聚的方式也会出现信息衰减和丢失的问题.因此,获取长距离的依赖关系,最好的方式是通过非局部操作,直接融入长距离的全局信息.
由于图像中经常会遇到这种场景之间的依赖关系,比如周围有高大的树木,会影响光照,附近就不太可能出现光伏面板.因此本文引入了非局部操作[24,34]来融合这种依赖关系,非局部操作可以抽象为:
(1)
这里x表示输入数据,可以是语音,文本,图像和视频等,y表示输出结果,数据维度与x相同.i和j表示数据的位置索引,可以为时间或者空间.如果输入数据是时间序列,则表示时间的索引,如果是图像,则表示二维平面上的空间位置.二元函数f用来计算输入数据x在位置i和j处的相关性,函数g则是输入数据x在i处的一个变换.通常来说,在图像数据里函数g被设置为一个1×1的卷积操作用来做线性变换.简单的讲,公式(1)可以看成对输入数据使用函数g处理后,在所有位置进行加权求和,加权系数为f(xi,xj).函数c(x)用于对处理后数据进行归一化.这个操作的非局部性体现在其对所有位置的输入数据都进行响应,而不是像卷积层只对邻近的局部数据进行响应.
值得注意的是,这种非局部操作与全连接层是不同的,全连接层的权值不依赖于输入数据,无法反应数据之间的相关性.而非局部操作的权值f(xi,xj)是输入数据x的函数,它的大小依赖于数据xi和xj之间的相关性,这种方式效果更好.一个典型的例子是,假定位置i处是光伏面板,而位置j处是城区,则两者之间的关系弱,权值就应该小一点,这种方式能体现处城区附近出现光伏面板的可能性低的特点.反之,如果位置i处是光伏面板,位置j处是乡村,则两者之间的相关性会比较大,乡村出现光伏面板的可能性比城区高,权值就应该更大些.因此,非全局操作能更准确地描述数据之间的依赖关系.
在实际的建模中,函数g一般设置为一个线性卷积,如式(2)所示:
g(xj)=Wgxj
(2)
上式中Wg是一个用于学习的权值矩阵.而函数f可以简单地选为一个高斯函数:
(3)
f(xi,xj)=eθ(xi)Tφ(xj)
(4)
上式中的核函数简单的取θ(xi)=Wθxi,φ(xj)=Wfxj,使用卷积操作来实现.此外,归一化函数C可以简单的表示为:
(5)
根据式(2),式(4)和式(5),式(1)可以表示为:
(6)
根据以上理论,可以得到图 3中的模型.函数θ,φ和g可以看做三个卷积(Conv模块),输出尺寸为C×H×W的特征图,C,H和W分别为特征图的通道数,高和宽.Reshape模块用于对特征图进行变形,其中N=H×C.整个结构中只有卷积模块,也就是函数θ,φ和g是可以进行学习的.
图3 非局部模块结构图Fig.3 Non-local block framework
图 3中的非局部模块有一个显著的缺点就是计算量大,主要原因是需要计算所有位置之间的相似度,这个时间复杂度是O(CN2).当特征图的尺寸较大时,N=H×W就会很大.因此异步融合非局部模块(AFNB)[26]对此进行了改进,使用金字塔池化对特征图进行了下采样.如图 4所示,在经过下采样进行降维后,时间复杂度变为了O(CNS),当S≪N时,就可以将计算量降为图像大小的线性级别.这种降低计算量的策略可以简单的理解为,使用低分辨率的特征图来融合长距离的依赖关系.这种处理方式是和人眼的视觉特性一致的,长距离的依赖关系可以看做是全局的信息,通过低分辨率的图像来获取.而在处理局部信息时,则会把目光聚集在关注的物体上,此时等价于对图像进行放大,高分辨率图像可以获取更丰富的细节信息.
图4 异步融合非局部模块Fig.4 Asymmetric fusion non-local block
在使用异步融合非局部模块时,本文结合所提出的模型,对融合结构进行了改进.如图 1所示,本文使用高层1/32分辨率的特征提供全局信息,而不是用对应分辨率的特征经过金字塔采样后作为全局信息.这样做的原因有两点,其一是1/32分辨率的特征图相比1/8和1/16特征图要小,计算量低,其二是1/32分辨率的特征图网络更深,语义更丰富.
光伏面板分割本质上是一个语义分割任务,它需要给图像的每一个像素预测一个标签.也就是说,这是一个逐像素的密集性预测任务.这种密集性预测任务相比于图像分类和目标检测更难,它对像素级的误差非常敏感,每一个像素预测错误都会直接影响到最终的分割精度.因此模型的设计要尽可能地减少各种操作产生的像素级误差.在这方面的工作有很多,典型的有CRFasRNN[22],将条件随机场概率图模型以递归神经网络的形式嵌入到深度学习网络中,获取图像像素之间的相关性来提升像素精度.UnpoolingNet[35]则是将上采样操作换成了Unpooling 操作,在前向传播过程中记录最大值池化操作中激活值的位置,以便在后续的上采样过程中,在对应位置激活,通过对齐激活值来提升网络精度.Deeplab[36]则是在网络的高层使用带孔卷积替换池化操作,避免池化操作造成的空间信息丢失的问题.
这些文章都是在解决CNN结构在语义分割任务中的固有问题.在语义分割网络中,想要对像素进行准确的分类,就需要大感受野的高层语义信息.但是,在感受野增加的过程中给像素级的精度带来了巨大的挑战.通常情况下,增大感受野方式有两种,卷积和池化.这两种方式都会增加像素分割的难度,卷积的扩散效应会造成特征图过于平滑,池化则在下采样过程中丢失了空间分辨率.不同于图像分类的是,语义分割这种逐像素预测问题,必然有一个上采样的过程.这种先下采样再上采样的结构必然会丢失空间信息,从而影响最终的像素级分割结果.
总的来说,语义分割网络分为两步,第一步是从高分辨率的输入图像提取低分辨率的高层信息,第二步是从低分辨率的高层信息中重构出高分辨率的分割结果.这也是大多数语义分割网络都由编码器(Encoder)和解码器(Decoder)构成的原因.编码器负责提取高层的语义信息,解码器重构逐像素的分割结果.对于卷积神经网络来说,提取高层的语义信息是相对容易的,比如图像分类.但是在编码器部分丢失了空间信息,难以生成高质量的、高分辨率的分割结果,这也是大多数语义分割网络目标边缘分割结果不好的原因.想要网络不丢失空间信息,最直观的做法是不进行下采样,但是这样会极大的增加计算量,使得计算资源难受承受.比如Deeplabv3模型,也只能在1/8分辨率以下的卷积层使用带孔卷积替换下采样操作.如果在整个网络都不使用下采样操作,计算量是难以承受的.
在无法避免下采样操作的情况下,提升分割精度就只能通过改进上采样操作.目前关于上采样的研究有很多,研究者们提出了很多超分辨率重构(Super-Resolution Reconstruction)[12,37,38]的方法.超分辨率重构用于将一幅低分辨率的图像转换的一幅高分辨率的图像.这种图像处理任务的输入数据只有低分辨率的图像.而语义分割任务输入的是高分辨率的图像,只是在提取高层语义信息的时候进行了降采样.因此,可以充分利用高分辨率的输入图像信息,自适应的生成采样系数,对低分辨率的高层语义信息进行上采样.这个处理策略可以抽象为:
(7)
式(7)中,x为输入图像,z为高层的语义信息,y为输出的采样结果,Tj(x)表示输入图像在x在位置j处的采样值.函数φ用于计算采样系数,表示的是输入图像中在i和j处像素之间的相似性,R(xi,x)用于归一化,取R(xi,x)=∑jφ(xi,Tj(x)).需要注意的是,x和z的分辨率不同,为了保证一致性,i和j的值都归一化到区间[0,1].公式(7)可以简单的理解为,根据输入图像的高分辨率结构信息提取采样系数,对低分辨率的语义信息进行上采样,也就是加权求和.模型中的采样系数是输入图像的函数,根据像素特征之间的相关性来生成采样系数.而双线性插值和反卷积的采样系数与输入图像无关,无法提取到高分辨率输入图像的结构信息,在任何位置的采样系数都是固定的.典型的缺点如双线性插值是一种对位置平均的结果,在目标边缘处会出现模糊现象.而自适应上采样是根据像素间的相似度求平均,相似度越高,权值越大.这种方式能更准确地体现像素间的相关性,让上采样的结果和输入图像在像素间的相关性保持一致.
根据上面的分析,具体的自适应上采样算法按如下的参数搭建模型.为了减少计算量,实际模型中并不对语义信息z在全图做加权平均,而是选取以位置i为中心的一个小窗口Wi.那么式(7)可以简化为:
(8)
对应的,R(xi,x)=∑j∈Wiφ(xi,Tj(x)).需要注意的是,Tj(x)并不是直接在输入图像x上进行采样,而是先对x做高斯平滑.这样做的目的是避免在图像相邻像素的值变化很大时,出现较大的采样误差.事实上,语义信息z的每个像素对应的是输入图像x中的一个区域,而不是单个像素,当两者分辨率相差越大时,区域的面积就越大.相比于使用单个像素的特征值作为该区域的特征,使用平均值更好.因此,在实际的计算中使用了高斯滤波来进行滑动平均.
φ用于计算两个像素之间的相似性,这个相似性度量采用双边滤波(Bilateral Filters)[39]类似的方法,使用高斯核函数进行计算:
φ(xi,xj)=e-‖xi-xj‖2
(9)
此外,为了体现各个特征的相对重要性,在式(9)中引入了对角矩阵Wφ作为一组可学习的参数:
φ(xi,xj)=e-(xi-xj)TWφ(xi-xj)
(10)
根据以上分析过程,自适应上采样模块可以有如下几部分组成(如图 5所示).Downsample表示高斯平滑和下采样,Unfold表示按照窗口W展开,SimilarityComputer代表相似度计算函数φ,Fold表示按照窗口W重构成大小为x的高分辨率语义信息特征图.
图5 自适应上采样模块Fig.5 Adaptive upsample module
本文的实验数据为资源3号(ZY-3)和高分1号(GF-1)卫星拍摄的遥感图片.这两颗卫星是我国的高分图像获取卫星,精度约为2m.由于遥感图像的大量区域都是背景,因此,在训练之前对标记数据做了简单的清洗:根据光伏面板和背景的分布情况进行了简单的筛选,保证前景和背景的比例约为1:3,以此避免训练失衡.此外,为了方便训练,将遥感图像裁剪成了768×768的小图片,训练时每次从小图片中随机裁剪出256×256的小块作为输入数据.
为了验证本文算法的有效性,与3种较新的算法(UNet[26],PSPNet[16],Deeplabv3[27])进行了比较.优化方法使用Adam[40],batchsize设为4.训练过程中对数据做了增强处理,包括平滑,添加高斯噪声,在HSV空间对亮度和饱和度添加随机噪声等.
6.3.1 交并比(IoU)
交并比是一个在语义分割任务中广泛使用的评价指标,描述的是分割正确的像素所占的比例.该评价指标是一个尺度不变的评价指标[41],不同尺度的目标在最终的评估中所占的比例是相同的.交并比定义为是前景目标的预测值和真实值的交集与并集之比:
(11)
6.3.2 准确率,召回率和F-Measure
准确率和召回率衡量的是模型的查准率和查全率.在常见的语义分割评价指标中,常用交并比来进行评价.比如道路场景分割,评价指标能较好的描述目标分割的准确程度,因此使用IoU是比较好的一种选择.但是在光伏面板分割的任务中,同一块前景区域可能被分割到几个小图像,使用交并比就不是很准确.因此,在对比结果中增加了准确率,召回率和F-Measure这3个评价指标.F-Measure表示的是准确率和召回率的加权调和,衡量的是两者的综合影响.计算方法如式(12)-式(14)所示:
(12)
(13)
(14)
式中Precision,Recall和Fα分别代表准确率,召回率和F-Measure.α表示调和系数,用于平衡准确率和召回率,一般取α2=0.3.
实验结果如表1所示,本文提出的方法在IoU,Precision和F-Measure上都取得了最优的结果.仅在Recall指标上略低于Unet,但是Unet的精度偏低,说明Unet将更多的背景误判成了前景,误检率高.F-Measure作为一个平衡精度和召回率的方法,能更好的描述模型的性能.而本文提出的方法在F-Measure这一指标上比UNet更好,总的来说,本文的方法取得了更好的结果.IoU作为一种尺度不变的衡量指标,对于各种尺度目标的评价都具有一定稳定性.而本文的模型在IoU指标上表现的更好,说明模型对所有尺度的目标整体检测效果更好.
表1 实验结果对比Table 1 Comparison of experiments results
本文设计了一个多尺度的光伏面板分割模型,引入了非局部模块来融合全局信息进行预测,并提出了一种自适应上采样的方法来优化目标的边缘.实验结果表明,相比于一些较新的算法,本文的模型取得了更好的分割结果.在IoU,精度和F-Measure指标都取得了最优的结果.