论文阅读笔记(十三)——利用卷积神经网络进行农场猪脸识别

论文阅读笔记(十三)——利用卷积神经网络进行农场猪脸识别论文阅读笔记(十三)——利用卷积神经网络进行农场猪的人脸识别论文简介论文全称:《Towardson-farmpigfacerecognitionusingconvolutionalneuralnetworks》中文名:《利用卷积神经网络进行农场猪的人脸识别》期刊情况投稿期刊:《ComputersinIndustry》期刊情况:中科院二区影响因子4Q1分区初审一个月,总时间约为6个月摘要近年来,由于继续采取集约化做法和需要精确的客观测量(例如体重),识别猪和牛

大家好,又见面了,我是你们的朋友全栈君。

论文阅读笔记(十三)——利用卷积神经网络进行农场猪脸识别

论文简介

论文全称:《Towards on-farm pig face recognition using convolutional neural networks
中文名:《利用卷积神经网络进行农场猪脸识别

期刊情况

投稿期刊:《Computers in Industry》
期刊情况:

  • 中科院二区
  • 影响因子4
  • Q1分区
  • 初审一个月,总时间约为6个月
    影响因子

摘要

近年来,由于继续采取集约化做法和需要精确的客观测量(例如体重),识别猪和牛等单个牲畜已成为一个紧迫的问题。目前的最佳做法是使用RFID标签,这对农民来说既耗时又让动物苦恼。为了克服这一点,非侵入性生物识别被提出使用动物的脸。我们在一个农场环境中测试了这一点,在10头猪身上使用了人脸识别文献中采用的三种技术:Fisherfaces、VGG-Face预训练的人脸卷积神经网络(CNN)模型和我们自己的CNN模型,我们使用人工增强的数据集训练。我们的结果表明,在1553幅图像上,准确的猪个体识别是可能的,准确率为96.7%。Class Activated Mapping using gradcam被用来显示我们的网络用来区分猪的区域。

研究背景

近年来,由于可持续的集约化已成为普遍现象,对个别动物的农场识别的需要已变得更加迫切,而且越来越需要监测每只动物的投入和产出的能力。牲畜识别的主要方法是通过无源射频识别(RFID)标签。这些低成本的标签通常通过穿孔的方式安装在动物的耳朵上,这对动物来说是一项费时且痛苦的活动。它们也有一个有限的范围(即使是远距离读取器声明的最大距离为120厘米),在此范围内它们可以被激活并成功读取,多个标签不能同时读取。即使给每头猪加上两个标签(以提高成功识别的机会),也只能在近距离识别动物,准确率为88.6%。农场环境中的常见因素也会对天线的有效性产生不利影响。来自其他设备的金属设备和标签读取器(如脱落门或称量秤)会进一步减少距离,干扰会使某些设备根本无法工作。
人脸识别一直是一个活跃的研究领域至少50年。从20世纪90年代的几何特征匹配到整体方法,近年来使用深度网络的趋势将技术水平提高到接近人类水平。它通常用于非侵入性访问控制和监测/监视目的,因此代表了一个潜在的有用的研究领域,适用于猪的识别问题。尽管已经有相关的工作自动识别猪的行为和牛的饲养/站立,牛的生物识别,羊的和犬的显示了有希望的结果,但迄今为止,很少有研究将猪的脸作为生物识别尽管显示了一些将特征脸技术应用于猪的初步结果,并在10头猪使用人工裁剪的完整脸上实现了77%的识别性能。他们对小区域(如鼻子或眼睛)报告了更好的结果,但这依赖于对区域的进一步手动分割,因此不太适用于农场系统。他们也只收集了每头猪16个连续的图像帧,所以当对同一头猪进行成像时,这种系统是否适用于不同的环境条件是未知的。

研究贡献

  • 十头猪77%识别性能
  • 自己的猪数据集
  • 第一个猪脸识别

论文贡献

介绍数据捕获、数据清洗和具体实现。在中可以看到处理管道的概述。
处理流水线展示了本文采用的三种方法对猪的人脸识别的采集、预处理步骤、特征提取和分类

数据收集

