【李宏毅】机器学习 笔记09(CNN—— 卷积神经网络(Convolutional Neural Network))
CNN相关概念参考:http://www.360doc.com/content/19/0410/19/13328254_827767674.shtml
为什么用CNN做影像处理?
当用一般的Neural Network做影像处理时,需要用到太多的参数:
CNN减少参数主要考虑三个方面的性质:
1、可连接图片中更小的有效区域:
2、当一些相同的模式出现在图片的不同区域时,可采用相同的参数集合来处理:
3、对图片降采样不会改变实物
CNN流程:
对于以上前三条性质的前两条采用Convolution的方法,第三条则采用Max Pooling的方法:
Convolution:
首先,定义一些maxtrix来表示一些filter:
对于每一个filter,在image中定义一个stride来分步用filter与每次image中的选定区域做内积(两矩阵相乘),每步得到一个结果:
将这些依次得到的结果对应写成矩阵形式:
每个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)
以上是二维黑白01的情况,接下来考虑彩色三维的情况:
share weight:
Max Pooling:
对每个filter通过convolution得到的矩阵,划分几个大小相同的块,每个块中选最大的保留:
注:28-3+1=16 n=28 m=3
26/2=13
Deep Dream:
通过夸大机器看到的东西,来修改图片:
Deep Style:
让一张图片看起来像另一张图片,让修改后的图片能匹配这两张图的特征: