VGGNet详解
VGGNet 由牛津大学视觉几何组(Visual Geometry Group)在2014年提出,凭借极简的 3×3卷积核堆叠设计 成为经典模型,影响了后续大量网络架构。
1. 网络结构
VGGNet 的核心思想是 通过多层小卷积核(3×3)替代大卷积核,在保持感受野的同时减少参数量并增强非线性。共有6种配置(VGG11-VGG19),最常用的是 VGG16 和 VGG19(数字代表带权重的层数)。
以 VGG16 为例(输入224×224×3 RGB图像):
层类型 | 参数说明 | 输出尺寸 |
---|---|---|
卷积块1 | 2层3×3卷积(64通道),步长1,填充1 | 224×224×64 |
最大池化 | 2×2池化,步长2 | 112×112×64 |
卷积块2 | 2层3×3卷积(128通道) | 112×112×128 |
最大池化 | 2×2池化,步长2 | 56×56×128 |
卷积块3 | 3层3×3卷积(256通道) | 56×56×256 |
最大池化 | 2×2池化,步长2 | 28×28×256 |
卷积块4 | 3层3×3卷积(512通道) | 28×28×512 |
最大池化 | 2×2池化,步长2 | 14×14×512 |
卷积块5 | 3层3×3卷积(512通道) | 14×14×512 |
最大池化 | 2×2池化,步长2 | 7×7×512 |
全连接层 | 展平为25088维 → 4096神经元 | 4096 |
全连接层 | 4096 → 4096神经元 | 4096 |
输出层 | 4096 → 1000神经元(ImageNet类别) | 1000 |
2. 核心设计特点
(1) 小卷积核堆叠
- 3×3卷积的优势:
- 两层3×3卷积的感受野等效于一层5×5卷积,但参数量更少(2×3²=18 vs 5²=25)。
- 三层3×3卷积的感受野等效于7×7,同时引入更多非线性(ReLU)。
- 1×1卷积:在部分版本(如VGG16)中用于通道变换(类似Inception的降维)。
(2) 统一设计
- 所有卷积层使用 相同填充(padding=1) 和 步长1,保持空间分辨率不变(池化层负责降采样)。
- 全连接层参数量极大(占总数约90%),后续模型(如ResNet)通过全局平均池化(GAP)减少参数。
(3) 其他细节
- 激活函数:全部使用ReLU(AlexNet的改进延续)。
- 池化层:仅用最大池化(2×2,步长2),无重叠池化。
- 无归一化层:未使用BatchNorm(2015年后成为标配)。
3. 为什么VGGNet有效?
- 深度的重要性:证明堆叠更多卷积层可提升特征抽象能力(VGG16比AlexNet深3倍)。
- 小卷积核的高效性:参数量更少,且能捕捉更复杂的非线性特征。
- 结构规整:便于迁移学习(如提取中间层特征用于其他任务)。
4. 代码实现(PyTorch示例)
import torch.nn as nnclass VGG16(nn.Module):def __init__(self, num_classes=1000):super(VGG16, self).__init__()self.features = nn.Sequential(# 卷积块1nn.Conv2d(3, 64, kernel_size=3, padding=1),nn.ReLU(inplace=True),nn.Conv2d(64, 64, kernel_size=3, padding=1),nn.ReLU(inplace=True),nn.MaxPool2d(kernel_size=2, stride=2),# 卷积块2-5(类似结构,通道数增加)# ...(详见完整代码)# 卷积块5后接池化nn.MaxPool2d(kernel_size=2, stride=2),)self.avgpool = nn.AdaptiveAvgPool2d((7, 7)) # 自适应池化兼容不同输入尺寸self.classifier = nn.Sequential(nn.Linear(512*7*7, 4096),nn.ReLU(inplace=True),nn.Dropout(p=0.5),nn.Linear(4096, 4096),nn.ReLU(inplace=True),nn.Dropout(p=0.5),nn.Linear(4096, num_classes),)def forward(self, x):x = self.features(x)x = self.avgpool(x)x = x.view(x.size(0), -1)x = self.classifier(x)return x
5. 参数量与计算成本
- VGG16:约1.38亿参数,其中:
- 卷积层:约1470万参数(占10.6%)。
- 全连接层:约1.23亿参数(占89.4%)。
- VGG19:约1.44亿参数,深度增加但参数量增长不明显(因全连接层占比大)。
6. 优缺点
优点
- 结构简单:易于实现和扩展。
- 迁移学习友好:预训练特征广泛用于目标检测(如Faster R-CNN)、语义分割(如FCN)。
缺点
- 全连接层冗余:参数量大,易过拟合(需依赖Dropout和数据增强)。
- 计算成本高:FLOPs远超后续模型(如ResNet)。
7. 后续改进
- 全连接层替代:用全局平均池化(GAP)减少参数(如NiN、ResNet)。
- 加入BatchNorm:加速训练并提升精度(VGG16-BN)。
- 轻量化变体:如VGG-M(减少通道数)。
总结
VGGNet 以极简的 3×3卷积堆叠 证明了深度对特征学习的重要性,其规整的结构使其成为迁移学习的基石。尽管参数量大,但它在许多任务中仍是可靠的基准模型。后续模型(如ResNet)通过残差连接和瓶颈设计进一步优化了深度网络的训练效率。
相关文章:
VGGNet详解
VGGNet 由牛津大学视觉几何组(Visual Geometry Group)在2014年提出,凭借极简的 33卷积核堆叠设计 成为经典模型,影响了后续大量网络架构。 1. 网络结构 VGGNet 的核心思想是 通过多层小卷积核(33)替代大卷…...
TDengine 在新能源行业应用
简介 在当前可再生能源迅速发展的浪潮中,分布式光伏和可再生能源的装机容量已经达到相当可观的规模。尽管新能源的发展得到政策的鼎力扶持,但其并网后对电网的运行调度、供电可靠性以及系统的安全稳定带来诸多新挑战。 分布式光伏,即分布式…...
[人机交互]设计,原型建立和构造
一.建立和构造原型 1.1理解用户需要和技术之间的关系 用户需要和技术之间是一个鸡和蛋的问题 • 用户对产品的理解建立在 与该产品交互 的基础上 • 用户只有在熟悉后,才能 评价 是否需要,及 进一步 的需要 • 构造最终产品需要大量资源 • 原型化 是 …...
C#生成二维码和条形码
C# 实现二维码和条形码生成:从入门到实战 文章目录 C# 实现二维码和条形码生成:从入门到实战一、引言二、准备工作2.1 开发环境搭建2.2 引入相关库 三、生成条形码3.1 条形码基本概念3.2 使用[ZXing.Net](https://ZXing.Net)生成条形码3.2.1 核心代码实现…...
2025.5.8总结(中期审视)
今日记录: 晚上,主管找我聊了关于中期绩效审视的问题。 首先就是让我汇报上半年的工作进展,汇报完后,感觉体现不出自己的工作量,这确实考验个人的汇报能力。 汇报完工作后,主管开始给我提了一些建设性的…...
Pyinstaller编译EXE及反编译
文章目录 适用范围示例文件编译EXE反编译EXE准备工具编译pycdc反编译 反编译得到的文件相关资源下载 适用范围 实测 python3.9可以反编译。从pycdc源代码看,似乎支持到python 3.13。 示例文件 demo.py import sys from PyQt5 import QtWidgets, QtCore, QtGui c…...
3.2.3 掌握RDD转换算子 - 3. 扁平映射算子 - flatMap()
在本节课中,我们深入学习了Spark RDD的flatMap()算子。flatMap()与map()类似,但每个元素可以返回0到多个元素,最终将所有结果合并为一个RDD。通过案例演示,我们首先对单词文件进行了统计,通过map()将每行文本转换为单词…...
深入解析 C# 常用数据结构:特点、区别与优缺点分析
在软件开发中,选择合适的数据结构是提高代码效率和性能的关键。在 C# 中,我们常用的数据结构包括 List、Array、Dictionary<TKey, TValue>、HashSet、Queue、Stack 和 LinkedList。每种数据结构有不同的特点、优缺点和适用场景。本文将结合代码&am…...
LeetCode第284题 - 窥视迭代器
题目 解答一 package leetcode.editor.cn; //leetcode submit region begin(Prohibit modification and deletion) // Java Iterator interface reference: // https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.htmlimport java.util.Iterator; import java.ut…...
克里金模型+多目标优化+多属性决策!Kriging+NSGAII+熵权TOPSIS!
目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 克里金模型多目标优化多属性决策!KrigingNSGAII熵权TOPSIS!!matlab2023b语言运行! 1.克里金模型(Kriging Model)是一种基于空间统计学的插值方法…...
驱动开发硬核特训 · Day 30(下篇): 深入解析 lm48100q I2C 音频编解码器驱动模型(基于 i.MX8MP)
作者:嵌入式Jerry 视频教程请关注 B 站:“嵌入式Jerry” 一、背景与目标 在本篇中,我们围绕 TI 的 lm48100q 音频编解码器 展开,深入讲解其作为 I2C 外设如何集成至 Linux 内核音频子系统(ASoC)࿰…...
【RAG】indexing 中的 Hierarchical Indexing(分层索引)
Hierarchical Indexing(分层索引) 关键词解析: Splits (分割): 原始文档被分割成较小的块。Cluster (聚类): 将语义上相似的文档块分组在一起。Summaries (摘要): 为每个聚类或更高层次的节点生成摘要。RAPTOR (Recursive Abstractive Proc…...
【LeetCode 42】接雨水(单调栈、DP、双指针)
题面: 思路: 能接雨水的点,必然是比两边都低(小)的点。有两种思路,一种是直接计算每个点的最大贡献(也就是每个点在纵向上最多能接多少水),另一种就是计算每个点在横向上…...
【软件设计师:数据库】13.数据库控制与安全
一、数据库语言SQL SQL是结构化查询语言(Structured Query Language)的缩写,其功能包括数据查询、数据操纵、数据定义和数据控制四个部分。 SQL 语言简洁、方便实用、功能齐全,已成为目前应用最广的关系数据库语言。SQL既是自含式语言(联机交互),又是嵌入式语言(宿主语…...
PWN基础-ROP技术-ret2syscall-64位程序栈溢出利用
前置 ret2syscall 的基础我们就不做过多讲解了 利用思路与 32 位类似,只是传参的寄存器是: rdi -> rsi -> rdx -> rcx -> r8 -> r9 我们这里只用到前三个就可以了,以及 rax 还有一个区别就是: 32 位系统调用最…...
基于大模型预测的产钳助产分娩全方位研究报告
目录 一、引言 1.1 研究背景与意义 1.2 研究目的与方法 二、产钳助产分娩概述 2.1 产钳助产定义与历史 2.2 适用情况与临床意义 三、大模型预测原理与数据基础 3.1 大模型技术原理 3.2 数据收集与处理 3.3 模型训练与验证 四、术前预测与准备 4.1 大模型术前风险预…...
二叉树结构的深入学习
目录 1. 节点结构 1.1.值(val) 1.2.左右孩子节点 2.本质 3.类型 4.遍历方式 树是一种递归的数据结构。具有一个根节点和多个子节点,形成邻接关系,每个节点可以有零个或多个子节点。 树的定义是递归的,由根节点的…...
SVT-AV1源码学习-EbMotionEstimation.h 学习
#ifndef EbMotionEstimation_h //防止文件呗重复包含的宏定义开始标记 #define EbMotionEstimation_h 定义头文件标识符 #include "definitions.h" //包含定义文件 #include "coding_unit.h" //包含编码单元相关文件 #include "me_process.h" //…...
代理服务器
1.准备3台虚拟机 1台当做代理服务器;2台当做真实访问服务器;可以再来一台虚拟机当客户机,也可以使用主机来当客户机。 依次配置服务器 真实服务器(配置文件无需更改): 代理服务器: 35 ups…...
数值分析——条件数
1. 条件数的定义与计算 条件数(Condition Number)用于量化矩阵或函数对输入误差的敏感程度,反映问题的“良态”或“病态”特性。 矩阵条件数的定义 对于一个非奇异方阵 A,其条件数定义为: κ(A)∥A∥⋅∥A−1∥ 其…...
C++ STL 入门:map 键值对容器
C STL 入门:map 键值对容器 一、核心特性与适用场景 map 是 C STL 提供的关联式键值容器,基于红黑树实现,具备以下核心特征: 特性表现形式底层原理键唯一性不允许重复键值红黑树节点键值唯一约束自动排序元素按键升序排列红黑树…...
ESP32-CAM开发板学习(一)
一、Arduino IDE搭建ESP32开发环境 1、安装 Arduino IDE 软件,在官网下载压缩包解压直接使用 官网链接: Arduino IDE 2、修改软件语言,单击左上角 File → Preferences…,把Language改成中文(简体),保存 3、安装esp32开发板库…...
Arm核的Ubuntu系统上安装Qt
Arm核的Ubuntu系统上安装Qt 一、准备工作 确保可以连接网络 二、安装gcc 1、判断gcc是否安装 命令行输入:gcc -v 2、如果没有安装 输入命令安装: sudo apt install gcc 三、安装g++ 1、判断g++是否安装 命令行输入:g++ -v...
C++GO语言微服务和服务发现
目录 01 03-go-micro简介 02 04-服务发现的简单认识 03 05-consul的安装 04 06-consul常用的命令 05 07-注册服务到consul并验证 06 08-consul健康检查 07 09-consul结合grpc使用-上(只实现grpc远程调用) 08 10-consul结合grpc使用-中(…...
【随笔】Google学术:but your computer or network may be sending automated queries.
文章目录 一、问题复述二、问题原因三、解决 前提:你的xxx是自己做的,你自己可以管理,而不是用的那些劣质✈场。 一、问题复述 🟢如下图所示:可以打开谷歌学术,但是一搜索就是这个界面。 二、问题原因 …...
JavaSE核心知识点02面向对象编程02-02(封装、继承、多态)
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 JavaSE核心知识点02面向对象编程02-02&#…...
Ubuntu 服务器管理命令笔记
这份命令笔记涵盖了 Ubuntu 服务器管理的各个方面,包括系统更新、用户管理、安全配置、网络诊断等,适合日常使用与技术分享。 系统管理命令 sudo apt update && sudo apt upgrade -y # 更新系统 sudo reboot …...
航电系统之数据传输与交换篇
航电系统的数据传输与交换是航空电子领域的核心技术,直接关系到飞行安全、效率及任务执行能力。以下从技术架构、关键协议、应用场景、发展趋势与挑战四个维度进行系统阐述: 一、技术架构与核心组件 航电系统数据传输与交换采用分层化、模块化设计&…...
MATLAB 在医疗行业的应用
MATLAB 在医疗行业的应用 MATLAB 是一种强大的技术计算和模拟平台,在医疗行业中有着广泛的应用。日益处于数字化和智能化进程中的医疗行业,需要应用很多高性能的工具来支撑设备设计,信号分析,AI 项目开发等。本文将全面介绍 MATL…...
基于CNN与SHAP可解释性分析的神经网络回归预测模型【MATLAB】
基于CNN与SHAP可解释性分析的神经网络回归预测模型【MATLAB】 一、引言 在当今数据驱动的时代,机器学习和深度学习技术被广泛应用于各类预测任务中。其中,卷积神经网络(CNN)因其在处理具有空间结构的数据方面表现出色࿰…...
第一次被AI指点出文章的问题
二十年,几乎从未收到过这种程度的反馈。大部分意见都是有效的批评。 1.前言 关于链家左晖的一篇评论稿 这篇文章有什么问题吗?所有方面都可以谈,包括叙述,用词,重复,真实性,偏见,…...
红黑树的应用场景 —— 进程调度 CFS 与内存管理
一、红黑树在操作系统中的“实战”应用 📌 1. 进程调度器:CFS(Completely Fair Scheduler) CFS 是 Linux 的默认调度器(从 2.6.23 起),它使用红黑树维护就绪队列。 ✨ 为什么用红黑树&#x…...
RHEL8搭建FOU隧道
RHEL8搭建FOU隧道 搭建FOU隧道升级内核装载模块启用 IPv4 数据包转发功能升级iproute 配置 FOU 隧道k2接收端配置k1发送端配置双向配置k1 作为接收端配置一次。k2 作为发送端配置一次。配置接口状态配置路由的下一跳IP配置路由隧道测试 参考链接: 搭建FOU隧道 FOU是…...
单片机自动排列上料控制程序 下
/***************上料时间参数显示******************/ void dis_timea(uchar s) { uchar x,y; uint i0; A1s/100; A2(s-A1*100)/10; A3s-A1*100-A2*10; …...
科技成果鉴定测试有哪些内容?又有什么作用?
科技成果鉴定测试是评价科技成果质量和水平的方法之一,通过测试,可以对科技成果的技术优劣进行评估,从而为科技创新提供参考和指导。 一、科技成果鉴定测试的内容 1.技术评审:通过技术专家对项目进行详细的技术分析ÿ…...
【万字长文】深入浅出 LlamaIndex 和 LangChain:从RAG到智能体,轻松驾驭LLM应用开发
Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...
一文读懂Nginx应用之 HTTP负载均衡(七层负载均衡)
目录 一、HTTP负载均衡简介 (一)、概述 (二)、upstream模块核心参数 1、server指令参数 2、负载均衡策略指令参数 (1)、轮询(Rond Robin) (2)、最少连接(least_conn) (3)、一致性哈希(Consistent Hash) (4)、IP哈希(IP Hash) 3、长连接指令参数 二、环境规划 三、N…...
【LeetCode】删除排序数组中的重复项 II
题目 链接 思路 双指针 我好聪明啊,自己想出了这个双指针的办法,哈哈哈哈哈哈哈,太高兴了 代码 class Solution(object):def removeDuplicates(self, nums):""":type nums: List[int]:rtype: int"""nlen…...
vite 初始化react项目
一. 初始化 npm create vitelatestProject name 项目名,例如:todo-listSelect a framework 选:ReactSelect a variant 选:TypeScript npm install //安装依赖 npm run dev //启动项目这样一个简单的react项目就实现了。 二.…...
LeetCode 216.组合总和 III:回溯算法实现与剪枝优化
目录 问题描述解决思路 回溯法剪枝优化 代码实现复杂度分析示例测试总结与扩展 1. 问题描述 给定两个整数 k 和 n,要求找出所有满足以下条件的组合: 组合包含 k 个不同的数字。组合中数字的和等于 n。组合中的数字范围为 [1, 9],且每个数字…...
【Bootstrap V4系列】学习入门教程之 组件-下拉菜单(Dropdowns)高级用法
Bootstrap V4系列 学习入门教程之 组件-下拉菜单(Dropdowns)高级用法 下拉菜单(Dropdowns)高级用法一、Directions 方向1.1 Dropup1.2 Dropright1.3 Dropleft 二、Menu items 菜单项2.1 Active 活动2.2 Disabled 禁用 三、Menu co…...
xiaopiu原型设计工具笔记
文章目录 有没有行组件是否支持根据图片生成原型呢? 其他官网 做项目要用到原型设计,还是那句话,遇到的必须会用,走起。 支持本地也支持线上。 有没有行组件 是这样,同一行有多个字段,如何弄的准确点呢? 目前只会弄…...
【hadoop】案例:Sqoop迁移仓库数据
1 数据导出:Hive导入MySQL [hadoophadoop1 sqoop]$ bin/sqoop export \ > --connect jdbc:mysql://localhost/weather \ > --username root \ > --password 123456 \ > --table mean_temperature \ > --export-dir /user/hive/warehouse/mydb/mean…...
南邮计科电工电子实验第五次课与非门设计数字锁逻辑电路小测答案
第五次课测试 题量: 16 满分: 100 一. 单选题(共10题,62.2分) 1. (单选题)下列哪个电路是基本的组合逻辑电路? A. 触发器B. 计数器C. 半加器D. 积分器 我的答案:C:半加器;正确答案:C:半加器; 6.2分 知识点: 组合…...
基于PyQt5的报警器实现说明
基于PyQt5的报警器实现说明 一、概述 本程序是一个基于PyQt5框架实现的报警器控制程序,通过串口与外部设备进行通信,向设备发送特定的十六进制指令来实现报警器的不同功能。PyQt5是Python中用于创建图形用户界面(GUI)的强大工具…...
pyorch中tensor的理解与操作(一)
tensor 是PyTorch 中一个最基本的数据集合类型, 本文注意针对该结构类型,说明它的存储方式以及主要的操作方法。 tensor其实是一个多维数组(元素的数据类型需一致),类似于 NumPy 的 ndarrays,但可以在 GPU …...
用react实现一个简单的三页应用
下面是一个使用 React Router 的简单示例,演示了如何在 React 应用中实现页面之间的导航。 🛠️ 第一步:使用 Vite 创建项目 npm create vitelatest my-router-app -- --template react cd my-router-app npm install🚀 第二步&a…...
OCCT中的布尔运算
OCCT 中的布尔运算是其几何建模的核心功能之一,主要用于实体的合并、切割和相交操作。以下是详细介绍及经典示例程序: 一、OCCT布尔运算的核心类 OCCT 通过 BRepAlgoAPI 命名空间下的类实现布尔运算,主要包括: BRepAlgoAPI_Fus…...
SpringBoot的自动配置和起步依赖原理
关于Spring Boot的自动配置和起步依赖,我想结合最新的实现机制来展开说明。先说自动配置——这是Spring Boot最核心的"约定优于配置"思想的落地体现。举个例子,当我们创建一个新的Spring Boot项目时,只要在pom.xml里添加了spring-b…...
沃伦森电气高压动态无功补偿装置助力企业电能优化
在工业生产的复杂电能环境中,电能质量直接影响企业的生产效率和运营成本。XX光伏科技有限公司作为一家快速发展的制造企业,随着生产规模的不断扩大,其内部电网面临功率因数过低、电压波动频繁等问题,导致供电部门罚款增加、设备故…...