【李宏毅】机器学习 笔记09(CNN—— 卷积神经网络(Convolutional Neural Network))

CNN相关概念参考:http://www.360doc.com/content/19/0410/19/13328254_827767674.shtml

为什么用CNN做影像处理?

当用一般的Neural Network做影像处理时,需要用到太多的参数:

【李宏毅】机器学习 笔记09(CNN—— 卷积神经网络(Convolutional Neural Network))

CNN减少参数主要考虑三个方面的性质:

1、可连接图片中更小的有效区域:

【李宏毅】机器学习 笔记09(CNN—— 卷积神经网络(Convolutional Neural Network))

2、当一些相同的模式出现在图片的不同区域时,可采用相同的参数集合来处理:

【李宏毅】机器学习 笔记09(CNN—— 卷积神经网络(Convolutional Neural Network))

3、对图片降采样不会改变实物

【李宏毅】机器学习 笔记09(CNN—— 卷积神经网络(Convolutional Neural Network))

 

CNN流程:

对于以上前三条性质的前两条采用Convolution的方法,第三条则采用Max Pooling的方法:

【李宏毅】机器学习 笔记09(CNN—— 卷积神经网络(Convolutional Neural Network))

 

Convolution:

首先,定义一些maxtrix来表示一些filter:

【李宏毅】机器学习 笔记09(CNN—— 卷积神经网络(Convolutional Neural Network))

对于每一个filter,在image中定义一个stride来分步用filter与每次image中的选定区域做内积(两矩阵相乘),每步得到一个结果:

【李宏毅】机器学习 笔记09(CNN—— 卷积神经网络(Convolutional Neural Network))

将这些依次得到的结果对应写成矩阵形式:

【李宏毅】机器学习 笔记09(CNN—— 卷积神经网络(Convolutional Neural Network))

每个filter都这样做:有多少filter就在feature中对应得到多少image

可以看出通过这样做,image由6*6就变成了4*4,设原来image为n*n,filter为m*m,则通过convolution后得到的大小应该就是:

(n-m+1)*(n-m+1)  //个人认为,因为通过观察这个过程,最后m行m列就对应一个1*1的image(再往后在image上选出的区域就超出image范围了),然后前面就是(n-m)*(n-m)的,加起来就是(n-m+1)*(n-m+1) 

【李宏毅】机器学习 笔记09(CNN—— 卷积神经网络(Convolutional Neural Network))

以上是二维黑白01的情况,接下来考虑彩色三维的情况:

【李宏毅】机器学习 笔记09(CNN—— 卷积神经网络(Convolutional Neural Network))

share weight:

【李宏毅】机器学习 笔记09(CNN—— 卷积神经网络(Convolutional Neural Network))

Max Pooling:

对每个filter通过convolution得到的矩阵,划分几个大小相同的块,每个块中选最大的保留:

【李宏毅】机器学习 笔记09(CNN—— 卷积神经网络(Convolutional Neural Network))

【李宏毅】机器学习 笔记09(CNN—— 卷积神经网络(Convolutional Neural Network))

 

【李宏毅】机器学习 笔记09(CNN—— 卷积神经网络(Convolutional Neural Network))

注:28-3+1=16  n=28 m=3

        26/2=13

【李宏毅】机器学习 笔记09(CNN—— 卷积神经网络(Convolutional Neural Network))

Deep Dream:

通过夸大机器看到的东西,来修改图片:

【李宏毅】机器学习 笔记09(CNN—— 卷积神经网络(Convolutional Neural Network))

【李宏毅】机器学习 笔记09(CNN—— 卷积神经网络(Convolutional Neural Network))

 

Deep Style:

让一张图片看起来像另一张图片,让修改后的图片能匹配这两张图的特征:

【李宏毅】机器学习 笔记09(CNN—— 卷积神经网络(Convolutional Neural Network))

【李宏毅】机器学习 笔记09(CNN—— 卷积神经网络(Convolutional Neural Network))

【李宏毅】机器学习 笔记09(CNN—— 卷积神经网络(Convolutional Neural Network))

 

CNN的更多应用:

【李宏毅】机器学习 笔记09(CNN—— 卷积神经网络(Convolutional Neural Network))

【李宏毅】机器学习 笔记09(CNN—— 卷积神经网络(Convolutional Neural Network))

【李宏毅】机器学习 笔记09(CNN—— 卷积神经网络(Convolutional Neural Network))

【李宏毅】机器学习 笔记09(CNN—— 卷积神经网络(Convolutional Neural Network))