详细学习1*1卷积核

1*1卷积是大小为1*1的滤波器做卷积操作,不同于2*2、3*3等filter,没有考虑在前一特征层局部信息之间的关系。我们从1*1卷积的两个主要使用来理解其原理和作用。

卷积核:可以看作对某个局部的加权求和,它是对应局部感知,它的原理是在观察某个物体时我们既不能观察每个像素也不能一次观察整体,而是先从局部开始认识,这就对应了卷积。卷积核的大小一般有1x1,3x3和5x5的尺寸。卷积核的个数就对应输出的通道数,这里需要说明的是对于输入的每个通道,输出每个通道上的卷积核是不一样的。比如输入是28x28x192(WxDxK,K代表通道数),然后在3x3的卷积核,卷积通道数为128,那么卷积的参数有3x3x192x128,其中前两个对应的每个卷积里面的参数,后两个对应的卷积总的个数。 

下面直接截图吴恩达老师的课件,做1*1卷积运算的理解。对于如下的二维矩阵,做卷积,相当于直接乘以2。

 

 

对于三维矩阵,做卷积。

 

当设置多个1*1filter时,就可以随意增减输出的通道数,也就是降维和升维。

1、Network In Network论文

最早出现在 Network In Network的论文中 ,使用1*1卷积是想加深加宽网络结构 。

2、Inception网络

在Inception网络(论文Going Deeper with Convolutions)中图像输入进来后,通常可以选择直接使用像素信息(1x1卷积)传递到下一层,可以选择3x3卷积,可以选择5x5卷积,还可以选择max pooling的方式downsample刚被卷积后的feature maps。 但在实际的网络设计中,究竟该如何选择需要大量的实验和经验的。 Inception就不用我们来选择,而是将4个选项给神经网络,让网络自己去选择最合适的解决方案。但是这些卷积滤波器的设计也会在计算上造成很大的消耗,由于3*3卷积或者5*5卷积在几百个filter的卷积层上做卷积操作时相当耗时,所以1*1卷积在3*3卷积或者5*5卷积计算之前先降低维度

普通的inception模块

 按照上面的说法,我们的这层的模型参数与输入的特征维数(28x28x192),卷积核大小以及卷积通道数(包括三种卷积核,分别是1x1x64,3x3x128,5x5x32),所以参数为:

参数:(1×1×192×64) + (3×3×192×128) + (5×5×192×32) = 153600
最终输出的feature map个数:64+128+32+192 = 416

池化层不引人参数!

feature map个数就是filter个数,一个滤波器在前一个feature map上进行一次卷积操作(特征抽取)会产生一个feature map或者叫通道、深度。

加入1x1卷积的inception

 上图中在3x3,5x5 卷积层前新加入的1x1的卷积核为96和16通道的,max pooling后加入的1x1卷积为32通道。

图中该层的参数:

参数:(1×1×192×64)+(1×1×192×96+3×3×96×128)+(1×1×192×16+5×5×16×32)+(1x1x32)=15904
最终输出的feature map个数: 64+128+32+32=256

所以,加入1×1的卷积后,在降低大量运算的前提下,降低了维度。

3、1*1卷积作用

总结一下,1x1的卷积核可以进行降维或者升维,也就是通过控制卷积核(通道数)实现,这个可以帮助减少模型参数,也可以对不同特征进行尺寸的归一化;同时也可以用于不同channel上特征的融合。一个trick就是在降维的时候考虑结合传统的降维方式,如PCA的特征向量实现,这样效果也可以得到保证。

1*1卷积的主要作用有以下几点:

1、降维。比如,一张500 * 500且厚度depth为100 的图片在20个filter上做1*1的卷积,那么结果的大小为500*500*20。

2、加入非线性。卷积层之后经过激励层,1*1的卷积在前一层的学习表示上添加了非线性激励,提升网络的表达能力;

3、增加模型深度。可以减少网络模型参数,增加网络层深度,一定程度上提升模型的表征能力。

参考资料

[1] https://blog.youkuaiyun.com/ybdesire/article/details/80314925

[2] https://blog.youkuaiyun.com/a1154761720/article/details/53411365

[3] https://www.zhihu.com/question/56024942

[4]https://mooc.study.163.com/learn/2001281004?tid=2001392030#/learn/content?type=detail&id=2001729330&cid=2001725134

