update chapter 05
This commit is contained in:
parent
1d2cf477be
commit
90f00d54af
|
|
@ -230,7 +230,7 @@ GoogLeNet作为2014年ILSVRC在分类任务上的冠军,以6.65%的错误率
|
||||||
|
|
||||||

|

|
||||||
图 4.8 GoogLeNet网络结构图
|
图 4.8 GoogLeNet网络结构图
|
||||||
如图4.8中所示,GoogLeNet相比于以前的卷积神经网络结构,除了在深度上进行了延伸,还对网络的宽度进行了扩展,整个网络由许多块状子网络的堆叠而成,这个子网络构成了Inception结构。图4.9为Inception的四个版本:$Inception_{v1}$在同一层中采用不同的卷积核,并对卷积结果进行合并;$Inception_{v2}$组合不同卷积核的堆叠形式,并对卷积结果进行合并;$Inception_{v3}$则在$v_2$基础上进行深度组合的尝试;$Inception_{v4}$结构相比于前面的版本更加复杂,子网络中嵌套着子网络。
|
如图4.8中所示,GoogLeNet相比于以前的卷积神经网络结构,除了在深度上进行了延伸,还对网络的宽度进行了扩展,整个网络由许多块状子网络的堆叠而成,这个子网络构成了Inception结构。图4.9为Inception的四个版本:$Inception_{v1}$在同一层中采用不同的卷积核,并对卷积结果进行合并;$Inception_{v2}$组合不同卷积核的堆叠形式,并对卷积结果进行合并;$Inception_{v3}$则在$v_2$基础上进行深度组合的尝试;$Inception_{v4}$结构相比于前面的版本更加复杂,子网络中嵌套着子网络。
|
||||||
|
|
||||||

|

|
||||||
图 4.9 Inception$_{v1-4}$结构图
|
图 4.9 Inception$_{v1-4}$结构图
|
||||||
|
|
|
||||||
|
|
@ -204,116 +204,14 @@ GoogLeNet$^{[5]}$则采用$1\times1$卷积核来减少模型的参数量。在
|
||||||
|
|
||||||
## 5.15 理解转置卷积与棋盘效应
|
## 5.15 理解转置卷积与棋盘效应
|
||||||
|
|
||||||
### 5.15.1 转置卷积
|
### 5.15.1 标准卷积
|
||||||
|
在理解转置卷积之前,需要先理解标准卷积的运算方式,如图XX所示。
|
||||||
|
|
||||||
|
|
||||||
### 5.15.2 棋盘效应
|
### 5.15.2 转置卷积
|
||||||
|
|
||||||
### 5.19.1 图像卷积
|
|
||||||
|
|
||||||
首先给出一个输入输出结果
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
那他是怎样计算的呢?
|
|
||||||
|
|
||||||
卷积的时候需要对卷积核进行180的旋转,同时卷积核中心与需计算的图像像素对齐,输出结构为中心对齐像素的一个新的像素值,计算例子如下:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
这样计算出左上角(即第一行第一列)像素的卷积后像素值。
|
|
||||||
|
|
||||||
给出一个更直观的例子,从左到右看,原像素经过卷积由1变成-8。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
通过滑动卷积核,就可以得到整张图片的卷积结果
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### 5.19.2 图像反卷积
|
|
||||||
|
|
||||||
这里提到的反卷积跟1维信号处理的反卷积计算是很不一样的,FCN作者称为backwards convolution,有人称Deconvolution layer is a very unfortunate name and should rather be called a transposed convolutional layer. 我们可以知道,在CNN中有con layer与pool layer,con layer进行对图像卷积提取特征,pool layer 对图像缩小一半筛选重要特征,对于经典的图像识别CNN网络,如IMAGENET,最后输出结果是1X1X1000,1000是类别种类,1x1得到的是。FCN作者,或者后来对end to end研究的人员,就是对最终1x1的结果使用反卷积(事实上FCN作者最后的输出不是1X1,是图片大小的32分之一,但不影响反卷积的使用)。
|
|
||||||
|
|
||||||
这里图像的反卷积与full卷积原理是一样的,使用了这一种反卷积手段使得图像可以变大,FCN作者使用的方法是这里所说反卷积的一种变体,这样就可以获得相应的像素值,图像可以实现end to end。
|
|
||||||
|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||
|
|
||||||
这里说另外一种反卷积做法,假设原图是3*3,首先使用上采样让图像变成7*7,可以看到图像多了很多空白的像素点。使用一个3*3的卷积核对图像进行滑动步长为1的valid卷积,得到一个5*5的图像,我们知道的是使用上采样扩大图片,使用反卷积填充图像内容,使得图像内容变得丰富,这也是CNN输出end to end结果的一种方法。韩国作者Hyeonwoo Noh使用VGG16层CNN网络后面加上对称的16层反卷积与上采样网络实现end to end 输出,其不同层上采样与反卷积变化效果如下:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
经过上面的解释与推导,对卷积有基本的了解,但是在图像上的deconvolution究竟是怎么一回事,可能还是不能够很好的理解,因此这里再对这个过程解释一下。 目前使用得最多的deconvolution有2种,上文都已经介绍。
|
|
||||||
|
|
||||||
- 方法1:full卷积, 完整的卷积可以使得原来的定义域变大。
|
|
||||||
- 方法2:记录pooling index,然后扩大空间,再用卷积填充。
|
|
||||||
|
|
||||||
图像的deconvolution过程如下:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
输入:2x2, 卷积核:4x4, 滑动步长:3, 输出:7x7
|
|
||||||
|
|
||||||
即输入为2x2的图片经过4x4的卷积核进行步长为3的反卷积的过程
|
|
||||||
|
|
||||||
1. 输入图片每个像素进行一次full卷积,根据full卷积大小计算可以知道每个像素的卷积后大小为 1+4-1=4, 即4x4大小的特征图,输入有4个像素所以4个4x4的特征图
|
|
||||||
2. 将4个特征图进行步长为3的fusion(即相加); 例如红色的特征图仍然是在原来输入位置(左上角),绿色还是在原来的位置(右上角),步长为3是指每隔3个像素进行fusion,重叠部分进行相加,即输出的第1行第4列是由红色特阵图的第一行第四列与绿色特征图的第一行第一列相加得到,其他如此类推。
|
|
||||||
|
|
||||||
可以看出翻卷积的大小是由卷积核大小与滑动步长决定, in是输入大小, k是卷积核大小, s是滑动步长, out是输出大小 得到 out = (in - 1) * s + k 上图过程就是, (2 - 1) * 3 + 4 = 7
|
|
||||||
|
|
||||||
|
|
||||||
|
### 5.15.3 棋盘效应
|
||||||
## 5.22 理解反卷积和棋盘效应
|
|
||||||
|
|
||||||
### 5.22.1 为什么出现棋盘现象?
|
|
||||||
|
|
||||||
图像生成网络的上采样部分通常用反卷积网络,不合理的卷积核大小和步长会使反卷积操作产生棋盘效应 (checkerboard artifacts)。
|
|
||||||
|
|
||||||

|
|
||||||

