CNN
一、常用的方向:人脸识别(主要是特征值的提取),检测任务,分类和检索,超分辨率重构(用于图片),医学任务,一些识别,无人驾驶。
二、与传统神经网络的区别:【科普贴】从神经网络到卷积神经网络 - 知乎 (zhihu.com)卷积神经网络是会比传统的神经网络有更高的维度,神经网络是nn,卷积是cnn,就比如说传统的神经网络是784个像素点,而卷积神经是分成28*
28*
1就是变成个三维,也许可以减小数据量,或者是为了卷积层更好的提取特征。
三、整体架构:分为输入层,卷积层,池化层,全连接层。
输入层:输入数据;
卷积层:使用卷积核进行特征提取和特征映射。
池化层:进行采样降维。
全连接层:在尾部进行拟合,减少特征信息的损失。
四,卷积做了什么;
![[Pasted image 20240325203433.png]]
从就是kernel就是一个卷积核,通过卷积核,然后放入的案例划分的图形划分的小区域也应该是和卷积核一样。最后计算出来特征图。
五、卷积特征值的计算方法
首先是颜色通道是分为RGB,然后一个特征值的计算是需要RGB三个通道和卷积核计算得到。![[Pasted image 20240325205403.png]]
我们可以把左边蓝色的三个分别视为RGB三个颜色通道,然后他们的卷积核各不同因为像素点是不同的,还有就是蓝色部分是773,然后w是333,第三个数值两个需要对应上,就是都必须是一样的。然后计算方法就是 直接×,就比如第一个就是0,因为1*-1加1×1=0,其他都是0。然后三个计算出来是2,我们可以看到最下面是有个bias偏移值是1,所以我们加上偏移值就是3。
六,得到特征图表示
其实我们看上图,是有两种卷积核,w0和w1,所以我们可以看到可以得到两张特征图,所以如果卷积核的种类不同的话,那么就是特征图就会越来越多,那么特征会越来越丰富。
七,步长与卷积核大小对结果的影响。
对特征图基础上行多次卷积。
![[Pasted image 20240325233943.png]]
![[Pasted image 20240325234007.png]]
我们可以看到第一个红色的c是3,三代表有多少个特征图。就是接下来的卷积核的c就是前面对应的,如果就是然后就会有蓝色,就是六个特征图。eg10表示用十个不同的filter来执行卷积。
滑动窗口步长
![[Pasted image 20240325235101.png]]
对于步长为1就是特征值会更加丰富,步长为2他的特征值会比较粗糙,但是速度会快点,步长不不一样会用到特定的场景。
卷积核的尺寸
取决于进行对于目标图像的划分,就比如上图是3×3,所以它的卷积核尺寸是3×3。
边缘填充方法
![[Pasted image 20240326104300.png]]
我们可以看到左边的三张图,就是紫色的区域才是真正的样本值,然后我们在计算的时候会发现如果没有边界填充,一些数字会对特征图的结果有比较大的影响,而且边界值和中心值的重要程度就会出现区别,而边界填充的目的是能更公平的对待边界值和中心值。为什么图中只是加了一圈,因为上方有个pad = 1。
卷积核个数
就是多少个特征图,就要多少个卷积核。
八,特征图尺寸计算和参数共享
卷积结果计算公式
![[Pasted image 20240326163117.png]]
为什么是加2p因为一圈,左右两边都会加,所以是加2p。
![[Pasted image 20240326163842.png]]
通过这张图可以看出怎么计算。
卷积参数共享
![[Pasted image 20240326165236.png]]
就是一个filter可以出一张特征图,然后计算参数就是把一个卷积核按照hwc给算出来,然后加上对应的偏执参数就算出来一个卷积核的权重参数。
九,池化层的作用
![[Pasted image 20240327204655.png]]
可以看到和卷积层的划分是类似的,化成一块一块的,然后找到里面最大,就是特征值最大的,然后拼成一块,这种操作是最大池化。池化层的作用也可以看出来,就是减小规模。
![[Pasted image 20240327205050.png]]
十、整体网络结构
![[Pasted image 20240327233452.png]]
我们从这张图中可以看出这是几层的神经网络,就是会有权重和参数的层数总和。
RELU层只是保留特征大于0的值,conv是一个,最后的FC,就是划分也是一层,那么图中就是七层。然后再FC前面还有一步就是将一个立体的几×几×几的把他变成转化成一个就像图中的写的[10240,5]
![[Pasted image 20240327235319.png]]
特征图变化没什么好说的。转换就是将一个立体转化成一个向量,可以被读进去。
十一,VGN网络架构
Alexnet这个比较早就没什么好说的。
Vgg经典网络
![[Pasted image 20240330143149.png]]
从这个d来讲这是十六层的神经网络,然后这是十六层的,然后他的划分都是三×三,然后我们发现再经过池化层,本来应该会减少那些没有太大用处的特征值,应该会减少,但是却翻了两倍,说明再池化层之后给了一些数值,弥补一部分损失。
然后关于如果神经层数太多,有可能会导致loss值过高,或者对应的卷积层做的不是很好,反而会取得适得其反的效果。
十二、残差网络Resnet
深层神经网络所遇到的问题:就是train error值会更高,所以就是需要降低。
解决方案:加了Resnet
![[Pasted image 20240330145212.png]]
这张图的意思是,x相当于input,然后如果有值怎么拟合都拟合不好,那么就会将他的赋值成0,然后会有一个补偿机制,就是加上原来的值,这样的操作使得深层的神经网络的error降低。中间的两层的为卷积层。
![[Pasted image 20240330145724.png]]
深层的神经网络就会变成这样。
十三、感受野
一开始看感觉要一会,但是理解了。
神经元感受野的值越大表示其能接触到的原始图像范围就越大,也意味着它可能蕴含更为全局,语义层次更高的特征;相反,值越小则表示其所包含的特征越趋向局部和细节。因此感受野的值可以用来大致判断每一层的抽象层次.
如何算感受野
例子:求三个3×3的卷积层,保持步长为一,求它的感受野。
公式:前一层卷积核感受野 = (后一层卷积核感受野 - 1)x 前一层卷积核步长 + 前一层卷积核的大小
1 |
|
问题:为什么要堆叠三个小卷积:
CNN
https://ljw030710.github.io/2024/03/30/CNN/