VGG

论文Very Deep Convolutional Networks for Large-Scale Image Recognition(CVPR 2015)

VGG网络结构特点

  • 用连续的3x3的卷积核代替AlexNet中的较大卷积核(保持相同感受野的情况下又提升了网络的深度,更多的非线性变换),
  • 仅用简单的卷积层进行搭建,超参数少,
  • 只在2x2的maxpooling处降低分辨率,整体的网络结构及其变化规律简洁明了。
  • 高度模块化,便于扩展网络

最后连续的三个全连接层使得网络的参数较多

在这里插入图片描述

参考文献

【1】深度学习VGG模型核心拆解
【2】卷积神经网络VGG 论文细读 + Tensorflow实现

### VGG神经网络架构详解 VGG模型由牛津大学视觉几何组(Visual Geometry Group)开发,在ImageNet数据集上取得了优异的成绩。该系列中的两个主要版本分别为VGG16和VGG19,二者的主要差异在于层数的不同。 #### 架构特点 VGG采用了非常简单的堆叠方式构建深层卷积网络。其核心设计原则是在保持输入图像尺寸不变的情况下逐步增加特征图的数量并减小空间维度。具体来说: - 使用$3\times3$的小型滤波器来代替较大的感受野; - 卷积层之后紧跟ReLU激活函数; - 每隔几个卷积操作就会有一个最大池化层用于降采样; 这种结构使得即使是非常深的网络也能够被有效训练出来[^1]。 ```python import torch.nn as nn class VGG(nn.Module): def __init__(self, num_classes=1000): super(VGG, self).__init__() # 定义基础模块 cfgs = { 'A': [64, 'M', 128, 'M', 256, 256, 'M', 512, 512, 'M', 512, 512, 'M'], 'B': [64, 64, 'M', 128, 128, 'M', 256, 256, 'M', 512, 512, 'M', 512, 512, 'M'] } layers = [] in_channels = 3 for v in cfgs['D']: # 这里假设选择了更深层次配置'D' if v == 'M': layers += [nn.MaxPool2d(kernel_size=2, stride=2)] else: conv2d = nn.Conv2d(in_channels, v, kernel_size=3, padding=1) layers += [conv2d, nn.ReLU(inplace=True)] in_channels = v self.features = nn.Sequential(*layers) classifier = [ nn.Linear(512 * 7 * 7, 4096), nn.ReLU(True), nn.Dropout(), nn.Linear(4096, 4096), nn.ReLU(True), nn.Dropout(), nn.Linear(4096, num_classes), ] self.classifier = nn.Sequential(*classifier) def forward(self, x): x = self.features(x) x = x.view(x.size(0), -1) x = self.classifier(x) return x ``` 上述代码展示了如何定义一个基于PyTorch框架实现的基础版VGG网络。实际应用中可能会根据不同需求调整参数设置或引入其他优化措施。 #### 应用领域 得益于强大的表征能力以及相对容易理解的设计理念,VGG广泛应用于各类计算机视觉任务之中: - **物体识别**: 利用预训练好的权重作为迁移学习的基础; - **风格转换**: 结合艺术作品生成具有特定绘画风格的新图片; - **目标检测**: 配合区域提议算法完成精准定位; 通过不断加深网络层次,VGG证明了更深的网络可以带来更好的性能表现,同时也启发了许多后续研究工作向更大规模的方向发展.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值