Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
d2l-zh
提交
b3698e3c
D
d2l-zh
项目概览
OpenDocCN
/
d2l-zh
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
d2l-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b3698e3c
编写于
12月 19, 2018
作者:
A
Aston Zhang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
revise fcn
上级
aa129604
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
4 addition
and
4 deletion
+4
-4
chapter_computer-vision/fcn.md
chapter_computer-vision/fcn.md
+4
-4
未找到文件。
chapter_computer-vision/fcn.md
浏览文件 @
b3698e3c
# 全卷积网络(FCN)
我们在上节介绍了
基于语义分割对图像中的每个像素进行类别预测。全卷积网络(fully convolutional network,简称FCN)采用卷积神经网络实现了从图像像素到像素类别的变换。与之前介绍的卷积神经网络有所不同,全卷积网络通过转置卷积(transposed convolution)层将中间层特征图的高和宽变换回输入图像的尺寸,从而令预测结果与输入图像在空间维(高和宽)上一一对应:给定空间维上的位置,通道维的输出即该位置对应像素的类别预测。
上一节介绍了,我们可以
基于语义分割对图像中的每个像素进行类别预测。全卷积网络(fully convolutional network,简称FCN)采用卷积神经网络实现了从图像像素到像素类别的变换。与之前介绍的卷积神经网络有所不同,全卷积网络通过转置卷积(transposed convolution)层将中间层特征图的高和宽变换回输入图像的尺寸,从而令预测结果与输入图像在空间维(高和宽)上一一对应:给定空间维上的位置,通道维的输出即该位置对应像素的类别预测。
我们先导入实验所需的包或模块,然后解释什么是转置卷积层。
...
...
@@ -34,7 +34,7 @@ W[0, 0:11], W[1, 1:12], W[2, 4:15], W[3, 5:16] = k, k, k, k
nd.dot(W, X.reshape(16)).reshape((1, 1, 2, 2)), W
```
现在我们从矩阵乘法的角度来描述卷积运算。设输入向量为$
\b
oldsymbol{x}$,权重矩阵为$
\b
oldsymbol{W}$,卷积的前向计算函数的实现可以看作将函数输入乘以权重矩阵,并输出向量$
\b
oldsymbol{y} =
\b
oldsymbol{W}
\b
oldsymbol{x}$。我们知道,反向传播需要依据链式法则。由于$
\n
abla_{
\b
oldsymbol{x}}
\b
oldsymbol{y} =
\b
oldsymbol{W}^
\t
op$,卷积的反向传播函数的实现可以看作将函数输入
右乘转置后的权重矩阵$
\b
oldsymbol{W}^
\t
op$。而转置卷积层正是交换了卷积层的前向计算函数与反向传播函数:这两个函数可以看作将函数输入向量分别右乘
$
\b
oldsymbol{W}^
\t
op$和$
\b
oldsymbol{W}$。
现在我们从矩阵乘法的角度来描述卷积运算。设输入向量为$
\b
oldsymbol{x}$,权重矩阵为$
\b
oldsymbol{W}$,卷积的前向计算函数的实现可以看作将函数输入乘以权重矩阵,并输出向量$
\b
oldsymbol{y} =
\b
oldsymbol{W}
\b
oldsymbol{x}$。我们知道,反向传播需要依据链式法则。由于$
\n
abla_{
\b
oldsymbol{x}}
\b
oldsymbol{y} =
\b
oldsymbol{W}^
\t
op$,卷积的反向传播函数的实现可以看作将函数输入
乘以转置后的权重矩阵$
\b
oldsymbol{W}^
\t
op$。而转置卷积层正是交换了卷积层的前向计算函数与反向传播函数:这两个函数可以看作将函数输入向量分别乘以
$
\b
oldsymbol{W}^
\t
op$和$
\b
oldsymbol{W}$。
不难想象,转置卷积层可以用来交换卷积层输入和输出的形状。让我们继续用矩阵乘法描述卷积。设权重矩阵是形状为$4
\t
imes16$的矩阵,对于长度为16的输入向量,卷积前向计算输出长度为4的向量。假如输入向量的长度为4,转置权重矩阵的形状为$16
\t
imes4$,那么转置卷积层将输出长度为16的向量。在模型设计中,转置卷积层常用于将较小的特征图变换为更大的特征图。在全卷积网络中,当输入是高和宽较小的特征图时,转置卷积层可以用来将高和宽放大到输入图像的尺寸。
...
...
@@ -64,9 +64,9 @@ conv_trans(Y).shape
我们在这里给出全卷积网络模型最基本的设计。如图9.11所示,全卷积网络先使用卷积神经网络抽取图像特征,然后通过$1
\t
imes 1$卷积层将通道数变换为类别个数,最后通过转置卷积层将特征图的高和宽变换为输入图像的尺寸。模型输出与输入图像的高和宽相同,并在空间位置上一一对应:最终输出的通道包含了该空间位置像素的类别预测。
![
图9.11 全卷积网络
](
../img/fcn.svg
)
![
全卷积网络。
](
../img/fcn.svg
)
下面我们使用一个基于ImageNet数据集预训练的ResNet-18模型来抽取图像特征,并将该网络实例记为
`pretrained_net`
。可以看到,该模型成员变量
`features`
的最后两层分别是全局最大池化层
`GlobalAvgPool2D`
和样本变平层
`Flatten`
,而
`output`
模块包含了输出用的全连接层
,
全卷积网络不需要使用这些层。
下面我们使用一个基于ImageNet数据集预训练的ResNet-18模型来抽取图像特征,并将该网络实例记为
`pretrained_net`
。可以看到,该模型成员变量
`features`
的最后两层分别是全局最大池化层
`GlobalAvgPool2D`
和样本变平层
`Flatten`
,而
`output`
模块包含了输出用的全连接层
。
全卷积网络不需要使用这些层。
```
{.python .input n=5}
pretrained_net = model_zoo.vision.resnet18_v2(pretrained=True)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录