上一回为大家介绍了人工智能的基本概念和算法,讲到了梯度下降法、神经网络、机器学习的基本概念,还没看过的小伙伴可以点击这里。
人工智能有一个重要领域就是图像识别。比如:有许多软件可以通过拍照的方法识别出不同的物体。我用它去拍摄我家的狗,发现它不仅能识别出这是狗,甚至还能够识别出狗的类型。
大家想知道图像识别究竟是如何做到的吗?今天我们就来聊聊图像识别中最流行的算法——卷积神经网络。
01
视觉原理
把一副图像输入计算机,计算机会把它变成一大堆数字,然后通过全连接网络和机器学习的大量训练知道什么样的数字表示什么物体。但是,如果所有的图像都通过这种方法进行训练,效率是非常低的。而且,当图像稍微地进行了放缩、旋转时,计算机可能就不认识它了。
相比来讲,人对于物体的识别训练却非常快——人们只要见到过几次摩托车和汽车,就能牢牢记住他们的区别。下次再遇到摩托车时,哪怕它的方向变了,位置变了,或者撞破了,我们依然能区分这是摩托车,而不是汽车,这是为什么?
1981年,诺贝尔生理学和医学奖颁发给了神经科学家大卫·休伯尔和瑞典神经科学家托斯坦·威泽尔,以表彰他们发现了视觉的原理。
大卫休伯尔和托斯坦·威泽尔
他们将电极插入猫的脑子中,让猫看到各种线条,观察脑子中电极的反应。他们发现:猫大脑中与视觉相关的神经细胞分为两种,其一只对特定的线条有反应,他们称之为简单神经细胞;另一种对线条的运动有反应,他们称之为复杂神经细胞。
猫脑电极实验
在他们的启发下,日本科学家福岛邦彦提出了神经认知模型。
福岛邦彦
福岛邦彦说:人类的视觉神经是分层的。首先,物体发出或者反射的光进入眼睛,通过瞳孔晶状体等照射到视网膜上成像。视网膜上的感光细胞会将图像转化为神经冲动传递到大脑。
大脑最初接受视觉信号的神经皮层叫做初级皮层V1,它所获得的是一大堆像素点。随后,V1皮层会把处理过的信号传递到V2皮层,V2皮层会得到图像的边缘、方向等信息;V2皮层再次对信号进行处理,进入V3皮层,在这里神经元会获得物体的轮廓、细节等信息…
信号经过多个皮层的传递,最终抽象出物体的大量特征,从而做出判断。
比如你看到我,知道我是李永乐老师。实际上你看到的并不是一个整体的我,而是一堆像素点,这些像素点首先抽象出边缘、方向,发现我好像是直立行走的,然后又发现了我的轮廓,好像两个胳膊两条腿,一个鼻子俩眼睛,应该不是昆虫,继续你又看到了更多抽象信息,最终才知道我是李永乐老师。
根据这个发现,许多科学家开始研究:如何利用计算机软件模拟视神经系统,其中有突出贡献的就是我们上回谈到的杨立昆。他设计了真正实用的卷积神经网络(Convolutional Neural Network, CNN),并且把它用在了图像识别领域,取得了巨大成功。
杨立坤
下面就让我们一起来了解一下卷积神经网络的原理吧!
02
卷积
例如:我们想判断一副图片是不是X,要知道:X的写法其实有很多种
不过,我们仔细观察这些图就会发现:它们都有一些共同特征,比如中间应该有个十字交叉、左上部位有个向右下的线条、右上部分有一个向左下的线条等等。尽管每一幅图的特征可能不完全一样,但是满足的共同特征越多,图片就越有可能是X。
共同特征
于是,我们首先通过一些方法来寻找这些特征,具体方法是:用一个3*3或者5*5的矩阵与图像上对应位置的矩阵做卷积,所谓卷积就是矩阵上对应元素相乘,然后再把乘积加起来。
举个例子:比如我有一个7*7的黑白图像,里面所有的白色都定为1,黑色定为0,把图片转化成一个数字矩阵,我们称为原矩阵。
原图像
然后,选用用一个3*3的矩阵作为卷积核,卷积核右下方对角线是三个1,其余是0。
卷积核
用这个卷积核在原来的图像上从左到右、从上到下滑动。每滑动一步,都把重叠区域作卷积,如下图所示,这样就获得了一副卷积的结果矩阵,称为特征值矩阵。
第一次卷积计算
第二次卷积计算
这样做的意义在哪里呢?刚才我们说到:我们要提取图片的“特征”。现在,卷积核左上、中间、右下三个数字是1,如果原图片中某个部位也有这样的特征,卷积后特征图该处的部位数字就很大。我们在特征值矩阵上找到比较大的数字,就说明图片在该处更有可能具有这个特征。我们用卷积核对整个图片矩阵做卷积运算,本质上就是在搜索哪些部位具有这些特征。如果我们再更换不同的卷积核,就能找到图片中不同的特征了。
03
池化、激活、全连接网络
图片的特征寻找完了,下一步又该如何做呢?
其实有时候,我们只需要知道这幅图像的某个部位存在这个特征就好了,并不关心那些没有这种特征的位置。所以,我们可以将无用的信息去掉,缩小信息处理量,这个过程叫做池化。
比如,我们可以将特征图中每个2*2的方框内最大的值作为整个方框的值,于是就能够将这特征图缩小,从5*5变成了3*3,当然如果我们愿意,它还可以更小,但它依然包含了特征信息和相应的位置。
然后,我们可以将池化后的特征图代入激活函数(例如Sigmoid函数),当特征值比较大的时候,获得的激活值比较大;特征值比较小时,激活值也小。这样,这一层的特征提取就做完了。
总结来讲:经历了卷积、池化、激活三个步骤,模拟了人眼的一层视神经,通过这一次的操作,我们得到了这张图非常细节的特征。随后我们将第一层的输出作为第二层的输入,进行第二次卷积、池化、激活,获得更大范围的图像特征,以此类推,这就是福岛邦彦所提出的神经认知模型。
最终,当我们获得了足够宏观的信息时,我们就将这些经过处理的信息接入全连接网络,通过机器学习过程判断最终输出这幅图像是什么。由于信息经过了预处理,所以这回全连接网络的复杂度远远低于直接将所有数据输入网络的情况。
这里面有两件事要和大家说明:
怎么样?科学家们的设想是不是非常厉害? 几乎完全模拟了人类的认知过程。当我们用数据训练机器识图之后,机器最终找到了最优化的参数和卷积核,这个过程就叫做训练,就如同小的时候爸爸妈妈带着我们去逛公园,告诉我们这是杨树,那是柳树一样。我们把一个机器没有见到过的图片丢给机器,机器也能够判断这个图片到底是什么,虽然我们不知道机器到底把参数设置成什么样子。同样,当我们认识了杨树和柳树的时候,几乎能够一眼将它们分辨开,但是我们自己却不清楚大脑是如何做到这一点的。
回想一下,我们进入人脸识别系统的时候,有时带着口罩它也能认出我们,因为它提取的特征已经足够了。但也有时候,人工智能还不太智能,比如我的手机,当我摘下眼镜的时候,它就认不出我了,这一刻我感觉我可能是超人。
04
数据与算力
上一回和这一回,我们花了很长时间介绍人工智能的算法原理。其实,除了算法,人工智能还有两个很重要的环节:数据和算力。
俗话说:见多识广,巧妇难为无米之炊。无论算法设计得多优秀,如果没有给机器喂数据,也就是通过大量图片进行训练,机器依然无法认出哪怕是一张很简单的图片。所以,拥有大量数据是人工智能的一个重要环节。
你可能不知道,我们每个人其实都给机器投喂过数据。比如,有时候你登陆某个网站,网站上会让你识别模糊不清的文字和数字,甚至让你在图中找出各种稀奇古怪的东西。也许你以为这只是网站故意刁难你,但是也很有可能,这是网站在用你的肉体训练它的机器呢。你每点一次验证码,它就完成了一次机器学习。
人工智能的另一个重要基础是算力。在人工智能领域,所需要的计算难度上并不大,比如卷积运算就是简单的加法和乘法。但是由于图片像素矩阵大,卷积核又多,计算工作依然很繁重。举例来讲,一张800*600的彩色图片,RGB三种颜色,像素点有144万个之多。如果用3*3*3的卷积核做一次卷积,需要计算大约1300万次乘法和1200万次加法。这还只是用一个卷积核进行一次处理。在实际的训练中需要用成百上千张图进行成千上万次的训练。
由于训练和检验过程都比较慢,所以以前的人工智能软件基本不能实现实时处理。想想看几年以前,我们用的那些图像处理软件,是不是都要拍好的照片才能处理,没办法实时美颜?
现在,一切都变了,人们发现了比CPU更好的处理方法。
CPU就是计算机的中央处理器,它的特点是可以处理许多复杂的问题,但是并行能力差,只能算完了一个再算另一个,就好像一个老教授,什么都会算,但是你得一样一样来。
处理显示问题的显卡,里面装有的处理器叫做GPU,GPU的特点是:它只能处理比较简单的问题,例如图像渲染问题。但是它的并行能力非常强,就好像一万个小学生。处理人工智能问题,其实大量的运算交给小学生就够了,所以人们就习惯了用GPU来计算人工智能。GPU的典型的厂商是英伟达,曾经他只是一家专注游戏显卡的公司,随着人工智能时代的来临,英伟达成了时代的弄潮儿。
现在,我们有了更快的人工智能处理器——NPU(神经网络处理器),它是专门用来计算人工智能神经网络问题的,比GPU更加专一,效率也更高。这种处理器不光是一万个小学生,而且还有超能力,可以同时计算很多道加减法乘除。
比如:华为昇腾910AI处理器,它的结构是华为自主设计的达芬奇结构,昇腾910有32个AI core,也就是32个Cube。这个cube的作用是可以一次性计算16*16*16=4096个元素的内积,而CPU要计算这个过程,需要将近一万次的加法和乘法。昇腾910系列处理器也是同等功耗下当前世界最快的人工智能训练处理器。
目前昇腾已广泛应用于运营商、医疗、交通等领域,为国计民生的智能化进程做出了自己的贡献。比如,昇腾赋能南方电网的案例:在过去,人工巡视户外输电线路需要20天才能完成,利用基于昇腾Atlas 200AI加速模块的AI边侧视频巡检只需要2小时,巡检效率提升了80倍,并且还能及时发现传统人工地面巡视不易发现的隐患点。
随着算力的提高,现在有很多手机都能够实现实时美颜了,甚至实时换脸,还能让静态的图片动起来。你在手机屏幕上看到的主播,现实中可能压根儿都认不出来。
人工智能技术是一种通用技术,它能让计算机帮助人类完成许多繁重的工作,从而极大地解放生产力。而AI 芯片又是人工智能领域的根技术之一。所谓根技术,是那些能够衍生出并支撑着多个技术簇的技术,它可以持续为整个技术树提供滋养,在很大程度上决定着技术树的荣枯。
在历史上,发生过几次工业革命,每次工业革命都是以科学的突破和根技术的发展为基础。例如十八世纪,牛顿力学和经典热力学出现了突破,瓦特改良了蒸汽机,带人类进入了蒸汽时代,这就是第一次工业革命,它让英国成为了日不落帝国。十九世纪末二十世纪初,因为法拉第发现了电磁感应,麦克斯韦阐明了电磁波原理,人类发明了发电机和无线电通信技术,让美国成为世界第一强国,这就是第二次工业革命。二十世纪中叶,因为电子技术、计算机技术的突破,人类迅速进入了电子时代,这就是第三次工业革命,日本抓住了机遇从战争的阴影中走出,一跃成为世界第二发达的国家。
蒸汽革命
前三次工业革命,中国都没有赶上。可是,现在世界正处在以无线互联网、人工智能、新材料、生物科技等技术为代表的第四次工业革命中。在这一次 ,中国人没有缺席,无论是5G技术还是人工智能技术,亦或者是新材料和生物科技技术,中国科学家和企业用了一二十年的时间实现了追赶,在许多新科学和新技术方面都走在了世界的前列。
注:本文最早发布于2021年4月