RoboMaster 技术智囊团,用简单的方式带你入门机器人知识,每周日准时更新。
人工智能如今已渗入到生活中的各个方面。从引人关注的围棋、象棋对手,到手机支付、手机解锁中的人脸识别,都运用了人工智能。
围棋人工智能
人工智能具备很多人类的感知和识别能力,能自动完成一定的任务,例如识别声音、认出人脸和做出决策等等。
人工智能 AI
如何自动完成任务?以图像识别为例,在以前,我们会给计算机输入一系列规则让它推理(rule-based reasoning),它采用特征点归类的方法来辨别图像,但这很难能准确地识别。
如果我们告诉计算机左边是萝卜,那它可能会以为右边的甜筒也是胡萝卜。
要想实现真正的人工智能,人们研究出了机器学习。
机器学习简单说就是,编写出一套算法,使计算机能“自动”地进行学习。我们不需要输入大量规则,只需用少量的规则建造一个模型,计算机就可以通过学习来创造新的数据,从而对新事物做出分析和判断。
通过学习左边的 1,可以判断出右边也是 1
之前我们示范过,如何用一个神经网络,写出一套机器学习算法,来自动识别未知的图像。机器学习穿梭门:《机器人如何在复杂的环境下进行视觉识别?》
一个 4 层的神经网络
输入层经过几层算法得到输出层
实现机器学习的方法有很多,近年被人们讨论得多的方法就是深度学习。
深度学习是一种实现机器学习的技术,它是用深度神经网络来实现机器学习,网络深度比原始网络加深了数十甚至上百倍。
增强学习也可以达到机器学习的效果,感兴趣的小伙伴可以上网搜索,在此暂时没有推荐的书籍。
一个 34 层的深度神经网络
这种网络可以解决什么问题呢? 其中最热门的就是图像识别问题。
比如计算机拿到一些猫的照片后,可以识别出中华田园猫和其他种类的猫,然后分类。这种看似很废的用处,如果运用到医疗领域,比如分辨好的和病变的器官,或是目前大热的人脸识别,都将改变人类的生活。
人脸识别
从 2010 年开始,为了更好地发展图像识别技术,人们建立了图像数据库ImageNet,甚至举办了基于数据库的识别大赛 ILSVRC,比比看谁的图像识别方法更好。(文末有相关的阅读推荐)
ImageNet 数据库
深度学习在比赛上得到了很好的成绩,因此受到更多人的重视并发展。在这之前,发展受限主要是因为芯片和显卡带不动(运算量实在太大了)。
旧的图像识别方法
无论在深度学习普及之前还是之后,对于图像处理大都是将图像转换成一个向量之后进行计算,从而进行分类。根本的问题就是,如何用一个高维的向量来表示一个图片。
表示方法有很多,比如采用提取图像的定向梯度直方图得到特征,并对所提取的特征进行处理。这样确保能尽量保留每一类物体图片的特征,从而区分出不同的图片。
然而,采用这种特征提取方法的计算机识别率并不高,错误率仍然接近 28%,比人类笨太多了。下面介绍几种深度学习的方法,它们使识别错误率极大地降低。
卷积神经网络:AlexNet
在 2012 年,深度学习第一次被运用到 ImageNet 比赛中。其效果非常显著, 错误率从前一年的 26% 直接降低到 16%。
错误率降低了接近 10%
那一年,夺冠的图像识别神经网络被称为 AlexNet,本质是卷积神经网络(Convolutional Neural Network)。
AlexNet 结构
卷积神经网络是一类采用卷积层,池化层和全连接层的神经网络。它不去具体地查看每一个像素点之间的关系,而是对每一小块区域进行编码。
多层神经网络的编码复杂程度较高,所以分类的结果也比较准确。我们以识别字母 A 为例,简单地解释一下原理。
C:卷基层;S:池化层;F:全连接层
假设我们要编码A(INPUT)的右下角,那被指向的C1(第二个框)的点就代表了 A 被选出的区域。C1 一共有 6 张,每张的同一个位置都在编码这个区域。S2(第三个框)是池化层,对上一层(C1 )进行简化。C2上有一个小框指向 S2,说明这块区被简化。S2 又被选出一块指向C3(第四个框),表示这块区域在C3上被编码。
全连接层用几个数字表示一块区域。F6(右二)用 84 个数据来代表前面的 120 个数据,最后 OUTPUT 则为输出 10 个数据,这 10 个数据就代表了一开始的 A。(此处应有掌声!!!)
卷积相当于两个图像之间、像素点与像素点之间一一对应的乘法,再进行求和。
图形处理器-GPU(Graphics Processing Unit)
由于采用多层的神经网络,且每一层的结果都是一个高维的特征图像,所以计算量也相当大,在 AlexNet 中就需要确定 6 千万个参数来确定这个网络。
那么多的网络光靠 CPU 可能算不来,只能借助 GPU 来计算。GPU是什么呢?
GPU 工作原理
看不懂就掠过吧,不重要
CPU 只有 8 个可以计算的核,一次只能运行 8 个进程,而GPU 中带有成百上千个核,一次可以进行成百上千次计算(也叫并行计算),可以确定网络和参数。
更深更精确的网络:GoogleNet 与 VGGNet
2014 年,又诞生了两种经典的深度神经网络,GoogleNet 和 VGGNet。他们都是基于卷积神经网络的深度神经网络,和 AlexNet 的基本原理基本一致。这两个网络除了深度不一样,自身也各有特色。
GoogleNet
网络参数量过多会导致训练时的效果好,但测试时的效果差(这也叫过拟合现象),GoogleNet 可以解决这个问题。它采用了“Inception Module”卷积结构,可以得到一个稀疏的网络结构来缓解这种现象,提高测试时的准确率。
Inception Module
其总的架构如下图:
VGGNet
和 GoogleNet 不一样的是,VGGNet 采用了更传统的卷积神经网络,结构也比较简单。其卷积核全部采用了小卷积核,可以尽量减少参数的数量和计算量。
VGGNet
这两种网络都将错误率降低至 7.5% 以下,但是仍然和人类的错误率有一点差距。
领取专属 10元无门槛券
私享最新 技术干货