1.为什么用CNN处理图像
CNN做的事就是简化neural network的架构,用比较少的参数来做影像处理这件事。所以CNN比一般的DNN还要简单的。
为什么可以用比较少的参数可以来做影像处理这件事情
- 在图片处理中,大部分的pattern其实要比整张的image还要小,对一个neural来说,假设它要知道一个image里面有没有某一个pattern出现,它其实是不需要看整张image,它只要看image的一小部分。
- 样的pattern在image里面,可能会出现在image不同的部分,但是代表的是同样的含义,它们有同样的形状,可以用同样的neural,同样的参数就可以把patter侦测出来。
- 我们知道一个image你可以做subsampling,你把一个image的奇数行,偶数列的pixel拿掉,变成原来十分之一的大小,它其实不会影响人对这张image的理解。
2.CNN架构

卷积(convolution)
  通过filter 1检测出,左上角和左下角出现最大值。同理使用filtr 2对图像做convolution后,可以得到下面的矩阵。  对于彩色图像(RGB)  一个彩色的image就是好几个matrix叠在一起,就是一个立方体。如果要处理彩色image,这时候filter不是一个matrix,filter而是一个立方体。如果今天是RGB表示一个pixel的话,那input就是3*6 *6,那filter就是3 *3 *3。
在做convolution的话,就是将filter的9个值和image的9个值做内积(不是把每一个channel分开来算,而是合在一起来算,一个filter就考虑了不同颜色所代表的channel)
卷积vs全连接
 卷积网络可以看作特殊的全连接网络。
max pooling
  max pooling 根据filter 1和filter 2分别得到的4*4矩阵,每个矩阵将其分为4组,每一组用里面平均或者最大的数代替。** 一个filter就代表一个channel **
flatten
flatten就是将feature map拉直,给到fully connected feedforward netwwork。 
  model.add(Convolution2D( 25, 3, 3) 25代表有25个filter,3 *3代表filter是一个3 *3的matrix
Input_shape=(28,28,1) 假设我要做手写数字辨识,input是28 *28的image,每个pixel都是单一颜色。所以input_shape是(1,28,28)。如果是黑白图为1(blacj/white),如果是彩色的图时为3(每个pixel用三个值来表述)。
MaxPooling2D(( 2, 2 )) 2,2表示把2*2的feature map里面的pixel拿出来,选择max value。
3.卷积神经网络学到了什么?
分析全连接层
让图像更像数字
|