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
2
3
4
首先是最后一层是一个,(1-1)*1+3 = 3
接着计算:(3-1)*1+3 = 5
然后计算:(5-1)*1+3 = 7
所以感受野即为7

问题:为什么要堆叠三个小卷积:


CNN
https://ljw030710.github.io/2024/03/30/CNN/
Author
iolzyy
Posted on
March 30, 2024
Licensed under