<think>好的,用户现在问的是1×1卷积核如何实现通道降维。之前他们问过YOLOv1卷积核尺寸,我详细解释了不同层的卷积核大小,特别是提到1×1卷积核用于通道降维。现在用户可能想更深入理解这个概念,特别是在实际应用中如何操作。 首先,我需要确保自己对1×1卷积的理解正确。1×1卷积核在空间维度上不做任何处理,但会改变通道数。比如输入是H×W×C_in,经过1×1卷积后变成H×W×C_out,其中C_out可以小于C_in,这样就减少了通道数,达到降维的目的。 用户可能知道卷积的基本概念,但需要具体解释为什么改变通道数就是降维,以及背后的数学原理。可能需要用例子说明,比如输入通道是256,经过1×1卷积输出64通道,这样参数数量如何减少,计算量如何降低。 另外,需要提到1×1卷积的其他作用,比如引入非线性(通过激活函数),但用户的问题主要集中在降维,所以这部分可以简要带过。同时,可能要和YOLO中的实际应用联系起来,比如之前提到的YOLOv1使用1×1卷积来压缩通道,减少全连接层的参数。 还要考虑用户可能的背景,他们可能是学习计算机视觉的学生或从业者,需要技术性的解释,但也要避免过于复杂的数学公式。使用LaTeX公式时注意用户之前的系统指令,确保正确格式,比如用$...$包裹。 可能还需要对比其他降维方法,比如池化,但用户的问题明确是关于1×1卷积,所以重点应在此。此外,需要指出1×1卷积在跨通道信息整合中的作用,例如Inception网络中的应用,但这里主要强调降维。 最后,总结关键点,确保用户理解1×1卷积如何通过调整输出通道数来实现降维,以及其在减少参数和计算量上的优势。可能还要提醒用户注意激活函数的使用,以保持网络的表现力。 检查是否有遗漏的部分,比如具体计算例子,是否需要用更直观的数字来演示参数量的变化。例如,输入通道256,输出64,1×1卷积的参数是1×1×256×64=16384,而如果使用3×3卷积同样输出64通道,参数会是3×3×256×64=147456,明显更多。这可以突出1×1卷积在降维中的高效性。 同时,确认回答结构清晰,分点解释,帮助用户逐步理解。可能需要分为原理、数学实现、作用与优势、应用场景等部分,并附上示例代码或结构图,但用户问题不需要代码,所以用文字描述即可。 总之,需要将技术概念以易于理解的方式呈现,结合之前的YOLOv1例子,确保用户能够将理论应用到实际模型中,理解为什么1×1卷积在通道降维中如此有效。</think>### 一、核心原理 **1×1卷积核**(又称“点卷积”)通过在**通道维度**上操作,实现特征图通道数的压缩或扩展。其本质是**跨通道的线性加权组合**,具体过程如下: --- ### 二、数学实现 设输入特征图尺寸为$H \times W \times C_{in}$,使用$M$个1×1卷积核1. **单次计算**:每个1×1卷积核对输入特征图的所有通道进行加权求和($C_{in}$个权重参数 + 1个偏置项) 2. **输出通道**:每个卷积核生成一个通道的输出,总输出维度为$H \times W \times M$($M < C_{in}$时即为降维) **公式表达**: 对于输出第$j$个通道的像素点$(x,y)$: $$ \text{Output}_{j}(x,y) = \sum_{i=1}^{C_{in}} \left( \text{Input}_{i}(x,y) \times W_{j,i} \right) + b_j $$ 其中$W_{j,i}$表示第$j$个卷积核在第$i$个输入通道的权重。 --- ### 三、通道降维的直观示例 | 参数 | 输入特征图 | 1×1卷积操作 | 输出特征图 | |---------------------|------------------|----------------|------------------| | 尺寸 | $H \times W \times 256$ | 使用64个1×1卷积核 | $H \times W \times 64$ | | **参数量** | - | $1 \times 1 \times 256 \times 64 = 16,384$ | - | | **对比3×3卷积** | - | 相同输出时需$3 \times 3 \times 256 \times 64 = 147,456$参数 | - | --- ### 四、核心作用与优势 1. **通道压缩**: - 强制不同通道特征进行融合,删除冗余通道(如将256通道压缩到64通道) 2. **参数效率**: - 降维时参数量仅为$C_{in} \times C_{out}$,远小于大尺寸卷积核 - 示例:输入256通道→输出64通道,参数量减少到原3×3卷积的**1/9** 3. **非线性增强**: - 配合ReLU激活函数,在降维同时引入非线性表达能力 - 公式扩展:$$ \text{Output} = \text{ReLU}(W * X + b) $$ --- ### 五、典型应用场景 | 场景 | 作用说明 | |---------------------|--------------------------------------------------------------------------| | **Inception网络** | 使用1×1卷积先压缩通道,再连接3×3/5×5卷积,控制计算量 | | **残差网络** | 在残差分支中用于调整通道维度,匹配主分支尺寸 | | **YOLOv1** | 在深层网络中交替使用1×1和3×3卷积,平衡特征表达能力与参数效率(如问题1所述) | --- ### 六、可视化理解 ``` 输入特征图(3通道) 1×1卷积核(2个) R G B [W1_R, W1_G, W1_B] [W2_R, W2_G, W2_B] ↓ ↓ 输出特征图(2通道) = [W1·R + W1·G + W1·B] [W2·R + W2·G + W2·B] ``` *注:每个输出通道都是输入通道的线性组合* --- ### 七、与其他降维方式对比 | 方法 | 是否保留空间信息 | 是否可学习 | 典型用途 | |---------------|------------------|------------|------------------------| | 1×1卷积 | ✔️ | ✔️ | 通道维度自适应压缩 | | 全局平均池化 | ❌(输出1×1) | ❌ | 分类任务最终特征聚合 | | 普通池化 | ✔️(下采样) | ❌ | 空间维度降维 | --- ### 八、使用建议 1. **降维比例**:通常压缩到原通道数的1/4~1/2(需平衡信息损失) 2. **位置选择**:建议在深层网络中使用(浅层保留更多原始信息) 3. **激活函数**:降维后建议接ReLU,除非需要保留负值特征 如果需要具体网络的实现案例(如ResNet中的bottleneck结构),可以进一步展开说明!
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值