APP下载

基于深度学习的群猪图像实例分割方法

2019-04-29郭继亮雷明刚

农业机械学报 2019年4期
关键词:猪体猪只养猪

高 云 郭继亮 黎 煊 雷明刚 卢 军 童 宇

(1.华中农业大学工学院, 武汉 430070; 2.生猪健康养殖协同创新中心, 武汉 430070;3.华中农业大学动物科技学院动物医学院, 武汉 430070; 4.华中农业大学理学院, 武汉 430070)

0 引言

机器视觉技术是检测猪养殖状况、评价猪福利的重要技术手段之一,具有易安装、无侵入、设备平价等优点。目前,机器视觉技术较多应用于单体猪只的监测,主要用于识别猪只饮水行为[1]及监测猪只的饮水量[2-3]、监测母猪的分娩行为[4]、检测生猪的瘦肉率[5]、监测猪只蓝耳病疫情[6]等。对于群体饲喂阶段,由于猪群有聚集在一起的习性,特别是躺卧时,当使用机器视觉跟踪监测猪只时,图像中存在较多的粘连猪体,且分割困难。目前要对群养猪个体进行追踪和监测,尚未有较为成熟的应用。但群养模式无论是在种猪场还是商品肉猪场均占有较大的比重[7-8],对群养猪行为进行监测有利于全面改进猪场养殖管理水平,提高猪场的生产效率,从而提高猪场的经济效益。因此,解决群养猪图像中粘连猪体的分割问题是实现群猪视觉追踪和监测的关键步骤。

为了分割群养猪图像中的粘连猪体,采用传统数字图像处理结合模式识别的方法已有较多研究[9-13]。卷积神经网络(Convolutional neural network,CNN)方法[14-20]能够在背景知识不清晰,推理规则不明确情况下,通过训练,自动提取图像中目标特征,避免了通过人为观察来设计算法提取目标特征的过程,得到的算法模型普适性较强。GIRSHICK等[21]提出了将R-CNN(Regions with CNN)应用到候选区域(Region proposal)的策略,训练模型用于定位目标物和图像分割,其分割的精度、效率均不高。为了提高分割精度,LONG等[22]对 CNN 进行改进,提出了全卷积网络(Fully convolutional networks,FCN)的图像语义分割算法,主要用来理解场景中存在的感兴趣对象,实现像素级别的分割,有研究人员也将该方法应用到母猪个体识别和分割方面[23]。语义分割可以分割出同一类物体,但无法分割出同一类物体中的不同个体,不适用于分割群养猪中的粘连猪个体。

实例分割主要用来分割同类物体的不同个体。SILBERMAN等[24]在2014年用实例分割来分析室内场景。LI等[25]实现了全卷积端到端实例分割模型(Fully convolutional instance-aware semantic segmentation,FCIS)。实例分割是一个多任务架构网络,通过卷积神经网络先提取初级特征,并提出感兴趣区域(Region of interest,ROI)。对于每个ROI区域,通过对ROI池化层处理提取出对应的特征。所提取特征共享给检测目标任务的网络,完成目标检测、图像分割与图像分类任务。实例分割将图像中不同类别和个体的感兴趣对象分别进行分割和标记[26]。HE等[27]构建的Mask R-CNN网络将实例分割推上了一个新的高度,对各种不同的粘连物体表现出了很好的分割性能。 ZHANG等[28]对道路两侧粘连汽车图像进行了实例分割研究。WARD等[29]采用深度学习网络Mask R-CNN实现了植物叶片的实例分割。实例分割框架在语义分割的基础上,将相互粘连的同一类对象分割为不同的实例个体,为猪群中粘连个体的分割提供了可能性。目前还未见将实例分割用于粘连猪体分割的研究。

本文采用深度学习方法,对实例分割网络进行修改,并将其用于对群猪图像中的粘连猪体进行分割。通过对网络进行训练,得到有效的分割模型,并通过试验验证算法的可行性与有效性。

1 试验材料与方法

1.1 图像采集

于2018年3月12日— 4月8日在华中农业大学试验猪场进行图像数据采集,6头9.6 kg左右的大白保育猪养殖在环境多变量控制养殖箱内。环境多变量控制养殖箱[30]是课题组按集约化猪舍设计标准设计的,已申请专利。根据养殖猪头数,按集约化猪场的猪只需占空间面积,设计猪栏的长、宽为2.0 m×2.0 m。猪舍内的料槽和鸭嘴式饮水器为商用猪舍产品。猪舍底部为全漏缝地板,地板下有水泡粪粪池,按照水泡粪的模式,水面超出10 cm,粪池容量设计为一周抽粪一次。箱内用LED灯照明,猪生活区域照度根据猪场光照标准控制在50 lx左右[31]。1080 p高清摄像头安装于箱顶部正中间,垂直向下,采集RGB图像,镜头距漏缝地板高度为180 cm,如图1所示。采集速率为3帧/s,图像为1 920像素×1 080像素的RGB彩色图像,存储为JPG格式。

图1 图像采集平台Fig.1 Image acquisition platform 1.高清摄像头 2.数据线 3.计算机 4.环境多变量控制养殖箱

1.2 基于深度卷积神经网络的群养猪分割模型

已有研究采用FCN对粘连情况复杂的图像进行分割。FCN是一种深度学习的全卷积神经网络模型,其处理分割问题时性能较好。FCN网络的优势[32]包括:①去掉了末端的全连接层,用卷积层代替,实现端到端的卷积网络训练。②对图像的每个像素都进行预测分类,实现像素级分割。但对于粘连严重的猪群图像,FCN网络结构[32]上采样采取简单的反卷积方式,这种方式的上采样使得图像失去了许多细节特征,导致最终分割图中猪体轮廓模糊,难以对粘连严重的猪群进行很好的分割。

Mask R-CNN网络是一种实例分割(Instance segmentation)[27]方法,其检测出每个目标,并用边界框、标签和不同颜色掩模对目标个体进行分割描述。Mask R-CNN网络结构基于REN等[33]提出的Faster R-CNN框架,该框架将特征抽取、方案(Proposal)提取、bounding box 回归、分类整合在同一个网络中。Mask R-CNN网络结构是在Faster R-CNN框架分类和回归层之后增加了一个针对每一个ROI的FCN网络分支,实现对图像目标进行实例分割。Mask R-CNN网络采用ROIAlign操作替换了ROIPool操作,保留目标空间位置的精度。ROIAlign是一个修正空间量化特征提取错位的层[27],利用双线性插值计算输入对应ROI bin上的4个坐标值,作用是保留其网络输入和输出之间的像素到像素的空间位置精度。Mask R-CNN网络将判断类别(Class)和输出掩模(Mask)这两个任务解耦合,用平均二值交叉熵损失对每个目标独立地预测一个二值掩模,避免引入类别间竞争,大大提高了分割性能。本文中的每个目标即为猪群中的每头猪只区域,对每头猪只预测一个二值掩模。

本文在Mask R-CNN网络结构的基础上,对Mask R-CNN网络框架的网络深度和宽度进行优化调整,在已经有一定训练基础的参数上,进行迁移学习,用粘连群养猪图像作为训练集,比较不同层数和不同卷积核的网络模型的分割准确率,确定较优的分割粘连猪体图像的网络参数和模型。

最终,本文确定优化模型为PigNet,其网络较Mask R-CNN网络做了两点优化改进:①针对本文试验场景中类别单一的不同实例对象,将Mask R-CNN主干网络第4阶段卷积的69层卷积层结构调整为12层(PigNet),这样不仅防止了特征损耗,而且减少了卷积运算量。②Mask R-CNN网络的Mask分支最后一层卷积层通道数80修改为2(PigNet),代表类别数为两类(pig类和background类)。PigNet具体网络结构如图2所示。

图2 PigNet网络结构Fig.2 PigNet network structure

PigNet主干网络采用44层卷积层,有5个卷积阶段,每1阶段的卷积均采用残差学习结构 (Building block)[34],如图3所示,蓝色弧线包含的3个卷积层结构中,3×3×256层表示卷积核为3×3、通道数为256的卷积层(图3中类似的结构,依此类推),1 024表示向量维数为1 024的全连接层。残差学习结构的首端和末端采用1×1卷积核,中间采用3×3卷积核。残差学习结构的优点在于:其极大地降低了参数的数目,减少计算量的同时保持了精度,如第2阶段的第1个1×1的卷积将256维通道降到64维,然后再通过1×1卷积恢复到256维通道。残差学习结构有很多的旁路即蓝色弧线,将输入直接连接到后面的层,一定程度上解决特征损耗、梯度消失等训练问题。第1阶段卷积层后连接有BatchNorm层、Scale层、ReLU激活层,之后连接有池化层,采用卷积核为3×3的Max pooling操作。BatchNorm层和Scale层作用是批量归一化,ReLU激活层有利于训练收敛更快。后面的每层卷积层的滑动步长(Stride)为 2 个像素,经过一个残差学习结构的卷积、池化把尺寸缩小至原来的1/4,PigNet主干网络滑动步长不停的缩减尺寸,输出通道数持续增加,达到2 048。

图3 PigNet主干网络结构Fig.3 Backbone network structure of PigNet

主干网络的特征提取分两方面:一方面是网络模型的conv4_12卷积层输出的特征图(Feature map)经过区域候选网络(Region proposal networks,RPN)计算处理,提供计算后提取的特征信息;另一方面是继续向前传播,生成特征图。主干网络所提取的特征图由ROIAlign层处理。RPN的作用是更快地选取ROI。ROIAlign从ROI提取特征并保留输入和输出之间的像素的精准空间位置。从ROI分出来两个分支,一个分支经过7×7卷积核、通道数256的卷积层,再经过两个1 024维特征向量的全连接层,最后完成预测类别和回归框任务;另一Mask分支经过5次14×14卷积核、通道数为256的卷积层运算,再进行上采样生成 28×28的特征图,最后使用28×28卷积核、通道数为2的卷积层对每个ROI目标(本文为每头猪只)预测输出一个掩模。

PigNet实例分割网络的损失函数包括3部分,公式[27]为

L=Lcls+Lbox+Lmask

(1)

式中L——损失函数

Lcls——分类误差

Lbox——检测误差

Lmask——分割误差

Lcls、Lbox利用全连接层处理,预测出每个ROI的所属类别和回归框坐标值。Lmask对每个ROI的目标进行分割,并赋予掩模表示。Class分支、Box分支、Mask分支共享卷积计算得出ROI。对于每个ROI,Lcls负责预测该目标的类别,若预测感兴趣区域ROI为pig类,则在分割该ROI过程的损失时只使用pig类的相对熵误差作为误差值进行计算,其他类别(如background类)的相对熵误差不参与到该ROI的损失函数中,避免了类别间竞争。Lbox用来控制该目标的回归框的位置坐标。Lmask用来控制该目标生成精准的掩模。Class分支预测感兴趣区域ROI为pig类,则Lmask仅仅单独考虑ROI目标的回归框的pig类别相对熵误差来预测该感兴趣区域属于pig类别的像素点,精准地分割出目标轮廓,分割得到不同层深度的精准轮廓位置坐标信息,分割图中使用不同颜色的掩模来表示不同层深度的目标。对于本文测试图像,PigNet网络模型卷积计算得6个感兴趣区域,Lcls预测每个感兴趣区域类别为pig,Lbox预测6个目标的回归框的位置坐标,Lmask采用平均二值交叉熵损失并使用Sigmoid函数对6个回归框的位置均独立地预测一个二值掩模,6个目标分割的目标轮廓信息放置在6个不同层深度,在分割图中用6种不同颜色的掩模来表示6个目标。对于数量更多的猪群图像,PigNet模型对每个猪体分割生成一个对应的二值掩模。

1.3 训练参数设置

