一个3岁的小孩可以识别出鸟类的照片,然而最顶尖的计算机科学家们已经花了50年时间,来研究如何让电脑识别出不同的问题。漫画里的灵感就是这么来的。
在最近的几年里,我们终于找到了一种通过卷积神经网络(Convolutional Neural Networks)来进行物体识别的好方法。这些个词听起来就像是从威廉·吉布森的科幻小说编造出来的,但是如果你把这个想法逐步分解,你绝对可以理解它。
让我们开始吧,我们一起来写一个识别鸟类的程序。
万物皆“数”
结论其实极其简单。神经网络会把数字当成输入,而对于电脑来说,图片其实恰好就是一连串代表着每个像素颜色的数字。
短浅的目光
仅仅把像素输入到神经网络里,就可以做出图像的识别,这很棒!机器学习就像魔法一样!对不对!!
呵呵,当然,不会,这么,简单,呵呵呵。(Well, of course it’s not that simple.感受作者的神之鄙视吧哈哈哈)
在机器学习这个领域中,有更多的数据总比一个更好的算法更重要!现在你知道为什么谷歌总是乐于给你提供无限量免费图片存储了吧? 他们,需要,你的,数据!!
卷积是如何工作的
之前我们提到过,可以把一整张图片当做一串数字输入到神经网络里面。不同的是,这次我们会利用“位移物相同”(译者注:也就是平移不变性)的概念来把这件事做得更智能。
下面就是,它怎样工作的,分步解释——
第一步:把图片分解成部分重合的小图块
和上述的滑框搜索类似的,我们把滑框在整个图片上滑过,并存储下每一个框里面的小图块:
这么做之后,我们把图片分解成了多块同样大小的小图块。
第二步:把每个小图块输入到小型神经网络中
第三步:把每一个小图块的结果都保存到一个新的数列当中
第四步:缩减像素采样
最后一步:作出预测
所以从开始到结束,我们的五步就像管道一样连接起来:
95%准确是有多准确?
我们的网络声称有95%准确。但是细节决定成败(devil is in the detail),这意味着各种各样问题可能产生。
比如说,如果我们的训练数据有5%是鸟类而剩下95%不是呢?一个程序即使每次都猜“不是鸟”也能达到95%的准确率。这也就意味着这个程序并没有什么作用。
相比于准确度,我们必须更多的关注在数字本身。为了判别一个分类系统有多好,我们需要知道它是怎样出错误的,而不是仅仅关注它错了多少次。
与其只考虑我们预测的对与错,不如把我们的程序分解成四个不同的类别——
首先,对于那些被我们的网络正确辨认为鸟类而且确实是鸟类的,我们叫他们“真正类(True Positives)”
第二,被辨认为非鸟类,而且确实是非鸟类的,我们叫“真负类(True Negatives)”
第三,被辨认为鸟类,但却是非鸟类的,我们叫“假正类(False Positives)”
第四,被辨认为非鸟类,但却是鸟类的,我们叫“假负类(False Negatives)”
下面的数据是使用那15000张验证图片,在每种类别中我们猜测的数量:
为什么我们要把结果做上述分类呢?因为并不是每一个错误产生的几率都是一样的。
设想如果我们写一个通过MRI图像来探测癌症的程序。如果我们探测到了癌症,我们更希望它是“假正类”而不是“假负类”。因为假负类是最可怕的情况——那就是你的程序告诉你,你绝对没有病,但实际上你已经病入膏肓了。
我们需要计算准确和召回指标(Precision and Recall metrics)而并不仅仅关注总体的准确度。准确和召回指标给了我们程序表现的一个清晰的反馈:
这告诉我们,当我们猜“鸟类”的时候,97%的时候是正确的。但是这同时也告诉我们说,我们只找到了真实鸟类里面的90%。换句话说,我们可能不会找到每一只鸟,但是当我们找到一只鸟的时候,我们很确定它就是一只鸟!
关于我们
小花儿人工智能(www.xiaohuaerai.com)是一家专注于图像识别技术的人工智能科技公司,为迅雷、映客、酷狗、秒拍、美图等数百家知名互联网企业提供高可用的图像识别云服务,产品包括图像内容审核、人脸识别、美颜&特效、主播分类、OCR证件识别、自然场景识别等。