英语原文共 7 页,剩余内容已隐藏,支付完成后下载完整资料
犬种鉴定
Whitney LaRow
Brian Mittl
Vijay Singh
摘要
这个项目使用计算机视觉和机器学习技术来根据图像预测狗品种的技术。首先,我们使用卷积神经网络来确认每个图像的狗的面部关键点。这些关键点然后被用于通过SIFT描述符和颜色直方图提取特征。然后我们比较各种分类算法,使用这些功能来预测图像中显示的狗的品种。我们最好的分类器是一个带有线性核心的SVM,并且在它初估值的时候它猜测对了52%的狗的品种,90%的时刻正确的狗的品种在前十预测里面。
介绍
背景
该项目希望从图像中识别出狗品种。这是一个细粒度的分类问题:所有品种的家犬具有相似的身体特征和整体结构,所以区分品种是一件困难的问题。 此外,有低杂交种和高品种间的变异;换句话说,相对而言,品种间差异较小,品种内,包括尺寸,体型,颜色差异较大。事实上,狗是地球上最具形态和遗传多样化的物种。识别品种因为拍摄照片的风格差异组成的多样性而变得困难,这些照片被用于以相同品种的狗的各种灯光和位置为特征的数据集里面。
动机
这个问题不仅具有挑战性,而且其解决方案也适用于其他细粒度分类问题。例如,用于解决这个问题的方法也有助于识别猫和马的品种以及鸟和植物的种类—或者甚至是汽车模型。任何具有相对较小变化的类都可以解决为细粒度分类问题。在现实世界中,这样的一个标识符可用于生物多样性研究,帮助科学家在进行关于某些物种种群的健康和丰富的研究时节省时间和资源。这些研究对于评估生态系统的状况至关重要,并且这些研究的准确性尤为重要,因为它们对政策变化的影响。品种预测还可以帮助兽医为需要医疗护理的流浪狗治疗特定品种的疾病。最后,我们发现狗是最有趣的实验类,因为它们的种类多样性、可爱的天性和丰富的照片,但我们也希望扩大我们对细粒度分类问题的理解,并为科学家提供有用的跨学科工具。
相关工作
在细粒度分类领域已经做了大量的前期工作,并且我们利用这篇文献来加深理解该领域的[9] [3] [5]。同样,在部分定位方面也进行了大量的研究,我们在项目[7][4][1]中充分利用了这些研究。然而,在我们的文献综述中,我们主要关注物种内的分类,这与我们的问题最为相似。.
回顾
早期的细粒分类研究之一是Belhumur等人对植物种类的一次尝试鉴定。[6]这种方法涉及到对一片叶子进行分割,然后使用形状来确定物种。法雷尔等人的一篇论文试图通过在鸟类的喙、眼睛、翅膀、脚和尾巴上找到关键点,并在它们周围建立特征来识别鸟类。[8]
然而,更为相关的是,刘等人在2012年的一篇论文试图使用类似的方法识别狗的品种。[2]他们首先使用SVM回归器,使用灰度SIFT描述符作为特征来分离狗的脸。为了处理旋转和缩放,窗口也被旋转和缩放;通过使用非最大抑制和选择得分最高的检测,他们脱离出仅一个的最好的窗口。
本文的主要目的是寻找狗的面部关键点。刘等人利用了一种局部定位算法,在该算法中,每个眼睛和鼻子上使用一个使用SIFT灰度描述符的滑动窗口SVM检测器。在检测完眼睛和鼻子之后,围绕关键点的灰度SIFT描述符被SVM分类器用作特征值。通过这种方法,刘等人能够对他们的测试数据集进行分类,准确度约为90。
对比
刘等人的成绩真的非常令人印象深刻。然而,在识别狗的脸和他们的关键点上,我们付出了巨大的努力。事实上,刘等人将狗脸检测的失败认定是其流程上的主要瓶颈。
在我们的工作中,我们尝试使用卷积神经网络来辅助狗的关键点检测,即识别眼睛、鼻子和耳朵。CNN已经在识别人类面部关键点方面取得了成功,我们也希望将此技术应用到狗身上。[4]通过这样做,我们排除了狗脸检测过程中的一个步骤,并取代了刘等人的部分定位过程。
对于分类,我们使用多项式逻辑回归和最近邻模型进行分类,刘等人没有使用这些模型。我们希望通过自己的新颖方法,与刘等人的成功相匹配。
技术解决方案
总结
为了解决这个细粒度分类问题,我们开发了分析管道,如图1所示。首先,我们对狗的图像及其标注的面部关键点(右眼、左眼、鼻子、右耳尖、右耳基、头顶、左耳基和左耳尖)进行了卷积神经网络训练。我们使用这个网络来预测一组看不见的狗图像的关键点。然后,这些预测的关键点被送入一个特征提取系统,该系统使用这些关键点从图像中创建更有意义的特征,这些特征随后可用于对图像进行分类。提取的主要特征是围绕每个眼睛、鼻子和面部中心的灰度SIFT描述符(这3个点的平均值)。然后将这些特征用于各种分类算法,即字袋、K-最近邻、逻辑回归和SVM分类器。这些算法将这些图像分类为我们数据集中133种可能的狗品种之一,并完成分析流程。
图1.我们的一张分析流程的图像表示
细节
关键点检测
为了更好地识别犬种,分析的第一步是关键点检测。在哥伦比亚的数据集中,狗脸关键点被定义为右眼、左眼、鼻子、右耳尖、右耳座、头顶、左耳座和左耳尖,并进行了注释。因此,这部分分析管道的目标定义如下:给出一个测试集中没见过的图像,以像素为单位,预测狗脸的关键点尽可能地接近地面实况点。卷积神经网络已被显示在包括人脸检测在内的各种图像检测和分类任务中表现良好,但以往关于狗脸检测的文献没有使用神经网络,因此,我们决定解锁一种新的狗脸关键点检测方法。为了解决这个问题,我们在4776张训练图像上训练了一个完全连通的卷积神经网络,用于预测3575张测试图像的关键点。训练前,所有图像都被缩放到128x128像素;此外,像素强度值被缩放到范围[0,1]。地面实况关键点也相应地被缩放。神经网络是用诺尔恩宽面条API构建的[10]。
它使用均方误差损失进行递归。函数定义为:
该网络使用180批图像进行了4000个时期的训练。在每批图像中,一半图像及其对应的关键点被翻转。这种扩大创建了一个更大的训练集,这有助于防止网络过度拟合给定的数据。网络的架构经历了多次迭代,最终的构建如图2所示。
特征提取
一旦我们检测到面部的关键点,我们就用它们来提取图像中有意义的特征,稍后我们将在分类中使用这些特征。
SIFT描述符
我们使用的一个特性是以重要关键点为中心的灰度SIFT描述符。SIFT描述符可以很好地表示图像的局部区域,这样可以稍后将其与其他图像的局部区域进行比较(例如,我们可以将一只狗的眼睛与另一只狗的眼睛进行比较,看看它们是否相似)。我们将SIFT描述符集中在左眼和右眼、鼻子和面部中心(计算为这三个点的中心)。我们旋转SIFT描述符以匹配狗脸的旋转(计算为连接两个眼睛的线从水平方向的旋转)。我们还将描述符的大小调整为两个眼睛之间距离的一半。我们使用opencv中的pythons cv2库来计算这些SIFT描述符。
图2.卷积神经网络结构
RGB直方图
图像颜色直方图是图像搜索引擎中常用的颜色直方图。考虑到狗的颜色是如何变化的,我们认为使用颜色直方图作为分类器的特征是值得探索的。为此,我们假设了一个RGB颜色空间,像素强度值在0到255之间。因此,我们有256个盒(每个像素值一个)和三个不同的柱状图(每个RGB通道一个),我们将颜色柱状图限制在狗的脸上,以确保背景不会受到干扰。总共产生768个特征(256个容器times;3个频道)。
颜色中心直方图
我们尝试实现的下一个颜色直方图使用kmeans计算所有训练图像上所有像素的32个颜色中心(见图4)。然后我们为每幅图像提取的特征是一张像素值的柱状图,其中每个容器对应一个颜色中心,并包含所有最接近该颜色中心的像素。
图3.一只来自我们数据集的美国斯塔福德郡梗及其相应的颜色直方图(划分为RGB图)。
图4.使用kmeans计算整个图像(顶部)和训练集中的狗脸(底部)的颜色中心。条形图的大小表示训练集中属于该颜色中心的像素数
我们意识到我们从背景色中得到了大量的噪声,这方法在确定一只狗的品种时不应该有任何影响,所以我们后来改进了该算法,只考虑狗脸边界框内的像素(使用面部关键点计算)。我们重新计算了32个颜色中心,只覆盖了面部包含的像素(见图4),重新计算了柱状图,也只覆盖了狗面部边界框内的像素。
分类
Bag of Words Model
我们决定使用bag of words模型作为基线,因为它是一个简单的模型,经常用于对象分类。单词包模型不顾我们检测到的面部关键点,而是根据从图像训练集中获得的SIFT描述符的聚类中心来查找视觉词汇。由于单词包模型对具有非常高类间变异性的对象进行了更好的分类,因此我们不希望它对我们的细粒度分类问题非常有效。首先我们使用OpenCVS FeatureDetector和DescriptorExtractor来提取SIFT描述符。然后我们使用k-均值算法,从pythons scipy库中提取视觉词汇。我们使用这个可视化词汇表来创建特征直方图,对这些直方图进行预处理和缩放以适应高斯分布,然后使用它们来训练sklearn Linearsvc模型。
SVM
我们尝试的第一个真正的分类模型是SVM。SVM是常用的机器学习模型,在多层分类中表现良好。迄今为止,很少有其他受监督的学习算法优于SVMs,这就是为什么我们认为这将是一个很好的开始。
我们尝试了几种不同类型的SVM,以确定哪种最适合我们的用例。我们使用的第一个模型与sklearn中的linearsvc模型相同,我们使用的是bag of words模型。然后,我们尝试使用一个具有线性内核和OnevsrestClassifier的普通SVM,所有这些都使用相同的sklearn库来实现一致性。所有的SVM都使用以面部关键点为中心的灰度SIFT特征值和围绕狗脸计算的颜色中心直方图。在我们的实验结果部分,您可以看到,在保持特征一致的同时,具有线性内核的普通SVM优于其他两个SVM。
Logistic Regression
正如我们在课堂上学到的,线性分类器是一种常用的图像分类的鉴别分类器。与标准线性回归问题不同,我们有一个有限数量的离散值(各种可能的狗品种),我们的预测值y可以接受。为了做出预测,我们将使用以下假设函数:
但是,请注意,用于逻辑回归的sigmoid函数的标准应用用于二进制分类(其中y只能采用两个离散值)。由于我们有133个可能的品种,我们推断上述逻辑来处理多个类, 称为多项式逻辑回归。
我们没有单一的逻辑回归方程,而是有j-1=132个方程,其中j代表品种总数(我们只需要J-1,因为其中一个品种将作为参考)。因此,作为品种j的狗i的对数概率是:
其中 aj 是一个常量, xi 是狗的irsquo;s特征向量, 同时beta;j是breed j的一个回归系数的向量,对应 j = 1, 2, ..., J-1。
与标准的逻辑回归模型类似,我们的模型的响应概率分布是多项式而不是二项式的,并且我们使用标准的最大似然估计来预测最可能的品种。虽然这种逻辑回归的应用已经在细粒度分类中使用过,但我们的文献综述显示,在犬种分类中没有特别的先例。为了实现,我们在python中使用了scikit-learn的线性模型模块。
K-Nearest Neighbors
狗通过其邻居的多数票进行分类,将狗分配给其k个最近邻居中最常见的品种。 正如文章中所指出的,这种方法取决于训练集足够大以产生足够有意义的投票并且不总是产生最佳结果。因此,我们预期其中一个线性分类器表现更好。
实验
数据集
在我们的实验中,我们使用了哥伦比亚犬的数据集,因为它提供了最可靠的在线数据。数据集包含8350张133种不同犬种的图片,其中一些图片如图5所示。每个图像都有一个对应的文本文件,为每个狗脸的边界框和关键点都添加了注释。注记的面部关键点是右眼、左眼、鼻子、右耳尖、右耳基、头顶、左耳基和左耳尖,我们用来训练我们的卷积神经网络进行关键点检测。
关键点检测
从定性上看,关键点预测的结果可以在图6中看到,其中红色交叉点是预测点,绿色交叉点是地面真值点。定量地,我们根据地面真值关键点与其预测对应点之间的平均距离来评价关键点检测。神经网络平均预测关键点距离地面真值点4.62像素。
图5.哥伦比亚大学狗数据集的示例图像
图6.我们的关键点检测CNN的定性结果。
图7.我们的卷积神经网络在图像中识别出“错误”的狗的例子图片。
我们注意到我们的卷积神经网络在图像中出现多只狗的特征时有问题(有时它会试图识别错误的狗,见图7)。此外,卷积神经网络有时在识别某些犬种的耳尖时会出现问题(见图8)。我们认为这是因为耳朵的位置在不同种类的狗之间是非常不同的(可以立起来,或几乎融入头部的其余毛皮)。因此,我们决定不使用耳朵作为分类器中的筛选关键点,以免向特征集添加噪声特征。
分类
我们使用SIFT描述符特性集运行每个分类器,并比较每个模型的准确性(见图9)。
图8.卷积神经网络在检测耳尖方面表现不佳的犬种的例子
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[439593],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。