APP下载

SENet优化的Deeplabv3+淡水鱼体语义分割*

2021-03-30王红君季晓宇赵辉岳有军

中国农机化学报 2021年2期
关键词:淡水鱼网络结构语义

王红君,季晓宇,赵辉, 2,岳有军

(1. 天津理工大学电气电子工程学院,天津市,300384; 2. 天津农学院工程技术学院,天津市,300392)

0 引言

语义分割能实现采集到的图像中每一个像素值的推断,从而为每个细粒度的像素值打上语义标签。随着不断的发展,语义分割已成为计算机视觉研究的重要方向之一,并应用于淡水鱼目标快速识别与检测领域[1]。

传统的目标检测方法包含选择区域、提取特征、分类器分类、定位目标等几个步骤[2]。基于学习方式的提取特征方法主要有边缘检测及阈值分割,如Otsu的基于最大类间方差阈值分割方法[3]和Canny的基于双阈值处理和边缘追踪的边缘检测算法[4],手工提取的特征包括纹理、颜色、形状等,之后再通过SVM、AdaBoost、神经网络等方法训练分类器用来实现目标检测[5-6]。以往这些方法虽然参数的数量很少同时检测难易程度很低,但是提取的特征较难表征其中蕴含的深层像素信息,导致目标检测的结果与真实任务要求相距甚远。

随着人工神经网络(ANN)[7]与计算机技术的逐渐进步,不断改进的算法优化,深度学习的神经网络潜力,深度学习方法[8]在目标像素级的语义分割技术中也获得了巨大进步。鉴于此,本文提出了基于SENet[9]优化的Deeplabv3+淡水鱼体各部分语义分割模型[10],利用Deeplabv3+中的空洞卷积提取图像语义特征,实现增大感受野,减少池化或下采样过程中丢失的淡水鱼边缘等细节信息,添加的空洞空间金字塔池化(ASPP)[11]结构进行多尺度特征融合,捕获图像上下文信息,逐步精细化分割结果,引入SENet到网络结构中,增强网络对特征维度的信息通道选择能力,降低识别错误率,优化网络性能,实现淡水鱼头、腹、鳍更加精细语义分割结果。

1 分割算法流程与Deeplabv3+网络

1.1 鱼体分割算法流程

本文提出的淡水鱼体语义分割方法主要是利用了SENet网络能够合理利用特征通道,进而实现Deeplabv3+网络的进一步优化。首先图像采集并扩充数据,然后样本标签标定采用的是labelme软件,完成淡水鱼数据集建立,再将完整数据集输入到改进后的鱼体分割网络完成任务训练,当损失值趋近于收敛时刻,采取停止训练。在最终的分割过程中,用验证集来评估语义分割效果,流程如图1所示。

图1 鱼体分割算法流程图Fig. 1 Fish body segmentation algorithm flowchart

1.2 Deeplabv3+网络

