卷积|深度学习:全卷积网络( 二 )
下面我们通过创建Conv2DTranspose实例来构造转置卷积层conv_trans 。 这里我们设conv_trans的卷积核形状、填充以及步幅与conv中的相同 , 并设输出通道数为3 。 当输入为卷积层conv的输出Y时 , 转置卷积层输出与卷积层输入的高和宽相同:转置卷积层将特征图的高和宽分别放大了2倍 。In [5]: conv_trans = nn.Conv2DTranspose(3, kernel_size=4, padding=1, strides=2) conv_trans.initialize() conv_trans(Y).shapeOut[5]: (1, 3, 64, 64)
在有些文献中 , 转置卷积也被称为分数步长卷积(fractionally-strided convolution)[12] 。
9.10.2构造模型
我们在这里给出全卷积网络模型最基本的设计 。 如图9-11所示 , 全卷积网络先使用卷积神经网络抽取图像特征 , 然后通过
卷积层将通道数变换为类别个数 , 最后通过转置卷积层将特征图的高和宽变换为输入图像的尺寸 。 模型输出与输入图像的高和宽相同 , 并在空间位置上一一对应:最终输出的通道包含了该空间位置像素的类别预测 。
本文插图
图9-11全卷积网络
下面我们使用一个基于ImageNet数据集预训练的ResNet-18模型来抽取图像特征 , 并将该网络实例记为pretrained_net 。 可以看到 , 该模型成员变量features的最后两层分别是全局最大池化层GlobalAvgPool2D和样本变平层Flatten , 而output模块包含了输出用的全连接层 。 全卷积网络不需要使用这些层 。In [6]: pretrained_net = model_zoo.vision.resnet18_v2(pretrained=True) pretrained_net.features[-4:], pretrained_net.outputOut[6]: (HybridSequential( (0): BatchNorm(axis=1, eps=1e-05, momentum=0.9, f ix_gamma=False, use_global_stats=False, in_channels=512) (1): Activation(relu) (2): GlobalAvgPool2D(size=(1, 1), stride=(1, 1), padding=(0, 0), ceil_mode=True) (3): Flatten ), Dense(512 -> 1000, linear))
下面我们创建全卷积网络实例net 。 它复制了pretrained_net实例的成员变量features里除去最后两层的所有层以及预训练得到的模型参数 。
In [7]: net = nn.HybridSequential() for layer in pretrained_net.features[:-2]: net.add(layer)
给定高和宽分别为320和480的输入 , net的前向计算将输入的高和宽减小至原来的1/32 , 即10和15 。
In [8]: X = nd.random.uniform(shape=(1, 3, 320, 480)) net(X).shapeOut[8]: (1, 512, 10, 15)
接下来 , 我们通过
卷积层将输出通道数变换为Pascal VOC2012数据集的类别个数21 。 最后 , 我们需要将特征图的高和宽放大32倍 , 从而变回输入图像的高和宽 。 回忆一下5.2节中描述的卷积层输出形状的计算方法 。 由于
且
, 我们构造一个步幅为 32 的转置卷积层 , 并将卷积核的高和宽设为 64、填充设为 16 。 不难发现 , 如果步幅为s、填充为s/2(假设s/2为整数)、卷积核的高和宽为2s , 转置卷积核将输入的高和宽分别放大s倍 。
In [9]: num_classes = 21 net.add(nn.Conv2D(num_classes, kernel_size=1), nn.Conv2DTranspose(num_classes, kernel_size=64, padding=16, strides=32))
9.10.3初始化转置卷积层
我们已经知道 , 转置卷积层可以放大特征图 。 在图像处理中 , 我们有时需要将图像放大 , 即上采样(upsample) 。 上采样的方法有很多 , 常用的有双线性插值 。 简单来说 , 为了得到输出图像在坐标
上的像素 , 先将该坐标映射到输入图像的坐标
【卷积|深度学习:全卷积网络】
推荐阅读
- 蓝橡树|牛娃爸爸分享: 孩子如何通过学习编程, 激活大脑, 提升成绩, 逆袭名校?
- |更精确地预估到达时间,滴滴新研究提出异质时空图卷积网络
- 行业互联网,AI人工智能|苹果公布新的AI和机器学习培训计划
- 数据|同盾李晓林谈联邦学习实现数据安全共享
- 学习|敲黑板:刷课学习、提笔速记,华为MatePad 10.8值得拥有
- 科大讯飞|科大讯飞到底好不好?科大讯飞智能学习机告诉你!
- 青年|200824 可以与防弹少年团 一起学习韩国语的教材今日正式问世了
- |初学者友好,麦吉尔大学助理教授新书《图表示学习》开放下载
- 中年|俄罗斯为何从不担心芯片卡脖?美国拿它也没辙,方法值得中国学习
- 中年|拒绝学习美国,俄罗斯外长力挺中国华为,顺便还羞辱了一番美国