|
|
||||||
|
|
||||||
重叠图案也在二维中形成。两个轴上的不均匀重叠相乘,产生不同亮度的棋盘状图案。
|
|
||||||
|
|
||||||
事实上,不均匀重叠往往在二维上更极端!因为两个模式相乘,所以它的不均匀性是原来的平方。例如,在一个维度中,一个步长为2,大小为3的反卷积的输出是其输入的两倍,但在二维中,输出是输入的4倍。
|
|
||||||
|
|
||||||
现在,生成图像时,神经网络通常使用多层反卷积,从一系列较低分辨率的描述中迭代建立更大的图像。虽然这些堆栈的反卷积可以消除棋盘效应,但它们经常混合,在更多尺度上产生棋盘效应。
|
|
||||||
|
|
||||||
直观地看,假设生成的图像中包含1只黑猫。黑猫身体部分的像素颜色应平滑过渡,或极端地说,该部分应全为黑色。实际生成的图像中该部分却有深深浅浅的近黑方块组成,很像棋盘的网格,即棋盘效应。
|
|
||||||
|
|
||||||
https://distill.pub/2016/deconv-checkerboard/
|
|
||||||
http://blog.csdn.net/shadow_guo/article/details/52862161
|
|
||||||
|
|
||||||
### 5.22.2 有哪些方法可以避免棋盘效应?
|
|
||||||
|
|
||||||
(1)第一种方法是用到的反卷积核的大小可被步长整除,从而避免重叠效应。与最近成功用于图像超分辨率的技术“子像素卷积”(sub-pixel convolution)等价。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
(2)另一种方法是从卷积操作中分离出对卷积后更高分辨率的特征图上采样来计算特征。例如,可以先缩放图像(最近邻插值或双线性插值),再卷积。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
反卷积与不同缩放卷积方法都是线性操作,并可用矩阵去解释。对于每个输出窗口,反卷积操作的输入唯一,缩放卷积会以阻碍高频棋盘效应的方式来隐式地集中权重(weight-tying)。
|
|
||||||
|
|
||||||
#### 缩放卷积
|
|
||||||
|
|
||||||
缩放卷积为线性操作:假设原图像为A,经过插值后的图像为A+B;用卷积核C对插值缩放后的图像卷积,得到最终的图像 ,其中*为卷积操作。则可将缩放卷积分解为原图像卷积和插值增量图像卷积,或卷积的原图像和卷积的插值增量图像。
|
|
||||||
|
|
||||||
C为卷积操作的卷积核。此时为上采样,理解为反卷积操作中的卷积核。
|
|
||||||
|
|
||||||
(1)最近邻缩放卷积
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
发现,插值增量图像表示的矩阵为原图像表示的矩阵下移1行。可将原图像矩阵看成环形队列(队列最后1行的输出送入队列的第1行)。
|
|
||||||
|
|
||||||
(2)双线性缩放卷积
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
发现,插值增量图像可细分为原图像表示的矩阵下移1行后乘以1/2与原图像表示的矩阵上移1行后乘以1/2。
|
|
||||||
|
|
||||||
## 5.16 卷积神经网络的参数设置
|
## 5.16 卷积神经网络的参数设置
|
||||||
卷积神经网络中常见的参数在其他类型的神经网络中也是类似的,但是参数的设置还得结合具体的任务才能设置在合理的范围,具体的参数列表如表XX所示。
|
卷积神经网络中常见的参数在其他类型的神经网络中也是类似的,但是参数的设置还得结合具体的任务才能设置在合理的范围,具体的参数列表如表XX所示。
|
||||||
|
|
@ -350,12 +248,12 @@ C为卷积操作的卷积核。此时为上采样,理解为反卷积操作中
|
||||||
| 自然语言处理 |  | |
|
| 自然语言处理 |  | |
|
||||||
| 语音处理 |  | |
|
| 语音处理 |  | |
|
||||||
|
|
||||||
### 5.26.1 联系
|
### 5.18.1 联系
|
||||||
|
|
||||||
自然语言处理是对一维信号(词序列)做操作。
|
自然语言处理是对一维信号(词序列)做操作。
|
||||||
计算机视觉是对二维(图像)或三维(视频流)信号做操作。
|
计算机视觉是对二维(图像)或三维(视频流)信号做操作。
|
||||||
|
|
||||||
### 5.26.2 区别
|
### 5.18.2 区别
|
||||||
|
|
||||||
自然语言处理的输入数据通常是离散取值(例如表示一个单词或字母通常表示为词典中的one hot向量),计算机视觉则是连续取值(比如归一化到0,1之间的灰度值)。CNN有两个主要特点,区域不变性(location invariance)和组合性(Compositionality)。
|
自然语言处理的输入数据通常是离散取值(例如表示一个单词或字母通常表示为词典中的one hot向量),计算机视觉则是连续取值(比如归一化到0,1之间的灰度值)。CNN有两个主要特点,区域不变性(location invariance)和组合性(Compositionality)。
|
||||||
|
|
||||||
|
|
@ -364,7 +262,7 @@ C为卷积操作的卷积核。此时为上采样,理解为反卷积操作中
|
||||||
|
|
||||||
## 5.19 卷积神经网络凸显共性的方法?
|
## 5.19 卷积神经网络凸显共性的方法?
|
||||||
|
|
||||||
### 5.27.1 局部连接
|
### 5.19.1 局部连接
|
||||||
|
|
||||||
我们首先了解一个概念,感受野,即每个神经元仅与输入神经元相连接的一块区域。
|
我们首先了解一个概念,感受野,即每个神经元仅与输入神经元相连接的一块区域。
|
||||||
在图像卷积操作中,神经元在空间维度上是局部连接,但在深度上是全连接。局部连接的思想,是受启发于生物学里的视觉系统结构,视觉皮层的神经元就是仅用局部接受信息。对于二维图像,局部像素关联性较强。这种局部连接保证了训练后的滤波器能够对局部特征有最强的响应,使神经网络可以提取数据的局部特征;
|
在图像卷积操作中,神经元在空间维度上是局部连接,但在深度上是全连接。局部连接的思想,是受启发于生物学里的视觉系统结构,视觉皮层的神经元就是仅用局部接受信息。对于二维图像,局部像素关联性较强。这种局部连接保证了训练后的滤波器能够对局部特征有最强的响应,使神经网络可以提取数据的局部特征;
|
||||||
|
|
@ -374,7 +272,7 @@ C为卷积操作的卷积核。此时为上采样,理解为反卷积操作中
|
||||||
|
|
||||||
对于一个1000 × 1000的输入图像而言,如果下一个隐藏层的神经元数目为10^6个,采用全连接则有1000 × 1000 × 10^6 = 10^12个权值参数,如此巨大的参数量几乎难以训练;而采用局部连接,隐藏层的每个神经元仅与图像中10 × 10的局部图像相连接,那么此时的权值参数数量为10 × 10 × 10^6 = 10^8,将直接减少4个数量级。
|
对于一个1000 × 1000的输入图像而言,如果下一个隐藏层的神经元数目为10^6个,采用全连接则有1000 × 1000 × 10^6 = 10^12个权值参数,如此巨大的参数量几乎难以训练;而采用局部连接,隐藏层的每个神经元仅与图像中10 × 10的局部图像相连接,那么此时的权值参数数量为10 × 10 × 10^6 = 10^8,将直接减少4个数量级。
|
||||||
|
|
||||||
### 5.27.2 权值共享
|
### 5.19.2 权值共享
|
||||||
|
|
||||||
权值共享,即计算同一深度的神经元时采用的卷积核参数是共享的。权值共享在一定程度上讲是有意义的,是由于在神经网络中,提取的底层边缘特征与其在图中的位置无关。但是在另一些场景中是无意的,如在人脸识别任务,我们期望在不同的位置学到不同的特征。
|
权值共享,即计算同一深度的神经元时采用的卷积核参数是共享的。权值共享在一定程度上讲是有意义的,是由于在神经网络中,提取的底层边缘特征与其在图中的位置无关。但是在另一些场景中是无意的,如在人脸识别任务,我们期望在不同的位置学到不同的特征。
|
||||||
需要注意的是,权重只是对于同一深度切片的神经元是共享的。在卷积层中,通常采用多组卷积核提取不同的特征,即对应的是不同深度切片的特征,而不同深度切片的神经元权重是不共享。相反,偏置这一权值对于同一深度切片的所有神经元都是共享的。
|
需要注意的是,权重只是对于同一深度切片的神经元是共享的。在卷积层中,通常采用多组卷积核提取不同的特征,即对应的是不同深度切片的特征,而不同深度切片的神经元权重是不共享。相反,偏置这一权值对于同一深度切片的所有神经元都是共享的。
|
||||||
|
|
@ -384,7 +282,7 @@ C为卷积操作的卷积核。此时为上采样,理解为反卷积操作中
|
||||||
|
|
||||||
这里就体现了卷积神经网络的奇妙之处,使用少量的参数,却依然能有非常出色的性能。上述仅仅是提取图像一种特征的过程。如果要多提取出一些特征,可以增加多个卷积核,不同的卷积核能够得到图像不同尺度下的特征,称之为特征图(feature map)。
|
这里就体现了卷积神经网络的奇妙之处,使用少量的参数,却依然能有非常出色的性能。上述仅仅是提取图像一种特征的过程。如果要多提取出一些特征,可以增加多个卷积核,不同的卷积核能够得到图像不同尺度下的特征,称之为特征图(feature map)。
|
||||||
|
|
||||||
### 5.27.3 池化操作
|
### 5.19.3 池化操作
|
||||||
|
|
||||||
池化操作与多层次结构一起,实现了数据的降维,将低层次的局部特征组合成为较高层次的特征,从而对整个图片进行表示。如下图:
|
池化操作与多层次结构一起,实现了数据的降维,将低层次的局部特征组合成为较高层次的特征,从而对整个图片进行表示。如下图:
|
||||||
|
|
||||||
|
|
@ -401,7 +299,7 @@ C为卷积操作的卷积核。此时为上采样,理解为反卷积操作中
|
||||||
| 局部卷积 |  | 层间神经元只有局部范围内的连接,感受域内采用全连接的方式,而感受域之间间隔采用局部连接与全卷积的连接方式;相比与全卷积成倍引入额外参数,但有更强的灵活性和表达能力;相比于局部连接,可以有效控制参数量 |
|
| 局部卷积 |  | 层间神经元只有局部范围内的连接,感受域内采用全连接的方式,而感受域之间间隔采用局部连接与全卷积的连接方式;相比与全卷积成倍引入额外参数,但有更强的灵活性和表达能力;相比于局部连接,可以有效控制参数量 |
|
||||||
|
|
||||||
|
|
||||||
## 5.29 局部卷积的应用
|
## 5.21 局部卷积的应用
|
||||||
|
|
||||||
并不是所有的卷积都会进行权重共享,在某些特定任务中,会使用不权重共享的卷积。下面通过人脸这一任务来进行讲解。在读人脸方向的一些paper时,会发现很多都会在最后加入一个Local Connected Conv,也就是不进行权重共享的卷积层。总的来说,这一步的作用就是使用3D模型来将人脸对齐,从而使CNN发挥最大的效果。
|
并不是所有的卷积都会进行权重共享,在某些特定任务中,会使用不权重共享的卷积。下面通过人脸这一任务来进行讲解。在读人脸方向的一些paper时,会发现很多都会在最后加入一个Local Connected Conv,也就是不进行权重共享的卷积层。总的来说,这一步的作用就是使用3D模型来将人脸对齐,从而使CNN发挥最大的效果。
|
||||||

|

|
||||||
|
|
@ -433,7 +331,3 @@ Softmax: 4030维。
|
||||||
使用不共享的卷积核,由于需要训练的参数量大大增加,因此往往需要通过其他方法增加数据量。
|
使用不共享的卷积核,由于需要训练的参数量大大增加,因此往往需要通过其他方法增加数据量。
|
||||||
|
|
||||||
|
|
||||||
## 相关文献
|
|
||||||
|
|
||||||
[1]
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue