经典卷积神经网络
目录
经典卷积神经网络
一、卷积神经网络基础回顾
二、LeNet:开启 CNN 先河
三、AlexNet:突破性进展
四、ZFNet:继承与优化
五、GoogLeNet:引入 Inception 模块
六、VggNet:深度与简单结构的融合
七、ResNet:解决深层网络训练难题
八、DenseNet:促进特征复用
九、MobileNet:专注移动端应用
十、ShuffleNet:优化移动端模型
十一、SENet:聚焦通道间特征依赖
十二、实战案例与代码实现
卷积神经网络(Convolutional Neural Network,CNN)在计算机视觉领域占据着举足轻重的地位,为图像识别、目标检测等任务提供了强大的解决方案。本文深入剖析经典卷积神经网络的原理、结构及应用,涵盖 LeNet、AlexNet、ZFNet、GoogLeNet、VggNet、ResNet、DenseNet、MobileNet、ShuffleNet、SENet 等重要模型。
一、卷积神经网络基础回顾
卷积神经网络模拟视觉皮层机制,由卷积层、激活层、池化层和全连接层构成。卷积层运用卷积核提取局部特征,激活层引入非线性,池化层下采样特征图,全连接层整合特征输出预测结果。
二、LeNet:开启 CNN 先河
LeNet 是最早的卷积神经网络之一,由 Yann LeCun 提出,主要用于手写数字识别。其结构包含两个卷积层、两个池化层和三个全连接层。LeNet 的卷积层使用小尺寸卷积核提取图像边缘和纹理特征,池化层采用平均池化下采样,全连接层整合特征完成分类。LeNet 的提出为后续 CNN 的发展奠定了基础。
三、AlexNet:突破性进展
AlexNet 在 2012 年 ImageNet 挑战赛中崭露头角,凭借卓越性能推动 CNN 进入深度学习时代。它包含 5 个卷积层和 3 个全连接层,引入 ReLU 激活函数、Dropout 技术和多 GPU 训练策略。ReLU 激活函数加速训练过程,Dropout 技术有效防止过拟合,多 GPU 训练提升效率。AlexNet 的成功彰显了深度 CNN 的强大性能,激发了 CNN 领域的创新热情。
四、ZFNet:继承与优化
ZFNet 在 AlexNet 基础上改进,优化网络结构提升性能。ZFNet 调整卷积核数量和全连接层神经元数量,扩大网络宽度和深度,增强特征表达能力。它在 ImageNet 挑战赛中取得优异成绩,成为 CNN 发展的重要里程碑。
五、GoogLeNet:引入 Inception 模块
GoogLeNet 以 Inception 模块为核心,显著提升计算效率。Inception 模块融合多种尺寸卷积核和池化操作,提取多尺度特征,拓宽网络结构。GoogLeNet 的深度达 22 层,采用辅助分类器缓解梯度消失问题,加速训练收敛。它在 ImageNet 挑战赛中夺冠,凸显了 Inception 模块的优势。
六、VggNet:深度与简单结构的融合
VggNet 强调网络深度与结构一致性,使用小尺寸卷积核(3×3)和深度结构(16 - 19 层),逐层提取图像特征。VggNet 的卷积层和池化层交替使用,全连接层置于网络末端。它在 ImageNet 挑战赛中表现突出,验证了深度网络提取复杂特征的能力,为后续研究提供新方向。
七、ResNet:解决深层网络训练难题
ResNet 提出残差学习机制,通过残差块连接输入输出,缓解深层网络训练难题。残差块包含两个卷积层和一个 shortcut 连接,将输入直接加到输出上。这种设计助 ResNet 达到 100 多层,提升性能。ResNet 在 ImageNet 挑战赛中夺冠,成为 CNN 发展的又一里程碑。
八、DenseNet:促进特征复用
DenseNet 在 ResNet 基础上创新,每个层接收前面所有层的特征图,强化特征复用。其连接模式提升参数效率,减少计算量,增强特征传播和利用效率。DenseNet 在多个图像分类任务中表现出色,验证了其高效特征利用策略的优势。
九、MobileNet:专注移动端应用
MobileNet 针对移动端计算资源受限问题,采用深度可分离卷积替代传统卷积,大幅削减计算量与参数量。深度可分离卷积分解卷积操作为深度卷积和逐点卷积,降低资源消耗。MobileNet 在保持较高准确率的同时,实现高效运行,适用于移动设备场景。
十、ShuffleNet:优化移动端模型
ShuffleNet 在 MobileNet 基础上引入 channel shuffle 操作,优化特征通道交互,提升模型性能。其创新的 ShuffleUnit 模块结合逐点组卷积和通道重排技术,在降低计算成本的同时取得良好效果,进一步推动移动端深度学习应用发展。
十一、SENet:聚焦通道间特征依赖
SENet 提出通道注意力机制,通过学习通道间依赖关系,增强关键特征表达。SENet 的 SE 模块包含全局平均池化、全连接层和 sigmoid 激活函数,生成通道注意力权重,调整特征图。这种机制使 SENet 能聚焦关键特征,提升分类准确性,在 ImageNet 挑战赛中取得佳绩。
十二、实战案例与代码实现
本文为每个 CNN 模型提供实战案例与 PyTorch 代码实现,助力读者加深理解掌握应用。以 AlexNet 为例,代码如下:
import torch
import torch.nn as nnclass AlexNet(nn.Module):def __init__(self, num_classes=1000):super(AlexNet, self).__init__()self.features = nn.Sequential(nn.Conv2d(3, 64, kernel_size=11, stride=4, padding=2),nn.ReLU(inplace=True),nn.MaxPool2d(kernel_size=3, stride=2),nn.Conv2d(64, 192, kernel_size=5, padding=2),nn.ReLU(inplace=True),nn.MaxPool2d(kernel_size=3, stride=2),nn.Conv2d(192, 384, kernel_size=3, padding=1),nn.ReLU(inplace=True),nn.Conv2d(384, 256, kernel_size=3, padding=1),nn.ReLU(inplace=True),nn.Conv2d(256, 256, kernel_size=3, padding=1),nn.ReLU(inplace=True),nn.MaxPool2d(kernel_size=3, stride=2),)self.classifier = nn.Sequential(nn.Dropout(),nn.Linear(256 * 6 * 6, 4096),nn.ReLU(inplace=True),nn.Dropout(),nn.Linear(4096, 4096),nn.ReLU(inplace=True),nn.Linear(4096, num_classes),)def forward(self, x):x = self.features(x)x = x.view(x.size(0), 256 * 6 * 6)x = self.classifier(x)return x# 测试 AlexNet
net = AlexNet()
input_tensor = torch.randn(1, 3, 224, 224)
output = net(input_tensor)
print(output.shape)
其他模型的代码实现类似,通过定义网络结构、前向传播函数,构建模型并输入数据测试输出。这些实战案例为实际应用开发奠定基础。
相关文章:
经典卷积神经网络
目录 经典卷积神经网络 一、卷积神经网络基础回顾 二、LeNet:开启 CNN 先河 三、AlexNet:突破性进展 四、ZFNet:继承与优化 五、GoogLeNet:引入 Inception 模块 六、VggNet:深度与简单结构的融合 七、ResNet&a…...

IDE/IoT/搭建物联网(LiteOS)集成开发环境,基于 LiteOS Studio + GCC + JLink
文章目录 概述LiteOS Studio不推荐?安装和使用手册呢?HCIP实验的源码呢? 软件和依赖安装软件下载软件安装插件安装依赖工具-方案2依赖工具-方案1 工程配置打开或新建工程板卡配置组件配置编译器配置-gcc工具链编译器配置-Makefile脚本其他配置编译完成 …...

算法加训之最短路 上(dijkstra算法)
目录 P4779 【模板】单源最短路径(标准版)(洛谷) 思路 743. 网络延迟时间(力扣) 思路 1514.概率最大路径(力扣) 思路 1631.最小体力消耗路径 思路 1976. 到达目的地的方案数 …...
java连数据库
一、准备工作 安装MySQL数据库 确保已安装MySQL服务器并启动服务 下载JDBC驱动 官方驱动:MySQL Connector/JMaven依赖: <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactI…...

QT+Opencv 卡尺工具找直线
QTOpencv 卡尺工具找直线 自己将别的项目中,单独整理出来的。实现了一个找直线的工具类。 功能如下:1.添加图片 2.添加卡尺工具 3.鼠标可任意拖动图片和卡尺工具 4.可调整卡尺参数和直线拟合参数 5.程序中包含了接口函数,其他cpp文件传入相…...

GraphPad Prism简介、安装与工作界面
《2025GraphPad Prism操作教程书籍 GraphPad Prism图表可视化与统计数据分析视频教学版GraphPad Prism科技绘图与数据分析学术图表 GraphPadPrism图表》【摘要 书评 试读】- 京东图书 GraphPad Prism统计数据分析_夏天又到了的博客-CSDN博客 1.1 GraphPad Prism简介 GraphP…...
当AI自我纠错:一个简单的“Wait“提示如何让模型思考更深、推理更强
原论文:s1: Simple test-time scaling 作者:Niklas Muennighoff, Zitong Yang, Weijia Shi等(斯坦福大学、华盛顿大学、Allen AI研究所、Contextual AI) 论文链接:arXiv:2501.19393 代码仓库:GitHub - simp…...

esp32课设记录(一)按键的短按、长按与双击
课程用的esp32的板子上只有一个按键,引脚几乎都被我用光了,很难再外置按键。怎么控制屏幕的gui呢?这就得充分利用按键了,比如说短按、长按与双击,实现不同的功能。 咱们先从短按入手讲起。 通过查看原理图,…...
使用AI 生成PPT 最佳实践方案对比
文章大纲 一、专业AI生成工具(推荐新手)**1. 推荐工具详解****2. 操作流程优化****3. 优势与局限**二、代码生成方案(开发者推荐)**1. Python-pptx进阶用法****2. GitHub推荐**三、混合工作流(平衡效率与定制)**1. 工具链升级****2. 示例Markdown结构**四、网页转换方案(…...

React19源码系列之 API(react-dom)
API之 preconnect preconnect – React 中文文档 preconnect 函数向浏览器提供一个提示,告诉它应该打开到给定服务器的连接。如果浏览器选择这样做,则可以加快从该服务器加载资源的速度。 preconnect(href) 一、使用例子 import { preconnect } fro…...

supervisorctl守护进程
supervisorctl守护进程 1 安装 # ubuntu安装: sudo apt-get install supervisor 完成后可以在/etc/supervisor文件夹,找到supervisor.conf。 如果没有的话可以用如下命令创建配置文件(注意必须存在/etc/supervisor这个文件夹) s…...

下载的旧版的jenkins,为什么没有旧版的插件
下载的旧版的jenkins,为什么没有旧版的插件,别急 我的jenkins版本: 然后我去找对应的插件 https://updates.jenkins.io/download/plugins/ 1、Maven Integration plugin: Maven 集成管理插件。 然后点击及下载成功 然后 注意&…...

【ALINX 实战笔记】FPGA 大神 Adam Taylor 使用 ChipScope 调试 AMD Versal 设计
本篇文章来自 FPGA 大神、Ardiuvo & Hackster.IO 知名博主 Adam Taylor。在这里感谢 Adam Taylor 对 ALINX 产品的关注与使用。为了让文章更易阅读,我们在原文的基础上作了一些灵活的调整。原文链接已贴在文章底部,欢迎大家在评论区友好互动。 在上篇…...
出现 Uncaught ReferenceError: process is not defined 错误
在浏览器环境中,process 对象是 Node.js 环境特有的,因此当你在浏览器中运行代码时,会出现 Uncaught ReferenceError: process is not defined 错误。这个错误是因为代码里使用了 process.env.BASE_URL,而浏览器环境下并没有 proc…...

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】附录-A. PostgreSQL常用函数速查表
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 PostgreSQL常用函数速查表:从数据清洗到分析的全场景工具集引言一、字符串处理函数1.1 基础操作函数1.2 模式匹配函数(正则表达式)二、数值计算函数2.1 基础运算函数2.2 统计相关函数三、日期与时间函…...

【时空图神经网络 交通】相关模型2:STSGCN | 时空同步图卷积网络 | 空间相关性,时间相关性,空间-时间异质性
注:仅学习使用~ 前情提要: 【时空图神经网络 & 交通】相关模型1:STGCN | 完全卷积结构,高效的图卷积近似,瓶颈策略 | 时间门控卷积层:GLU(Gated Linear Unit),一种特殊的非线性门控单元目录 STSGCN-2020年1.1 背景1.2 模型1.2.1 问题背景:现有模型存在的问题1.2…...
零基础学Java——第十一章:实战项目 - 微服务入门
第十一章:实战项目 - 微服务入门 随着互联网应用的复杂性不断增加,单体应用(Monolithic Application)在可扩展性、可维护性、技术栈灵活性等方面逐渐暴露出一些问题。微服务架构(Microservices Architectureÿ…...

docker 学习记录
docker pull nginx docker 将本地nginx快照保存到当前文件夹下 docker save -o nginx.tar nginx:latestdocker 将本地nginx 加载 docker load -i nginx.tar docker运行nginx在80端口 docker run --name dnginx -p 80:80 -d nginxredis启动 docker run --name mr -p 6379:6379 -…...
自媒体工作室如何矩阵?自媒体矩阵养号策略
一、自媒体工作室矩阵搭建方法 1.纵向矩阵:在主流平台都开设账号,覆盖不同用户触达场景。 短视频:抖音、快手、视频号(侧重私域沉淀) 2.主账号导流:通过关联账号、评论区跳转链接实现流量互通 本地生活…...

南京邮电大学金工实习答案
一、金工实习的定义 金工实习是机械类专业学生一项重要的实践课程,它绝非仅仅只是理论知识在操作层面的简单验证,而是一个全方位培养学生综合实践能力与职业素养的系统工程。从本质上而言,金工实习是学生走出教室,亲身踏入机械加…...
【C++进阶篇】C++容器完全指南:掌握set和map的使用,提升编码效率
C容器的实践与应用:轻松掌握set、map与multimap的区别与用法 一. 序列式容器与关联式容器1.1 序列式容器 (Sequential Containers)1.2 关联式容器 (Associative Containers) 二. set系列使用2.1 set的构造和迭代器2.2 set的增删查2.2.1 插入2.2.2 查找2.2.3 删除 2.…...

世界模型+大模型+自动驾驶 论文小汇总
最近看了一些论文,懒得一个个写博客了,直接汇总起来 文章目录 大模型VLM-ADVLM-E2EOpenDriveVLAFASIONAD:自适应反馈的类人自动驾驶中快速和慢速思维融合系统快系统慢系统快慢结合 世界模型End-to-End Driving with Online Trajectory Evalu…...
物联网设备远程管理:基于代理IP的安全固件更新通道方案
在物联网设备远程管理中,固件更新的安全性直接关系到设备功能稳定性和系统抗攻击能力。结合代理IP技术与安全协议设计,可构建安全、高效的固件更新通道。 一、代理IP在固件更新中的核心作用 网络层隐匿与路由优化 隐藏更新源服务器:通过代理I…...
MyBatis 延迟加载与缓存
一、延迟加载策略:按需加载,优化性能 1. 延迟加载 vs 立即加载:核心区别 立即加载:主查询(如查询用户)执行时,主动关联加载关联数据(如用户的所有账号)。 场景…...

C++函数三剑客:缺省参数·函数重载·引用的高效编程指南
前引:在C编程中,缺省参数、函数重载、引用是提升代码简洁性、复用性和效率的三大核心机制。它们既能减少冗杂的代码,又能增强接口设计的灵活性。本文将通过清晰的理论解析与实战案列,带你深入理解这三者的设计思想、使用场景以及闭…...
ORACLE 11.2.0.4 数据库磁盘空间爆满导致GAP产生
前言 昨天晚上深夜接到客户电话,反应数据库无法正常使用,想进入服务器检查时,登录响应非常慢。等两分钟后进入服务器且通过sqlplus进入数据库也很慢。通过检查服务器磁盘空间发现数据库所在区已经爆满,导致数据库在运行期间新增审…...
面试题总结一
第一天 1. 快速排序 public class QuickSort {public static void quickSort(int[] arr, int low, int high) {if (low < high) {// 分区操作,获取基准元素的最终位置int pivotIndex partition(arr, low, high);// 递归排序基准元素左边的部分quickSort(arr, …...

SWUST数据结构下半期实验练习题
1068: 图的按录入顺序深度优先搜索 #include"iostream" using namespace std; #include"cstring" int visited[100]; char s[100]; int a[100][100]; int n; void dfs(int k,int n) {if(visited[k]0){visited[k]1;cout<<s[k];for(int i0;i<n;i){i…...
专业版降重指南:如何用Python批量替换同义词?自动化操作不香嘛?
还在手动一个个改词降重?👀 是兄弟就别再CtrlF了,来试试Python自动同义词替换批量降重法,简直是论文改写效率神器! 这篇我们来一波实操干货: 👉 如何用Python写出一个自动替换论文关键词的脚本…...
一:操作系统之操作系统结构
深入浅出:一文读懂操作系统的五种核心结构 操作系统,作为计算机硬件与应用软件之间的桥梁,其内部组织结构是决定其性能、稳定性、可维护性和安全性的关键。就像建造房屋需要选择不同的建筑结构一样,设计操作系统也需要选择或混合…...