用于获取牲畜体重的方法、设备及计算机可读存储介质与流程

文档序号:29858494发布日期:2022-04-30 10:06阅读:104来源:国知局
用于获取牲畜体重的方法、设备及计算机可读存储介质与流程

1.本发明一般地涉及牲畜体重获取方法的技术领域。更具体地,本发明涉及一种用于获取牲畜体重的方法、设备及计算机可读存储介质。


背景技术:

2.目前,养殖场在获取所养殖牲畜的体重时,常用的方法是将牲畜放置到磅秤等称重设备上,通过称重设备获取牲畜的体重。一方面,这种称重方式需要将牲畜逐个运送到称重设备上,人力成本和时间成本较高;另一方面,在对活牲畜进行称重时,如果牲畜活动,会造成检测结果准确性差。
3.为解决上述问题,可以采用基于视觉的检测方法获取牲畜的体重,即采用相机获取牲畜的3d深度图像,然后对3d深度图像中的牲畜进行识别,并根据识别出的牲畜的体积获取牲畜的体重。由于养殖栏中通常具有多只牲畜,因此在获取养殖栏的3d深度图像后,需要先将其中的各牲畜逐个分割出来,然后再对各牲畜的体重进行识别。在从3d深度图像中分割牲畜图像时需要先对3d深度图像中的牲畜进行人工标注,然后采用人工标注的3d深度图像对分割网络模型进行训练,以得到可以从3d深度图像中分割出牲畜图像的分割网络模型。但是对3d深度图像的特征点较多,对其进行标注时标注过程较为繁琐,需要大量的人工成本;另外,在对3d深度图像进行分割时,分割网络模型需要对大量的数据进行复杂的计算,因此还存在工作效率低的问题。
4.综上所述可知,现有技术中对图像中的牲畜进行识别时,由于需要进行人工标注而存在人工成本高、工作效率低的问题。


技术实现要素:

5.本发明提供一种用于获取牲畜体重的方法、设备及计算机可读存储介质,以至少解决上述的在获取牲畜体重时,由于需要人工参与而存在人工成本高、工作效率低的问题。
6.为解决上述问题,第一方面,本发明提供了一种用于获取牲畜体重的方法,包括:获取养殖栏的图像,并根据所述养殖栏的图像获取相应的3d点云;将所述3d点云转换为3d深度图像,采用实例分割模型从所述3d深度图像中分割出各牲畜的掩膜图像,并根据所述养殖栏的图像和所述各牲畜的掩膜图像得到各牲畜的目标图片;分别对所述各牲畜的目标图片进行分割,得到各牲畜躯干的掩膜图像;根据所述各牲畜躯干的掩膜图像得到各牲畜的躯干面积和体长,并根据各牲畜的躯干面积和体长得到各牲畜的体重。
7.根据本发明的一个实施例,所述实例分割模型包括主干网络、特征金字塔、yolox_head预测头和yolox_proto网络。
8.根据本发明的另一个实施例,所述根据所述养殖栏的图像和所述各牲畜的掩膜图像得到各牲畜的目标图片包括:根据所述养殖栏的图像和所述各牲畜的掩膜图像,得到各牲畜的实例图像;将所述各牲畜的实例图像分别放置到相应的预设背景图片中,得到各牲畜的目标图片。
9.根据本发明的又一个实施例,根据所述各牲畜的目标图片得到各牲畜的姿态,并删除其中姿势为非站姿的牲畜目标图片。
10.根据本发明的另一个实施例,所述根据所述各牲畜的目标图片得到各牲畜的姿态包括:将所述各牲畜的目标图片输入到分类模型中,根据所述分类模型得到各张牲畜目标图片对应的姿态。
11.根据本发明的又一个实施例,还包括:对所述3d点云进行预处理以删除其中噪点。
12.根据本发明的另一个实施例,所述对3d点云进行预处理包括:响应于3d点云的点数小于设定数量,将该3d点云删除。
13.根据本发明的又一个实施例,所述对3d点云进行预处理包括:对所述3d点云进行密度滤波处理。
14.第二方面,本发明还提供一种用于获取牲畜体重的设备,包括处理器和存储器,所述存储器用于存储有计算机程序指令,所述计算机程序指令由所述处理器执行以实现如上述第一方面任意一项实施例所述的方法。
15.第三方面,本发明还提供一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被执行时实现如上述第一方面任意一项实施例所述的方法。
16.本发明所提供的技术方案,在获取牲畜体重时,首先获取养殖栏的图像,并根据养殖栏的图像获取相应的3d点云,然后将3d点云转换为3d深度图像,并采用实例分割模型从3d深度图像中分割出各牲畜的掩膜图像,进而得到各牲畜的目标图片;接着根据各目标图片得到各牲畜躯干的掩膜图像,根据各牲畜躯干的掩膜图像得到各牲畜的躯干面积和体长,最后根据各牲畜的躯干面积和体长得到其体重。本发明所提供的技术方案是根据养殖栏的图像得到牲畜目标图片的,由于养殖栏图像是平面图,与3d深度图像相比,其需要标注的特征点较少,并且实例分割模型对其进行数据处理时,需要处理的数据量也较少,因此与现有技术相比,可以降低人工成本并提高工作效率。
附图说明
17.通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
18.图1为根据本发明实施例的一种用于获取牲畜体重的方法的流程图;
19.图2为根据本发明实施例的一种实例分割模型的示意图;以及
20.图3为根据本发明实施例的一种用于获取牲畜体重的设备的示意图。
具体实施方式
21.下面将结合附图对本发明实施例中的技术方案进行清楚和完整地描述。应当理解的是本说明书所描述的实施例仅是本发明为了便于对方案的清晰理解和符合法律的要求而提供的部分实施例,而并非可以实现本发明的所有实施例。基于本说明书公开的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
22.请参阅图1,图1示出的是本发明的一种用于获取牲畜体重的方法的流程图。根据
图1所示出的流程可知,本发明的用于获取牲畜体重的方法包括:
23.在步骤s1中,获取养殖栏的图像,并根据养殖栏的图像获取相应的3d点云。本发明所提供的方法中,在获取养殖栏的图像时,可以将相机装在移动小车上,并在养殖舍内设置巡检轨道,然后控制移动小车在巡检轨道上行进;当小车移动到一个养殖栏时,可以控制相机对该养殖栏进行拍摄,以获取该养殖栏的图像;例如,可以使移动小车在各养殖栏分别停留三分钟,并每间隔一分钟拍摄一次养殖栏的图像,以得到三张各养殖栏的图像。在获得养殖栏的图像后,基于相机内参和三维成像原理,可以对采集到的养殖栏的图像进行解析,从而获得相应的3d点云,在本实施例中,根据养殖栏图像获取相应3d点云的方法,可以参考现有技术根据相机所拍摄图像得到相应3d点云的方法。
24.在步骤s2中,将步骤s1中获得到的3d点云转换为3d深度图像,采用实例分割模型从该3d深度图像中分割出各牲畜的掩膜图像,然后根据养殖栏的图像和各牲畜的掩膜图像得到各牲畜的图片。
25.在将步骤s1中获得到的3d点云转换为3d深度图像时,可以采用如下计算公式:
26.i=int(scale
×
x)
27.j=int(scale
×
y)
28.value=int(255
×
(max-z)/(max-min))
29.其中,x、y、z为3d点云中一个点的坐标值,i、j为该点在3d深度图像中对应的坐标,value为该点在3d深度图像中对应的像素值,max为相机到地面的距离,min的值根据相机到地面的高度以及牲畜的预计高度设定,scale为3d点云到3d深度图像的转换比例。
30.在得到3d深度图像后,可以将3d深度图像输入到实例分割模型中,实例分割模型可以从3d深度图像中分割出各牲畜的掩膜图像。本实施例中的实例分割模型可以为分割神经网络模型,获取该实例分割模型的方法可以包括:首先建立一个用于实例分割的分割神经网络模型和一个包含多张牲畜3d深度图像的训练数据集,然后对训练数据集中各3d深度图像上的牲畜进行标注,并采用标注后的训练数据集对所建立的分割神经网络模型进行训练,得到训练后的分割神经网络模型,该分割神经网络模型即为可以对3d深度图像进行实例分割的实例分割模型。
31.在步骤s3中,分别对各牲畜的图像进行分割,得到各牲畜躯干的掩膜图像。在本步骤s3中,得到各牲畜的掩膜图像后,可以将其输入到识别神经网络模型中,采用识别神经网络对各牲畜掩膜图像中对应牲畜的躯干部分进行识别,得到各牲畜的躯干掩膜图像。本实施例中获取识别神经网络的方法可以包括:首先建立一个识别分割神经网络模型和一个包含多张牲畜图像的训练数据集,然后对训练数据集中各牲畜图像上牲畜的躯干部分进行标注,并采用标注后的训练数据集对所建立的识别神经网络模型进行训练,得到训练后的识别神经网络模型。
32.在步骤s4中,根据各牲畜躯干的掩膜图像得到各牲畜的躯干面积和体长,并根据各牲畜的躯干面积和体长度得到各牲畜的体重。在得到牲畜的躯干掩膜图像后,可以得到牲畜躯干在躯干掩膜图像中的面积area和长度,然后根据牲畜躯干在其躯干掩膜图像中的面积以及上述转换比例sacle,即可通过如下计算公式得到牲畜躯干的实际面积true_area和体长:
33.true_area=area/(scale2)
34.由于牲畜躯干面积越大其重量也会越大,两者之间成线性正相关的关系,并且牲畜的体长越大其体重也会越大,因此本实施例中可以建立牲畜躯干面积、体长length与重量之间的线性相关函数,在得到牲畜的实际躯干面积后,可以根据如下公式计算出禽畜的体重:
35.weight=a
×
true_area+b
×
length+c
36.其中a为牲畜躯干的实际面积true_area的系数,b为牲畜屠场length的系数,c为常数。
37.综上所述,本发明的技术方案在获取牲畜体重时,在获取养殖栏的图像后,先根据养殖栏的图像获取相应的3d点云,并将3d点云转换为3d深度图像;然后采用实例分割模型从3d深度图像中分割出各牲畜的掩膜图像,进而得各牲畜的目标图片;接着根据各目标图片得到各牲畜躯干的掩膜图像,并根据各牲畜躯干的掩膜图像得到各牲畜的躯干面积和体长,最后根据各牲畜的躯干面积和体长得到其体重。本发明的技术方案中是根据养殖栏的图像得到牲畜目标图片的,由于养殖栏图像是平面图,与3d深度图像相比,平面图特征点较少,因此对其进行标注时的人工成本较低,实例分割模型对其进行数据处理时,需要处理数据量也较少,因此与现有技术相比,本发明的技术方案,可以在分割各牲畜掩膜图像时降低人工成本并提高工作效率。
38.上文中对本发明的用于获取牲畜体重的方法做了整体的介绍,下面结合具体应用场景,对实例分割模型进行详细说明。
39.图2示出的是一种实例分割模型,可以理解的是,图2所示出的是实例分割模型的一种实施方式,是示例性的而非限制性的,上文中对实例分割模型的描述,也适用于下文中对图2所示出的实例分割模型的描述。
40.如图2所示,在一个实施例中,实例分割模型包括主干网络、特征金字塔、yolo_head预测头和proto分割网络。其中主干网络采用的是cspdarknet53网络,其输入量是尺寸为640
×
640的3d深度图像,当3d深度图像输入到主干网络中后,主干网络可以对该3d深度图像进行卷积处理,依次得到尺寸为320
×
320、160
×
160、80
×
80、40
×
40、20
×
20的特征图像。特征金字塔包括fpn(feature pyramid networks,特征金字塔网络)结构和panet(path aggregation network,路径聚合网络)结构,其中fpn结构可以对主干网络中尺寸为20
×
20的特征图像进行上采样,分别得到尺寸为40
×
40、80
×
80的特征图像,然后将该尺寸为40
×
40、80
×
80的特征图像分别与主干网络尺寸为40
×
40、80
×
80的特征图像进行拼接操作,得到初次拼接后的尺寸为40
×
40、80
×
80的特征图像。panet结构用于对初次拼接后的尺寸为80
×
80的特征图像进行下采样,依次得到尺寸分别为40
×
40、20
×
20的特征图像,然后分别与初次拼接后的尺寸为40
×
40的特征图像、主干网络中尺寸为20
×
20的特征图像进行拼接操作,得到再次拼接后的尺寸为40
×
40、20
×
20的特征图像,将初次拼接后的尺寸为80
×
80的特征图像和再次拼接后的尺寸为40
×
40、20
×
20的特征图像作为特征金字塔的输出量。
41.yolox_head预测头包括1
×
1卷积核和3
×
3卷积核,其输入量为特征金字塔的输出量,yolox_head预测头可以对特征金字塔的输出量进行特征处理,得到特征矩阵(a+b+c+d,sum),在该特征矩阵中,sum为图像中目标框的数量,a、b、c、d均为正整数。设n为大于等于1且小于等于sum的正整数,则第n列表示图像中的第n个目标,前a行表示相应目标框在图像中的位置,第a行之后的b行表示相应目标框是否有牲畜的置信度,第a+b之后的c行为相应
目标框的牲畜类别,第a+b+c之后的d行为相应目标框的掩膜系数。
42.举例说明,设a的取值为4,b的取值为1,c的取值为1,d的取值为32,则特征矩阵(a+b+c+d,sum)的前4行为相应目标框在图像中的位置,例如第1行为相应目标框的长度、第2行为相应目标框的宽度、第3行为相应目标框中心点在图像中的横坐标、第4行为相应目标框中心点在图像中的纵坐标。特征矩阵(a+b+c+d,sum)的第5行为相应目标框是否有牲畜的置信度,该置信度可以为一个0到1之间的值,表示该目标框是否有牲畜的概率。特征矩阵(a+b+c+d,sum)的第6行为相应目标框的牲畜类别,可以将类别的牲畜分别进行编号,该行存储相应目标框牲畜类别的编号。特征矩阵(a+b+c+d,sum)的第7-38行,即该矩阵的最后32行为相应目标框的掩膜系数。
43.上述特征矩阵(a+b+c+d,sum)为yolox_head预测头的输出量。yolox_proto网络的输入量为特征金字塔输出量中尺寸为80
×
80的特征图,并且可以对80
×
80的特征图进行上采样,得到尺寸为160
×
160的特征图。在对输入量中所有的特征图进行上采样后,可以得到一个特征矩阵(160,160,m),其中m为尺寸是160
×
160的图像的数量,该矩阵即为yolox_proto网络的输出量。
44.在得到根据yolox_head预测头和yolox_proto网络的输出量后,从yolox_head预测头输出的矩阵中筛选出置信度b大于设定置信度的目标框,根据这些目标框的掩膜系数得到掩膜系数矩阵c;设yolox_proto网络输出的矩阵为p,sigmoid函数为σ,激活函数为tanh,则可以根据如下公式获取3d深度图像中牲畜的掩膜图像m:
45.m=σ(p(tanh(c))
t
)。
46.在步骤s2中得到3d深度图像后,先对3d深度图像做缩放处理,将其缩放成为尺寸大小为640
×
640的3d深度图像,然后将其输入到实例分割模型中,可以通过实例分割模型得到3d深度图像对应掩膜图像,然后根据目标框在3d深度图像中的位置进行裁剪,得到各牲畜的掩膜图像。
47.上文中对实例分割模型做了详细的介绍,下面结合具体应用场景,对本获取各牲畜目标图片的方法做详细说明。
48.在一个应用场景中,上述步骤s2中根据养殖栏的图像和各牲畜的掩膜图像得到各牲畜的图像包括:根据养殖栏的图像和各牲畜的掩膜图像得到各牲畜的实例图像,将各牲畜的实例图像分别放置到相应的预设背景图片中,得到各牲畜的目标图片。由于在获取各牲畜的掩膜图像时,先对养殖栏的图像做了缩放处理,因此在获取各牲畜的实例图像时,需要先将各牲畜掩膜图像的尺寸还原,因此在本实施例中得到各牲畜的掩膜图像后,首先将其分别上采样至与养殖栏的图像尺寸一致,然后再将各牲畜的掩膜图像与养殖栏的图像相乘,即可得到各牲畜的实例图。在得到各牲畜的实例图后,可以将单只牲畜实例图中的牲畜切割出来,该切割可以采用opencv中的切割算法实现;在将各牲畜单独切割出来后,可以对其进行角度调整并放置到400
×
200的黑色背景图片中,即可得到单只牲畜的目标图片。
49.进一步地,在另一个应用场景中,在获取各牲畜的目标图片后,可以先识别各目标图片中牲畜的姿态,然后保留其中牲畜姿态为站姿的目标图片,删除其中牲畜姿态不是站姿的目标图片。在获取的养殖栏图像中牲畜的姿态可能有多种,如站立、躺卧和蹲坐等,在步骤s4中计算牲畜的体重时,如果牲畜的姿态不是站姿,计算结果会存在较大的误差。因此,本实施例中在得到牲畜的目标图片后,先识别各目标图片中牲畜的姿态,并删除其中牲
畜姿态不是站姿的目标图片,仅保留牲畜姿态为站姿的目标图片,可以提高对牲畜体重检测结果的准确性。
50.更进一步地,在又一个应用场景中,识别各目标图片中牲畜姿态的方法包括:将各牲畜的目标图片输入到分类模型中,通过分类模型得到各牲畜目标图片对应的姿态。在本实施例中,分类模型可以采用vgg(visual geometry group,视觉几何组)分类模型,vgg分类模型是神经网络模型的一种,在使用该vgg分类模型时,可以先建立一个包含多张牲畜图片的训练数据集,然后对其中各张牲畜图片对应的姿态进行标注,并采用标注后的牲畜图片对vgg分类模型进行训练,得到训练后的vgg分类模型,使vgg分类模型能够对各牲畜目标图片对应的姿态进行识别和分类。
51.上文中对实例分割模型和获取各牲畜目标图片的方法做了详细的介绍,下面结合具体应用场景,对本发明的用于获取牲畜体重的方法做进一步的详细说明。
52.在一个应用场景中,本发明的用于获取牲畜体重的方法还包括:在获得3d点云后,对3d点云进行预处理,以删除其中的噪点。在获取的养殖栏的图像中不仅有牲畜,还可能有其它如食槽等养殖设备,因此在根据养殖栏的图像获取相应的3d点云中会存在很多噪点,影响对牲畜体重检测结果的准确性。因此,本实施例中得到3d点云后先对其进行预处理,以删除其中的噪点,提高对牲畜体重检测结果的准确性。
53.进一步地,在另一个应用场景中,对3d点云进行预处理的方法包括:获取3d点云中的点数,并判断该点数是否小于设定数量,如果小于,则将该3d点云删除。在获取的养殖栏图像中,养殖栏中牲畜的数量越多,根据该养殖栏图像得到的3d点云中的点数越多,反之,养殖栏中牲畜的数量越少,根据该养殖栏图像得到的3d点云中的点数越少。在本实施例中,根据养殖栏图像获取相应的3d点云后先统计3d点云中点数的数量,然后判断3d点云中点数的数量是否小于设定数量(如1800),如果小于,则判断该养殖栏图像中没有牲畜,因此将该3d点云删除,以减少杂点的干扰。
54.进一步地,在又一个应用场景中,对3d点云进行预处理的方法包括:对3d点云进行密度滤波处理,以滤除其中的噪点。在本实施例中,对3d点云进行密度滤波处理的方法包括:统计3d点云中各点临近得25个近邻点的平均距离,将该平均距离作为该点的点云密度。获取3d点云中所有点云密度的1/4分位点和3/4分位点,在3/4分位点的基础上加上阈值0.25倍的3/4分位点与1/4分位点差值作为密度滤波的滤波阈值,例如,设3d点云中所有点的最大点云密度为lmax,最小值为mmin,则计算出的密度滤波的阈值为(7lmax+mmin)/8。在得到3d点云中各点的点云密度后,删除其中点云密度大于滤波阈值的点,实现对3d点云的密度滤波。
55.根据本发明的另一方面,本发明还提供了一种用于获取牲畜体重的设备,如图3所示,该用于获取牲畜体重的设备包括处理器、存储器、通信接口和通信总线,处理器、存储器和通信接口通过通信总线完成相互间的通信。处理器用于提供计算和控制能力。存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序指令。该内存储器为非易失性存储介质中的操作系统和计算机程序指令的运行提供环境。上述装置的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过wifi、运营商网络、nfc(近场通信)或其他技术实现。本实施例所提供的用于获取牲畜体重的设备,其存储器用于存储计算机程序指令,该计算机程序指令被处理器执行时可以实现上述用于获
取牲畜体重的多个方法实施例。
56.根据本发明的又一方面,本发明还提供了一种计算机可读存储介质。本领域普通技术人员可以理解,实现上述用于获取牲畜体重的方法实施例中的全部或部分流程可以通过计算机程序指令来指令相关的硬件来完成,所述的计算机程序指令可以存储于一非易失性计算机可读取存储介质中,该计算机程序指令在执行时,可包括如上述各方法实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
57.本说明书中所使用的术语“第一”或“第二”等用于指代编号或序数的术语仅用于描述目的,而不能理解为明示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”或“第二”的特征可以明示或者隐含地包括至少一个该特征。在本说明书的描述中“多个”的含义是至少两个,例如两个,三个或更多个等,除非另有明确具体地限定。
58.虽然本说明书已经示出和描述了本发明的多个实施例,但对于本领域技术人员显而易见的是,这样的实施例只是以示例的方式提供的。本领域技术人员会在不偏离本发明思想和精神的情况下想到许多更改、改变和替代的方式。应当理解的是在实践本发明的过程中,可以采用本文所描述的本发明实施例的各种替代方案。所附权利要求书旨在限定本发明的保护范围,并因此覆盖这些权利要求保护范围内的模块组成、等同或替代方案。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1