当前位置: 首页 > ds >正文

深度学习之路——CNN卷积神经网络详解

深度学习之路——CNN卷积神经网络详解


前言

卷积神经网络(Convolutional Neural Network, CNN)作为深度学习领域的基础模型,推动了人工智能在图像、视频等方向的爆炸式发展。无论是图像分类、目标检测,还是语义分割、自动驾驶,CNN几乎无处不在。本文将带你系统了解CNN的基本原理、结构组成、常用网络、应用场景及简单代码实现。


1. 什么是CNN?

CNN是一类专门处理类似网格结构数据(如图像)的前馈神经网络,由Yann LeCun等人在上世纪80年代提出。与传统全连接网络相比,CNN通过局部连接和权重共享,大幅减少模型参数,提高泛化能力和训练效率。


2. CNN的基本结构

在这里插入图片描述

CNN主要包含以下几类层:

2.1 卷积层(Convolutional Layer)

  • 提取局部特征,关注局部空间关系。
  • 通过卷积核滑动操作捕捉如边缘、角点等低级特征。
  • 数学表达式:
    y = f ( x ∗ w + b ) y = f(x * w + b) y=f(xw+b)
    • x x x:输入特征
    • w w w:卷积核权重
    • ∗ * :卷积操作
    • b b b:偏置
    • f f f:激活函数(常用ReLU)

2.2 激活函数(Activation Function)

  • 常用:ReLU、Sigmoid、Tanh
  • 增加网络非线性表达能力

2.3 池化层(Pooling Layer)

  • 作用:降维,减少参数和计算量
  • 常用:最大池化(MaxPooling)、平均池化(AveragePooling)

2.4 全连接层(Fully Connected Layer)

  • 将高维特征展平后送入分类器,输出最终预测结果

2.5 批归一化(Batch Normalization)

  • 加速网络收敛,提高稳定性

3. CNN的基本流程

以图像分类为例:

  1. 输入层:输入图像(如 32 × 32 × 3 32 \times 32 \times 3 32×32×3
  2. 多层卷积 + 激活:提取不同层次特征
  3. 池化层:特征降维
  4. 重复卷积-池化:提取更高级特征
  5. 展平 + 全连接层:整合特征,分类输出
  6. Softmax:输出概率分布

4. CNN的优势

  • 参数少:权重共享减少参数规模
  • 自动特征提取:无需人工设计特征
  • 空间不变性强:对平移、旋转、缩放等具有鲁棒性

5. 经典CNN架构

网络代表性特点年份
LeNet-5最早的CNN之一,手写数字识别1998
AlexNet使用ReLU、Dropout,开启深度学习浪潮2012
VGGNet多个3×3小卷积核堆叠,结构简单有效2014
GoogLeNet引入Inception结构,多尺度特征融合2014
ResNet残差结构,极大加深网络,解决梯度消失问题2015

6. 应用场景

  • 图像分类:如人脸识别、医学诊断
  • 目标检测:自动驾驶、安防监控
  • 图像分割:医学影像分割、地图分割
  • 视频分析:行为识别、动作分析
  • 语音识别、文本处理(1D卷积)

7. 简单PyTorch实现

import torch
import torch.nn as nnclass SimpleCNN(nn.Module):def __init__(self):super(SimpleCNN, self).__init__()self.conv1 = nn.Conv2d(3, 16, 3, padding=1)self.pool = nn.MaxPool2d(2, 2)self.fc1 = nn.Linear(16 * 16 * 16, 10)  # 假设输入32x32x3def forward(self, x):x = self.pool(torch.relu(self.conv1(x)))x = x.view(-1, 16 * 16 * 16)x = self.fc1(x)return xmodel = SimpleCNN()
print(model)

8. 总结

CNN以其优雅的结构和强大的特征提取能力,成为深度学习的基石模型。未来,随着网络结构和硬件的不断进步,CNN将在更多领域展现更强实力。


参考资料

  • Yann LeCun’s Home Page
  • ImageNet Large Scale Visual Recognition Challenge
  • PyTorch官方文档
http://www.xdnf.cn/news/12138.html

相关文章:

  • Python 运算符详解
  • 【Markdown 中定义函数和变量】
  • 创新驱动产业升级,国际数字影像产业园绘就文创发展新蓝图
  • Python多线程编程:从GIL锁到实战优化
  • 【openssl】升级为3.3.1,避免安全漏洞
  • 大模型高效提示词Prompt编写指南
  • Fullstack 面试复习笔记:项目梳理总结
  • 施耐德特价型号伺服电机VIA0703D31A1022、常见故障
  • 硬件学习笔记--66 MCU的DMA简介
  • unix/linux,sudo,一个强大且灵活的工具,允许一个被授权的用户以另一个用户(通常是root,即超级用户)的身份来执行命令
  • VSCode 工作区配置文件通用模板创建脚本
  • 循序渐进kubernetes之Lens
  • 华为云服务器 Java 项目部署 “版本穿越” 危机破解指南
  • STM32实战:智能环境监测站设计方案
  • spel 多层list嵌套表达式踩坑记
  • 数据结构与算法学习笔记(Acwing 提高课)----动态规划·树形DP
  • 互联网大厂Java求职面试:云原生架构下的微服务网关与可观测性设计
  • SQL进阶之旅 Day 15:动态SQL与条件查询构建
  • 使用nginx代理mqtt服务
  • 算法分析与设计-动态规划、贪心算法
  • 对抗性提示:大型语言模型的安全性测试
  • 多模态大语言模型arxiv论文略读(107)
  • HTTP(超文本传输协议)详解
  • HarmonyOS Next 弹窗系列教程(4)
  • 【OpenGL学习】(四)统一着色和插值着色
  • 完成一个可交互的k8s管理平台的页面开发
  • [蓝桥杯]碱基
  • 2025年智能物联网与电子信息国际会议 (IITEI 2025)
  • QT开发技术【ffmpeg + QAudioOutput】音乐播放器
  • 【Docker 从入门到实战全攻略(二):核心概念 + 命令详解 + 部署案例】