×

PyTorch教程8.8之设计卷积网络架构

消耗积分:0 | 格式:pdf | 大小:0.73 MB | 2023-06-05

王凯

分享资料个

过去的部分带我们参观了计算机视觉的现代网络设计。我们涵盖的所有工作的共同点是它严重依赖科学家的直觉。许多架构在很大程度上受到了人类创造力的启发,而在很大程度上受到了对深度网络提供的设计空间的系统探索的影响。尽管如此,这种网络工程方法已经取得了巨大的成功。

由于 AlexNet(第 8.1 节)在 ImageNet 上击败了传统的计算机视觉模型,因此通过堆叠卷积块构建非常深的网络变得很流行,所有这些都是由相同的模式设计的。尤其,3×3卷积由 VGG 网络(第 8.2 节)推广NiN(第 8.3 节)表明即使1×1通过添加局部非线性,卷积可能是有益的。此外,NiN 通过跨所有位置的聚合解决了在网络头部聚合信息的问题。GoogLeNet(8.4节)在其Inception block中加入了多个不同卷积宽度的分支,结合了VGG和NiN的优点。ResNets(第 8.6 节)改变了对身份映射的归纳偏差(来自f(x)=0). 这允许非常深的网络。将近十年后,ResNet 设计仍然流行,证明了它的设计。最后,ResNeXt(第 8.6.5 节)添加了分组卷积,在参数和计算之间提供了更好的权衡。挤压和激发网络 (SENets) 是用于视觉的变形金刚的前身,可实现位置之间的高效信息传输 Hu等人,2018 年他们通过计算每个通道的全局注意力函数来实现这一点。

到目前为止,我们省略了通过神经架构搜索 (NAS)获得的网络Liu等人,2018 年Zoph 和 Le,2016 年我们之所以选择这样做,是因为它们的成本通常很高,依赖于蛮力搜索、遗传算法、强化学习或某种其他形式的超参数优化。给定一个固定的搜索空间,NAS 使用搜索策略根据返回的性能估计自动选择架构。NAS 的结果是单个网络实例。EfficientNets 是这次搜索的显着成果 Tan 和 Le,2019 年

下面我们讨论一个与寻求单一最佳网络完全不同的想法。它在计算上相对便宜,它会在途中产生科学见解,并且在结果质量方面非常有效。让我们回顾一下Radosavovic等人的策略( 2020 )设计网络设计空间该策略结合了手动设计和 NAS 的优势。它通过对网络分布进行操作 并以某种方式优化分布以获得整个网络系列的良好性能来实现这一点。它的结果是RegNets,特别是 RegNetX 和 RegNetY,以及一系列用于设计高性能 CNN 的指导原则。

import torch
from torch import nn
from torch.nn import functional as F
from d2l import torch as d2l
from mxnet import init, np, npx
from mxnet.gluon import nn
from d2l import mxnet as d2l

npx.set_np()
from flax import linen as nn
from d2l import jax as d2l
import tensorflow as tf
from d2l import tensorflow as d2l

8.8.1. AnyNet 设计空间

下面的描述紧跟Radosavovic等人的推理 。( 2020 )加上一些缩写以使其符合本书的范围。首先,我们需要一个供网络系列探索的模板。本章设计的共同点之一是网络由主干主体 头部组成。. stem 执行初始图像处理,通常通过具有较大窗口大小的卷积。主体由多个块组成,执行从原始图像到对象表示所需的大量转换。最后,头部将其转换为所需的输出,例如通过用于多类分类的 softmax 回归器。反过来,身体由多个阶段组成,以降低的分辨率对图像进行操作。事实上,主干和每个后续阶段都占空间分辨率的四分之一。最后,每个阶段由一个或多个块组成。这种模式对所有网络都很常见,从 VGG 到 ResNeXt。事实上,对于通用 AnyNet 网络的设计, Radosavovic等人。( 2020 )使用了 ResNeXt 块图 8.6.5

https://file.elecfans.com/web2/M00/AA/42/pYYBAGR9Nf6ACtcVAAZq5CR9HWc465.svg

图 8.8.1 AnyNet 设计空间。号码(c,r)沿每个箭头指示通道数c和决议 r×r当时的图像。从左到右:由主干、主体和头部组成的通用网络结构;身体由四个阶段组成;阶段的详细结构;块的两种替代结构,一种没有下采样,另一种将每个维度的分辨率减半。设计选择包括深度di, 输出通道数ci, 组数gi和瓶颈比ki对于任何阶段i.

让我们详细回顾一下图 8.8.1中概述的结构。如前所述,AnyNet 由主干、主体和头部组成。词干将 RGB 图像(3 通道)作为输入,使用 3×3与 stride 的卷积2,然后是批量规范,将分辨率减半r×rr/2×r/2. 此外,它生成c0作为身体输入的通道。

由于该网络旨在与形状的 ImageNet 图像配合使用 224×224×3,身体用于将其减少到 7×7×c4通过 4 个阶段(回想一下 224/21+4=7), 每个最终的步幅为2. 最后,head 通过全局平均池采用完全标准的设计,类似于 NiN(第 8.3 节),然后是一个完全连接的层以发出一个n维向量为 n-类分类。

大多数相关的设计决策都是网络主体固有的。它分阶段进行,每个阶段都由我们在第 8.6.5 节中讨论的相同类型的 ResNeXt 块组成那里的设计再次完全通用:我们从一个块开始,通过使用一个步长将分辨率减半2(图8.8.1最右边 )。为了匹配这一点,ResNeXt 块的剩余分支需要通过1×1卷积。此块后跟可变数量的附加 ResNeXt 块,这些块使分辨率和通道数均保持不变。请注意,常见的设计实践是在卷积块的设计中添加一个小瓶颈。因此,瓶颈比 ki≥1我们提供一些渠道

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !