APP下载

基于图像分割的马体尺测量系统设计

2020-04-08张婧婧程芸涛

计算机技术与发展 2020年3期
关键词:体尺胸围体长

张婧婧,程芸涛

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

0 引 言

基于图像信息处理方法提取动物体尺的研究领域,国内相关研究始于二维图像的分析[1]。例如,江杰等人利用背景差分法提取羊体轮廓[2-3];刘波等人运用自动阈值分割与形态学处理进行轮廓分割[4];赵忠鑫等人研究了基于Kinect传感器搭建的羊体尺测量系统,利用深度图像的多元信息提取羊的体尺[5];谭鹤群等人利用机器视觉和数字图像处理技术建立白鲢体长方向截面积分布模型[6];徐建瑜等人利用机器视觉技术测量出鱼体侧面积,并将面积与质量进行数据拟合建立模型,评价鱼的质量[7]。相较于国内研究现状,国外对动物体尺进行测度的设备专利较多[8]。测度动物的体型,建立结构化专用装置,其优势在于方便图像采集和标定,实现对感兴趣参照点进行线性测量[9],不足之处在于建立结构化装置成本较高,还必须诱导动物到指定位置。此外,激光或其他点云获取设备也适用于体尺测量[10-11],但对测量环境要求较高。

目前,依据新疆马业协会发布的地方标准,马体尺测量的主要指标包括马的体长、体高、胸围、管围、体重等[12]。除体重外,其他四项体尺指标的测量可参考图1的测量标准。

图1 马体尺测量的示意图

体高:从鬐甲顶点到地面的垂直距离;

体长:从肩端到臀端的直线距离;

胸围:在肩脚骨后缘垂直绕胸一周的长度;

管围:左前管部上1/3部的下端最细处,水平绕其一周的长度。

如图1所示,A-A线、B-B线、C-C线、D-D线分别为马的体高、体长、胸围、管围。目前人工测量马体的身高、体长过程,通常采用的工具包括卷尺、测杖、圆形测定器及测角计等,测量中需要与马体直接接触。基于深度学习及平面测量技术,本设计获取了马体尺的四项指标,并初步完成马体尺测量的可视化系统设计,旨在探讨马体尺的信息化提取与非接触测量的主要方法。

1 图像采集与实例分割

1.1 YOLO目标检测

为了解决马体与背景的分割问题,基于MS-COCO数据集,采用深度学习的单级目标检测器YOLO进行马体的目标检测,并通过一个简单的全卷积网络YOLACT实现了马体与背景实时的实例分割测试。

YOLO检测器将目标检测视为回归问题,省去了region proposal过程,实现了端到端的网络,可直接得到输入图像的类别及位置。该算法以速度著称,且具有更好的实时性,适合应用于实际的检测任务。

在马体目标检测过程中,打开一帧马体图像,并使用YOLO v3进行目标检测,将获得带有分类类别、位置坐标、外接边框宽高信息的马体对象,如图2(b)所示,筛选出其中类别为horse的检测对象,并去除类别置信度较小的对象,检测效果如图2所示。

图2 YOLO目标检测的测试

1.2 YOLACT分割及图像变换

快速、单阶段的实例分割模型YOLACT将马体与背景的分割过程分为两个并行任务:

一是利用FCN来产生一系列与待测图像大小一致的“prototype masks”,且不依赖于特定实例。

二是为目标检测分支添加一个输出,对每个anchor预测“mask coefficients”,即实例的表示编码为prototype域的表达。

最后使用NMS对所预测的mask进行处理。

设计中采用YOLACT进行马体与背景的分割,旨在发挥其在MS-COCO数据集上约30 mAP的快速分割表现,对伊犁马匹图像进行YOLACT实例分割的效果如图3所示。

图3 YOLACT实例分割的效果

2 马体尺的测量

2.1 马体尺的获取方式

基于马体的分割图像,其体尺的测量需建立与图像之间的准确关联,才能获取有效数据。如体高、体长属于平面测距,可通过像素距离获取比例相关的体尺尺寸;而马体的胸围与管围数据属于立体指标,在单幅平面图像中获取该指标的技术受限,本设计中借助马体尺各指标间的回归特性,同时引入两项平面参数,通过拟合多元线性回归方程,实现马体三维指标的预测。

2.2 马体尺测量实验

基于Matlab仿真平台[13],借助其GUI工具,马体尺测量系统的开发需要依次完成界面设计、图像导入、坐标定位、距离测量、回归分析、测量值筛选、数据显示及保存等流程。

(1)界面设计。

基于线性回归理论,设计进行了马体尺三维预测,而随马体年龄变化,其体尺的回归特性也不尽相同[14-15]。同一品种马形体变化的年龄可细分为0~10岁的11个阶段,因此系统登录后的界面中首先布置了11个Matlab-GUI工具中的单选按钮:radiobutton,用于选择待测马匹相应的年龄段,旨在区别不同马体年龄的体尺特征。

系统主界面设计中采用了包括axes、edit、pushbutton及text等Matlab-GUI工具中提供的各类控件。鉴于系统面板的尺寸有限,测量马体的体高、体长与其胸径、管径数据采用了不同的axes,以利于在获取数据中降低操作的失误率。

(2)导入图像。

限于前期系统面板的设计尺寸,实验中首先进行图像平面测距值与马体人工测量值的比例匹配,选取约220*186像素的伊犁马体图像并以.jpg、.tif等文件格式保存于Matlab工程文件中,旨在用于axes中嵌入图像。

(3)坐标定位。

在马的体高、体长的测量中,只需存储鼠标点击前后的两次坐标并计算两者之间距离,即可测量其相关尺寸。但受面板尺寸影响,为了准确定位鼠标,笔者为系统添加了图像的局部放大功能,将关键特征点以2倍像素放大,加强定位精度。

(4)距离测量。

确认鼠标点击的任意两点A1、A2的像素坐标后,编写dist()函数,或直接调用Matlab中的pdist()函数即可获得两像素点间的距离,即为体高、体长数据。

(5)回归分析。

基于线性回归理论,获取数量相当的马体尺样本值后,挑选各自的因变量、自变量,即可建立胸围、管围的多元线性回归方程,如式(1)所示:

y=b0+b1x1+…+bpxp+e

(1)

马体尺指标中,适当选取自变量及应变量x1,x2,…,xp,y应遵循其相关性原则,调用corrcoef()函数,可以得到马体的体高、体长、胸围、管围、胸径、管径(胸径、管径测量指标为新引入的二维参数,其实际坐标与图1中C-C、D-D点重合)之间相关程度的数据,选取相关程度高的变量即可拟合显著性较强的回归方程。本设计中采用Matlab提供的多元函数regress完成了胸围、管围的回归分析。

根据马体尺指标的相关度测试,首先以100匹伊犁马的三项体尺数据(胸径、体长、体高)为自变量x1、x2、x3,以待测体尺(胸围)为因变量y,进行线性回归拟合,其结果如式(2)所示:

y=-7.298 2+0.927 3*x1-0.023*x2+

0.771 3*x3

(2)

其中,r2=0.839 3,F=27.860 5,P=1.372 8×10-6。由P可知,式(2)的回归模型成立。

随后,更换马体尺数据(管径、体高、体长)的自变量x1、x2、x3,以管围为因变量y,进行回归分析,其拟合结果如式(3)所示:

y=9.564 8+0.051 7*x1-0.012 0*x2+

0.470 3*x3

(3)

其中,r2=0.948 0,F=97.177 6,P=1.750 2×10-10。由P可知,式(3)的回归模型成立。

在回归分析过程中,数据拟合还有一些不可忽视的环节。如马体尺的预测方程将根据马品种不同而有所变化,对同一品种的马匹而言,其年龄不同也将影响回归方程的拟合效果。因此为了提高回归方程的显著特性,只能对马体尺样本空间的多样性及复杂性加以划分,且扩大样本容量以换回更少的测试误差。

此外,针对马体非标准的两类站姿,实验中还讨论了相关回归方程的修正方法,旨在加强体测系统的测量能力。其主要方式为引入体重指标,以便替换因为站姿不准而无法准确获取的其他参数,进而修正预测方程。

(6)测量值的筛选。

为了直观验证测试值的准确性,实验中将已测的体尺数据代入回归方程进行残差分析,以便有效判断其值是否在回归方程的误差范围内波动。如图4(a)中第20组测量值代入方程,偏离中轴线较远,则该值测量结果无效,不保存;对呈现中轴线左右波动不大的测试值,即可认定为有效数据,如图4(b)所示。在Matlab中进行残差分析仅需调用rcoplot(r,rint)函数,为系统逐一筛选测试值提供了便利。

(7)数据显示及保存。

设计中,马体四项体尺指标通过edit控件在测量界面中显示,同时体尺数据还需发送至uitable及excel文档保存。

图4 Matlab中的残差分析

根据上述设计流程,笔者完成了马体尺测量系统的初步开发,其测试界面如图5所示。

图5 体尺测量系统的测试效果

3 结束语

本设计基于MS-COCO数据集得到训练模型,采用实例分割模型YOLACT进行马体与背景的分割,实现马体目标的检测。将检测获得的马体图像通过Matlab仿真平台中提供的多种方法及库函数进行处理,在此基础上完成体测系统的初步设计与开发。设计的不足之处在于测量过程无法自动获取马体尺的特征点,降低了系统的自动化程度,增加了误操作的可能性。

猜你喜欢

体尺胸围体长
家畜体尺自动测量技术研究进展
脖子占体长一半的巨龙——新疆巨龙
探讨假体凸度对假体隆乳患者术后胸围及罩杯的影响
史上最长恐龙
外泌体长链非编码RNA在膀胱癌中的研究进展
基于Kinect相机的猪弯曲体尺测量算法研究
肉羊体尺测量 用上“智慧眼”
胸围革命
幸而今天买了胸衣
海州湾及邻近海域大泷六线鱼的生长、死亡和最适开捕体长研究