孙云涛 ,何秀文 ,黄 巍 ,彭兴鹏 ,罗世林 ,刘仁鑫
(江西农业大学工学院,江西 南昌 330045)
随着计算机技术的发展,“机器视觉”与“深度学习”的概念开始在各个行业掀起浪潮。近年来,动物福利成为国内、国际的热议话题[1],因此生猪养殖也开始朝着“智能养猪”方向发展,由此产生了精细畜牧业[2]这一养殖概念。在现代化大规模养猪场中,机器视觉已经开始运用于各个方面,在体重预测、猪只在栏内状况、猪只出栏盘点等方面都有不错的发挥。如今大部分猪舍对猪只数量的盘点仍旧依靠饲养员人工进行,这对饲养员的眼力要求十分高。在进行大规模盘点时,大量生猪数据的汇总可能会导致饲养员出现计算错误,并且传统的计数方式需要耗费大量的时间和人力去进行统计。利用语义分割对猪栏中的猪进行计数,不仅耗时短,不需要过多的饲养员一个一个栏进行计数,大大降低了时间和人工成本,提高了养猪场的经济效益;而且减少了饲养员与猪只的直接接触,更满足“动物福利化”的养殖需求。
在计算机视觉中,语义分割是一个十分重要的方向。随着全卷积神经网络(CNN)[3]的提出,传统的图像分割方法逐渐被诸如FCN、U-Net、DeepLab等高效率的语义分割方法所替代。本文针对群猪图像使用了DeepLab系列分割方法。
DeepLab V3+[4]网络模型属于DeepLab系列之一,是在DeepLab V3 模型的基础上进行了升级,相较于V3,V3+模型将整个V3 网络作为编码器,并且将编码器所得的特征图提取出来对其进行多次卷积和上采样操作,最后得到预测值。其原理如图1所示。
图1 DeepLab V3+原理图
DeepLab V3+的解码器对编码器得到的特征图分别进行1×1 的卷积,将主干网络Xception 的特征层进行1×1 的卷积操作来改变原有通道数,再进行4 倍的上采样得到新特征图,与之前1×1 卷积得到的特征图融合并进行一次3×3 卷积和4 倍上采样,最终获得预测值。
DeepLab V3+作为DeepLab 系列最新的网络模型,在语义分割方面已经可以达到比较高的精度,但其使用的Xception 主干网络在运行时会消耗大量的显存,并且运行速度慢,会耗费大量的时间。
在猪栏监控猪只行为时,需要准确快速地反映猪只当前状态,因此Xception[5]主干网络精度足够但响应速度还不够快。于是本文引入了更轻量级的网络Mobilenet V2,该网络使用轻量级depthwise卷积[6]来过滤中间扩张层的特征,去除了窄层中的非线性激活函数[7],由此提升了运行速度。
1.3.1 混合注意力机制
将通道注意力与空间注意力互相串联或者并联组合后得到混合注意力机制[8],由于其更注重获取通道维度和空间维度上的特征,因此可以灵活应用于卷积神经网络以提高其表达能力。其工作原理如图2所示。
图2 CBAM原理图
其公式如式(1)、式(2)所示:
其中,F'为一维通道图,F''为二维空间图,F∈RC×H×W,Mc∈RC×1×1,Ms∈R1×H×W。
1.3.2 通道注意力机制
人类在捕捉较为显眼的特征时,注意力起到了极其重要的作用。近年来,注意力机制不断被研究人员加入到卷积神经网络中,用来加强卷积神经网络对图像特征的提取精度。通道注意力机制[8]是通过组合通道图中的特征来选择有所关联的通道图。其原理如图3所示。
图3 CAM原理图
运行步骤如下:将特征图F(H×W×C)输入,H为特征图的高度,W为特征图的宽度,C为特征图的通道数。将F进行全局最大池化和全局平均池化,得到Fmax和Favg,二者相加后将得到的结果输入MLP(双层神经网络),经过Sigmoid 函数计算得到Mc,对原始F进行复制操作得到Fe,将Mc与Fe相乘,最终得到所需要的输出特征图。计算公式如式(3)、式(4)所示:
其中,W0为第一层网络,W1为第二层网络,W0∈RC/r×C,W1∈RC×C/r,σ为Sigmoid函数,Fed为最终输出图。
1.3.3 空间注意力机制
在卷积神经网络中,图像特征在网络的不同阶段有着不同的表现能力[9]。由于图片中含有大量的背景特征信息,在很大程度上影响了图像的分割精度;将直接获取的低级特征作为输入图,也会对图像的分割精度造成影响。空间注意力机制[8]可以有效地解决这一问题,空间注意力机制可以利用高级特征将大量的无用的背景特征滤去,使神经网络更聚焦于目标区域特征,有助于获得更高的精度效果。
其工作步骤如下:空间注意力机制得到输入值F后,将其进行最大池化和平均池化,将得到的两个层拼接并进行卷积得到Fc,接着对Fc进行Sigmoid 函数处理得到最终图。其运行原理图如图4 所示。
图4 SAM原理图
其公式如式(5)所示:
其中,k设置为7,σ为Sigmoid 函数,Ms(F)为最终输出。
最终模型原理图如图5 所示。
图5 改进后DeepLab V3+原理图
本文试验所使用的CPU 为Intel(R) Core(TM)i7-9700F,内存8 GB,GPU 为NVIDIA GeForce RT X 2 0 7 0 S U P E R,内存1 2 G B,开发环境为Tensorflow2.2.0,Cuda10.1,python3.7。
目前能找到的关于猪的数据集都是单只,不符合本文试验要求。因此,本试验的所有数据均来自江西省九江市瑞昌市洪一乡绿色巨农养殖场,使用海康威视摄像头,将摄像头置于猪栏上方,拍摄猪只活动视频,并将视频剪辑成图片,筛选清晰的原始图片共640张。
本文试验采用的数据集格式为j s o n,利用Labelme 标注工具对猪只进行标注,猪栏构成简单,因此只有“pig”一个标签文件,如图6 所示。利用程序获取标签文件的png 格式图,如图7 所示。将数据集以7∶3的比例分为训练集与验证集。
图6 标签文件
图7 png文件
为防止过拟合训练,提高模型的分割精度,同时也为了增加图片数量,对原始数据集进行高斯滤波、亮度处理、随机裁剪、随机翻转等操作,进行数据加强,图像数量扩充为1 920 张。由于标签文件只有“pig”一个类别,因此在训练时将DeepLab V3+模型中的类别更改为2,包含“pig”以及“background”。损失函数为交叉熵损失函数(Cross Entropy Loss),如式(6)所示;Freeze_Epoch=50,batch_size 为6,UnFreeze_Epoch=100,batch_size为3。
式中,N为batch_size数值,m为样本数量。
语义分割常用的评价指标为交并比(Intersection over Union, IoU)、平均交并比(Mean Intersection over Union, MIoU)、像素准确率(Pixel Accuracy, PA)、类别像素准确率(Class Pixel Accuracy, CPA)、类别平均像素准确率(Mean Pixel Accuracy, MPA)[10]。
其中,pij指本是i类却被预测为j类的像素数量,pji相反;pii为预测正确的像素数量。
分别对原始模型以及改进后的模型进行比对,如图8、图9所示。
图8 Loss对比图
图9 MIoU对比图
由图8 和图9 可知,将Xception 作为主干网络的模型在训练损失值以及平均交并比(MIoU)的评估中均优于改进后的模型,加入注意力机制后的V2+SE模型优于V2模型。具体参数如表1所示。
表1 各模型指标比对图
从表1 可以看出,在精度上,改进后的V2 模型稍弱于原始模型,加入注意力机制后的模型又优于V2 模型0.48%而弱于原始模型2.97%,但在响应速度上,改进后的模型速度提升了38.77%。在分割效果上,三个模型的差距并不是很大,具体如图10所示。
图10 各模型分割效果对比图
猪只是好动的,在猪舍中会经常性移动,所以需要快速地捕捉猪只图像并进行分割,因此在保持一定精度的前提下,响应速度是十分重要的指标。改进后的模型牺牲了小部分的精度,大大提高了分割速度,而牺牲的精度并不会大幅度影响分割效果。
1)提出了利用Mobilenet V2 主干网络代替Xception 主干网络的改进模型,并进一步提出将通道注意力机制运用于低级特征的提取以及将空间注意力机制运用于高级特征的提取。
2)去养猪场实地采集了数据并利用Labelme 标注软件制作了属于自己的数据集,分别利用原始模型和改进后的模型进行了三次试验。结果显示,相较于原始模型,改进后的模型精度略有下降,但是响应速度大幅提升,满足了猪舍监控分割速度快的需求。