CNN卷积神经网络

卷积神经网络是使用卷积层(Convolutional layers)的神经网络,基于卷积的数学运算。主要应用于计算机视觉的数字图像处理领域,卷积层由一组滤波器组成,滤波器可以视为二维数字矩阵。如下图所示这是一个示例3x3滤波器:**索伯滤波器**(Sobel filter)

嵌入式神经网络芯片 嵌入式卷积神经网络_深度学习

卷积的含义 

对图像(不同的数据窗口数据)和滤波矩阵(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的卷积操作,也是卷积神经网络的名字来源。

CNN卷积神经网络层级结构

嵌入式神经网络芯片 嵌入式卷积神经网络_神经网络_02

最左边是数据输入层,对数据做一些处理,比如去均值(把输入数据各个维度都中心化为0,避免数据过多偏差,影响训练效果)、归一化(把所有的数据都归一到同样的范围)、PCA/白化等等。CNN只对训练集做“去均值”这一步。

CONV:卷积计算层,线性乘积 求和。

RELU:激励层,ReLU是激活函数的一种。

POOL:池化层,简言之,即取区域平均或最大。

FC:全连接层

卷积层和池化层详解

卷积层

对于一个图像来说,我们是使用卷积核来提取特征的,卷积核可以说是一个矩阵。假如我们设置一个卷积核为3*3的矩阵,而我们图片为一个分辨率5*5的图片。那么卷积核的任务就如下所示:

从左上角开始,卷积核就对应着数据的3*3的矩阵范围,然后相乘再相加得出一个值。按照这种顺序,每隔一个像素就操作一次,我们就可以得出9个值。这九个值形成的矩阵被我们称作激活映射(Activation map)。这就是我们的卷积层工作原理。

嵌入式神经网络芯片 嵌入式卷积神经网络_嵌入式神经网络芯片_03

池化层

池化过程在一般卷积过程后。池化(pooling) 的本质,其实就是采样。Pooling 对于输入的 Feature Map,选择某种方式对其进行降维压缩,以加快运算速度。它的扫描的顺序跟卷积一样,都是从左上角开始然后根据你设置的步长(作用为成倍缩小尺寸,而这个参数的值就是缩小的具体倍数)逐步扫描全局。 

嵌入式神经网络芯片 嵌入式卷积神经网络_cnn_04


激活函数 

常见的激活函数有大致有sigmoid、tanh、softsigh等几种,其图像如下图所示

嵌入式神经网络芯片 嵌入式卷积神经网络_嵌入式神经网络芯片_05

激活函数的作用主要为以下几种:

1.为了解决对隐藏变量使用按元素运算的非线性函数进行变换,然后再作为下一个全连接层的输入。单层感知机只能表示线性空间,不能线性划分。激活函数是连接感知机和神经网络的桥梁。

2.神经网络的正向传播中进行的矩阵的乘积运算在几何学领域被称为“仿射变换”。因此,这里将进行仿射变换的处理实现为“Affine层”。几何中,仿射变换包括一次线性变换和一次平移,分别对应神经网络的加权和运算与加偏置运算。

CNN猫狗分类的项目部署 

嵌入式神经网络芯片 嵌入式卷积神经网络_神经网络_06