news 2026/5/17 7:44:10

大模型教我成为大模型算法工程师之day9:卷积神经网络 (CNN)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
大模型教我成为大模型算法工程师之day9:卷积神经网络 (CNN)

Day 9: 卷积神经网络 (CNN)

摘要:卷积神经网络 (CNN) 是计算机视觉的基石。从模拟人类视觉的局部感知开始,CNN 经历了从 LeNet 到 ResNet 再到 ConvNeXt 的辉煌演进。本文将拆解 CNN 的核心操作(卷积、池化),回顾经典架构的设计哲学,并探讨现代 CNN 如何在 Transformer 时代焕发新生。


1. 为什么需要 CNN?

在全连接网络 (MLP) 中,处理图像面临两个巨大问题:

  1. 参数爆炸:一张 224x224x3 的图片有 ~15万个像素点,如果第一层有 1000 个神经元,仅这一层就有 1.5 亿个参数。
  2. 位置敏感:MLP 无法捕捉图像的局部特征(如一只猫在左上角还是右下角,特征应该是一样的)。

CNN 引入了两个核心思想来解决这个问题:

  • 局部感受野 (Local Receptive Field):每个神经元只看图片的一小块区域。
  • 权值共享 (Weight Sharing):用同一个卷积核(过滤器)去扫描整张图。

2. 核心组件详解

2.1 卷积层 (Convolution)

卷积操作本质上是特征提取。不同的卷积核可以提取不同的特征(边缘、纹理、形状)。

  • Kernel Size (k):卷积核大小,常用 1x1, 3x3, 5x5。
  • Stride (s):步长,滑动的间隔。Stride > 1 会导致特征图尺寸减小。
  • Padding §:填充,为了保持特征图尺寸或处理边界,常用 Zero-padding。
  • 输出尺寸计算H o u t = ⌊ H i n + 2 p − k s ⌋ + 1 H_{out} = \lfloor \frac{H_{in} + 2p - k}{s} \rfloor + 1Hout=sHin+2pk+1

1x1 卷积的作用(重点)
看起来没用到邻域信息,但它可以在不改变特征图宽高的前提下,改变通道数 (Channel)

  • 通俗理解:想象输入是64层的“千层饼”。1x1卷积就像一根垂直插入的“探针”,它不看周围,只把这64层的信息揉在一起。
  • 降维/升维:用32根探针,就得到了32层的新饼(降维);用128根,就变成了128层(升维)。这是网络变深且计算量可控的关键。

2.2 池化层 (Pooling)

池化用于降采样,减少参数量,并带来一定的平移不变性。

  • Max Pooling:取区域最大值,保留最显著特征(纹理、边缘)。
  • Average Pooling:取平均值,保留背景信息。

2.3 感受野 (Receptive Field)

指输出特征图上一个像素点,映射回原始输入图像上所能看到的区域大小。堆叠越多的层,感受野越大,能看到的整体信息越多。


3. 经典架构演进 (The Evolution)

3.1 开山之作:LeNet-5 (1998)

  • 贡献:确立了Conv -> Pool -> Conv -> Pool -> FC的标准范式。
  • 应用:手写数字识别 (MNIST)。

3.2 王者归来:AlexNet (2012)

  • 爆发点:ImageNet 竞赛冠军,深度学习复兴的标志。
  • 技巧:使用了 ReLU 激活函数(解决梯度消失)、Dropout(防过拟合)、GPU 加速训练。

3.3 更深更简:VGG (2014)

  • 设计哲学:全部使用3x3 小卷积核
  • 洞见
    • 感受野等效:两个 3x3 堆叠看 5x5,三个 3x3 堆叠看 7x7。
    • 参数更少:三个 3x3 参数量 (3 × 3 2 = 27 3 \times 3^2 = 273×32=27) 远小于一个 7x7 (7 2 = 49 7^2 = 4972=49)。
    • 更强非线性:每层后面都跟一个 ReLU,三层就多了三次非线性变换,让模型能拟合更复杂的函数关系。

3.4 深度突破:ResNet (2015)

  • 痛点:网络过深会导致梯度消失和退化问题(层数多了反而效果变差)。
  • 核心:残差连接 (Residual Connection)
    y = F ( x ) + x y = F(x) + xy=F(x)+x
    让网络只学习输入x xx与输出之间的“残差”部分。这相当于给梯度开了一条“高速公路”,使得训练成百上千层的网络成为可能。

3.5 效率为王:MobileNet & EfficientNet

  • MobileNet:专为手机端设计。
    • 深度可分离卷积:将标准卷积拆解为Depthwise(只抽空间特征) +Pointwise(1x1卷积,只融合通道)。这种“拆解动作”把计算量降低了 8-9 倍。
  • EfficientNet:探索模型缩放的黄金法则。
    • 复合缩放:不再盲目加深或加宽,而是发现深度、宽度、分辨率三者之间存在最佳比例。给定算力预算,用公式自动算出最优组合,实现了“多快好省”。

4. 现代 CNN 设计

4.1 ConvNeXt (2022)

在 2020 年后 Vision Transformer (ViT) 席卷 CV 领域时,Meta 推出了 ConvNeXt,证明纯 CNN 架构依然可以打败 ViT

  • 核心思想:它拿最经典的 ResNet-50 做底子,一步步“偷师” Transformer 的先进设计:
    1. Patchify:用 4x4 大步长卷积代替小卷积,模拟 ViT 的切块操作。
    2. 大核卷积:使用 7x7 卷积扩大感受野,模拟 Attention 的全局视野。
    3. 倒瓶颈结构:中间宽两头窄(Channel 维度先升后降),模仿 Transformer 的 MLP。
    4. Layer Norm & GELU:全套换成 Transformer 同款组件。

