CNN中的卷积的理解

1、什么是卷积:图像中不同数据窗口的数据和卷积核(一个滤波矩阵)作内积的操作叫做卷积。其计算过程又称为滤波(filter),本质是提取图像不同频段的特征。

其实CNN中的卷积并不是真正的卷积运算,而是一种互相关(cross-correlation)运算

卷积(convolution):

S=f(t)*g(t-i)

互相关(cross-correlation):

S=f(t)*g(t+i)

从图中很明显看出来,Convolution相当于把函数g反转180度在与f函数运算;而Cross-correlation相比卷积则少了那个反转,相当于直接进行矩阵相乘。

 

2、什么是卷积核:也称为滤波器filter,带着一组固定权重的神经元,通常是n*m二维的矩阵,n和m也是神经元的感受野(相当于对图像取的窗口大小,比如一次从128*128的输入图像中只取3*3的一个小窗口进行分析)。n*m 矩阵中存的是对感受野中数据处理的系数(W权重)。filter_size是指filter的大小,例如3*3; filter_num是指每种filter_size的filter个数,通常是通道个数

feature map(特征映射):原始图像数据通过卷积核处理可以用来提取特定的特征(例如可以提取物体轮廓、颜色深浅等表现物体信息的特征)。通过卷积层从原始数据中提取出特征的过程又成为feature map(特征映射)。即每个卷积核只能提取一种相应的特征,每个卷积核对应一个特征映射,也就是feature map。

3、什么是卷积层:多个滤波器叠加便成了卷积层。

4、一个卷基层有多少个参数:一个卷积核使用一套权值以便”扫视’数据每一处时以同样的方式抽取特征,最终得到的是一种特征。 在tensorflow定义conv2d时需要指定卷积核的尺寸,本人现在的理解是一个卷积层的多个卷积核使用相同的m*n, 只是权重不同。 则一个卷积层的参数总共m*n*filter_num个,比全连接少了很多。

5、通道(chennel)怎么理解:一般为RGB三通道

6、几个参数:

a. 深度depth:卷积核个数,决定输出的depth厚度,卷积核尺寸决定输出长宽。

output(输出像素)= (input输入像素 - F卷积核长宽尺寸 + 2*P填充值)/stride卷积核每次移动的步长 +1

比如(7-3)/2 +1=3 ,所以下文中输出为3*3矩阵

b. 步长stride:决定移动多少步可以到边缘。

c. 填充值zero-padding:在外围边缘补充若干圈0,方便从初始位置以步长为单位可以刚好滑倒末尾位置,通俗地讲就是为了总长能被步长整除。 

 

 

7、计算例子:

解析:图中input 7*7*3中,7*7代表图像的像素/长宽,3代表R、G、B 三个颜色通道,可以看到周边有填充0; 有两个3*3*3的卷积核Filter w0、Filter w1(3*3代表取的窗口长度*宽度,后面一个*3代表通道个数,RGB三个通道),每个filter对应每个通道有一组3*3的w权重;一个filter滑动到一个位置后计算三个通道的卷积,求和,加bias,得到这个filter在该位置的最终结果;每个卷积核的输出是各个通道的汇总;输出的个数与filter矩阵维数相同。两个卷积核,最后的output为3*3*2,其depth=2。窗口每次移动两个步长取3*3的局部数据,即stride=2。外围填0部分为一位,所以zero-padding=1。

1的计算过程:

第一个通道和对应权重的结果:0*1+0*1+0*(-1)+0*(-1)+0*0+1*1+0*(-1)+0*(-1)+1*0 = 1

第二个通道和对应权重的结果:0*(-1)+0*0+0*(-1)+0*0+1*0+1*(-1)+0*1+0*(-1)+2*0 = -1

第三个通道和对应权重的结果:0*0+0*1+0*0+0*1+2*0+0*1+0*0+0*(-1)+0*0 = 0

偏置:1  所以1+(-1)+ 0 + 1 = 1


转载自https://blog.youkuaiyun.com/cheneykl/article/details/79740810

 

