猫奴的自我修养,教你如何用机器学习识别猫的品种

如何用机器学习算法能否判断猫的品种?

  • 原作者 Elisha Terada
  • 编译:Mika
  • 本文为 CDA 数据分析师原创作品

之前我进行过一个简单的机器学习实验,来判断图像是否为墨西哥卷饼。

使用相同的基于云的认知机器学习技术 Custom Vision,我想处理一个更复杂的场景。

如何用机器学习算法能否判断猫的品种?

训练数据集

按照惯例,我需要为机器学习算法输入一些图像,让其了解要学习的内容。

首先,我找到了猫的品种列表,包括图像和名称信息,然后以此为基础在网上找图片。

然后,我在Flickr上分别搜索每个猫的品种,并使用Chrome的扩展插件从第一页开始下载图像。

在找图片时,之所以使用Flickr而不是谷歌图片,是为了用Chrome扩展插件下载高分辨率的图像。

猫奴的自我修养,教你如何用机器学习识别猫的品种

Flickr上的苏格兰折耳猫

我花了一个小时左右下载了图片,然后对图片进行处理。删除了当中不是猫的图片,避免影响训练集。

然后,我删除了同一个场景中相同猫的图像。这是为了避免对算法进行过度训练,从而避免它寻找精确匹配的图像,而不侧重预测。

记住,机器学习的目的是为了让算法识别以前未见过的新信息,而不是寻找精确的匹配。

最后,我确保每个品种至少收集5张图像,因为这是在Custom Vision上创建的标签所需的图像数量。

但是,有些常见的猫品种有超过20张图像,而一些不常见的品种只有6张左右的可用图像。

猫奴的自我修养,教你如何用机器学习识别猫的品种

每个品种有不同数量的训练图像

这可能会导致识别结果产生偏差,但至少我们意识到算法中的潜在偏差。

最后,我收集了超过900张猫的图像,包含50个不同品种。

完成数据收集后,我将所有图像上传到Custom Vision,并将每张图像标记为相应品种。

之后,只需点击一个按钮来训练算法,它就可以在几秒钟内进行猫的品种预测。

测试数据集

有趣的部分开始了,让我们先来看看算法的性能。

猫奴的自我修养,教你如何用机器学习识别猫的品种

性能还不错

基于900张图像和50个品种标签,算法的性能还不错。

这比我预想的要好,鉴于它不仅仅是识别该图像是否为猫。

对于没有受过训练的人来说,判断猫品种间的细微差异也是很困难的。

以半信半疑的态度,我打算用之前从未见过的图像对算法进行测试。

首先是Sola,我家耳朵并没有折起来的苏格兰折耳猫。

首先,在已知我家猫是纯种苏格兰折耳的前提下,我用算法对它进行了测试。

猫奴的自我修养,教你如何用机器学习识别猫的品种

Sola为苏格兰折耳的几率为53.9%

测试我家猫很有意思,因为训练集中的所有苏格兰折耳猫图像中,猫都是折耳的。

我并不觉得这有什么影响,接着测试了几张Sola的照片。

猫奴的自我修养,教你如何用机器学习识别猫的品种

Sola为苏格兰折耳的几率仅为34.1%

突然间,我的猫被判定为很可能是威尔士猫。

接着我检查了训练集中所有标有威尔士猫的图像,竟然发现一只看起来和Sola完全一样的猫的图像。

尽管每个猫的品种均有其独特的外观,但两只完成不同品种的猫也可能在面部形态上很相似。

也许有更多不同的威尔士猫图像可以避免这样的问题。

测试成功的例子

让我们看看一些不同品种的测试成功例子。

猫奴的自我修养,教你如何用机器学习识别猫的品种

96.9%为暹罗猫

猫奴的自我修养,教你如何用机器学习识别猫的品种

99.8%为阿比西尼亚猫

猫奴的自我修养,教你如何用机器学习识别猫的品种

99.9%为萨凡纳猫

我必须说,当算法准确预测出给定的随机品种图像时,真的很神奇。

但是这个算法并不是没有缺陷的,下面让我们来看一些预测失败的例子。

预测失败的例子

之前暹罗猫算法测试的效果很出色,让我们再来看看。

首先,测试从背面拍摄的暹罗猫图像会怎么样?

猫奴的自我修养,教你如何用机器学习识别猫的品种

不可能是暹罗猫

老实说,这并不令人惊讶。

所有训练图像集的暹罗猫都是面朝相机,而不是看向旁边的。

再来一张暹罗猫脸部特写会怎么样?

猫奴的自我修养,教你如何用机器学习识别猫的品种

11.1% 为暹罗猫

这个结果似乎与以前我家Sola脸部特写的测试结果类似。

或许不仅仅通过猫的脸部来判断时,该算法的效果会更好。

老实说,如果暹罗猫训练集有相似图像的情况下,结果可能会比11.1%要好。

下面,让我们测试一些不是猫的图像。

狗,兔子,豚鼠

你可能已经注意到,上面每个结果都有“猫”的标签。

使用Custom Vision,你至少需要两个标签来标记每个图像。

让我们来测试一下其他毛茸茸的动物图像。

猫奴的自我修养,教你如何用机器学习识别猫的品种

这货绝对不是喵星人

猫奴的自我修养,教你如何用机器学习识别猫的品种

有可能是猫

猫奴的自我修养,教你如何用机器学习识别猫的品种

测试出来是猫

猫奴的自我修养,教你如何用机器学习识别猫的品种

测试出来是猫

猫奴的自我修养,教你如何用机器学习识别猫的品种

测试出来是猫

猫奴的自我修养,教你如何用机器学习识别猫的品种

不可能是猫

显然,如果看起来足够相似,该算法很难区分什么是猫,什么不是猫。

经过训练的算法很可能是基于颜色,图案和整体形状来进行模糊匹配。

结论

给定粗略的训练集,经过训练的算法在特定的条件下能够很好的判断猫的品种。

然而,对于没有训练过的项目,该算法表现的不太好,例如如何区分猫和非猫的动物。

所以在投入时间训练任何机器算法之前,对其能够处理的范围进行明确的定义是明智之举。

原文链接:

https://medium.com/towards-data-science/which-cat-breed-is-this-a-more-complex-test-case-for-the-cognitive-computing-bce46aa64483

本文为专栏文章,来自:CDA数据分析师,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/46577.html 。

(0)
CDA数据分析师的头像CDA数据分析师专栏
上一篇 2017-07-25 14:42
下一篇 2017-08-02 05:35

相关文章

关注我们
关注我们
分享本页
返回顶部