- 作者:老汪软件技巧
- 发表时间:2024-10-14 07:01
- 浏览量:
先梳理下整个卷积神经网络工作主要过程
卷积神经网络(Convolutional Neural Network,简称 CNN)是一种深度学习模型,尤其擅长处理图像数据。CNN 通过多层结构逐步提取图片的特征。以下是 CNN 提取图片特征的主要过程:
1.卷积层(Convolutional Layer):
2.激活函数(Activation Function):
3.池化层(Pooling Layer):
4.全连接层(Fully Connected Layer):
5.输出层(Output Layer):
通过这些步骤,CNN 能够逐层提取图片的低级和高级特征,从边缘和纹理,到更复杂的结构和对象。每一层都在前一层的基础上提取更抽象的特征,从而实现对图像的理解和分类。
进入正题,卷积核如何提取到特征的?
假设我们有一个简单的 5x5 的灰度图像(灰度图像的每个像素值是一个单一的数值,表示亮度),以及一个 3x3 的卷积核。我们来看看卷积操作是如何进行的。
原始图像(5x5):
1 2 3 0 1
4 5 6 1 2
7 8 9 2 3
1 0 1 3 4
2 1 0 4 5
卷积核(3x3):
1 0 -1
1 0 -1
1 0 -1
这个卷积核可以用来检测垂直边缘。
卷积操作步骤:
1.将卷积核放在图像的左上角,并计算覆盖区域的点积:
1 2 3
4 5 6
7 8 9
(1*1 + 2*0 + 3*(-1)) + (4*1 + 5*0 + 6*(-1)) + (7*1 + 8*0 + 9*(-1))
= (1 + 0 - 3) + (4 + 0 - 6) + (7 + 0 - 9)
= -2 + -2 + -2
= -6
这样,卷积核在图像左上角的卷积结果是 -6。
2.将卷积核向右移动一格,并重复计算:
2 3 0
5 6 1
8 9 2
(2*1 + 3*0 + 0*(-1)) + (5*1 + 6*0 + 1*(-1)) + (8*1 + 9*0 + 2*(-1))
= (2 + 0 - 0) + (5 + 0 - 1) + (8 + 0 - 2)
= 2 + 4 + 6
= 12
所以在这个位置的卷积结果是 12。
3.继续滑动卷积核,直到覆盖整个图像:
通过这种方式,我们可以计算出整个特征图(Feature Map)。假设步长为 1,并且没有使用填充(Padding),则特征图的尺寸将会是 (5-3+1) x (5-3+1) = 3x3。
最终的特征图(3x3):
-6 12 1
-6 12 1
-6 12 1
解释:
为什么这个卷积核就能用来检测垂直边缘?
1 0 -1
1 0 -1
1 0 -1
垂直边缘检测的原理:
1.卷积核的结构:
2.计算卷积时的效果:
3.边缘检测的逻辑:
总结
以上例子只是一个简单的识别垂直边缘特征,但是通过这个例子,我们知道了提取图像的特征的关键是卷积核,构造不同的卷积核可以识别不同的图像特征。