汉普郡长白猪,大约四个月大,被安置在SRUC的研究农场(米德洛西安,苏格兰)。这些猪是用Sogatel USB2.0摄像头拍摄的,VGA分辨率(640×480像素),30帧每秒。摄像头与一台戴尔精密(Dell Precision)笔记本电脑相连,笔记本电脑上运行着“iSpy Connect”软件,每当猪主动接近饮水机时,运动检测就能捕捉到它们。如下图所示,相机被放置在饮水机乳头后面。一个Manfrotto通用夹具和铰接臂将相机安装在猪圈框架上,确保足够远的距离,但又足够近,不会在猪喝水时遮住他们的脸。与饮水机接触的方式略有改变,增加了肩栏,帮助保持猪对着镜头,而其他猪则不在镜头内。
照片显示修改后的喝酒乳头(左)和后面的网络摄像头的安排(右)。
没有对饮水机做任何其他改变,该实验得到了SRUC动物伦理委员会的批准在2017年3月31日和2017年4月3日这两个时间段收集了10头猪的数据。相机在无人看管的情况下运行,然后手动标记,以便创建所需的训练和测试数据。从图片中可以看到,这些猪已经被喷上了油漆,以帮助人工识别,而这并不是自动化系统所要求的。还应该注意的是,在安装相机时要小心,以确保阳光不会直射到猪的脸上,否则会导致图像饱和。除此之外,照明水平的自然变化由相机自动处理。猪的例子见下图。
十头猪

数据预处理

为了避免中指出的连续帧间方差小的缺点,我们使用结构相似度指数测度来度量连续帧间的相似度图像。这有助于避免在训练和测试数据分区中出现非常相似(几乎相同)的数据。在报告图像之间的相似性时,这种方法试图比另一种常用的均方误差(MSE)方法更接近人类的感知。它考虑了方差、协方差和平均强度在两个图像,x和y,情商所示。(1)mx, myare平均sx, syare图像的方差和协方差sxythe x和y c1,避免不稳定当分母c2are常数是接近于零。它考虑了方差、协方差和平均强度在两个图像,x和y,如Eq所示。(1) u x u_{x} ux u y u_{y} uy是平均。 σ x \sigma_x σx σ y \sigma_y σy是方差, σ x y \sigma_{xy} σxy是x,y的协方差。 c 1 c_1 c1 c 2 c_2 c2为常数,以避免分母接近零时的不稳定性。
论文阅读笔记(十三)——利用卷积神经网络进行农场猪脸识别
将每个图像与后续图像进行比较,直到找到足够的差异(根据经验确定阈值)(图4)。
图4所示。连续原始捕获的例子,以及那些使用SSIM度量被认为足够不同的帧。在这个例子中,用8秒捕获的31张图像被缩减到只有两张,乍一看是一样的,但仔细观察就会发现相当明显的差异,比如鼻子。
表1显示了每头猪的原始图像数量与仅不同图像的比较。并在试验数据上采用最佳历元计算模型的结果。使用matconvnet1.0-beta13 (CNN的Matlab工具箱)加载预训练的VGG-face模型,Matlab的默认线性SVM实现在Matlab 2017a中使用。这个应用程序也用于fishface实现,并使用N-M个PCA系数,生成M-1按照原公式计算1个LDA系数,其中N为观测次数,M为类数。
表1丢弃被认为过于相似的连续图像前后,每头猪的图像数量。大约70%的图像被丢弃。

理论

本节介绍用于识别个别动物的演算法和神经网络架构。由于在人脸识别方面的大量工作,应用该领域已得到充分证明的方法来探索猪的人脸识别的可行性是合乎逻辑的。特别是我们使用两种方法:一个基准方法称为Fisherfaces和深度学习方法,我们分成两个方法:一个深度预训练的卷积网络模型,我们使用一个支持向量机(SVM)分类,我们自己的卷积网络使用一个完全连接的层进行分类。

Fisherfaces

fishfaces使用主成分分析(PCA)和Fisher线性判别(FLD)的组合。FLD是以Robert Fisher命名的,他开发了分类的技术。该技术的关键在于它使用标记数据并寻求最小化类内分散和最大化类间分散。集群的概念在FLD中很重要,理想情况下,给定标签(或类)的集群是紧凑的(小的类内分散),并且远离其他集群(大的类间分散)。这有助于识别人脸,因为人脸被标记为特定的人。

这里的一个主要假设是,当变量的数量远远大于类的数量时,类内分散矩阵是非奇异的——这是用于人脸识别的情况(即像素的数量远远大于身份的数量),矩阵是奇异的可能性是非常高的。为了克服这个问题,Belhumeur等人在将图像投影到FLD空间之前,先在图像集上使用PCA作为一种降维手段。正是这一额外的步骤使他们能够识别出他们的方法是渔民的面孔。

在论文中,Belhumeur等人比较了PCA(特征脸)和fisher脸的性能,并报告了在不同的光照和表情下渔夫脸的更好的结果(错误率是任何其他方法的一半,特征脸的三分之一)。

虽然这项工作已有20多年的历史,但由于其有效性,仍然被显著地用作基准方法,因此被纳入本文。

深度学习和卷积神经网络

几十年来,神经网络一直是一个活跃的研究领域,因为其理论能力建模任何输入和输出之间的关系,线性或非线性,提供了足够的数据,从中归纳。早在1980年,Fukushima就提出了一种基于人类视觉接受域的架构,他将其命名为Neocognitron。它描述了对输入图像进行卷积和下采样的交替层。这种架构启发了LeNet5的开发,这是一个7层卷积神经网络(CNN),可以识别手写数字。然而,由于需要大量的可训练参数,它只能在32×32像素图像。随着低成本、功能强大的显卡的发展,现在可以在台式机上设计和训练更深入的网络。例如,NVidia公司的 Titan-X 卡(与本研究中使用的类似)包含3072个计算核心和12GB的板载RAM。近年来,深度学习和卷积网络在研究领域和工业环境中都得到了广泛的应用,Lawrence等人首次报道将其用于人脸识别。

深度学习,特别是CNN方法,将经典模式识别的特征提取和分类阶段结合起来,通过卷积层将一个全连接分类器的训练传播回来,以选择最好的特征。在数据集上,一个流行的公开可用的模型提供了接近最先进的性能,它被称为VGG-Face,它基于中描述的vgg非常深-16 CNN,包含37层该模型已经在2400人的250万张图像上进行了训练。在这样做的过程中,它将学习面部的鉴别特征。我们建议使用这个预先训练过的模型,看看我们是否可以利用它在猪脸上表现出来的力量。为了做到这一点,我们需要用新的类重新训练网络末端的分类层,或者将最终卷积层输出的4096个特征输入到传统的分类器中。我们无法使用猪的照片得到一个新的分类层来收敛(大概是因为给定网络的深度,没有足够的数量),所以我们决定使用支持向量机(SVM)来区分4096个特征来识别个体

训练如此深度的网络不仅需要大量的计算能力,而且需要非常大量的训练数据。在这项研究中,我们的数据量有限(平均每头猪150张图像),因此我们在构建自己的网络的深度上也受到限制。为了增加数据量,我们执行一些小操作来增加方差,并提高网络的鲁棒性
数据增强方法:

  • 在x/y平面上移动图像最多64个像素
  • 水平翻转图像
  • 旋转最多30度

彩色的jpg图像是640×480像素,现在改到了64×64个像素(这是根据经验确定的,以提供一个可接受的折衷的良好性能与处理速度),然后被送入网络的第一层。每个图像的目标是pig的身份(1 – 10),这些被转换为10个输出节点的“二进制”表示,其中相关索引中的“1”对应该身份,例如“0100000000”对应pig 2

在这两个网络中,数据以60:40的比例划分为train和test分割,第4节中的结果报告测试分区的性能.我们训练的网络由六个卷积层组成,中间有交替的dropout层和max-pooling层。目的是通过防止局部极小和提供尺度/位置不变性来帮助收敛。分类层由三个完全连接的层组成,最后一层包含10个输出——对应于每头猪。

我们CNN的架构由六个卷积层组成,交替的dropout层和max-pooling层。分类发生在最后三个完全连接的层中

结果

使用不同的数据集,使用Fisherface、VGG-Face预训练模型和我们自己的网络进行测试划分的结果见下表。精确度是指正确识别的图像数量占整个数据集的百分比。假阳性(FP)率是猪的数量是错误的识别为一个特定的猪识别总额的比例,即多少次一个冒名顶替者被认为是某种猪例如1,如果猪4被确定为1,那么这是一个假阳性。同样,假阴性(FN)率是指某头猪被错误识别为另一头猪的次数占该猪总识别次数的百分比。例如,对于猪1,如果猪1被识别为猪4,那么这将是一个假阴性。我们基本上复制了之前的发现采用fisher人脸代替特征人脸,准确率达到78.4%。这与他们报告的整张脸77%的准确率非常相似。人脸识别文献往往报告渔民脸优于特征脸的结果,我们没有看到显著改善的一个原因可能是,他们的结果报告了非常相似的测试和训练图像,以及他们进行的人工裁剪猪脸
使用931个训练样本和622个测试样本(60:40训练:测试分割)对10个猪的脸进行三种人脸识别方法的测试分割结果总结
然而,这两种深度学习方法的结果都令人信服地优于Fisherface。使用cnn可以看到极高的识别结果,我们自己的表现最好(略低于97%)。一旦网络被训练好,整个测试集的622张图像可以在不到1秒内被识别出来(每张图像0.002秒),这意味着该系统可以在一台标准计算机上运行来实时识别动物