5. 代码实践:ResNet Block 实现

importtorchimporttorch.nnasnnclassResidualBlock(nn.Module):def__init__(self,in_channels,out_channels,stride=1):super(ResidualBlock,self).__init__()# 主路径 (Main Path)self.conv1=nn.Conv2d(in_channels,out_channels,kernel_size=3,stride=stride,padding=1,bias=False)self.bn1=nn.BatchNorm2d(out_channels)self.relu=nn.ReLU(inplace=True)self.conv2=nn.Conv2d(out_channels,out_channels,kernel_size=3,stride=1,padding=1,bias=False)self.bn2=nn.BatchNorm2d(out_channels)# 捷径 (Shortcut/Skip Connection)# 作用:确保输入 x 能和输出 out 形状一致,从而可以相加self.shortcut=nn.Sequential()# 如果 stride > 1 (图片变小了) 或者 in != out (通道数变了)# x 就没法直接加到 out 上,必须对 x 做个“整形手术”:# 1. 用 1x1 卷积调整通道数# 2. 用 stride 调整图片尺寸ifstride!=1orin_channels!=out_channels:self.shortcut=nn.Sequential(nn.Conv2d(in_channels,out_channels,kernel_size=1,stride=stride,bias=False),nn.BatchNorm2d(out_channels))defforward(self,x):identity=x# 备份原始输入# 主路径计算out=self.conv1(x)out=self.bn1(out)out=self.relu(out)out=self.conv2(out)out=self.bn2(out)# 残差连接:F(x) + x# 注意:这里的 shortcut(identity) 可能会对 x 进行下采样或升维out+=self.shortcut(identity)out=self.relu(out)returnout

6. 总结

CNN 从模拟生物视觉出发,通过卷积池化实现了高效的图像特征提取。

  • VGG告诉我们:小卷积核堆叠更好。
  • ResNet告诉我们:有了残差连接,网络可以无限深。
  • MobileNet告诉我们:卷积可以拆开算,速度更快。
  • ConvNeXt告诉我们:吸收 Transformer 的设计优点,CNN 依然能打。

虽然 Transformer 在大规模预训练上表现强势,但在边缘设备和实时应用中,CNN 依然是首选。


参考资料

  • ResNet: Deep Residual Learning for Image Recognition
  • A ConvNet for the 2020s (ConvNeXt)
  • CS231n: Convolutional Neural Networks
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/12 16:31:47

重构 Flutter 状态管理:从 Provider 到 Riverpod 2.0 的无痛迁移与性能飞跃

欢迎大家加入[开源鸿蒙跨平台开发者社区](https://openharmonycrossplatform.csdn.net),一起共建开源鸿蒙跨平台生态。 在 Flutter 开发的迭代长河中,状态管理始终是绕不开的核心命题。Provider 曾凭借简洁的 API 和低学习成本成为主流选择,…

作者头像 李华
网站建设 2026/5/13 0:34:52

AI大模型之Agent,RAG,LangChain(三)

前面分享了项目的大致流程,这篇主要分享一下LangChain这个框架的个人简单理解.看懂这篇必须要看我之前发的二,这样便于更好的理解这个框架.一.简述1.什么是LangChain简单来说,LangChain是LLMs的开发框架,他为不同的LLMs提供统一的接口,并且把和LLMs相关的内部组件连接在一起.2.…

作者头像 李华
网站建设 2026/5/17 1:24:01

css3如何引入外部字体

如果需要外部字体,电脑上没有,这时候可以用css3上新引入的font-face属性它的语法格式是font-face {font-family:自定义字体名称src:url(字体路径);}比如需要使用叫字体家AI北京长城体.ttf的字体,代码如下font-face {/*定义字体的名称*/font-f…

作者头像 李华
网站建设 2026/5/16 10:09:46

OkDownload入门指南:如何在5分钟内搭建你的第一个高效下载引擎

OkDownload入门指南:如何在5分钟内搭建你的第一个高效下载引擎 【免费下载链接】okdownload A Reliable, Flexible, Fast and Powerful download engine. 项目地址: https://gitcode.com/gh_mirrors/ok/okdownload 想要构建一个可靠、灵活且高效的下载系统吗…

作者头像 李华
网站建设 2026/5/17 4:46:10

权威榜单发布:浙江亿企邦领衔外贸网站引流推广行业

随着外贸行业数字化转型的深入,企业对专业化、多渠道、智能化的海外营销服务的需求日益迫切。为帮助广大外贸企业甄选优质服务伙伴,基于企业综合服务能力、技术创新水平、行业口碑与市场表现等多维度评估,现正式发布2025年度外贸网站引流推广…

作者头像 李华
网站建设 2026/5/17 5:51:35

新能源电动汽车VCU、Hil、BMS及硬件在环仿真建模说明书

新能源电动汽车VCUhilBMShil硬件在环仿真 文件包含电动汽车整车建模说明书,模型包含驾驶员模块,仪表模块,BCU整车控制器模块,MCU电机模块,TCU变速箱模块,减速器模块,BMS电池管理模块&#xff0c…

作者头像 李华