update chapter 05

This commit is contained in:
hwade 2019-04-01 21:36:19 +08:00
parent 1d2cf477be
commit 90f00d54af
2 changed files with 11 additions and 117 deletions

View File

@ -230,7 +230,7 @@ GoogLeNet作为2014年ILSVRC在分类任务上的冠军以6.65%的错误率
![](./img/ch4/image25.jpeg) ![](./img/ch4/image25.jpeg)
图 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}$结构相比于前面的版本更加复杂,子网络中嵌套着子网络。
![](./img/ch4/Inception_{v1}.jpeg)![](./img/ch4/Inception_{v2}.png)![](./img/ch4/Inception_{v3}.png)![](./img/ch4/Inception_{v4}.png) ![](./img/ch4/Inception_{v1}.jpeg)![](./img/ch4/Inception_{v2}.png)![](./img/ch4/Inception_{v3}.png)![](./img/ch4/Inception_{v4}.png)
图 4.9 Inception$_{v1-4}$结构图 图 4.9 Inception$_{v1-4}$结构图

View File

@ -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 图像卷积
首先给出一个输入输出结果
![image](./img/ch5/img32.png)
那他是怎样计算的呢?
卷积的时候需要对卷积核进行180的旋转同时卷积核中心与需计算的图像像素对齐输出结构为中心对齐像素的一个新的像素值计算例子如下
![image](./img/ch5/img33.png)
这样计算出左上角(即第一行第一列)像素的卷积后像素值。
给出一个更直观的例子从左到右看原像素经过卷积由1变成-8。
![image](./img/ch5/img34.png)
通过滑动卷积核,就可以得到整张图片的卷积结果
![image](./img/ch5/img35.png)
### 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 layercon layer进行对图像卷积提取特征pool layer 对图像缩小一半筛选重要特征对于经典的图像识别CNN网络如IMAGENET最后输出结果是1X1X10001000是类别种类1x1得到的是。FCN作者或者后来对end to end研究的人员就是对最终1x1的结果使用反卷积事实上FCN作者最后的输出不是1X1是图片大小的32分之一但不影响反卷积的使用
这里图像的反卷积与full卷积原理是一样的使用了这一种反卷积手段使得图像可以变大FCN作者使用的方法是这里所说反卷积的一种变体这样就可以获得相应的像素值图像可以实现end to end。
![image](./img/ch5/img36.png)
![image](./img/ch5/img37.png)
![image](./img/ch5/img38.png)
这里说另外一种反卷积做法假设原图是3*3首先使用上采样让图像变成7*7可以看到图像多了很多空白的像素点。使用一个3*3的卷积核对图像进行滑动步长为1的valid卷积得到一个5*5的图像我们知道的是使用上采样扩大图片使用反卷积填充图像内容使得图像内容变得丰富这也是CNN输出end to end结果的一种方法。韩国作者Hyeonwoo Noh使用VGG16层CNN网络后面加上对称的16层反卷积与上采样网络实现end to end 输出,其不同层上采样与反卷积变化效果如下:
![image](./img/ch5/img39.png)
经过上面的解释与推导对卷积有基本的了解但是在图像上的deconvolution究竟是怎么一回事可能还是不能够很好的理解因此这里再对这个过程解释一下。 目前使用得最多的deconvolution有2种上文都已经介绍。
- 方法1full卷积 完整的卷积可以使得原来的定义域变大。
- 方法2记录pooling index然后扩大空间再用卷积填充。
图像的deconvolution过程如下
![image](./img/ch5/img40.png)
输入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)。
![image](./img/ch5/img56.png)
![image](./img/ch5/img57.png)
重叠图案也在二维中形成。两个轴上的不均匀重叠相乘,产生不同亮度的棋盘状图案。
事实上不均匀重叠往往在二维上更极端因为两个模式相乘所以它的不均匀性是原来的平方。例如在一个维度中一个步长为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等价。
![image](./img/ch5/img58.png)
2另一种方法是从卷积操作中分离出对卷积后更高分辨率的特征图上采样来计算特征。例如可以先缩放图像最近邻插值或双线性插值再卷积。
![image](./img/ch5/img59.png)
反卷积与不同缩放卷积方法都是线性操作并可用矩阵去解释。对于每个输出窗口反卷积操作的输入唯一缩放卷积会以阻碍高频棋盘效应的方式来隐式地集中权重weight-tying
#### 缩放卷积
缩放卷积为线性操作假设原图像为A经过插值后的图像为A+B用卷积核C对插值缩放后的图像卷积得到最终的图像 ,其中*为卷积操作。则可将缩放卷积分解为原图像卷积和插值增量图像卷积,或卷积的原图像和卷积的插值增量图像。
C为卷积操作的卷积核。此时为上采样理解为反卷积操作中的卷积核。
1最近邻缩放卷积
![image](./img/ch5/img60.png)
发现插值增量图像表示的矩阵为原图像表示的矩阵下移1行。可将原图像矩阵看成环形队列队列最后1行的输出送入队列的第1行
2双线性缩放卷积
![image](./img/ch5/img61.png)
发现插值增量图像可细分为原图像表示的矩阵下移1行后乘以1/2与原图像表示的矩阵上移1行后乘以1/2。
## 5.16 卷积神经网络的参数设置 ## 5.16 卷积神经网络的参数设置
卷积神经网络中常见的参数在其他类型的神经网络中也是类似的但是参数的设置还得结合具体的任务才能设置在合理的范围具体的参数列表如表XX所示。 卷积神经网络中常见的参数在其他类型的神经网络中也是类似的但是参数的设置还得结合具体的任务才能设置在合理的范围具体的参数列表如表XX所示。
@ -350,12 +248,12 @@ C为卷积操作的卷积核。此时为上采样理解为反卷积操作中
| 自然语言处理 | ![NLP](img/ch5/NLP.png) | | | 自然语言处理 | ![NLP](img/ch5/NLP.png) | |
| 语音处理 | ![audio_process](img/ch5/audio-recognition.png) | | | 语音处理 | ![audio_process](img/ch5/audio-recognition.png) | |
### 5.26.1 联系 ### 5.18.1 联系
自然语言处理是对一维信号(词序列)做操作。 自然语言处理是对一维信号(词序列)做操作。
计算机视觉是对二维(图像)或三维(视频流)信号做操作。 计算机视觉是对二维(图像)或三维(视频流)信号做操作。
### 5.26.2 区别 ### 5.18.2 区别
自然语言处理的输入数据通常是离散取值例如表示一个单词或字母通常表示为词典中的one hot向量计算机视觉则是连续取值比如归一化到01之间的灰度值。CNN有两个主要特点区域不变性(location invariance)和组合性(Compositionality)。 自然语言处理的输入数据通常是离散取值例如表示一个单词或字母通常表示为词典中的one hot向量计算机视觉则是连续取值比如归一化到01之间的灰度值。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为卷积操作的卷积核。此时为上采样理解为反卷积操作中
| 局部卷积 | ![local-conv](img/ch5/local-conv.png) | 层间神经元只有局部范围内的连接,感受域内采用全连接的方式,而感受域之间间隔采用局部连接与全卷积的连接方式;相比与全卷积成倍引入额外参数,但有更强的灵活性和表达能力;相比于局部连接,可以有效控制参数量 | | 局部卷积 | ![local-conv](img/ch5/local-conv.png) | 层间神经元只有局部范围内的连接,感受域内采用全连接的方式,而感受域之间间隔采用局部连接与全卷积的连接方式;相比与全卷积成倍引入额外参数,但有更强的灵活性和表达能力;相比于局部连接,可以有效控制参数量 |
## 5.29 局部卷积的应用 ## 5.21 局部卷积的应用
并不是所有的卷积都会进行权重共享在某些特定任务中会使用不权重共享的卷积。下面通过人脸这一任务来进行讲解。在读人脸方向的一些paper时会发现很多都会在最后加入一个Local Connected Conv也就是不进行权重共享的卷积层。总的来说这一步的作用就是使用3D模型来将人脸对齐从而使CNN发挥最大的效果。 并不是所有的卷积都会进行权重共享在某些特定任务中会使用不权重共享的卷积。下面通过人脸这一任务来进行讲解。在读人脸方向的一些paper时会发现很多都会在最后加入一个Local Connected Conv也就是不进行权重共享的卷积层。总的来说这一步的作用就是使用3D模型来将人脸对齐从而使CNN发挥最大的效果。
![image](./img/ch5/img66.png) ![image](./img/ch5/img66.png)
@ -433,7 +331,3 @@ Softmax: 4030维。
使用不共享的卷积核,由于需要训练的参数量大大增加,因此往往需要通过其他方法增加数据量。 使用不共享的卷积核,由于需要训练的参数量大大增加,因此往往需要通过其他方法增加数据量。
## 相关文献
[1]