卷积神经网络(视频Skip Pytorch)
CNN 经常被使用在影响处理上,但一般的NeuralNetwork也可以做影响处理,所以我们为什么要使用CNN呢?
在实际train的过程中,我们期望每一个Neuron都是一个最基本的classifier.
1stLayer: do classification on Somefeature.
而事实上,当我们使用fully connected Neural Network的时候,会有太多的参数。
而这里我们就可以知道CNN是简化network的架构。
所以CNN比一般的DNN事实上,模型是更为简单的。
使用prior Knowledge拿掉一些参数。
why CNN for Image
为什么CNN可以简化参数呢?
- 某一pattern的出现只需要看image的一个比较小的部分。
Some patterns are much smaller than the whole image.
所以每一个neuron只需要连接到一个小块的区域。
当same pattern 在不同区域,如何dectect到我所需要的区域呢?
不需要两个neuron做detector,可以要求“左上”和“中间”鸟嘴detector share parameter(i.e. share parameter)
- Subsampling
subsampling pixels
The whole CNN
完整的CNN架构是什么样的呢?
image->Convolution Layer->Max Pooling ->Convolution….
这个process 可以反复数次,这个相当于network架构。
做完后,得到Flattern.
Flattern完成后可以丢到Fully Connected Network.
特性1:Some patterns are much smaller than the whole image
特性2:The same patterns appear in different regions.
特性3:pixels subsampling doesn’t change the object.
特性1和特性2 Convolution Layer
特性3:Max Pooling Layer.
CNN-Convolution
假设图像是一张6$\times$6的image.
在convolution中有一组filter.
每一个filter 相当于一个neutron.数学上实质是matrix
matrix的值是network parameters
Parameters c.f. weight/bias被学出来的。
$3\times3$的filter,侦测的是$3\times3$的pattern.
filter挪动的距离叫做stride
注意,这里面这个filter1,主对角线的元素是111,所以它检测的是主对角线元素也是111的3$\times$3的submatrix.注意卷积完成后的结果中有两个3,这也就完成了性质2.
在convolution Layer中也有Filter2.
原6$\times$6的图像矩阵中,经过Filter1得到了一个4$\times$4的matrix,经过Filter2得到了另一个4$\times$4的matrix,这两个matrix 是FeatureMap.
CNN-colorful image
彩色的image 是RGB组成的,所以彩色的image是3个image matrix,在影响上的channel叠在一起。
早这样理解不久很简单了吗…Orz
处理彩色的matrix,Filter也是彩色的立方体。
此时我做卷积的时候,我filter的9个值与image的9个值做内积。只是立体化了而已。
Convolution v.s. Fully Connected.
我忘了fully Connected:
它长这个样子:
而CNN,就是fully Connected把一些weight拿掉了而已。
怎么理解就是把一些weight拿掉呢?
这样就是把一些weight拿掉啦!
Only connect to 9 input,not fully connected.
那怎么样理解shared weights呢->less parameters
Even less parameters!
CNN-Max Pooling
pooling池化,是为了提取一定区域的主要特征,并减少参数数量,防止模型过拟合。
MaxPooling/Average Pooling
根据Filter1/Filter2得到$4\times4$的matrix两个。
在这两个小matrix中进行分类。
然后在这小的matrix里面进行分类,得到的是两个2$\times$2的matrix,得到的标准是找2$\times$2小方块中的最大值。
所以就相当于把原来6$\times$6的image,变成了2$\times$2的image。
对于这个2$\times$2image每一个pixel的深度,就相当于每一个pixel有多少个filter,因为原来两个2$\times$2是叠着放在一起的嘛。
可以如这个图进行理解。
Convolution+MaxPooling的过程可以重复很多次。
这是比较小的image.
The number of the channel is the number of filters.
Filter是将一个channel看成一个整体一起考虑的。【对多通道图片的卷积】。
每个filter是一个cubic.
Flatten
Flatten的意思是将feature map(可能是cubic形式的featuremap)拉直,它拉直以后把它丢到fully connected network之中。
CNN in keras
Only modified the network structure and input format
Vector-3-D tensor(RGB要求的是三维)
keras是什么,Pytorch是什么?
暂时停留在视频30min处。
如何通俗的理解CNN?
滤波/filter是干啥的,filter是去跟特定的图像矩阵进行卷积,从而可以很性明显的看出图片中的某些特征。如最简单的边缘检测
而CNN就是通过一个个的filter,不断地提取特征,从局部的特征到总体的特征,从而进行图像识别等功能。
所以,CNN就是去 学习这些filter的参数是如何设置的!【搜噶!】
filter的工作就是detect某一种pattern
What does CNN learn?
《没太听懂》