Why CNN for Image
-
Some patterns are much smaller than the whole image.很多时候只需要检测一小部分的区域。
“beak” detector
-
The same patterns appear in different regions.同一种模式需要在不同照片的不同区域进行检测。
different regions
-
Subsampling the pixels will not change the object.对图像进行缩放不会影响检测的结果。
subsampling
The whole CNN
- Convolution:卷积层
- Max Pooling:最大池化层
- Flatten:将二维数组变成一维数组输出
- Fully Connected Feedforward network:全连接前馈网络

Convolution层用来解决问题1和问题2;Max Pooling层用来解决问题3.

CNN – Convolution
假设我们的图像输入是66的,而在Convolution层上面,我们的学习参数就变成一个个小的Filter数组(例如33),每个小的Filter就对图像中的一个小的pattern进行检测。

我们分别用每一个Filter,对我们的图片矩阵进行平滑移动点乘操作。例如下图,使用Filter1对我们的image进行乘操作(对应的位置的数相乘再相加),每次移动一个位置。最后得到一个Property矩阵。

Property矩阵的含义是:如果图像中的某个区域与Filter的“1”排序类似,则该区域与Filter的点乘结果比较大,如下图Property2中的“3”。

完成了Filter1的操作之后,继续进行其他的Filter的相同操作。

如果是要对一张彩色图片进行处理,则需要用一个333(RGB共三种色彩)的Filter与663的图像数组相乘。

Convolution v.s. Fully Connected

在Convolution层中,每一个节点只需要对输入的部分节点进行连接。如果我们把一张66的图像数组进行按行展开成一个一维的数组,该数组是由1-36号节点组成。例如O(1,1)=3这个节点,只与image中的1,2,3,7,8,9,13,14,15号节点相连。

同时O(1,2)=-1这个节点只与2,3,4,8,9,10,14,15,16号节点相连。在数据处理的过程中,从输入层到convolution层之间的操作,他们共享同一个weights数组,即Filter 1数组。这使得Convolution层的参数比全连接层的参数少得多!

所以我们得到结论:卷积层是简化版的全连接层!*
CNN – Max Pooling
Pooling:使用pooling技术将卷积层后得到的小邻域内的特征点整合得到新的特征。一方面防止无用参数增加时间复杂度,一方面增加了特征的整合度。
例如下面的Pooling操作,使用了区域最大化的操作(在2*2区域中找到一个最大值)。

进过Conv和Max Pooling操作之后,得到一个新的、更小的输出image,但是每一个Filter都会输出一个这样的image,我们称之为:channel。

Flatten


Flatten就是对每个从Max Pooling层中输出的image进行平铺展开(每一个通道按行进行展开);最后输入到全连接前向反馈层中。

CNN in Keras



What does CNN learn?
需要找到一个x使得ak值最大。

不同的输出图片对应于不同的Filter。

总的来说,每一张输出图片对应于提个神经元。

在最终输出中,yi对应于最大可能的输出的类值。例如下图是手写数字分类的训练输出图像。

如果对最大化进行regulization操作,等到右边的结果。

下图是其他的例子,来源于论文:
Karen Simonyan, Andrea Vedaldi, Andrew Zisserman, “Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps”, ICLR, 2014
从左到右、上到下分别是:哑铃、杯子、狗、圆椒、柠檬、哈士奇。

如果改成获取偏微分最大值的方式,则获取到的结果如下。来源于论文:
Karen Simonyan, Andrea Vedaldi, Andrew Zisserman, “Deep Inside Convolutional
Networks: Visualising Image Classification Models and Saliency Maps”, ICLR, 2014
关键区域为白色的区域。

还有一种方式,是截去不同的区域之后,机器辨识不出对应的物体。来源于论文:
Reference: Zeiler, M. D., & Fergus, R. (2014). Visualizing and understanding
convolutional networks. In Computer Vision–ECCV 2014 (pp. 818-833)
越偏蓝色越无法辨识。

胶片来自于台湾大学李宏毅教授的《机器学习课程》,侵删!
网友评论