在2014年Long等将传统卷积神经网络(CNN)中全连接层取代为一个个的卷积层搭建成全卷积神经网络(FCN),实现了对图像每个像素级别的分类,由此开启了卷积神经网络应用于语义分割的先河。目前,基于深度学习的语义分割方法有:(1)利用完全卷积网络(Fully Convolutional Networks)来修改原先的具有全连接层的分类网络(例如AlexNet,VGG,GoogleNet),从而创建微调后的语义分割网络[12];(2)U-Net网络结构中的收缩路径(contracting path)使用池化层逐渐缩小空间尺寸,不断地下采样实现上下文有效信息的获取,而扩张路径(expansive path)通过利用反卷积操作恢复对象细节和空间尺寸用以实现精确定位的目的。同时扩张路径与收缩路径同一级别特征图采用横向连接信息这一方式,有利于扩张路径能够更好地恢复物体的细节特征[13];(3)Deeplabv3+语义分割算法是在以往Deeplabv1-v3的内容上不断推广衍变而来,首先Deeplabv1[14]中的卷积操作带有孔洞,实现下采样和池化的减少,网络的感受野得以增大,使得特征图变得更加密集。全连接CRF操作的采用,增加了对象分割精度,然而在处理多尺度分割对象时会存在一定的能力局限性。为克服上述提到的困难,Deeplabv2[15]在v1的结构上采用空洞空间金字塔池化(ASPP)的操作,将输入的特征图利用采样率不同的空洞卷积完成相应的卷积过程,实现多尺度获取图像信息中的上下文内容。但是当ASPP操作中3×3卷积核扩张率逐渐增大,3×3卷积将形成为1×1卷积,为克服此问题并实现整个图像中的全部信息内容的整合,Deeplabv3[16]把ASPP操作中3×3卷积核数量修改为3个,每一个卷积核的扩张率分别为{6,12,18},同时新引入了一个全局平均池化,来克服不断下采样导致细节信息逐渐丢失以及图像分辨率降低的问题。同时,在计算量不增加的情况下使每个输出卷积都包含信息的范围较大,增大了感受野,提高了目标的语义分割的速度,且识别精度进一步提升,并且对图像中的较小以及较薄的鱼鳍目标仍有显著的语义分割效果。由于ASPP中包含了浅层特征,即对象位置的内容,因此v3删除了CRF全连接。Deeplabv3+总结了上述几种语义分割算法的部分优势,伴随着该网络的不断加深,骨干网络由原先的残差网络(ResNet)替换为深度可分离卷积(Xception)[17],模型计算的参数量减少了,编码和解码内容的增加,使特征图上采样过程中汇聚了低层特征,有利于对象边界信息优化,同时恢复特征内容使用线性插值方法,实现了网络分割精度进一步的提高。Deeplabv3+模型结构如图2所示。

图2 Deeplabv3+网络结构Fig. 2 Deeplabv3+ network structure

1.3 SENet模块

SENet网络结构利用不同通道特征之间的依赖性,促使网络对处理特征的挑选和删除性能不断提高,它由Squeeze、Excitation和Reweight构成其网络结构,如图3所示。整个过程为:①Squeeze操作,利用全局平均池化使单个通道的特征层被池化成具体的一个数据;②Excitation操作,通过赋值操作,赋予两层全连接层各自一个权重值,来构建不同通道互相之间的依赖性;③Reweight操作,通过Sigmoid函数归一化权重使之能够归一化为0~1的范围,最后对每个通道进行乘法运算促使权值加权到原先特征上。其映射关系如式(1)~式(3)所示。

(1)

s=Fe x(z,W)

=σ(g(z,W))=σ(W2δ(W1,z))

(2)

xc=Fscale(uc,s)=sc·uc

(3)

其中,uc代表每一个特征通道,W1和W2为全连接操作的权重,全连接之间使用激活函数δ(ReLU)来进行非线性处理,最后通过归一化函数σ(Sigmoid)来输出权重向量,并与原特征图对应进行乘法操作。

图3 SENet模块结构Fig. 3 SENet module structure

1.4 Deeplabv3+的优化

Deeplabv3+的骨干网络DCNN使用Xception作为基网络,如图4所示。网络不断的进行下采样以及池化操作,使网络的特征维度通道从64、128、256、728、1 024、1 536、2 048逐渐增大,伴随着特征通道数的增加,每层的特征计算量急剧上升,然而这些特征通道中包含大量无效的特征维度信息,导致在大量运算过程中淡水鱼识别网络出现准确度、性能、参数利用率降低的问题。

图4 淡水鱼体语义分割中的基网络Fig. 4 Base network in semantic segmentation of freshwater fish

针对此问题,通过SENet结构利用不同通道的依赖性,促使分割网络提高对淡水鱼特征的挑选和删除性能,实现优化语义分割结果,提高各部位准确率,增强参数利用率的目的,嵌入SENet的卷积模块的结构如图5所示。由于Xception中含有skip-connections的模块,在Addition前首先对分支上Xception的特征实现重标定特征的操作。如果是对Addition后的主支位置上特征进行重标定特征操作,由于存在0~1的Scale操作流程在主干上,在比较深的网络结构BP优化时就会在靠近输入层位置极易出现梯度弥散的问题,使得难以优化模型。

图5 嵌入SENet的卷积模块Fig. 5 Convolution module embedded in SENet

2 试验结果分析

下述对优化后的Deeplabv3+语义分割算法进行了结论性验证。首先是操作平台构成和神经网络超参数相关设置,然后是本次试验采用的数据集,试验完成后对所提出的淡水鱼分割算法进行理论分析,并与未改进的语义分割算法进行比对分析。

2.1 试验平台及相关参数设置

本文使用网络上开放的COCO数据集来初始训练SENet优化的Xception网络结构模型,利用自建的背景单一淡水鱼数据集实现网络参数微调同时搭配不同扩张率的卷积来达到提取淡水鱼体各部分密集的像素特征的要求;搭配随机梯度下降(Stochastic Gradient Descent,SGD)法实现网络的训练流程;在样本数据扩充方面[18],以随机挑选0.5~2之间的比例放缩输入样本集并在网络训练流程中将对图像进行任意角度旋转。采用Intel Xeon(R)CPUE5-2650 v4@2.20 Hz×48、12 GB的GeForce GTX1080Ti×2GPU并且运行内存为64GB作为试验硬件平台,Ubuntu18.04作为试验操作系统,CUDA9.0作为并行计算框架版本号,CUDNN7.6.0为深度神经网络加速库。使用编程语言Python在深度学习框架Tensorflow上具体实现了本文中SENet优化后的Deeplabv3+语义分割模型并完成相应的模型训练过程。

2.2 淡水鱼试验数据集

训练样本数据集来源包含两部分,一部分是微软开源数据集(COCO),包含80多类对象,用于模型的预训练过程;另一部分为自建用于训练和评价淡水鱼体头,腹、鳍各部分的语义分割性能数据集。其中,2 258张用于训练的淡水鱼数据集图片,同时还设置了验证图片为1 464和用于测试过程的1 448张图片,所有图像背景统一为纯白色,减少额外变量干扰,样本成像质量略有不同;图像包含鲤鱼、鲢鱼、鲫鱼、草鱼和鳊鱼五类目标,所有目标在图像呈现不同的姿态特征,包含淡水鱼头、鳍、身,3个前景类别和1个背景类别共4个语义分类。

2.3 鱼体分割效果的定性分析

根据本文提出的SENet优化后的Deeplabv3+语义分割算法,在自己构建的淡水鱼图像数据集上进行了试验验证。本文利用SENet优化后Deeplabv3+语义分割的算法与原始Deeplabv3+的语义分割算法试验结果如图6所示。其中淡水鱼原始图像为图6第1列所示,未经优化的Deeplabv3+语义分割结果为图6第2列所示,本文在使用了SENet优化之后的Deeplabv3+算法语义分割结果为第3列所示,第4列为ground-truth,即利用labelme软件制作的真实的语义标签,第5列为淡水鱼图像分割的可视化结果。

(a) 原始图像

(b) Deeplabv3+

(c) 本文算法

(d) ground-truth

(e) 可视化

由图6可以看出,相比较传统Deeplabv3+语义分割算法,本文算法在充分利用特征维度的通道信息后,在淡水鱼体边缘细节部分处理的精度性较好,实现了淡水鱼体语义分割能力的显著增强,有利于后续的淡水鱼实现机械加工处理,减少水产品人工操作劳动强度大,作业效率低,分割淡水鱼头、腹、鳍各部分的精度低等问题。

Deeplabv3+语义分割模型和SENet优化的Deeplabv3+语义分割模型在训练了50 000次后,各自损失函数Loss值如图7所示。通过损失函数对比图可以知道SENet优化后的网络比传统Deeplabv3+语义分割模型损失值低将近0.15,损失值函数图像越低表明语义分割模型能够取得更好拟合效果,同时语义分割模型Deeplabv3+鲁棒性也更加优异。

图7 不同算法下实现淡水鱼体语义分割的Loss函数图Fig. 7 Loss function diagram for implementing semantic segmentation of freshwater fish body under different algorithms

2.4 鱼体分割效果的定量分析

本文采用MIoU(Mean Intersection over Union)作为淡水鱼体语义分割能力的重要评价指标,当然也可以解释成平均交并比,即计算IoU(Intersection over Union)值在淡水鱼体每个部位上的均值。IoU和MIou的定义如式(4)、式(5)所示。

(4)

(5)

式中:k+1——包括背景在内的语义类别总数;

i——真实值;

j——预测值;

Pi j——将类别i预测为类别j的像素数量。

基于上述评价标准,用本文提出的SENet优化的Deeplabv3+算法和原始Deeplabv3+语义分割算法在自建的淡水鱼数据集上进行了试验结果对比,如表1和表2所示。和Deeplabv3+比较,由于优化算法获得淡水鱼图像中每个特征通道重要程度是通过使用自主学习的方式,然后再根据重要程度去提升有用的特征并抑制对当前淡水鱼体语义分割任务用处不大的特征,使得原始Deeplabv3+网络得到更好地优化,所以在物体边缘等细节部分有着更好的分割性能。由表2可知,本文算法的语义分割MIoU值达到了93%左右,同时由于SENet网络结构的优化使得原始Deeplabv3+模型的FPS减少,节约了时间成本,提高了加工效率,性能得到显著提高的同时并达到了目前领先的淡水鱼体分割水平,为后续实现全自动化的淡水鱼加工提供了强大的软件系统支持。

表1 不同网络结构下淡水鱼特征IoU值对比表Tab. 1 Comparison of IoU values of freshwater fish characteristics under different network structures

表2 不同网络结构下性能比较Tab. 2 Performance comparison under different network structures

3 结论

本文提出了一种基于SENet优化的Deeplabv3+淡水鱼体语义分割算法,得到以下结论。

1) 充分发掘Deeplabv3+的优点,通过将扩张/空洞卷积生成的特征图应用到骨干网络中,一方面克服不断下采样导致淡水鱼图像分辨率降低以及鱼鳍等部位细节信息丢失的问题。同时,在计算量不增加的情况下使每个输出卷积都包含淡水鱼信息的范围较大,增大了感受野,提高了鱼体各部位语义分割的速度,并且对图像中的较小以及较薄的鱼鳍目标有显著的语义分割效果。

2) SENet结构使用自主学习的方式获取淡水鱼图像中每个特征通道的重要程度,再根据重要程度去提升有用的特征并抑制对当前淡水鱼体语义分割任务用处不大的特征。与传统Deeplabv3+方法相比较,优化后的网络在MIoU上提高到了93%,检测速度下降到42 ms,损失函数的损失值降低了0.15,实现了淡水鱼体各部位更好的识别与检测。

3) 在语义分割的基础上,可以进一步将其应用到鱼体的三维建模上,实现淡水鱼体空间位置的语义点云获取,有利于进一步精细化淡水鱼体语义分割结果。

猜你喜欢

淡水鱼网络结构语义
淡水鱼类育种和人工繁殖技术关键点分析
淡水鱼健康养殖及病害的防治技术
语言与语义
“上”与“下”语义的不对称性及其认知阐释
基于互信息的贝叶斯网络结构学习
知识网络结构维对于创新绩效的作用机制——远程创新搜寻的中介作用
沪港通下A+ H股票网络结构演化的实证分析
复杂网络结构比对算法研究进展
认知范畴模糊与语义模糊
可视传感器技术快速测定淡水鱼细菌总数