【论问阅读】VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION

文章介绍了VGG网络相关内容,包括探索更深网络、小卷积核3x3及训练与测试比对。VGG有多个版本,小网络方便实验且可作大网络预训练模型。采用多个“3x3”矫正层增强区分性,参数初始化重要,还对尺度和测试做了详细实验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、

    这篇文章,论文写的读起来很舒服,实验做的非常细,以前一直没看,看了之后发现,现在用的很多方法,都是人家玩剩下的。

二、主要内容

       探索更深的网络、探索小卷积核3x3、探索比对训练与测试

三、VGG主要架构

                                               

    基本上我们只知道VGG有两个模型,16层和19层。但是其实人家还是有很多的版本的,这些版本的存在主要有两个作用:

    1、作者实验方便,利用小网络可以做更多的实验

    2、小网络作为大网络的pre-trained model 部分参数(作者也提到了,其实不一定非要pre train,原话“e biases were initialised with zero. It is worth noting that after the paper submission we found that it is possible to initialise the weights without pre-training by using the random initialisation procedure of Glorot & Bengio (2010)”)

    3、在这篇文章之前的,文章种大多数都会采用大卷积核“11x11、7x7” 也会用比较大的stride “4,2”,作者采用多个“3x3”的矫正层作为组合,为了让这个“层-决策函数”更加的有区分性

    4、参数的初始化非常重要,比较深的网络在本文种都是采用前一个比较小的网络作为pre - trained model,最小的那个网络就是全部都是随机初始化的了,“不好的初始化方法,会导致深度梯度的不稳定,从而停止训练”。For random initialisation (where applicable), we sampled the weights from a normal distribution with the zero mean and 10−2 variance. The biases were initialised with zero.

   5、对于尺度作者也做了详细的实验:

         i、先用single scale训练小尺度

         ii、大尺度基于小尺度预训练,可以提高收敛速度

        iii、随机多尺度增广训练方案,也是先基于大单尺度预训练

   6、对于测试,也有很多细节性实验

      i、多剪裁融合

     ii、多尺度融合

    iii、不同网络模型的ensemble融合

    iiii、单尺度测试

### 深度卷积网络在大规模图像识别中的应用 对于大规模图像识别而言,深度卷积神经网络(DCNNs)扮演着至关重要的角色。研究表明,在保持其他参数不变的情况下,增加网络的深度能够显著提升模型性能[^1]。 #### VGGNet 架构特点 具体来说,VGGNet 使用了非常小的 \(3 \times 3\) 卷积核,并通过堆叠多层这样的卷积操作来构建更深的网络结构。这种设计不仅使得网络可以学习更加复杂的特征表示,而且有助于缓解梯度消失题,从而支持更深层次的学习过程[^2]。 ```python import torch.nn as nn class VGG(nn.Module): def __init__(self, num_classes=1000): super(VGG, self).__init__() # 定义基础卷积模块 cfg = { 'A': [64, 'M', 128, 'M', 256, 256, 'M', 512, 512, 'M', 512, 512, 'M'], ... } layers = [] in_channels = 3 for v in cfg['D']: # 这里以VGG16为例 ('D' 表示16层版本) 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 ``` 该代码片段展示了如何定义一个类似于VGG16的基础架构,其中包含了多个\(3\times3\)的小型卷积层以及最大池化层(Max Pooling),最终连接全连接层完成分类任务。 #### 实验验证与结论 实验结果显示,当网络深度被推进至16-19个权重层时,可以在ILSVRC 2012数据集上取得优异的成绩,证明了加深网络的有效性[^3]。此外,尽管增加了更多层次,但由于采用了相对较少数量的通道数(channel count),整个系统的计算复杂度并未大幅上升,这为实际部署提供了便利条件[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值