西洲渡

一只还没迈入IC领域的小菜鸡

浅谈卷积神经网络

前言

最近在YouTube上刷视频的时候偶然看见李永乐老师讲解卷积神经网络,主要是面向图像处理的,觉得还挺有意思的,就想着整理一下,万一以后用的上也能看看。

视觉原理

  • 首先介绍计算机在识别图像的时候,是将图像中的每个像素点转化成数字处理识别,但是这样的话,如果图片发生了旋转、放缩等变化,像素信息和原来不相同,那么计算机便无法识别。但是人眼就可以轻易的分辨,即使图片发生了变化。

  • 经神经学家研究,人眼中有两种细胞一种简单细胞只对线条敏感,一种复杂细胞对运动敏感。

  • 福岛邦彦提出神经认知模型,即

    光->第一皮层->第二皮层->第三皮层->……
    图像经由像素点->边缘、方向->轮廓、细节->……->判断

  • 杨立昆提出卷积神经网络(CNN)

卷积

卷积概念

  • 卷积作用:数学图像方法提取图片特征

卷积核

  • 卷积核:一个用来提取图像特征的矩阵(一般33或者55),卷积核表征的想要提取的特征

image.png

  • 卷积核的选取:最开始的卷积核是由人为选取的,例如上面的斜向下的卷积核,在后来的是机器学习根据自己的数据来反向调节卷积核,一幅图片往往不是一个卷积核。

image.png

卷积运算

将卷积核放到被测图像上面对应元素相乘然后相加,所得的和放到中间(内积运算)

  • 计算第一个元素

image.png

  • 计算第二个元素

image.png

  • ……重复操作

卷积的意义

由于卷积核为斜向下的直线,因此提取的特征也是斜向的直线,做完卷积运算的特征图,对应位置数值大的说明符合该特征

池化和激活

  • 池化的作用:将卷积提取的特征图有特征的部分放大,没特征的舍弃,减小计算量。
  • 池化方法:最大池化法(将方块中最大的数提取出来重组特征图)

image.png

池化完成后要进行——激活

  • 激活函数:以Sigmoid函数为例

image.png

激活的意义

将提取的特征图进行归一化运算,数字越接近1就越满足卷积核的特性。一方面减少数据量,另一方面方便识别。

实际应用

处理流程

在实际的图像处理中,往往数据量大,而且一张图片(彩色的)往往被分为RGB三个维度(也有其他分类方式),这样的图像往往需要相应维度的卷积核来精确的提取特征,而且如果图像复杂,往往利用多个卷积核来提取,而对于比较大的图像,一次池化之后可能数据量依然很大,因此就有了多次卷积+多次池化的方法来处理图像。

简单的总结一下:
N维图像->N维卷积核提取(每个维度分别对应做内积)
M个卷积核->M个特征图
二次卷积时:M个特征图->M维卷积核提取

image.png

卷积神经网络全貌

image.png

数据和算力

卷积核在运算时只有加法和乘法,一个800600的彩色图像要有800600*3=1440000个数据,他要进行一个卷积运算要有1300万次乘法和1200万次加法。这样庞大的数据量一般很难用cpu实时处理,主流使用gpu(显卡)来进行运算。

CPU:中央处理器,通用性强,并行能力弱,主要用于控制。
GPU:图形处理器,专用性强,并行能力强,主要用于运算。
NPU:神经网络处理器,专用性更强,并行能力更强,每个Cube可以同时进行数据的加法和乘法(华为的升腾910可以计算161616个数据的内积)。

总结

强大的芯片为越来越复杂的人工智能算法提供了惊人的算力,我们生活中的相机也可以做到实时美颜,人工智能这种通用技术极大的改变了我们的生活,AI芯片作为人工智能领域的根技术,芯片发展算力的提升可以推动更多领域的发展例如无人驾驶等等。