<think>好的,用户想了解CNN卷积操作的核心概念和关键点,以及实现细节。首先,我需要整理CNN的基本结构,特别是卷积层的作用。根据引用[4],CNN的神经元是3维排列的,包括宽度、高度和深度,这和常规神经网络不同。卷积操作涉及卷积核、步长、填充这些参数,需要详细说明每个参数的作用和影响。 接下来,卷积操作的核心概念包括局部感受野、权值共享和特征图。局部感受野是指卷积核在输入数据上的滑动窗口,这有助于提取局部特征。权值共享能减少参数数量,提高计算效率,这点需要强调。特征图的生成过程,即每个卷积核生成一个特征图,多个卷积核增加通道数,这里可以结合引用[4]中关于深度的解释。 关键点部分要覆盖卷积核的设计,比如不同大小的卷积核(3x3、5x5)对特征提取的影响。激活函数的作用,比如ReLU引入非线性,需要提到。池化层的作用,如最大池化降低维度,防止过拟合,这也是CNN的重要组成部分。 实现细节方面,要分前向传播和反向传播。前向传播包括卷积运算的具体步骤,比如im2col优化方法,可能引用引用[2]中的硬件实现提示。反向传播涉及梯度计算,需要解释如何通过链式法则更新卷积核参数。代码示例部分,用户可能需要一个简单的Python实现,展示卷积过程,注意使用numpy库,并注释关键步骤。 还要考虑用户可能的疑问,比如步长和填充如何影响输出尺寸,可以给出公式。另外,参数共享的优势和计算优化方法也是用户可能关心的点。需要确保解释清晰,避免使用过多专业术语,但又要准确,符合引用中的内容。最后,生成的相关问题要围绕卷积操作展开,帮助用户深入理解相关主题。</think>### CNN卷积操作的核心概念及实现细节 #### 一、卷积操作核心概念 1. **局部感受野(Local Receptive Field)** 卷积核(Filter/Kernel)在输入数据(如图像)上以滑动窗口形式扫描,每个窗口对应局部区域的特征提取。例如$3 \times 3$的卷积核每次处理输入图像的一个$3 \times 3$区域[^4]。 2. **权值共享(Weight Sharing)** 同一卷积核在不同位置的参数相同,显著减少参数量。例如一个$5 \times 5$卷积核仅需25个参数,而非全连接的数百万参数。 3. **特征图(Feature Map)** 单个卷积核扫描后生成的特征图尺寸由输入尺寸$W$、卷积核尺寸$F$、步长$S$和填充$P$共同决定: $$ W_{out} = \frac{W_{in} - F + 2P}{S} + 1 $$ 多个卷积核会生成多通道特征图,形成输出的深度维度[^4]。 #### 二、关键知识点 1. **卷积核设计** - 尺寸:常用$3 \times 3$(VGGNet)、$5 \times 5$(LeNet) - 类型:边缘检测核(如Sobel)、可学习参数核(端到端训练) 2. **填充(Padding)** - 作用:控制输出尺寸,防止边缘信息丢失 - 类型:`valid`(无填充)和`same`(填充使输出尺寸不变) 3. **激活函数** 卷积后通常接非线性激活函数(如ReLU),增强模型表达能力: $$ \text{ReLU}(x) = \max(0, x) $$ 4. **池化(Pooling)** 常用最大池化(Max Pooling)降维: ```python # 示例:2x2最大池化 output = np.max(input[i:i+2, j:j+2]) ``` #### 三、实现细节 1. **前向传播** ```python import numpy as np def conv_forward(inputs, kernel, stride=1, padding=0): # 输入尺寸:H_in x W_in x C_in # 卷积核尺寸:F x F x C_in x C_out H_in, W_in, C_in = inputs.shape F, _, _, C_out = kernel.shape # 计算输出尺寸 H_out = (H_in - F + 2*padding) // stride + 1 W_out = (W_in - F + 2*padding) // stride + 1 # 填充输入 padded_input = np.pad(inputs, ((padding, padding), (padding, padding), (0, 0))) # 初始化输出 output = np.zeros((H_out, W_out, C_out)) for c in range(C_out): for h in range(H_out): for w in range(W_out): h_start = h * stride h_end = h_start + F w_start = w * stride w_end = w_start + F # 卷积计算 receptive_field = padded_input[h_start:h_end, w_start:w_end, :] output[h, w, c] = np.sum(receptive_field * kernel[:, :, :, c]) return output ``` 2. **反向传播** 通过链式法则计算梯度: - 输入梯度:将输出梯度与旋转180度的卷积核进行全卷积 - 卷积核梯度:输入局部块与输出梯度对应位置的外积求和 3. **硬件优化技巧** - **im2col优化**:将输入转换为矩阵,利用GEMM(通用矩阵乘法)加速计算[^2] - **Winograd算法**:减少乘法操作次数,提升小卷积核效率 #### 四、典型应用场景 1. 图像分类(如ResNet、VGG) 2. 目标检测(如YOLO、Faster R-CNN) 3. 语义分割(如U-Net)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值