本发明涉及机器视觉技术领域,尤其涉及一种计算机视觉猪只关键点识别方法。
背景技术:
对猪只的相关机器视觉研究过程中,一般都需要先提取猪体对应的特征区域的关键点,不同的猪只关键点在一定程度能反映猪只健康情况。
计算机视觉方法提供了一种不需要人看视频自动进行病猪识别的技术,在现行多种计算机视觉识别病猪的技术中最基础并且最关键的技术就是识别出猪的部位关键点,这样可以极大降低后期病猪识别(例如体外伤、咬耳等)的技术难度。目前市场的技术亦或是在研发中的相关技术文献都是在限定简单的环境下,例如单猪单体栏,或者4只猪以内的栏位进行简单监测,面对的复杂场景(栏位内猪头数一般大于5)就无法实现。同时识别的猪只关键点很少,一般都是头、耳、鼻、腿、尾,特征区域较大不够细化,对猪部位关键点不能进行精确识别。
而本发明提出一种密集场景下的计算机视觉猪关键点识别算法,能够自动检测出密集栏位内猪的部位关键点,可以降低后续各种具体病猪识别方法的开发技术难度。
技术实现要素:
有鉴于此,本发明提供了一种计算机视觉猪只关键点识别方法,不仅能够在猪只密集场景下工作,而且能够自动检测出密集栏位内猪的部位关键点,通过关键点状态的准确识别,可以为后续各种具体病猪识别方法的开发提供技术支持。
为实现上述目的,本发明提供如下技术方案:
根据本发明提供了一种计算机视觉猪只关键点识别方法,包括以下步骤:
步骤1,采集猪只的图像数据;
步骤2,剔除图像数据中的异常图片,获取目标图像;
步骤3,利用开源目标检测模型处理目标图像,以获取密集场景下、视野范围内所有目标猪只的方框坐标;
步骤4,提取所有目标猪只的方框坐标,形成逐个单猪只图片;
步骤5,通过深度神经网络处理单猪只图片获取特征映射,并利用特征映射得到猪只关键点位置坐标。
进一步地,所述异常图片包括光照异常图片、模糊异常图片、有雾气异常图片和角度异常图片。
进一步地,上述步骤2包括:
1)通过opencv和图像hsv值处理异常图片,以剔除光照异常图片;
2)将异常图片转为灰度图且平均划分为4块区域,每块区域通过拉普拉斯计算固定值,以剔除所述模糊异常图片;
3)通过最小值滤波处理异常图片,以剔除有雾气异常图片;
4)通过fastlinedetector直线处理异常图片,剔除角度异常图片。
进一步地,上述步骤3包括:
1)将目标图像的数据与yolov4目标检测模型匹配;
2)通过yolov4目标检测模型处理目标图像,获取推理结果,并根据推理结果,得到所有猪只的方框坐标及置信概率;
3)将猪只的方框坐标进行置信概率处理,获取目标猪只的方框坐标。
进一步地,将目标猪只置信概率处理时,过滤掉其中置信概率小于0.3的目标猪只的方框坐标。
进一步地,上述步骤4包括:
对所述目标猪只的方框坐标反算回到所述目标图像的矩阵中,按照目标边框位置索引取出像素值;
在所述目标图像中像素值使用yolov4计算后的坐标进行像素索引得到目标区域,以使所述目标猪只的方框坐标中,所述目标区域中任一张图片中的每个目标猪只都形成一张单猪只图片。
进一步地,上述步骤5包括:
使用单猪只图片,通过resize图片变换算法转换成正方形尺寸;
将所述单猪只图片输入开源resnet50深度神经网络计算,获取猪只关键点特征映射,并通过特征映射得到猪只关键点位置坐标。
进一步地,取得224x224大小的单猪只图片,输入到训练好的resnet50深度神经网络,resnet50深度神经网络或通过一系列的卷积操作和池化操作把单猪只图片运算成20x24x48的特征映射,且20x24x48中20对应20个关键点,24x48的子数组对应每个关键点的特征映射;
从每个所述特征映射中找出峰值,其中峰值大于阈值0.5的特征映射为目标关键点,并利用目标关键点坐标反算目标图像尺寸,目标图像尺寸即为猪只关键点位置坐标。
进一步地,所述目标关键点坐标反算目标图像尺寸的处理包括:所述目标关键点坐标为(x,y),对应猪只目标检测框左上角坐标为(x0,y0),则所述目标图像中猪只关键点位置坐标为(x0+x,y0+y)。
进一步地,上述的猪只关键点包括:猪只的左耳、右耳、后劲中心、脊背前点、脊背中点、脊背尾点、左后髋关节点、左后膝关节点、左后踝关节点、左前踝关节点、左前膝关节点、左前髋关节点、右后踝关节点、右后膝关节点、右后髋关节点、右前髋关节点、右前膝关节点、右前踝关节点和腹部中心。
与现有技术相比,本发明的有益效果为:首先采用从猪只图像的图像数据中获取图像信息,剔除所述图像信息中的异常图片,得到目标图像;然后通过使用开源目标检测模型对所述图像图像处理,检出密集场景下视野范围内所有目标猪只的方框坐标;同时提取所述目标猪只的方框坐标,逐一形成单猪只图片;最后对单猪只图片进行深度神经网络计算得到特征映射,通过特征映射得到猪只关键点位置坐标,从而得到猪只关键点信息。本发明提供的一种计算机视觉猪只关键点识别方法,能够自动检测出猪的部位关键点,通过关键点可以降低后续各种具体病猪识别方法的开发技术难度,例如:检测咬耳时需要检测密集场景中猪的耳朵在哪,我们的猪只关键点中包含左右耳;检测咬腹时需要先检测密集场景中猪的腹部在哪,我们的猪只关键点中包含腹部;使用关键点检测识别到的“耳朵”语义直接检测猪的耳外伤等。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明猪只一侧关键点的示意图;
图2为本发明猪只另一侧关键点的示意图;
图3为本发明实施例计算机视觉猪只关键点识别方法的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
结合本发明的技术方案,例举了相关内容的术语解释,具体如下:
opencv:一个开源的跨平台计算机视觉和机器学习软件库;
hsv:hsv(hue,saturation,value)是根据颜色的直观特性而创建的一种颜色空间,这个模型中颜色的参数分别是:色调(h),饱和度(s),明度(v);
灰度图:把白色与黑色之间按对数关系分为若干等级,称为灰度,灰度分为256阶,用灰度表示的图像称作灰度图;
拉普拉斯算子:在本发明中用于计算二阶导数,发现图片中像素值快速变化的区域,正常图片的边界比较清晰因此方差会比较大,而模糊图片中包含的边界信息很少所以方差会较小,即高斯模糊->灰度化->拉普拉斯计算->绝对值(convertscaleabs)->计算输出图像的方差,根据此方差来判断模糊程度;
最小值滤波:对目标像素及周边像素取最小值后再填回目标像素;
linesegmentdetector:一种检测直线的方法;
神经网络:一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的;
前馈神经网络:一种最简单的神经网络,各神经元分层排列,每个神经元只与前一层的神经元相连,接收前一层的输出,并输出给下一层,各层间没有反馈;
卷积:通过两个函数f和g生成第三个函数的一种数学算子,表征函数f与g经过翻转和平移的重叠部分函数值乘积对重叠长度的积分;
卷积神经网络:一类包含卷积计算且具有深度结构的前馈神经网络;
全连接层:全连接层的每一个结点都与上一层的所有结点相连,用来把前边提取到的特征综合起来;
掩膜:比如图片中有一个圆形物体,我们从一张纸上剪出一个和该物体一模一样大小的圆,把这张纸蒙在图片上,这时候我们只能看见这个圆形物体,这张纸就是掩膜;
图像分类:已有固定的分类标签集合,然后对于输入的图像,从分类标签集合中找出一个分类标签,最后把分类标签分配给该输入图像;
resize图片变换算法:假设原图尺寸的高、宽、通道数分别为hxwx3,
变换后的尺寸的高、宽、通道数为h1xw1x3,变换算法会遍历每个通道,用原始图片的像素填充到新尺寸的图片矩阵上的像素,新图片矩阵上该填充的位置在原始图片上找不到正好的像素填充,则会找到邻近像素的均值进行填充;
目标检测与置信概率:首先定义好需要检测的目标,例如在本专利中目标就是猪,然后进行检测,所谓的检测就是研发一种计算机算法,让计算机把图片中的目标也就是猪框(也就是给出左上角位置坐标和右下角位置坐标)出来,计算机在框出来的同时也会同时给出这个矩形框的置信概率(取值范围是0到1),在本专利中具体地是yolo网络头会根据特征映射计算出来这个值。
yolov4开源项目与推断架构:yolov4整个模型分为三个子模型:darknet(暗网)主干网络、spp(空间金字塔池化)+panet(路径聚合网络)颈部、yolo网络头和非极大值抑制后处理;yolov4推断的时候首先图片(尺寸1920x1080)会被变换成608x608x3的尺寸,然后进入darknet主干网络进行计算,计算结果会把608x608x3的图片计算成19x19x1024的浮点数组,之后经过spp(空间金字塔池化)+panet(路径聚合网络)颈部计算得到76x76x256的浮点数组,最后经过yolo网络头和非极大值抑制后处理计算得到目标检测位置框和目标的名字;
特征映射:特征映射是一种特殊的在计算机中存储的多维数组,数据类型为浮点型,数组中每个值存储的是置信概率取值范围在0到1之间。
图1和图2示意性示出了本发明所要获取的猪只关键点,通过猪只左耳1、右耳2及后劲中心3三个关键点可以做发烧猪识别,这三个点识别出耳根的大致位置,从而提取耳根温度;通过脊背前点4、脊背中点6、脊背尾点5三个关键点可以做猪只的估重;通过左后髋关节点11、左后膝关节点12、左后踝关节点13、左前踝关节点7、左前膝关节点8、左前髋关节点9六个关键点用来进行猪的跛行、瘫痪等异常行为动作识别,也可以用来辅助做猪的估重;通过右后踝关节点13、右后膝关节点12、右后髋关节点11、右前髋关节点、右前膝关节点、右前踝关节点、腹部中心10七个关键点可以用来检测猪腿部是否存在脓包,也可以用来检测猪走路时是否腿拐。
根据本发明提供了一种计算机视觉猪只关键点识别方法,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图汇总示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本发明实施例计算机视觉猪只关键点识别方法流程图,如图1所示,该方法包括如下步骤:
步骤1,采集猪只的图像数据;
步骤2,剔除图像数据中的异常图片,获取目标图像;
步骤3,利用开源目标检测模型处理目标图像,以获取密集场景下、视野范围内所有目标猪只的方框坐标;
步骤4,提取所有目标猪只的方框坐标,形成逐个单猪只图片;
步骤5,通过深度神经网络处理单猪只图片获取特征映射,并利用特征映射得到猪只关键点位置坐标。
根据上述步骤2更具体的是,所述异常图片包括光照异常、模糊、有雾气、角度异常图片;将所述异常图片中的光照异常图片进行opencv和图像hsv值处理,剔除光照异常图片;将所述异常图片中的模糊异常图片转为灰度图,平均划分为4块区域,计算每块区域的拉普拉斯算子边缘模糊程度值,图片模糊人为感觉,基本上就是边看边调的一个固定值,剔除模糊图片;将所述异常图片中有雾气异常图片进行最小值滤波处理,剔除含有雾气的图片;将所述异常图片中角度异常图片进行fastlinedetector直线处理,剔除角度异常的图片,将上述图像数据中的异常图片处理后,获得目标图像。
根据上述步骤3更具体的是,使用公司内部标注的猪目标检测数据集进行训练,猪目标检测数据如图片数据和人工标签,训练的时候把这图片数据和人工标签匹配进yolov4开源技术里面就可以运行训练程序了,运行完就得到模型了,其中公司内部得到可以检测出猪的yolov4目标检测模型;使用所述yolov4目标检测模型对目标图片进行推理;根据yolov4目标检测模型对图片的推理结果,从中得到所有猪只的方框坐标和置信概率;对所述置信概率过滤,得到目标猪只方框坐标,且对所述置信概率过滤时,过滤掉置信概率小于0.3的目标猪只的方框坐标。
根据上述步骤4更具体的是,对所述目标猪只方框坐标反算回到原始图片(即剔除异常图片后的目标图像)矩阵中按照目标边框位置索引取出像素值;在所述目标图像中像素值使用yolov4计算后的坐标进行像素索引得到目标区域,使得所述目标猪只的方框坐标中,目标区域中任一张图片中的每个目标猪只都形成一张单猪只图片。
根据上述步骤5更具体的是,使用前述得到的单猪只图片,通过resize图片变换算法转换成正方形尺寸;使用单猪只图片输入进行训练好的开源resnet50深度神经网络计算,获取猪只关键点特征映射,并通过特征映射得到猪只关键点位置坐标。
接上述实施方式,使用单猪只图片输入进行训练好的开源resnet50深度神经网络计算得到猪只关键点特征映射,包括:首先取得224x224大小的单猪只图片,输入进训练好的resnet50深度神经网络,resnet50深度神经网络或通过一系列的卷积操作和池化操作把单猪只图片运算成20x24x48的特征映射,其中第一个20对应20个关键点,每个24x48的子数组对应每个关键点的特征映射;每个关键点的特征映射会首先使用图片resize算法把特征映射计算为原始猪只小图片尺寸即为224x224大小数组,从每个特征概率映射中找到峰值并且大于某个阈值(0.5)即为对应关键点,关键点坐标反算回目标图像尺寸即为目标图像关键点坐标。
接上述实施方式,关键点坐标反算回目标图像尺寸即为目标图像关键点坐标,包括:假设目标图像关键点坐标为(x,y),对应猪只目标检测框左上角坐标为(x0,y0),则所述目标图像中猪只关键点位置坐标为(x0+x,y0+y)。
本发明工作流程,首先读取图片,然后对图片进行猪群关键点检测,具体包括以下步骤:
步骤1:采集猪只的图像数据;
步骤2的具体步骤:
步骤2.1:计算图片hsv值,剔除光照异常图片;
步骤2.2:计算图片拉普拉斯算子边缘模糊程度值,剔除模糊图片;
步骤2.3:基于最小值滤波,剔除含有雾气的图片;
步骤2.4:基于fastlinedetector直线检测器,剔除栏位角度异常的图片;
步骤3的具体步骤:
步骤3.1:基于yolov4开源项目,使用公司内部标注的猪目标检测数据集进行训练,得到可以检测出猪的yolov4目标检测模型;
步骤3.2:使用上述yolov4目标检测模型,对目标图像进行推理;
步骤3.3:使用yolov4目标图像的推理结果,从中得到每个猪只的方框坐标和置信概率;
步骤3.4:过滤掉置信概率较小的目标,得到成功检测出的目标猪只的方框坐标;
步骤4的具体步骤:
步骤4.1:使用前述步骤得到的目标边框坐标反算回原始图片尺寸坐标;
步骤4.2:在原始图片中使用反算后的坐标进行像素索引得到目标区域;
步骤4.3:对任一张图片中得到的每个目标边框重复上述操作,使得目标图像中每个目标猪只都形成一张单猪只图片;
步骤5的具体步骤:
步骤5.1:使用前述得到的单猪只图片,使用图片变换算法转换成正方形尺寸例如224x224大小;
步骤5.2:使用上述图片输入进行训练好的开源resnet50深度神经网络计算得到猪体关键点特征映射,20个关键点每个关键点一个特征概率映射;其中resnet50深度神经网络计算关键点映射使用开源项目;
步骤5.3:从每个特征概率映射中找到峰值并且大于某个阈值(0.5)即为对应关键点;
步骤5.4:关键点坐标反算回原图尺寸即为原图关键点坐标。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。