上表所示的FP rate显示了发生的错误识别的数量。这些都是重要的度量指标,可以衡量系统在实际应用中的实用性。fishface和VGG-Face + SVM方法显示最高的FP和FN率,在fishface的情况下,超过1 / 4的猪可能被错误分类。这个比率对于农业使用来说很可能太高了。我们提出的CNN方法表现更好,为5.8%,这意味着17个人中可能只有1个人会被错误识别。然而,大部分错误来自猪2和猪3之间的混淆,这两种猪分别有11%和25%的高假阳性率。

非常有趣的是,预训练的VGG-Face模型表现得很好,因为它只接受过人脸训练。这表明,网络学习到的用于识别人脸的许多相同特征同样适用于识别猪的脸。这暗示了一个经过训练的脸部网络在一个物种中可能是可转移的。对于其他物种,至少在使用它来引导一个新物种的新模型使用一个减少的训练集。这种自力更生的方法将是未来工作的主题。
我们CNN的归一化混乱矩阵。注意,主要的混淆发生在猪2和猪3之间,而不是相反
上图为我们CNN结果的归一化混淆矩阵。识别错误最多的猪是猪2(准确率67%),混淆猪3的病例占21%,混淆猪6的病例占12%。有趣的是,参照图3,这三头猪的脸上没有色素/标记(不像其他七头猪)。不确定的是为什么混淆矩阵中存在不对称性,即猪3和猪6的识别准确率分别为96%和94%,而猪2的识别准确率只有67%。猪2的样本数量仅略少于猪3 (58 vs 66),虽然这两个是仅有的两个样本数量少于100个,所以这可能是一个原因。的确,如上所述,这两只猪的FP rate也远高于其他猪;另一个迹象是,样本的数量可能过低——这将在进一步的研究中通过增加数据集的大小来解决。

下图所示的受试者工作特征(ROC)图显示了系统的鲁棒性,每条曲线下的面积都非常大,这表明系统的精度很高,假阳性率很低。正如预期的那样,猪2产生了最差的性能,在每个实例中正确地识别了4头猪(1,7,8和10)
识别每头猪的接收者操作特征(FP = 0,0.1的放大区域)。在6%的假阳性率下,所有猪的识别准确率超过90%。其中8头猪的假阳性率为0.8%,准确率达到95%

讨论

总之,研究结果表明,从一个相对不受约束的场景中(例如,猪可以以多种姿势呈现它们的脸),可以以非侵入性的方式准确识别单个猪。平均而言,使用我们自己训练的CNN,我们在10头猪的1553幅图像上实现了96.7%的准确性。这优于一种经常用于自动人脸识别的标准人脸识别技术,也优于一种预先训练的人脸识别技术CNN, VGG-face。

使用神经网络的一个经常被引用的缺点是,准确理解它们所建模的是非常困难的。这是进一步利用深度网络复合。然而,这已经开始吸引大量的研究兴趣,尤其是对cnn,确保网络的“关注”是关注现实,歧视动物本身的特性,而不是其他地方的图像可能包含有识别力的信息(例如,一个类标签,时间戳印在图像上,甚至是猪身上的喷雾剂区域)。在[27]中,Selvaraju等人提出了一种针对已训练网络的给定类生成球场定位地图的方法(Gradient-weighted class Activated Mapping, gradcam)。本质上,这显示了输入图像的哪个区域激活了给定类的网络。我们实现了这种方法,并在下图中给出了一些代表性的例子
类激活地图覆盖在输入图像和原始照片。这让我们确信,网络并没有根据猪的脸(例如时间戳)以外的其他东西学习识别特征。猪的排列顺序与图3相同,顶部一行为猪1-5,底部一行为猪6-10。
通过检查上图,我们可以看到,该网络主要学习从三个区域来区分猪:猪鼻子本身及其上面包含皱纹的区域,头部(斑纹最普遍的地方),以及较小程度上的眼睛区域。不幸的是,它似乎没有提供任何关于性能变化的见解,即它没有告诉我们任何明显的关于为什么猪2的识别性能很差,也没有告诉我们为什么猪1、7、8和10的识别性能是100%。