本文网络激活函数采用修正线性单元(Rectified linear units,ReLU)和基于批量随机梯度下降法(Mini-batch stochastic gradient descend)的优化模型,使用GPU运算。批量训练的方法将数据集数据分为多个批次,设置迭代次数为10,每个批次训练系数为100,随着迭代次数的增加,网络损失函数损失收敛,训练集和验证集的准确率趋于稳定,调整动量因子参数为0.9,正则化权重衰减系数为0.000 1,网络权重参数的基础学习率为0.001。

2 群养猪图像分割试验

2.1 试验硬件及软件

本文分割算法处理平台为台式计算机,处理器为 Inter Core i5-7500,主频为3.40 GHz,32 GB内存,2TB 硬盘,显卡为NVIDA GeForce GTX1060。软件环境为Windows 10 64位系统,编程语言为Python,采用TensorFlow深度学习开源框架,使用Microsoft visual studio软件编写深度神经网络层。

2.2 试验方法

连续采集28 d图像,包含了群养猪日常生活的吃食、饮水、躺卧、运动等多种行为的图像样本。为了确保训练样本的多样性,本文抽取试验前5 d中全天各时段不同行为状态下的群养猪图像2 000幅作为训练集。为了确保验证集与训练集之间无重叠图像数据,抽取第6、7天的各个时段的群养猪图像500幅作为验证集,总计2 500幅群养猪图像样本。

使用Labelme软件制作训练数据集。标注时,将每头猪标注为一个独立的连通域。试验对象为6头保育猪,因此每幅图像中标出6头猪个体连通域,即6个目标,人工每采集一个猪体目标轮廓就给该猪体目标赋予具体的标签。6个猪体目标标签依次命名为pig1、pig2、…、pig6。标注完一幅图像后得到一个对应的.json文件。解析.json文件,提取中位深度为24位的label.png标签图像,再将24位label.png图像转换为8位的label.png图像,完成一幅图像数据的制作。

若将6个猪体目标直接标签标注为pig,则6个目标会放置在同一个通道层,被识别为同一目标对象。若把6个猪体目标命名为不同的标签,将会被识别为6个不同对象。因此在图像中用6种不同颜色表示,对应Mask R-CNN网络对不同的实例目标需要放在不同层中的输入要求。但是上述标注后6个不同的标签代表6个类别,而在主网络训练中要求6个猪体目标是属于1个类别标签,即pig大类别标签。本文采用w×h×n三维数组将在6个深度层的6个类别转换为在6个深度层的1个类别,作为Mask R-CNN网络的输入。w和h分别为输入图像的长和宽,n为输入图像中实例目标的猪头数,本文设为6。读取6个猪体目标的类别标签为pig。

由于本研究的目是分割粘连的群养猪,准确识别出独立的猪个体目标位置和个数,而图像中猪个体区域的像素级别的差别,不在本文的研究范围内。因此分割算法将图中的自然猪个体分割成独立的连通域,即判为分割正确。本文采用准确率指标[35]评价PigNet模型分割效果,准确率为分割模型正确分割猪个体的图像数占验证集图像数的百分比。

使用已在COCO(Common objects in context)数据集上训练好的Mask R-CNN模型权重对群养猪图像分割网络PigNet进行初始化(Fine-tuning)[36]。COCO 数据集由微软提供,数据集中含有类别、位置信息等图像目标的标注信息,是大多数深度神经网络图像分割算法性能评价的常用数据集。COCO数据集不包含猪,但包含了猫、狗、马、羊、牛等四肢行走动物作为训练对象,训练集包含数十万幅图像。训练好的Mask R-CNN模型其权重已包含了动物的常见特征,在此基础上使用迁移学习方法来训练群养猪图像分割网络PigNet,可以更快地学习猪只特征,大大地缩短了训练模型的时间。

为了进行效果对比,使用PigNet模型与基于ResNet101网络的Mask R-CNN模型及其改进模型对图像进行分割,对比分析其分割结果。

2.3 试验流程

群养猪图像的具体分割试验流程如图4所示,具体步骤如下:

3.4 在高寒沙区利用机械固沙和生物固沙相结合,无灌溉条件下扦插、直播造林相结合的植被恢复综合技术,是改善沙区生态环境的最有效的手段之一。

(1)从采集的群养猪图像数据中抽取训练集,其中训练图像尽量包含群养猪日常4种不同形态图像,且验证集与训练集无交叉重复数据。

(2)使用Labelme软件对训练集图像进行标注,对应标签图像,完成训练集的制作。

(3)将制作好的数据集作为深度卷积网络的输入。

(4)搭建群养猪分割卷积网络PigNet网络。

(5)以Mask R-CNN网络训练好的模型作为群养猪图像分割网络PigNet的初始化(Fine-tuning),经训练得PigNet模型。

(6)使用验证集图像测试群养猪图像分割模型——PigNet模型,得分割图像。

(7)采用准确率指标评价PigNet模型的分割结果。

(8)根据评价结果调整PigNet模型的参数。

(9)重新训练PigNet模型,重复步骤(5)~(8),直至训练集指标与验证集指标接近。

图4 群养猪图像分割试验流程图Fig.4 Flow chart of group pig image segmentation test

3 结果与分析

3.1 PigNet特征图可视化分析

分析PigNet模型的识别过程,模型的部分卷积层的可视化输出如图5所示。从图5中可以看出,每层卷积提取出的特征各有侧重,使PigNet模型学习猪个体颜色特征、形状特征、纹理特征等特征。随着卷积层层数的增多,PigNet模型学习的特征信息越来越趋于抽象,使PigNet模型学习了更为深度的猪个体特征。

图5 群养猪图像分割网络算法的卷积特征图可视化Fig.5 Convolutional characteristic map visualization of pig image segmentation network algorithms

3.2 PigNet模型性能分析

已训练的PigNet模型在2 000幅训练集、500幅验证集上的分割结果用评价指标分析,结果如表1所示。其中,训练集4种行为图像各500幅,验证集4种行为图像各125幅。由表1可知,PigNet模型在训练集和验证集上均取得较好的分割结果,总分割准确率均大于85.00%,训练集为86.15%,验证集为85.40%。在各行为样本中,PigNet模型对吃食、饮水、运动等行为图像分割性能较好,训练集和验证集准确率均不小于86.40%。验证集对运动行为图像分割准确率高达92.00%。躺卧样本图像中猪体粘连情况最为严重,所有的样本图像中都有严重的猪体粘连现象,其它行为样本中,粘连现象都不同程度地出现,如图6所示。算法的总体准确率及每种行为的验证集准确率与训练集近似,较训练集略低,表明PigNet模型泛化性能较好。

表1 PigNet分割评价指标分析Tab.1 Analysis of PigNet segmentation evaluation index

PigNet模型对分割不同形态的粘连群养猪具有较好的分割性能。如图6所示,不同行为下,猪体有保持直线、弯曲、多猪粘连等情况,并未影响分割准确率。由于摄像头并未将整个猪栏区域完全覆盖,有些猪体超出图像范围,算法对拍摄不完整的猪体分割也较为准确,如图6a、6c、6d所示。图6d的分割难度最大,所有的猪只都聚集在一起,造成某些猪的部分猪体被其它猪只遮挡,导致无法拍摄部分猪只完整轮廓,算法也可准确将其分开,说明PigNet网络模型对粘连猪群能有效分割。

图6 不同行为测试图像的分割结果Fig.6 Segmentation results of diversity behavioral images

在用本文算法完成分割的样本中,两类行为模式的样本出现少量错误,如群养猪的运动和吃食图像,如图7所示。猪只个体存在头部与头部、头部与尾部粘连严重或跨爬行为,造成图像中的单个猪体被分为两部分,从而引起分割错误。

图7 分割错误图像Fig.7 Split error images

3.3 改进模型参数设置

为了得到较优的分割粘连猪体图像的网络参数和模型,本文分别对Mask R-CNN主干网络的卷积层数和宽度进行了调整。调整后的网络结构模型的参数设置、分割准确率如表2所示。从表2可以看出,网络模型的深度对分割准确率有明显的影响。改进模型1的准确率最高,从最终图像分割的质量来看,改进模型4~8的过分割现象明显,故较101层和200层卷积深度,44层卷积层深度是较为适合猪群分割的层数。同时,改进模型的第1阶段的conv1卷积层采用不同卷积核,影响了网络提取的猪体特征,最终体现在了网络模型的分割准确率。由表2可看出,改进模型1、4、6的分割准确率均高于同一网络深度的其他改进模型。如改进模型1较改进模型3,其分割准确率高出0.6个百分点。从表2整体来看,卷积层数对网络分割准确率影响较大,卷积核对网络分割准确率影响较小。本文采用改进模型1为分割粘连猪体图像的模型,即确定PigNet模型卷积层数为44,第1阶段的conv1卷积层卷积核为7×7。

表2 改进网络的参数设置和分割准确率Tab.2 Parameter setting and segmentation accuracy of improved network

3.4 不同分割模型对比分析

将本文算法模型与Mask R-CNN模型的分割效果进行对比。采用同样的2 000个训练样本和500个验证样本,训练Mask R-CNN(ResNet101-FPN)模型。两种网络模型在500个验证样本上的分割性能比较如表3所示。

表3 不同分割模型的性能比较Tab.3 Comparison of different segmentation networks performances

本文算法模型相较Mask R-CNN(ResNet101-FPN)模型,其准确率高11.40个百分点,说明主干网络的卷积层不是越深越好,合适的卷积层深度有利于分割性能的提高。本研究的目的是分割粘连的群养猪,获得独立连通域的猪个体。增加网络卷积层运算和粘连猪体的权重因子,有利于提高分割准确率,但同时也容易导致分割性能的过拟合,将猪体部分区域分割为一个猪个体,造成同一目标猪个体的过分割,如图7所示。本文算法模型相较Mask R-CNN(ResNet101-FPN)模型较好地权衡了分割性能和模型过拟合,一定程度上减少了卷积参数,精简了模型,同时使模型分割性能略有提高。

本文算法模型比Mask R-CNN(ResNet101-FPN)模型的单幅图像分割处理时间缩短了30 ms。本文算法模型的层结构较Mask R-CNN(ResNet101-FPN)模型,精简了卷积层结构,也减少了单幅图像的分割处理时间。

4 结论

(1)提出了基于实例分割框架的粘连猪体图像分割算法PigNet网络模型,有效地解决群养猪俯视图像中难以解决的猪体粘连问题。PigNet网络模型在Mask R-CNN主干网络基础上建立PigNet主干网络,经过区域候选网络提取的特征和主干网络前向传播提取的特征均被ROIAlign所共享。ROIAlign操作从ROI提取特征并保留输入和输出之间的像素精准空间位置。从ROI分出两个分支,一个分支完成预测类别和回归框任务,另一Mask分支对每个ROI的目标预测输出一个掩模。

(2)PigNet模型在训练集和验证集上均取得较好的结果,总分割准确率均大于85.00%,训练集为86.15%,验证集为85.40%。与Mask R-CNN模型及其改进模型进行分割效果对比,PigNet网络模型验证集的准确率较Mask R-CNN(ResNet101-FPN)模型高11.40个百分点,且分割运算时间较Mask R-CNN(ResNet101-FPN)模型短30 ms。本文算法模型对不同形态、粘连严重的群养猪分割效果较好,能准确地分割粘连严重的猪群图像,可用于各种群养行为模式下的粘连猪体分割。

猜你喜欢

猪体猪只养猪
夏季养猪要做好防暑降温
冬季养猪防病四注意
猪呼吸道疫病的发生原因与防控方法研究
猪舍热舒适性评价及夏季湿帘作用下的CFD模拟
猪胃溃疡的病因与防治措施
养猪
提高装猪坡道装载效率的研究
猪舍富集的环境对猪只的影响?
养猪谨防六大误区
猪应激反应综合征的防治措施