大家好,又见面了,我是你们的朋友全栈君。
本发明涉及人工智能技术领域,特别涉及到一种用于猪脸的自动识别方法。
背景技术:
当前养猪场进行批量养猪的过程中,养殖者需要掌握每头猪只的饮食情况、健康状态、生长状况以及情绪等信息,因此识别每头猪只的身份信息为养殖者掌握养殖场基本状况提供便利,目前大型养猪场对于猪只的身份管理没有一个准确有效的识别方法,使得在管理猪只的过程中出现混乱和错误的情况,因此,猪脸识别技术的缺乏不利于规模化的精准养猪的推广。
技术实现要素:
本发明的发明目的是,针对上述问题,提供一种猪脸的识别方法,通过人工智能的技术对猪脸进行识别,确认猪只的身份,建立猪只的图片识别库,解决了现有技术缺乏猪脸识别技术的问题。
为达到上述目的,本发明所采用的技术方案是:
一种猪脸的识别方法,包括以下步骤:S1.将分别设有猪栏入口的多个猪栏并排设置,在每个所述猪栏的内部分别设有朝向所述猪栏入口的摄像头;S2.所述摄像头同时对进入所述猪栏入口的猪只进行拍摄,多个所述摄像头同步采集所述猪只的视频源数据;S3.所述视频源数据通过FTP上传至服务器端,在所述服务器端将所述视频源数据处理成猪脸图片;S4.将所述猪脸图片进行筛选和标注,保留有效的猪脸图片和标注所述猪脸图片的坐标信息,筛选后的猪脸图片和对应的坐标信息共同作为图片数据源;
S5.根据所述图片数据源训练识别猪脸的模型,包括以下步骤:
S51.将所述图片数据源转换成符合Tensorflow系统的格式;
S52.将所述图片源数据按照比例分成训练集和测试集;
S53.将所述训练集通过Tensorflow系统的训练脚本训练能够识别猪脸的模型;
S54.通过所述测试集对所述模型进行验证;
S55.通过Tensorflow系统导出脚本生成训练好的识别猪脸的模型;
S6.根据所述训练好的识别猪脸的模型,自动处理所述猪脸图片,包括以下步骤:
S61.对步骤S3获得的猪脸图片输入所述训练好的识别猪脸的模型,通过Tensorflow系统判断输入的猪脸图片是否包含有效的猪脸图片并返回判断结果;
S62.根据返回的判断结果决定是否将所述猪脸图片保存为有效的猪脸图片。
通过使用摄像头采集猪只的视频源数据,利用程序将该视频源数据转化成图片源数据,再通过Tensorflow系统训练识别猪脸的模型,通过该模型实现猪脸的自动识别,可识别的数量大,识别准确率高。
上述方案中,为优化,进一步地,步骤S3的将所述视频源数据处理成猪脸图片通过以下步骤实现:根据所述视频源数据建立每头猪只的主目录和包含在所述主目录下的子目录,并读取所述视频源数据的帧,将所述帧转化为猪脸图片,将所述猪脸图片存储于所述子目录中。
进一步地,步骤S4,S61和S62中的有效的猪脸图片包括清晰的正脸图片和侧脸图片。
进一步地,所述步骤S53中的训练集和测试集的比例为4:1。
进一步地,步骤S1中,每个所述猪栏设置左右对称的摄像头。
由于采用上述技术方案,本发明具有以下有益效果:
1、将多个摄像头同时拍摄一头猪只,同步采集数据,获取大量的猪只视频源数据,使用程序处理视频源数据成猪脸图片以及标注每个猪脸图片的坐标信息,再通过Tensorflow系统训练识别猪脸的模型,通过该模型自动识别猪脸,可实现全自动实现猪脸的识别,建立了猪脸的识别方法,可以识别猪脸的身份信息,为养殖者掌握每头猪只信息提供便利;通过该模型可识别的猪只的数量规模大,识别准确率高,通过验证,经过20万step训练之后,对于测试集的验证准确率达到99%以上。
2、将猪栏并排设置,猪栏入口处于同一水平线上,当猪只进入猪栏,多个摄像头同时拍摄该猪只的视频,从而获取大量关于该猪只的视频,程序自动化处理大量猪只视频生成大量猪脸图片的准确率达到95%以上,为识别猪脸的模型的训练提供坚实的数据基础,降低数据误差,提高识别准确率。
3、通过猪脸图片和标注的坐标信息,细化识别区域,提高识别的准确率。
4、有效的猪脸图片包括正脸图片和侧脸图片,可以进行多方位的猪脸识别,降低识别误差。
5、将视频源数据经过处理后建立每头猪只信息的主目录和子目录,主目录有利于区别于其他猪只,子目录有利于识别单个猪只的特征信息,主目录和子目录共同确定了猪只的身份识别信息。
6、通过技术人员的大量实验验证,训练集和测试集的比例为4:1时,既保证了训练模型时的数据的充足性,又确保验证数据的可靠性,得到的识别猪脸的模型的识别准确率高。
7、在每个猪栏里设置两个左右对称的摄像头,可以全方位地拍摄猪脸视频,避免拍摄死角。
附图说明
图1,猪栏的结构示意图。
图2,识别猪脸模型训练流程图。
图3,程序自动化流程图。
附图中,1.猪栏;2.猪栏入口;3.饮水位;4.料槽;5.摄像头
具体实施方式
以下结合附图对发明的具体实施进一步说明。
如图1、图2和图3所示,本实施例提供一种猪脸的识别方法,包括以下步骤:S1.将分别设有猪栏入口2的多个猪栏1并排设置,每个所述猪栏入口2位于同一水平线上,每个猪栏1内部设有饮水位3和料槽4,在饮水位3和料槽4处分别设有朝向猪栏入口2的摄像头5;S2.摄像头5同时对进入猪栏入口2的猪只进行拍摄,多个摄像头5同步采集猪只获得视频源数据;在本实施例中,每个养猪场安装6个猪栏同步采集视频源数据,每个猪栏1设置左右对称的摄像头,视频源数据的格式为MP4视频;S3.通过FTP工具将视频源数据上传至服务器端,在服务器端用程序将视频源数据处理生成猪脸图片;当天采集完毕的视频源数据通过FTP工具上传至服务器端,通过一段时间的采集,服务器端积累了数量超过25000个的视频源数据,猪只数量超过12500头,通过调用Opencv标准库的方法读取视频帧,视频帧率为25帧每秒,一个小时的视频源数据有90000帧的视频图像,每头猪只的视频源数据会生成90000张猪脸图片,总共猪脸图片的数量达到2.25亿张,用Opencv标准库的方法保存这些猪脸图片,这些猪脸图片包括有效的猪脸图片和无效的猪脸图片;
S4.将猪脸图片进行筛选和标注,保留有效的猪脸图片和标注猪脸图片的坐标信息,筛选后的猪脸图片和对应的坐标信息共同作为图片数据源;
S5.根据该图片数据源训练识别猪脸的模型,包括以下步骤:
S51.将图片数据源转换成符合Tensorflow系统的格式;
S52.将图片源数据按照比例分成训练集和测试集;训练集和测试集的比例为4:1;
S53.将训练集通过Tensorflow系统的训练脚本训练能够识别猪脸的模型;
S54.通过测试集对该识别猪脸的模型进行验证;
S55.通过Tensorflow系统导出脚本生成训练好的识别猪脸的模型;
S6.根据训练好的识别猪脸的模型,自动处理猪脸图片,包括以下步骤:
S61.对步骤S3获得的猪脸图片输入训练好的识别猪脸的模型,通过Tensorflow系统判断输入的猪脸图片是否包含有效的猪脸图片并返回判断结果;
S62.根据返回的判断结果决定是否将猪脸图片保存为有效的猪脸图片。
其中,步骤S3的将视频源数据处理成猪脸图片通过以下步骤实现:采用python语言根据视频源数据实现建立每头猪只的主目录和包含在主目录下的子目录,并调用Opencv标准库的方法读取该视频源数据的帧,将帧转化为猪脸图片,将猪脸图片存储于子目录中。
步骤S4,步骤S61和步骤S62中的有效的猪脸图片包括清晰的正脸图片和侧脸图片。
将步骤S62保存为有效的猪脸图片调用卷积神经网络结构识别模型计算获得的猪脸图片,识别出猪只身份ID。
输入:步骤S62中有效的猪脸图片;
卷积神经网络结构模型计算:通过卷积神经网络结构模型计算出该猪只是否为新增猪只还是已有猪只,如果是新增猪只就生成全球唯一猪只身份ID,如果是已有猪只就识别出猪只身份ID;
输出:通过卷积神经网络结构模型计算出的新创建的猪只身份ID或者识别出的已有猪只身份ID。
上述卷积神经网络结构模型通过以下步骤训练获得:
ST1:首先构建用于自动提取猪只脸部特征的卷积神经网络,并设定卷积神经网络的训练参数;然后采集带有正脸和侧脸的猪脸图片集作为一次训练样本,利用建立的一次训练样本对卷积神经网络进行训练,直至达到设定的训练参数后停止训练,即生成猪只脸部特征码生成器;
ST2:将某一已知猪只的正脸和侧脸图片集作为数据源输入猪只脸部特征码生成器中,经信号处理后猪只脸部特征码生成器的输出端输出该猪只对应的特征码和猪只ID;
ST3:重复上述步骤ST2,则分别得到各已知猪只的特征码和其对应的猪只ID,各个已知猪只的特征码和猪只ID即构成猪只特征码库;
ST4:利用猪只特征码库作为二次训练样本对卷积神经网络进行训练,直至达到设定的训练参数后停止训练,即生成猪脸分类器;
ST5:将待识别猪只的猪脸图片的特征码输入猪脸分类器中,通过猪脸分类器的输出端输出该猪只是否为新猪。由于新猪的正脸和侧脸图片集未被录入进猪只脸部特征码生成器中,所以在猪只特征码库和猪脸分类器中均未有记录。
卷积神经网络结构可包括n个卷积层、m个池化层和k个全链接层,卷积层与池化层交叉依次设置,且池化层采用基于最大值的池化方法,其中n、m、k均为≥1的整数。n、m和k的值可以是同一个相同数值,也可以是相互不同或者是两两相同的数值。优选的,n、m、k的值均为3,即通过三个全连接层来对提取出猪只特征码的特征响应图进行数值预测,得到相似度分数,并输出匹配结果;然后利用匹配结果与真实结果之间的误差,来训练卷积神经网络结构模型的训练参数。
本实施例中,Tensorflow系统为现有人工智能系统。
上述说明是针对本发明较佳可行实施例的详细说明,但实施例并非用以限定本发明的专利申请范围,凡本发明所提示的技术精神下所完成的同等变化或修饰变更,均应属于本发明所涵盖专利范围。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/151876.html原文链接:https://javaforall.cn