基于Mask R-CNN的马匹面部别征识别及分割方法

2021-07-06 02:10温志强冯向萍
计算机技术与发展 2021年6期
关键词:马匹卷积图像

温志强,冯向萍,徐 静

(新疆农业大学 计算机与信息工程学院,新疆 乌鲁木齐 830052)

0 引 言

为加快新疆现代马产业发展,使新疆现代马业发展尽快与国际马业管理接轨,区内建立了新疆马匹登记注册管理系统,加快了实现区内良种马资源信息共享[1]。但目前马品种登记和护照信息中的外貌特征提取方式主要靠手工方式完成,需要对马匹面部的特征进行文字描述和手工描图标记,存在工作量大、效率低、准确性低、人工成本高等问题。

近几年来已经有关于深度学习的动物面部识别、植物实例分割[2-3]等研究成果。由于深度神经网络在图像分类和检测方面取得了巨大的成功,现在成为了几乎所有计算机视觉应用的“特征提取器的选择”,主要是因为它们能够从数据中学习到良好的特征。根据文献查阅收集了解到目前在人工智能计算机视觉方面还未有与马匹相关的畜牧业相结合的应用,结合深度学习与计算机视觉在其他动物上的研究方向主要分为四类:

①classification分类任务:如基于CNN的鱼类分类[4],王培森[5]基于注意力机制的图像分类,提出并实现了一种利用卷积层激活输出获取多通道注意力的图像分类模型,庞丝丝等[6]利用迁移学习的方法改进的ResNet50深度学习模型,得到了不错的分类识别效果。

②object detection目标检测:Ross Girshick等[7]在PASCAL VOC数据集训练了R-CNN模型,首次用深度学习CNN的方式,结合region proposal和CNNs进行目标检测,取得的性能、准确度均大幅高于传统特征提取方式。赵凯旋等[8]提出对于奶牛目标各区域的检测和分割方法。在精准养殖方面,针对奶牛精准养殖中的信息获取问题,赵凯旋[9]针对奶牛运动目标检测,提出了一种基于背景法的目标检测方法。

③semantic segmentation语义分割:Jonathan Long等[10]提出了一种全卷积网络,去除了VGG网络常规的全连接层(fc)的全卷积(fully conv)网络,可适应任意尺寸输入。增大了数据尺寸的反卷积层(deconv),能够输出像素级别的结果来进行语义分割。王雅晴[11]通过改进FCN对自然场景图像中的金丝猴进行分割,为研究金丝猴生物特征信息进行重识别工作奠定基础。

④instance segmentation实例分割:He Kaiming等[12]在2017年基于Faster R-CNN提出的一种改进算法,在正确找到图像中目标的同时还要对其进行精确的分割,对Faster R-CNN的每个RoI都要使用FCN进行语义分割,分割任务与定位、分类任务同时进行。

因此,根据上述研究,根据实际任务需要分割的目标为马匹面部和马匹面部别征区域,马匹面部别征识别分割属于实例分割任务。所以,该文提出一种基于深度学习的马匹面部及马匹面部特征的检测方法,先利用Mask R-CNN网络分割图像中马脸及马脸特征得到掩膜,在马脸及马脸特征检测的同时实现了马脸及马脸特征图像与背景的分割。论文的主要工作和创新点如下:

·将人工智能计算机视觉与畜牧业相结合;

·构建了一个具有分割标注的马脸及马脸特征数据集,从Open Images Dataset V4[13]数据集中选择了700张包含马脸及马脸特征的图像,在新疆的伊犁昭苏马场实地拍摄了700张包含马脸及马脸特征的图像,利用网络爬虫技术在unsplash网站爬取了160张包含马脸及马脸特征的图像,并对以上图像进行标注构建了新的数据集;

·引入RoIAlign算法,在特征图上保留了浮点型坐标,提高了马脸及马脸特征的定位精度;

·利用Mask R-CNN结合ResNet-50网络[14]与FPN网络[15]训练出检测模型,该模型在现有马脸及马脸特征检测的基础上,实现了马脸及马脸特征定位,增加了分割分支。能够在马脸及马脸特征检测的同时实现像素级的马脸及马脸特征信息分割,并且将预测的实例掩膜映射至马匹登记系统中的外貌特征图示中,解决了马匹面部特征自动标记问题。

1 数据采集与数据集标注

1.1 数据采集

实验数据第一部分采集于新疆伊犁昭苏县军马场、伊犁地区种马场。选取马匹面部具有白色毛色特征的马匹进行拍摄,主要针对马匹面部具有大星、小星、细流星、长流星、长广流星、白面、鼻端白等特征的马匹进行采集,如图1所示。将iPhone6s手机相机,距离地面1.5米高度,正视于马匹面距离约两人获取正视彩色图像。手机拍摄分辨率1 334像素×750像素,按照拍摄日期存入电脑设备。

图1 马匹面部别征

实验数据第二部分来自于Google,CMU和康奈尔大学之间合作的Open Images Dataset V4,从horse标签类当中选取了700张包含马匹面部特征的彩色图像。实验数据第三部分来自于网络爬虫,爬取了免费无版权的摄影师作品网站unsplash,从该网站爬取了140张清晰的包含马匹面部特征的彩色图像。

1.2 数据集制作

将获取的1 540张包含马匹面部特征信息的图像作为数据集。所选样本集包含不同场景下、不同曝光度和不同马匹面部角度的样本。训练集采用的是coco数据集格式[16],图像标识工具采用Labelme,在Labelme图像标注工具中利用多边形标注出马匹面部和马匹面部特征外轮廓,如图2所示,保存后得到json格式的标注文件,经转换后得到coco数据集格式的json、label等文件。

图2 Labelme中进行面部和大星特征的标记

2 文中方法

文中主要通过Mask R-CNN在计算机视觉图像实例分割任务中优异的表现,检测图像中的马脸以及马匹面部特征并分割马脸及马匹面部特征的区域, 得到每匹马的马脸与特征的mask遮罩图像;将识别分割后的mask遮罩图像,映射到马匹登记环节中的马匹外貌特征图示上,从而实现马匹面部别征的识别及分割。

2.1 基于Mask R-CNN的马匹面部分割网络

如图3所示,基于卷积神经网络的Mask R-CNN马匹面部别征识别分割网络分为三部分:(1)主干网络,主干网络是共享的卷积层,用于对输入图像的特征提取,生成特征映射图(Featuremaps)。马匹面部别征识别及分割网络选用残差网络(ResNet50)[17]结合特征金字塔网络(FPN)作为主干网络,生成P2、P3、P4、P5等4级大小不同的特征图。(2)区域建议网络(RPN),用于生成感兴趣区域(RoI)推荐框。本网络中的RPN网络通过具有FPN的主干网络根据3种不同尺度长宽比为0.5、1和2的15种矩形框从特征金字塔的不同级别P2~P6在特征图中提取RoI特征。(3)回归检测物体的类别、边界框(Bounding-box)及输出掩膜的mask三分支结构。文中类别包含8类(大星、小星、细流星、长流星、长广流星、白面、鼻端白和背景),Bounding-box包含4个参数均由全连接层得出。Mask分支由卷积核大小为3*3的5个卷积层和2个反卷积层构成,其中最后一层采用1*1大小的卷积核输出mask类别为2类。

图3 基于Mask R-CNN的马匹面部别征分割网络结构

2.1.1 RPN网络

在R-CNN和Fast R-CNN等物体检测框架中,通常用比较传统的selective search算法[18]来提取候选框,在CPU上一张图要耗时2 s,所以Ren Shaoqing 等人[19]提出RPN网络专门用来提取候选框。

RPN(region proposal network)即候选区域生成网络,通过一个在共享特征图(conv feature map)上3×3的滑动窗口(sliding window)生成候选区域。在此过程中,为特征图上每个特征点生成9种预先设置好长宽比与面积比的目标框或称为锚点(Anchor),由卷积神经网络提取特征后得到特征图,在特征图上将每一个点映射至原始输入图像上,得到一个感受野(receptive field),9种初始Anchor包含三种面积,每种面积包含三种长宽比,面积从小至大依次为128×128,256×256,512×512。RPN对3×3滑动窗口得到的特征图上每个Anchor进行两种判断,分类层(cls layer)判断是否为物体,2k scores对于9种框都可以判断是前景还是背景,当IoU≥0.5时,认为其为正例(positive),并对其进行回归。每一个RPN网络生成的候选框都做一个2分类回归,每一个特征点对应9个框,2×9=18个结果,即对9种候选框来说,它是前景和背景的得分。IoU(intersection over union,交并比)计算公式如下:

(1)

其中,A为RPN网络生成的候选框,B为训练集中标注的标准目标框,SA∩B为A、B的相重叠处面积,SA∪B为A、B并集面积。

回归层(Reg layer),对于Anchor的修正主要由4个值完成tx、ty、th、tw,当前RPN网络生成的候选框的四个坐标的回归值和训练集中正确的目标框(ground trues)之间的差异,4k coordinates 4×9=36,每一个anchor对应36个结果。

2.1.2 RoIAlign层

在Faster R-CNN网络中候选区域池化(region of interest pooling,RoI Pooling)根据候选框的位置坐标,在特征图中将相应区域池化为固定尺寸的特征图,送入全连接层进行分类和RoI边框的修正。①在Region Proposal映射阶段,由浮点数表示的RoI特征图边界量化为了整数点坐标值;②池化后的特征图尺寸固定,RoI边界区域平均分割成k×k个单元(bin),也对每个单元的边界进行了量化。两次量化过程造成了RoI和提取特征之间的不对准而产生了位置偏差,影响了检测和分割的准确度。

为解决上述缺点,RoIAlign层算法取消了生成RoI特征图过程中的两次量化操作。①Region Proposal映射阶段不进行量化,保持浮点数边界;②将候选区域(RoI)分割成k×k个单元(bin),每个单元的边界也不做量化,保持浮点数。使用双线性插值计算每个RoI bin中四个采样位置的输入特征的精确值,并进行平均池化操作,公式如下:

(2)

RoIAlign采用双线性插值算法,保留浮点型坐标,避免了量化误差,可以使原图像像素与特征图像素相匹配。双线性插值算法公式如下:

对x方向进行线性插值:

(3)

(4)

对y方向进行线性插值:

(5)

如图4所示,f(x,y)为待求解点P的像素值,f(Q11)、f(Q12)、f(Q21)、f(Q22)分别为已知四点Q11=(x1,y1),Q12=(x1,y2),Q21=(x2,y1)及Q22=(x2,y2)的像素值,f(R1)、f(R2)为x方向插值得到的像素值。

图4 双线性插值算法

2.1.3 FPN网络

对一般的object detection算法,都是只采用顶层特征做预测,对于高层特征图而言,语义信息比较丰富,目标位置比较粗略[20]。对于低层特征图而言,低层特征图语义信息比较少,目标位置比较准确。FPN(feature pyramid networks)算法同时利用低层特征高分辨率和高层特征的高语义信息[21],通过融合不同层的特征达到预测的效果。为了消除每一层融合过程上采样的混叠效应(aliasing efect),不同层融合之后对不同层的融合结果采用3×3的卷积(conv)并且在每个融合后的特征层上单独进行预测。

2.1.4 损失函数

文中的Mask R-CNN模型完成了三个任务,即马脸与马匹面部特征框的检测定位、马脸与马匹面部特征与背景的分类、马脸与马匹面部特征与背景的分割。因此,损失函数的定义包括了定位损失、分类损失及分割损失三部分。在训练期间,将每个采样的RoI上的多任务损失函数定义如下:

(6)

2.2 马匹面部别征分割流程

文中通过小样本马脸数据集训练模型,在有限的实验环境下,获得了更好的模型参数,使网络模型能够更快收敛,利用MS COCO数据集[22]上预训练好参数的源网络模型,对目标网络,文中马匹面部别征识别网络模型的权重文件进行初始化。通过标注好的不同别征类别的马匹面部数据集对整个目标网络层进行微调训练fine-tuning[23],得到马脸及马匹面部别征识别分割模型。

马匹面部别征分割模型流程如下:

(1)colab深度学习平台通过读取云存储马匹图像输入至ResNet50残差网络进行特征提取。ResNet第1至4阶段生成P2~P5共4个尺度特征图,用于RPN、Bounding-box、class及mask的生成,由P5以步长为2进行下采样得到大小为5 122的特征图P6,P6仅用于RPN提供建议区域。

(2)RPN:将不同尺度特征图P2~P6依次通过卷积核大小为3×3步长为1的卷积层后,为每个特征点生成3个Anchor,对class生成3×2个(马匹和背景2类)卷积核,对Bounding-box生成3×4个卷积核。在3×3卷积层后接两个1×1×1 024的全连接层,结果将分别进入cls和reg两个子网络用于区域建议,完成每个像素的前后景判别及马匹面部别征的第1次Bounding-box修正。

(3)RPN网络将特征图中生成候选区域RoI的Bounding-box送入特征池化层RoIAlign,在RoIAlign中,根据Bounding-box提取P2~P5特征送入class、Bounding-box、mask三分支网络。

(4)分类与边框回归分支根据RoI进行分类预测及马匹面部别征Bounding-box第2次修正,Mask分支经过卷积和反卷积层生成马脸与马匹面部别征mask,完成马匹面部别征检测与分割。

3 实验及结果分析

文中实验算法分为基于Mask R-CNN马匹面部别征识别及分割以及分割结果的应用。

3.1 马匹面部别征识别及分割实验

3.1.1 实验环境配置

马匹面部别征识别及分割网络模型采用Google colab深度学习实验平台,操作系统为Ubuntu18.04,CPU为Intel Xeon,主频2.20 GHz,13 GB内存,GPU为NVIDA Tesla P100,深度学习框架Pytorch1.3.1的硬件平台。

3.1.2 模型训练

针对实验数据集本身很小(一千五百张图片)的情况,文中采用迁移学习方法,分别对马脸上的别征大星、小星、细流星、长流星、长广流星、白面、鼻端白等特征图像做实例分割并进行提取。特征提取网络选用ResNet-50网络,首先使用coco预训练模型进行训练,使模型具有一定的泛化能力,进一步提升模型性能。然后利用已标注的具有标签和mask的数据集,共计1 540幅图像,抽取1 378图像训练样本数据集,剩余162组作为算法整体测试集,并将数据集的格式转化为coco数据集标准格式进行模型训练,通过实验调试,设置迭代次数(epoach)为10,迭代步数(iteration)为7 500,批尺寸为2,学习率为0.001。针对文中类不平衡数据集(如LVIS)[24]的训练,训练集中长流星总计45幅图片在所有类别中属于最少类别,训练集总计1 441张图片,所以长流星类出现的频率为45/1 440(0.031)。

3.1.3 识别与分割结果分析

用145个测试集在训练好的模型上进行测试,部分马匹面部别征如图5所示。文中算法在完成马脸及马脸特征目标定位框并用不同颜色的二值掩码将目标信息与背景分割开,实现了对马脸及马脸特征图像检测定位并进行分割的效果。为有效验证本模型的性能,分别选取ResNet50-FPN、ResNet101-FPN两种不同深度的主干网络模型得到在测试集中的性能曲线,如图6、图7所示,其中横坐标为迭代步数,纵坐标为准确率。如图6所示,文中算法的准确率随着迭代次数的增加逐步小幅度震荡上升,最终保持在94%至96%区间。Mask R-CNN模型包括了定位损失、分类损失及分割损失三部分,三部分损失值的总和(total loss)如图7所示,其中横坐标为迭代步数,纵坐标为三部分损失值总和。文中算法的损失值随着迭代次数的增加逐步小幅度震荡下降,最终收敛于0.4左右。

图5 基于Mask R-CNN的马匹面部别征分割结果

图6 Mask R-CNN网络准确率

图7 Mask R-CNN网络三部分总损失值

利用coco数据集指标AP(average precision)、MAP(mean average precision),对文中分割算法进行评价,实验结果如表1所示。

表1 文中算法不同主干网络对马匹面部别征分割评价指标

3.2 马匹面部别征识别及分割应用

在马匹鉴定以及马匹护照生成标记外貌特征的过程中,使用文中算法将图像中的马匹面部特征做实例分割,将分割后的实例存储为list[dict]格式,通过实例中的pred_masks键获取Tensor形式的mask(掩码区域)并转换为ndarray格式数据进行保存,根据pred_boxes键获取马脸实例和特征实例的(box)掩码包围框,预测结果中每一个实例包围框以元组形式储存的x0,y0,x1,y1四个坐标点,box的宽为:

width=|x1-x0|

(7)

box的高为:

height=|y1-y0|

(8)

映射关系如下:

(9)

预测框与外貌特征图示马脸区域目标框的长宽比例如图8所示,马匹外貌特征鉴定的马匹面部区域的mask(掩码遮罩)区域的长宽比调整比例映射绘制,从而可以完成马匹面部的特征自动标记工作。

图8 马匹面部别征外貌特征图示映射

4 结束语

针对马匹外貌特征鉴定实际过程中的面部别征标记问题,通过采集马匹面部数据,构建了一个具有分割标注信息的马脸数据集,研究了Mask R-CNN目标实例分割算法,训练了相应模型。通过测试马脸、大星、细长流星鼻端白、长流星鼻端白面部特征的AP值分别为86%、43%、39%、30%,均能够较为准确地完成分割,分割后的特征轮廓清晰边缘较为平滑,并通过模型输出映射至马匹外貌特征图区域,完成了马匹别征鉴定工作的自动标记,取得了较好的效果。在今后的工作中将对目前的马匹面部别征数据集中的别征种类进行扩充,并对算法进行改进,以进一步提高模型的平均精确度。

猜你喜欢
马匹卷积图像
基于全卷积神经网络的猪背膘厚快速准确测定
基于FPGA的卷积神经网络加速优化方法
基于图像处理与卷积神经网络的零件识别
基于深度卷积网络与空洞卷积融合的人群计数
A、B两点漂流记
马匹喝水
真正的动物保护:马匹专用“跑鞋”
我经常想到死亡
名人语录的极简图像表达
一次函数图像与性质的重难点讲析