米热尼格尔·买买提,张太红,迪力夏提·多力昆
(新疆农业大学计算机与信息工程学院,新疆乌鲁木齐 830052)
新疆是中国马匹品种和马匹数量最多的省,马匹对新疆的经济发展和文化历史传承起着非常重要的作用[1]。为实现新疆现代马业与国际马业管理尽快接轨,加快区内良种马匹资源之间的信息共享[2],区内建立了新疆马匹登记注册管理系统。马匹登记系统较为重视马匹身份的审验,而马匹烙印号可作为辨别毛色相同个体的识别标志,因此马匹烙印号是审验过程中不可缺少的信息。目前,在系统中录入马匹烙印号时仍采取人工标记的方式,需专业的马匹鉴定人员现场将马匹身上的烙印号在马匹鉴定表外貌特征图中相应位置做标记描红,信息录入人员需按照纸质版的标记位置上传至系统中,该方式存在工作量大、有误差、劳动力较高等问题。
近几年来,已有许多关于深度学习的动物面部识别[3-4]、动物特征识别[5-6]、植物实例分割[7-8]等研究成果。深度神经网络在计算机视觉领域有很大的影响力,现在被广泛作为几乎所有计算机视觉应用的特征提取器,主要是因为它能够从数据中学习到优良的特征。图像识别视为计算机视觉领域中的主旨。其他动物业结合深度学习与计算机视觉的应用很多,因此结合畜牧业会为其带来很多便利,也对其发展带来了很大的促进。
通过查阅计算机视觉方面的文献,深度学习与计算机视觉在动物与植物上的研究方向主要分为目标检测[9]、分类任务[10]、语义分割[11]和实例分割[12]等类别。文中需要分割的目标为马匹躯干和躯干上烙印号区域,采用实例分割方式。因此文中选用Mask R-CNN 网络分割图像中马匹躯干及烙印号得到掩膜,在躯干及烙印号检测的同时实现了躯干及烙印号与背景的分割。
实验一部分数据采集于新疆伊犁昭苏县军马场、伊犁马场,共2 110 张图像。为了更加方便地获取马场或草场上自然状态下的马匹图像,利用三脚架、单反相机等设备,将相机调整到距离地面1.5 m高度,正视于马匹左右侧面,获取正视彩色图像,按照拍摄日期存入电脑设备,便于后续对图像进行处理。另一部分数据通过网络爬虫方式获取了清晰的图像,包含马匹全身的彩色图像1 万多张,经人工筛选后选取了610 张图像作为数据集。
将获取的2 110 张图像作为数据集。图像标识工具为Labelme[13],在Labelme 图像标注工具中利用多边形标注的形式标注出马匹躯干轮廓和马匹躯干上的烙印号,实验将1 688 张图像用作训练集,使用json_to_dataset.py 批量生成Mask R-CNN 需要的数据集,并送入网络中进行训练。
该实验使用Ubuntu18.04.4 操作系统,计算机CPU 为Inter®Xern(R)CPU E5-2620,服务器显卡为TITAN V,显存为64 GB。模型采用深度学习框架Keras2.1.5 和TensorFlow-GPU1.14.0。训练Mask RCNN 模型时先进行调试,图片大小(IMAGE_DIM)为512 像素,NUM_CLASSES 设置为1+2,其中1 代表背景类,2 为类别数(躯干和烙印号)。批处理大小设置为4,采用0.000 1 的初始学习率。
Faster R-CNN[14]是较好的目标定位网络,在它的基础上提出了Mask R-CNN 网络。使用Mask R-CNN做检测任务的同时,对目标候选框区域(ROI)中的目标使用全卷积网络(Fully Convolutional Net-works,FCN)[15]进行分割,得到每匹马的躯干与烙印号的Mask 遮罩图像。
马匹图像传入到Mask R-CNN 的网络时,为了防止失真和保证后期进行语义分割时的准确度,图像的边缘加上灰条变成正方形,同时还要保证图像的边长为26的倍数。
实例分割模型整体结构如图1 所示,由3 个阶段组成:1)马匹图像传入到卷积神经网络(CNN)当中,而CNN 网络分两部分,一是主干特征提取网络(ResNet-101),二是特征金字塔FPN(Feature Pyramid Networks)[16]。ResNet-101 结 合FPN 网 络 将 输 入 的马匹图像划分成P2~P5 4 种不同大小尺度的网格,相当于把图像划分成不同大小的网格。2)利用候选区域生成网络RPN(Region Proposal Network),为每个特征点生成3 个先验框(Anchor),并获得Anchor的调整参数及检查先验框内是否包含物体。利用建议框特征层进行截取,得到的部分特征层反映了原图像中的不同区域,完成每个像素的前后景判别及马匹躯干与烙印号的第一次Bounding-box 修正。随后将截取到的内容传入到ROI-Align 层中,获得一样大小的局部层。3)将该局部特征层传入到全卷积网络(FCN)中,根据Bounding-box 提取P2~P5 特征送入class、Bounding-box、Mask 三分支网络。
图1 实例分割模型整体结构
FPN 特征金字塔网络[17]的构建是为了实现将多个阶段特征图融合在一起。在主干特征提取网络中进行特征提取,过程中对特征层的长和宽不断地进行压缩,之后对提取到的特征进行上采样,最终特征重新变大后与之前获得的一些特征层进行融合,通过这种特征层不断的组合来实现更丰富的特征提取。
图1 中主干特征提取网络ResNet-101 的5 个阶段中,以特征图大小不变的层为一个阶段,每次提取各阶段最后层输出的特征。如图2 所示,在个数不变的同时保证C1~C5 的输入特征图尺寸不同,随着卷积的进行,特征图的个数越来越多,尺寸越来越小。采用Conv 1×1 的卷积在保持特征图大小不变的同时降低了维度。C5、C4、C3、C2 卷积之后进行上采样,目的是使规格大小不匹配的两层特征相融合。Conv 3×3 对每一个融合后的特征P5~P2 进行卷积,消除上采样后的混叠效应及进行降维,并且在每个融合后的特征层上单独进行预测。
图2 特征金字塔网络
在最初的几个检测框架中,用比较传统的算法来提取候选框,耗时较长,因此研究者们提出使用RPN 来提取候选框,很好地克服了传统算法的一些缺点。
候选区域生成网络(RPN)[18]通过一个在共享特征图上的3×3 的卷积生成候选区域。RPN 扫描的区域被称为Anchor 先验框。参数不同,得到的候选框也很多。每个特征图经过3×3 的卷积得到512 个特征图,特征图上每个Anchor 进行两种判断,首先在分类层(Cls layer)判断是否为物体,其次二分类2kscores 判断先验框是前景和背景。在回归层(Reg layer),Anchor 的微调整主要由4 个值完成,即前RPN网络生成候选框的4 个坐标的回归值和训练集中正确的目标框之间的差异。
Faster R-CNN 网络中候选区域池化(Region of Interest Pooling,ROI Pooling)是处理实例的实际核心操作,在特征图中,将对应的区域池化为固定尺寸的特征图,送入全连接层进行分类和ROI 边框的调整。ROI Pooling 不细致的空间量化产生了很多偏差,影响了检测和分割的准确度。ROI Align 层解决了上述缺点,取消了ROI 特征图生成中的两次量化操作,将候选区域(ROI)分割成k×k个单元(bin),每个单元的边界不量化,保持浮点数。采用双线性插值算法计算ROI bin 的4 个采样位置输入特征的精确值,并进行平均池化操作,公式如下:
而ROI-Align 采用双线性插值算法,保留浮点型坐标,避免了量化误差,可以使原图像像素与特征图像素相匹配。在精确的定位指标值下,它显示出更好的性能。
双线性插值算法公式如下:
1)对x方向进行线性插值
当R1=(x,y1) 时,
当R2=(x,y2) 时,
2)对y方向进行线性插值
其中,f(x,y)为待求解点P的值,f(Q11)、f(Q12)、f(Q21)、f(Q22)分别为已知Q11=(x1,y1),Q12=(x1,y2),Q21=(x2,y1) 及Q22=(x2,y2)的4个点的值,f(R1)、f(R2)为x方向插值得到的值。
文中模型主要作马匹躯干和烙印号特征框的定位检测、马匹躯干和烙印号背景的分类以及躯干和烙印号与背景的分割3 种任务。损失函数由分类损失、定位损失以及分割损失组成。训练采用101 层的深度残差网络ResNet-101,训练时以图像为中心,图像长和宽较小的一侧归一化到同一像素。
在模型训练中,在每个采样的ROI 中有多任务损失函数,定义如下:
式中,Lcls为分类损失;Lbox为回归损失;Lmask为分割损失。Mask 掩码分支对每个ROI 具有kn2维输出,可以将它编码成分辨率为n×n的k个二进制掩码,每个类对应一个二进制掩码(总共k个类)。FCN 应用每像素的sigmoid,Lmask使用平均二进制交叉熵损失。对于ROI(关联的真实目标类别为k),Lmask只能定义在第k个掩码上,其他掩码输出不会导致损失。Lmask是获得良好实例分割结果的关键。
全卷积网络(FCN)是UC Berkeley 的Jonathan Long 等人于2015 年提出的用于图像语义分割的一种框架。FCN 是在CNN 的基础上进行一定的修改并增加反卷积,使得网络输入任意大小的图像经过卷积层和池化层,在最后一次卷积层的特征图(feature map)上用反卷积来作上采样,输出的特征图与输入图像大小相同,同时每个像素利用Softmax 分类器进行分类预测,从而预测出每个像素的类别。
模型共计训练50 个epoch,训练得到预测模型后,用没有训练过的422 张图像作为测试集对模型进行检验(训练集个数与测试集个数比为8∶2)。该实验在完成马匹躯干及烙印号目标定位框的同时,用不同颜色的掩码将目标信息与背景分割开,因此实现了马匹躯干及烙印号的检测定位并进行分割的效果。
在模型训练过程中记录各类别的AP 值、AP0.5值、AP0.75值,统计结果如表1 所示。
表1 文中算法主干网络对马匹烙印号分割评价指标
表1 中,IoU 阈值超过0.5 时的指标定义为AP0.5值,阈值超过0.75 时定义为AP0.75值[19]。
图3 为AP 值随epoch 的变化曲线可以观察到,随着epoch 的不断增长,AP 值逐步提高,从而达到较高的稳定值。
图3 AP值随epoch的变化曲线
图4 为模型训练损失值(loss)随epoch 的变化曲线。可以看出,损失值随着迭代次数epoch 的增加出现小幅度震荡下降,epoch 在45 至50 区间时loss 值稳定下来,最终收敛于0.095 左右,说明模型在训练集与测试集上有着较好的烙印号检测能力。
图4 模型训练损失值随epoch的变化曲线
在马匹鉴定以及马匹护照生成的过程中,将图像中的马匹烙印号作实例分割,获取预测结果中每一个烙印号的预测框的坐标,随后判断烙印号是否在躯干上并对烙印号进行裁剪,获取烙印号的图像,利用OpenCV[20]的进行以下处理:
1)灰度化处理,在对分割出的烙印号进行字符提取时,需要将彩色分割烙印号直接转换成灰度图像,以保证计算的快速性。
2)直方图像均衡化处理,灰度化处理后的图像有多处灰度级分布不均匀和亮度高或低的区域,通过均衡化变换得到均匀分布的图像,提高后期处理的效率。
3)中值滤波,滤除图像中字符周围存在的噪声点。
4)闭运算,主要去除图像中出现的小点、毛刺、裂缝,图像位置和形状不变。
5)阈值二值化操作,对图像中的像素作取舍,小于阈值220 色值的像素归零,大于阈值220 色值的像素设为255。
6)绘制轮廓,先找出轮廓值,建立一个等级树结构的轮廓,存储所有的轮廓点,相邻两个点的像素位置差不超过1,绘制出烙印号的轮廓。过滤宽高比例小于设定值的轮廓,随后进行轮廓提取,用黑色填充轮廓,放置透明背景上[21]。
7)等比例缩小,调整透明背景上轮廓的纵横比,将其放置在马匹登记系统上外貌特征图示中马躯干区域烙印号相应的位置上,调整区域的纵横比。
8)将图片叠加完成马匹烙印号的自动标记工作外貌特征图示如图5 所示。
图5 外貌特征图示
从图5 中看出,已很准确地完成了马匹登记系统外貌特征图示的特征自动标记。
该实验把传统畜牧业与计算机视觉相结合,通过采集马匹左、右侧图像,构建了一个具有分割标注信息的马匹数据集。利用Mask R-CNN 网络训练出检测模型,该模型在现有马匹躯干及烙印号检测的基础上,实现了两者的定位,通过增加分割分支,在马匹躯干及烙印号检测的同时实现了两者信息之间的分割,并完成烙印号的提取。利用预测分割解决了马匹登记系统中外貌特征图示上烙印号的自动标记问题,取得了较好的效果,体现了较高的实际应用价值。