CNN-day7-经典神经网络VGG

devtools/2025/2/11 11:37:52/

day8-经典神经网络VGG

VGG的亮点在于它通过堆叠多个卷积层,以小的卷积核和池化层的方式来增加网络深度,从而实现高精度的图像识别。这种方法可以有效地捕获图像中的高级特征,并通过不断拟合训练数据来提高识别准确率。

1 小卷积作用

某层feature map上的元素看到前面不同层上的区域范围是不同的,通常在不特殊指定的情况下,感受野指的是看到输入图像上的区域。

  • 网络层数增加(非线性表达能力增加)

  • 网络参数数量减少

2 VGG版本

#configure
cfgs = {"A": [64, "M", 128, "M", 256, 256, "M", 512, 512, "M", 512, 512, "M"],#VGG11"B": [64, 64, "M", 128, 128, "M", 256, 256, "M", 512, 512, "M", 512, 512, "M"],#VGG13"D": [64, 64, "M", 128, 128, "M", 256, 256, 256, "M", 512, 512, 512, "M", 512, 512, 512, "M"],#VGG16,一般使用这个"E": [64, 64, "M", 128, 128, "M", 256, 256, 256, 256, "M", 512, 512, 512, 512, "M", 512, 512, 512, 512, "M"],#VGG19
}

self.classifier = nn.Sequential(nn.Linear(512 * 7 * 7, 4096),nn.ReLU(True),nn.Dropout(p=dropout),nn.Linear(4096, 4096),nn.ReLU(True),nn.Dropout(p=dropout),nn.Linear(4096, num_classes),)

3 存在的问题

1.网络架构非常大,需要大量的计算资源来训练。如要在较小设备上使用VGG会发现它非常慢并且可能无法获得足够的性能

2.网络结构非常深,可能会导致梯度消失或梯度爆炸。(在非常深的神经网络中,梯度在传播过程中可能会变得非常小或者非常大,导致模型无法正常训练)

4 VGG网络测试

将全连接替换为卷积,从而适应不同输入大小的图。

  • 第1个全连接层转换为7×7的卷积层

  • 后两个全连接层转换为1×1的卷积层

  • 得到一个空间维度可变的多通道的概率图(class score map),空间维度求和平均作为预测概率

5 VGG总体特征

与AlexNet同为链式结构,而且更加简单

  • 结构非常简洁,整个网络使用了同样大小的卷积核尺寸(3×3)和最大池化尺寸(2×2)

  • 几个小滤波器(3×3)卷积层的组合比一个大滤波器(5×5或7×7)卷积层好

  • 层数更深更宽(11层、13层、16层、19层)

  • 池化核变小且为偶数

  • 验证了通过不断加深网络结构可以提升性能


http://www.ppmy.cn/devtools/157912.html

相关文章

基于架构的软件设计(Architecture-Based Software Design, ABSD)

1. 引言 在现代软件开发中,软件架构不仅决定了系统的可扩展性、可维护性和性能,还直接影响开发效率和成本。基于架构的软件设计(ABSD) 采用系统化的方法,通过架构驱动整个软件开发生命周期,以确保系统的稳…

气体控制器联动风机,检测到环境出现异常时自动打开风机进行排风;

一、功能:检测到环境出现异常时自动打开风机进行排风; 二、设备: 1.气体控制器主机:温湿度,TVOC等探头的主机,可上报数据,探头监测到异常时,主机会监测到异常可联动风机或声光报警…

Lua限流器的3种写法

学而不思则罔,思而不学则殆 引言 上篇文章讲解了Lua脚本,事务和Pipline之间的使用方式和性能差距,本篇文章将聚焦Lua脚本,我将用三种写法来展现如何实现一个Redis限流器 固定窗口限流 固定窗口限流也是最简单的限流算法&#x…

JavaScript:||=的写法作用

||的写法作用 介绍解释总结 介绍 || 是一种逻辑赋值操作符(logical assignment operator),它是 JavaScript 中的一种简写方式,结合了逻辑运算符 ||(逻辑或)和赋值操作符 。它的作用是: • 如果…

【Uniapp-Vue3】UniCloud云数据库获取指定字段的数据

使用where方法可以获取指定的字段: let db uniCloud.database(); db.collection("数据表").where({字段名1:数据, 字段名2:数据}).get({getOne:true}) 如果我们不在get中添加{getOne:true},在只获取到一个数据res.result.data将会是一个数组&…

python+unity落地方案实现AI 换脸融合

先上效果再说技术结论,使用的是自行搭建的AI人脸融合库,可以离线不受限制无限次生成,有需要的可以后台私信python ai换脸融合。 TODO 未来的方向:3D人脸融合和AI数据训练 这个技术使用的是openvcinsighface,openvc…

C++性能优化—人工底稿版

C以高性能著称,性能优化是C程序员绕不过去的一个话题,性能优化是一个复杂、全局而又细节的问题,本文总结C性能分析中常用的知识。 性能优化的时机 大部分关于性能优化的文章都强调:不要过早的进行性能优化。 C编码层面 数据结…

kafka topic是什么?partition是什么? broker是什么?

在 Apache Kafka 中,理解 topic、partition 和 broker 是掌握其工作原理的基础。以下是对这些概念的详细解释: 1. Topic(主题) 定义:Topic 是 Kafka 中的基本消息类别或类别。它类似于数据库中的表,是消息…