总结特点

  • 评估农场牲畜识别系统的可行性
  • 可以利用鱼其他家畜产品
  • 动物老化、疾病等影响因素可作为动物福利评价指标,不考虑影响(PS:这理由学到了)
  • 大量没有任何标记的猪身上测量其有效性,看看该系统是否仍能学习根据不同特征来区分它们,这也将是有益的

总结

我们已经推出了一种非侵入性成像系统,能够从猪圈内经过最低限度调整的饮水器的面部识别单个猪。该系统使用的数据来自一个不受限制的商业农场环境,在那里动物的位置和姿势以及其他方面,如照明和污垢,是相对不受控制和高度变化的。经过训练后,它可以实时操作,准确识别猪只,准确率高达96.7%虽然我们有限的数据集由1553张图片10头猪,这里介绍的优秀结果证明我们的方法的潜力,以及进一步的工作将会使用更方便的开销观点和调查更多变的影响方面的猪的外观(如老化、污垢、撕裂染色)。这项研究对全球畜牧业的集约化操作具有启示意义,允许在不需要射频识别标签的情况下识别动物,以监测福利和生长情况。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151892.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何使用ccs软件创建工程

    这里简叙如何使用ccs软件创建工程的具体步骤,正文如下:1、打开ccs软件,单击菜单栏中的“Project”选项,在弹出的下拉菜单中选择“NewCCSProject”,如下图所示:  2、在“Projectname”中输入自定义的工程名称,在“Family”中选择所需DSP的系列,在“Variant”的目录下选择所需的DSP的型号,最后在“Connection”目录下选择仿真…

    2022年4月8日
    410
  • ext grid设置选中行

    ext grid设置选中行varmodel=grid.getSelectionModel(); model.selectAll();//选择所有行 model.selectFirstRow();//选择第一行 model.selectLastRow([flag]);//选择最后一行,flag为正的话保持当前已经选中的行数,不填则默认falsemodel.selectN

    2022年7月27日
    3
  • Ztree简介

    Ztree简介介绍 zTree 是利用 JQuery 的核心代码 实现一套能完成大部分常用功能的 Tree 插件 兼容 IE FireFox Chrome 等浏览器 在一个页面内可同时生成多个 Tree 实例 支持 JSON 数据 支持一次性静态生成和 Ajax 异步加载两种方式 支持多种事件响应及反馈 支持 Tree 的节点移动 编辑 删除 支持任意更换皮肤 个性化图

    2025年11月1日
    2
  • pytest skipif_pytest不是内部或外部命令

    pytest skipif_pytest不是内部或外部命令前言pytest.mark.skip可以标记无法在某些平台上运行的测试功能,或者您希望失败的测试功能Skip和xfail:处理那些不会成功的测试用例你可以对那些在某些特定平台上不能运行的测试用

    2022年7月29日
    6
  • ip地址子网掩码默认网关dns的含义_子网掩码和默认网关的作用

    ip地址子网掩码默认网关dns的含义_子网掩码和默认网关的作用转载于:https://www.cnblogs.com/JuneWang/p/3917697.htmlIP地址,子网掩码,默认网关,DNS服务器是什么意思?(一)问题解析001.问:IP地址,子网掩码,默认网关,DNS服务器,有什么区别呀?我知道没有IP地址就不能上网,我也知道没设DNS就不能上外网,可它们都有什么功能,有什么区别呢?还有真奇怪,我的计算机没设DNS,竟然能上QQ,却不能打开网页,这是为什么呢>答:IP是32位二进制数据,通常以十进制表示,并以“.”…

    2022年9月29日
    2
  • eclipse自动补全设置_eclipse补全设置

    eclipse自动补全设置_eclipse补全设置Eclipse版本问题描述自动补全显示顺序不尽人意,如下:输入equals使用自动补全后,显然并不是我们希望使用的方法。解决方法1进入Windows选项卡下的Perferences,搜索ContentAssist,找到Java选项卡下的ContentAssist,选择Advanced选项卡。将其中内容配置为(即,将上下两部分的JavaProposals(Task-Focused)取消勾选,将JavaProposals勾选);之后就可以开心的使用自动补全啦!解决方法2这是

    2022年10月15日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号