计算机视觉之图片分类
本文转载自微信公众号「 AI源起」,作者北上。转载本文请联系AI源起公众号。
你会分辨数字吗?
说起AI,大家心里想到的一定是如“流浪地球2”中的MOSS一样的带有智慧的硬件生物,仿佛无所不知、无所不能,只要给他Internet就会像复联2中的奥创一样,利用网络把自身传播的无处不在,总想着消灭人类达到“世界和平”的计划。
然而实际来说,现阶段的AI离大家在影视作品中感受和体会到的,还有相当大的差距,今天就拿图片数字识别为例,一起探索下AI到底是以一种什么形式实际存在的。文章会以一些关键问题为索引,带你一步步理解。Follow me, let’s go ~
这是一张带有数字的图片,相信你一定是看到后立刻就能反应过来,这是一张带有数字“3”的图片(即便它比较模糊)。
第一个问题:真正的智慧体——你为什么能清楚的知道这是数字“3”?这背后代表了什么?
当你看向这张图片,你的眼睛通过光反射在视网膜上将光学信号转换为大脑能识别的生物信号,并将这部分信息暂存(仅辅助理解,实际并不是?)在了你的视网膜上。大脑接受到信号后,通过你聪明的小脑袋迅速认识到这是一个数字“3”,此时你已经对这张图片完全理解了,它就是一张“3”。当然,这一切的基础上,是你从小被教育过,这种形状的数字「等价于」数字3,而不是5、6等其他数字。
第二个问题:眼睛、视网膜——计算机对于实体世界的认知是通过什么形式输入的?
计算机和AI什么关系呢?我们可以简单理解为AI是需要计算机的算力和体系结构一种伪智慧能力,就好比我们自身带有智慧和生命,但是其实本质上就是碳基生物。众所周知,计算机世界里是二进制世界,何谓二进制,简单来说就是非0即1。我知道你此时肯定有疑惑,就靠非0即1的二进制,就能实现这么多功能,有这么强大的算力吗?但先别急,这里需要明确一个概念,就是二进制可以表示任何进制的数字(可以先认为是对的,具体为什么需要的话,咱们后续再聊),比如我们常用的十进制下数字13,在二进制下是 1101,想仔细学习的小伙伴可以看下面图片的解释。
因此我们能明确出,对于一个数字,计算机都能够通过二进制来“理解”。如果图片能够转化成一串数字,计算机是不是就能从一个只知道0和1的呆瓜,变成可以将图片进行信息输入(理解不理解先搁一边,就像孩子长个总得先会吃饭)。如下图,图片每个小区域可以认为是一个像素,一个像素点就代表了一种颜色,那又要众所周知了,任何一种颜色都能通过红色(Red)、绿色(Green)、蓝色(Blue)的不同配比调制出来,那我们按照从左到右,从上到下的顺序,就能形成一个数字列表,那把这些内容送给计算机。
到这一步,不管计算机理解与否,我们已经将图片转换为了计算机能够接受的信号,那计算机的大脑是怎么识别图片中的数字是“3”呢
第三个问题:所谓的AI——计算机应该如何判断这张图片中的数字是“3”
给计算机这样两张图片,它能告诉你左边这张图片是数字“3”,你认为他是具有人工智能吗?你可能觉得这也太naive了,这3岁小孩都知道。但是如果像右图是1万张蓝脚鲣鸟等稀奇鸟类的图片,计算机只用了几秒钟就能以99%的准确率一字不差的判断出来各种稀奇生物,那是不是就有点AI那味了?
传统识别方法——具体来说,我们已经能够将图片转换为数字矩阵了,传统的图片识别方法会将对图片中的特征进行抽取,比如会利用一些硬规则当做特征。对于数字“3”,在我们人脑中一看到这个形状,就下意识反应出来这是“3”,但是对于计算机他是一串数字呀。所以早期在做类似图片分类任务的时候,工程师需要对数字“3”映射下的数字序列进行处理,这可真令人头大。所以如何做特征就是在传统图片识别分类中,一个至关重要,但是极其繁琐的过程。
传统识别方法优势在于,当识别结果出错时候,你可以通过显示特征大致判断错误原因,弊端在于特征工程繁琐。那有没有这样一种方法,可以弱化特征工程(虽然后面很多任务,特征工程也极其重要),给一种端到端的解决方案。所谓端到端,就是我只需要给一张数字图片,和它的分类结果,让计算机自己学习出识别的解决方案(是不是有点像人类的学习思路了)。这里经过时代变迁和计算机的算力大幅提升,基于神经网络的深度学习算法逐渐有了用武之地。
深度神经网络识别方法——这几个字很深奥,不学计算机不搞算法的可能直接被唬住了,我用一句话翻译翻译什么叫深度神经网络(狗头.jpg):输入数据和指定标签之间存在某种非线性的关联,神经网络就是通过多个非线性函数去近似拟合上述的非线性关联。如下图,就是一个简单的深度神经网络,最左侧的图片(字母“A”),右侧呢就是将图片转换为数字后,进行“智能”运算的结构体,可以理解为“大脑”。