一种基于计算机视觉的同栏猪群平均体重估算方法
技术领域
本发明涉及计算机视觉领域和人工智能技术领域,特别地,涉及一种基于计算机视觉的同栏猪群平均体重估算方法。
背景技术
随着我国经济的日益增长,我们对生猪的需求量越来越大。为了更好第管理猪场,需要通过人工智能等技术更加科学地养猪,因此猪场的智能化程度迫切需要提高。在实际生活中,猪场在圈养生猪的时候,通常是把同等大小,体重差不多的猪分成一群,圈养在同一个猪圈或者同栏中。这是因为,猪群之中,为了争夺食物,强大的猪往往占据着猪圈最好的资源,会因为争抢食物或饮水等发生剧烈冲突。在特殊情况下,大猪还容易肆无忌惮的对小猪发起攻击,严重者容易造成小猪的死亡,这是不可挽回的损失。
养殖过程中,需要将生长时间差不多,体型差不多的猪养在同一个猪栏里。此外,一个现实的需求就是,为了智能分析猪的生长情况,需要每日对猪的平均体重进行统计,由于同栏猪体重相差不大,可以随机抽取一头猪进行称重作为平均体重。但如果每日人工驱赶猪群经过称重地磅,则需要耗费巨大的人力和时间,造成严重的浪费,同时驱赶猪群时容易发生意外。
发明内容
本发明的目的在于提供一种基于计算机视觉的同栏猪群平均体重估算方法,以解决背景技术中提出的问题。
为实现上述目的,本发明提供了一种基于计算机视觉的同栏猪群平均体重估算方法,包括以下步骤:
S1、利用同栏猪群视觉估重系统实时采集猪群图像;所述同栏猪群视觉估重系统包括设置在猪栏的正中心位置顶部的摄像机,所述摄像机的安装高度满足其能拍摄到整个猪栏;
S2、建立近似的摄像机成像模型,通过摄像机完成图像坐标到三维世界坐标的近似转换,从而实现图像二维坐标到世界三维坐标的重建;
S3、对所述步骤S1中实时采集到的每帧猪群图像进行猪只检测和实例分割;
S4、对所述步骤S3中检测出来的每只猪进行猪的骨骼关节点检测;
S5、估计猪只各骨骼关节点距离地面高度的先验值;
S6、猪只姿态估计,即估计出猪只的姿态;
S7、利用猪只骨骼关节点和姿态信息,估计猪只的各部位尺寸信息;
S8、采样猪只的实际重量,生成猪只估重回归模型;
S9、利用估算的猪只的各部位尺寸信息,结合猪只估重回归模型,估算出单只猪的体重。
进一步的,所述步骤S2中,使所述摄像机垂直向下拍摄,此时摄像机的成像平面与地面平行,光轴与地面垂直;以摄像机坐标系为世界坐标系,即以摄像机光心O为坐标原点,
x、
y轴为摄像机
x、
y轴,摄像机坐标系
z轴为摄像机光轴;图像上的像素坐标
到三维世界坐标
的转换表达式为:
其中,
和
为每一个像素在
x轴与
y轴方向上的物理尺寸,
为摄像机光心到地面的距离,
为待重建位置距离地面的高度,待重建位置为猪的骨骼关节点。
进一步的,所述步骤S3中进行猪只检测和实例分割具体为:利用目标检测方法检测出每帧图像中的猪只,并利用实例分割方法分割出每帧图像中的每只猪。
进一步的,利用YOLO算法检测出猪只的矩形框位置,利用SOLQ算法描绘出猪只的边缘轮廓信息,从而获得猪只的矩形框位置和边缘轮廓信息。
进一步的,所述步骤S4中,猪的骨骼关节点检测方法采用修改的openpose模型;采用修改的openpose模型对猪的骨骼关节点进行检测时:
1)、首先训练模型,制定猪的19个骨骼关节点;收集猪只在不同姿态下的图像,由人工标记猪的各个部位信息,对修改的openpose模型进行训练;
2)、在进行猪的骨骼关节点检测时,对于每一只猪,截取该猪的矩形框内的图像作为模型输入,模型输出猪的各骨骼关节点的位置。
进一步的,所述步骤S5中,分不同生长周期为猪只各骨骼关节点建立不同的高度先验值。
进一步的,所述步骤S6中,猪只的姿态包括站立姿态和躺卧姿态;估计猪只姿态的具体方法包括:
1)、采集猪不同姿态下的图像,提取其轮廓边缘,制作不同姿态下的模板;为增加鲁棒性,制作某类姿态模板时,该类模板包含10张不同猪只不同角度的模板;
2)、对实例分割后的猪只提取其轮廓边缘,与姿态模板进行对比,选取平均匹配误差最小的模板作为该猪的姿态。
进一步的,所述步骤S7中,由于同栏猪中所有猪只的体型非常相近,因此假设存在一头虚拟猪,而猪栏中的不同猪是该虚拟猪的复制实例;利用一段时间内所有拍摄到的虚拟猪不同的姿态信息,来估计该头虚拟猪的各部位尺寸信息。
进一步的,所述步骤S8的具体做法为:
1)、在猪群随机抽取m个猪只,利用前序步骤估算其体长、肩宽、臀宽、猪头长度、前蹄长度、后蹄长度、猪背部到猪肚的宽度等信息,并人工进行称重得到实际体重;
2)、使用线性回归、幂回归、岭回归、Elastic Net回归、决策树回归、多层感知器或随机森林回归模型对猪的各部位参数和体重进行回归分析,根据均方误差最小原则,选取表现最好的回归模型。
相比于现有技术,本发明具有以下有益效果:
本发明的同栏猪群平均体重估算方法,在猪栏中心顶部位置安装摄像机垂直向下拍摄,建立近似的摄像机成像模型并为猪只的各骨骼关节点建立高度先验值表。首先,对摄像机拍摄的猪只图像进行猪只检测和实例分割得到图像中猪只的矩形框位置和边缘轮廓信息。然后,检测出来的每只猪进行骨骼关节点检测,并且利用猪只的边缘轮廓信息识别其姿态。其次,利用猪只骨骼关节点和姿态信息,估计猪的各部位尺寸信息。最后,采用回归分析建立猪的体重与猪的各部位尺寸信息的相关性模型,从而估算猪的平均体重。本发明通过计算机视觉和人工智能的方法,自动估计出同栏猪群的平均体重;有效避免了每日无休止地耗费人力进行单个猪只的称重,实现了对同栏猪群进行无接触式估重,具有重要的现实应用意义。
除了上面所描述的目的、特征和优点之外,本发明还有其它的目的、特征和优点。
下面将参照图,对本发明作进一步详细的说明。
附图说明
构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
在附图中:
图1是本发明一种基于计算机视觉的同栏猪群平均体重估算方法的流程示意图;
图2是本发明中图像二维坐标转化为世界三维坐标的示意图。
图3是本发明中猪的各部位关键点示意图。
具体实施方式
以下结合附图对本发明的实施例进行详细说明,但是本发明可以根据权利要求限定和覆盖的多种不同方式实施。
请参见图1,本实施例提供一种基于计算机视觉的同栏猪群平均体重估算方法,包括以下步骤:
步骤一:利用同栏猪群视觉估重系统实时采集猪群图像。同栏猪群视觉估重系统具体包括在猪栏的正中心位置的顶部安装垂直向下拍摄的摄像机,该摄像机的安装高度满足其能拍摄到整个猪栏;摄像机为网络摄像机,优选为高清球机或枪机。
步骤二:建立近似的摄像机成像模型,通过单摄像机完成图像坐标到三维世界坐标的近似转换,从而实现图像二维坐标到世界三维坐标的重建。如图2所示,使摄像机垂直向下拍摄,此时摄像机成像平面与地面平行,光轴与地面垂直。即以摄像机光心O为坐标原点,
x、
y轴为摄像机
x、
y轴,摄像机坐标系
z轴为摄像机光轴;图像上的像素坐标
到三维世界坐标
的转换表达式为:
其中,
和
为每一个像素在
x轴与
y轴方向上的物理尺寸,
为摄像机光心到地面的距离,
为待重建位置距离地面的高度,该值无法测量,在本实施例中待重建位置设为猪的骨骼关节点。
步骤三:对实时采集到的每帧猪群图像进行猪只检测和实例分割。其中,利用目标检测方法如YOLO系列算法检测出拍摄图像中的猪只,并利用实例分割方法如SOLQ算法分割出拍摄图像中的每只猪。YOLO算法会检测出猪只的矩形框位置,SOLQ算法会描绘出猪只的边缘轮廓信息,从而获得猪只的矩形框位置和边缘轮廓信息。
步骤四:针对步骤三中检测出来的每只猪,进行猪的骨骼关节点检测。骨骼关节点检测能够帮助识别猪只的各个部位,为后续猪的各部位尺寸信息估计提供支撑。猪的骨骼关节点检测方法采用修改的openpose模型。本实施例对openpose模型的输出部分进行修改,取消骨骼关节点部位关联场(Part Affinity Fields,PAF),仅保留各骨骼关节点部位的置信度图(Confidence maps for part,CMP),这里骨骼关节点置信图的数量改为猪的骨骼关节点的数目,每一张关节点置信图对应猪的一个骨骼关节点出现位置的概率热度图。模型在训练时损失函数仅保留CMP部分的损失。在应用修改的openpose模型用于猪的骨骼关节点检测时:
1)、首先训练模型,制定猪的19个骨骼关节点见图3所示(图中左肩、左臀为在图中未可见但对称存在的关键点);收集猪只在不同姿态下的图像,由人工标记猪的各个部位信息,对修改的openpose模型进行训练。
2)、在进行猪的骨骼关节点检测时,对于每一只猪,截取该猪的矩形框内的图像作为模型输入,模型输出猪的各骨骼关节点的位置,即各点的图像坐标。
步骤五:估计猪只各骨骼关节点距离地面高度的先验值。本实施例分不同生长周期为猪只各关节点建立不同的高度先验值。在一种具体的实施方案中:以月为周期,在每个月里每天随机抽取10只猪,实际测量各骨骼关节点高度,然后每个骨骼关节点取一个月内测量值的平均值,这样就为每个月猪只各骨骼关节点建立了高度先验值,形成猪只骨骼关节点各月高度先验值表。
步骤六:猪只姿态估计,即估计出猪的姿态。本实施例需要估计猪只的姿态,是因为本实施例需要估计猪只各部位尺寸信息,而猪只在不同姿态下在摄像机拍摄图像中适合测量的尺寸信息不同,例如站立姿态下测量体长、臀宽等尺寸信息会更加准确,在躺卧姿态下测量前蹄和后蹄长度、猪背部到猪肚的宽度等尺寸信息会更加准确。因此,本实施例需要首先识别猪群中每只猪的姿态,然后在不同姿态下,估计出该姿态下能够测量的尺寸信息。这里主要识别两种姿态,即站立姿态和躺卧姿态。具体实施方法为:1)采集猪不同姿态下的图像,提取其轮廓边缘,制作不同姿态下的模板;为增加鲁棒性,制作某类姿态模板时,该类模板包含10张不同猪只不同角度的模板;2)对实例分割后的猪只提取其轮廓边缘,与姿态模板进行对比,选取平均匹配误差最小的模板作为该猪的姿态。模板匹配方法采用opencv提供的平方差匹配法CV_TM_SQDIFF。
步骤七:利用猪只骨骼关节点和姿态信息,估计猪的各部位尺寸信息。由于同栏猪中所有猪只的体型非常相近,本实施例假设存在一头虚拟猪,而猪栏中的不同猪是该虚拟猪的复制实例。
本实施例利用一段时间内所有拍摄到的虚拟猪不同的姿态信息,来估计该头虚拟猪的各部位尺寸信息。具体方法如下:
1)、猪的体长、肩宽、臀宽、猪头长度等尺寸信息对应站立姿态,即在站立姿态下计算。猪的体长为猪嘴到猪尾部两点之间的欧式距离;肩宽为延伸猪的左右肩两点之间的欧式距离;臀宽为猪的左右臀部的两点之间的欧式距离;猪头长度为猪的嘴部和颈部两点之间的欧式距离。
2)、猪的前蹄长度、后蹄长度、猪背部到猪肚的宽度等尺寸信息对应卧躺姿态,即在躺卧姿态下计算。猪的前蹄长度为猪的左前蹄和左前肘或者右前蹄和右前肘两个关节点之间的距离;猪的后蹄长度为猪的左后蹄和左后肘或者右后蹄和右后肘两个关节点之间的距离;猪背部到猪肚的宽度为猪的背部和腹部两个关节点之间的距离。
3)、对于虚拟猪的每一个各部位尺寸,找到对应姿态的一个虚拟猪实例,如果该虚拟猪实例的相应两个骨骼关节点置信度均大于一定阈值,则认为两个骨骼关节点均可见,此时该虚拟猪实例有效。根据步骤二中的转换表达式1)将骨骼关节点从二维图像坐标近似转换为三维坐标,其中骨骼关节点的距离地面的高度从步骤五中的高度先验值表查得。然后,通过计算两个骨骼关节点之间的欧式距离得到该各部位尺寸的值,该猪只各部位尺寸有效数加一次。需要说明是的,在这段时间内可以找到多个有效的虚拟猪实例,那么该各部位尺寸有效次数会有多次,则最后取平均值作为虚拟猪该各部位尺寸的值。
步骤八:采样猪只的实际重量,生成猪只估重回归模型。具体做法为:1)在猪群随机抽取m个猪只,利用前序步骤估算其体长、肩宽、臀宽、猪头长度、前蹄长度、后蹄长度、猪背部到猪肚的宽度等信息,并人工进行称重得到实际体重。2)使用线性回归、幂回归、岭回归、Elastic Net回归、决策树回归、多层感知器(MLP)、随机森林回归等模型对猪的各部位参数和体重进行回归分析,根据均方误差最小原则,选取表现最好的回归模型。本实施例中使用随机森林回归能够取得比较好的结果,因此使用随机森林回归模型。
步骤九:利用步骤三至七估算的猪只的各部位尺寸信息,结合步骤八生成的猪只估重回归模型,估算出单只猪的体重。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。