七月在线实验室

发布 人工智能 与 数据 相关知识、干货

机器学习撸猫,如何用Custom Vision识别猫的品种

640?wx_fmt=gif&wxfrom=5&wx_lazy=1

白雪公主的后妈问魔镜,谁是全世界最漂亮的女人的时候,希望出来的当然是自己。可为什么,自恋的人类在研究图像识别的时候,选择了喵星人?

你真的以为臭美人类的自拍照数量不足够支撑训练集吗?NO!搞图像识别的科学家们,都是喵奴而已。

以上并不是一本正经的胡说八道,要知道,在数据科学界,管理一个程序员团队通常被形容为牧养猫——试图想控制一种不受控制的人的努力是徒劳的。这种理念甚至被著书成册,一本叫做《养猫:管理程序员要领(Herding Cats: A Primer for Programmers Who Lead Programmers)》的书在程序员间风靡。

本文就来讲讲如何用机器学习算法(基于云的认知机器学习技术 Custom Vision)判断猫的品种。


训练数据集

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

然后分别搜索每个猫的品种并始下载图像。

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

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

640?wx_fmt=png&wxfrom=5&wx_lazy=1

但是每个品种有不同数量的训练图像,这可能会导致识别结果产生偏差,但至少我们意识到算法中的潜在偏差。

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

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

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


测试数据集

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

640?wx_fmt=png

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

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

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


测试成功的例子

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

640?wx_fmt=png

(图片说明:96.9%为暹罗猫)

640?wx_fmt=png

(图片说明:99.8%为阿比西尼亚猫)

640?wx_fmt=png

(图片说明:99.9%为萨凡纳猫)

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

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


预测失败的例子

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

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

640?wx_fmt=png

(图片说明:结果表明不可能是暹罗猫)

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

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

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

640?wx_fmt=png

(图片说明:11.1% 为暹罗猫)

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

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

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

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


狗,兔子,豚鼠

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

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

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

640?wx_fmt=png

(图片说明:这货绝对不是喵星人)

640?wx_fmt=png

(图片说明:有可能是猫)

640?wx_fmt=png

(图片说明:测试出来是猫)

640?wx_fmt=png

(图片说明:测试出来是猫)

640?wx_fmt=png

(图片说明:不可能是猫

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

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


结论

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

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

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

更多机器学习实战项目,扫描下方二维码或点击“阅读原文”

640?wx_fmt=png

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