语义分割是对图像中的每个像素分类。 全卷积网络(fully convolutional network,FCN)采用卷积神经网络实现了从图像像素到像素类别的变换 。 与我们之前在图像分类或目标检测部分介绍的卷积神经网络不同,全卷积网络将中间层特征图的高和宽变换回输入图像的尺寸:这是通过在 转置卷积(transposed convolution)实现的。 因此,输出的类别预测与输入图像在像素级别上具有一一对应关系:通道维的输出即该位置对应像素的类别预测。

  • FCN是用深度神经网络来做语义分割的奠基性工作
  • 它用转置卷积层替换CNN最后的全连接层,从而可以实现每个像素的预测

1. 构造模型

%matplotlib inline
import torch
import torchvision
from torch import nn
from torch.nn import functional as F
from d2l import torch as d2l

全卷积网络先使用卷积神经网络抽取图像特征,然后通过 1×1 卷积层将通道数变换为类别个数,最后通过转置卷积层将特征图的高和宽变换为输入图像的尺寸。 因此,模型输出与输入图像的高和宽相同,且最终输出通道包含了该空间位置像素的类别预测。

下面,使用在ImageNet数据集上预训练的ResNet-18模型来提取图像特征,并将该网络记为pretrained_net。 ResNet-18模型的最后几层包括全局平均汇聚层和全连接层,然而全卷积网络中不需要它们。

pretrained_net = torchvision.models.resnet18(pretrained=True)
# 列出最后3层
list(pretrained_net.children())[-3:]

运行结果:

接下来,我们创建一个全卷积网络net。 它复制了ResNet-18中大部分的预训练层,除了最后的全局平均汇聚层和最接近输出的全连接层。

net = nn.Sequential(*list(pretrained_net.children())[:-2])

给定高度为320和宽度为480的输入,net的前向传播将输入的高和宽减小至原来的 1/32 ,即10和15,通道数从3变成512.

# 在语义分割中,输入图片是320 x 480的图片,因为是像素级别的,所以图片相对来说比较大
# 和ImageNet是不同的,在ImageNet中是224 x 224
X = torch.rand(size=(1, 3, 320, 480))
net(X).shape

运行结果:

ps:卷积神经网络最好的地方就是:不管输入图片的高宽如何都能进行计算,不像全连接,全连接一旦定了,输入的大小是不能变的,卷积没关系,因为要进行学习的权重kernel(卷积核)和输入大小无关,是和卷积层的定义是相关的

接下来使用 1×1 卷积层将输出通道数转换为Pascal VOC2012数据集的类数(21类)。最后需要(将特征图的高度和宽度增加32倍),从而将其变回输入图像的高和宽。

回想一下 卷积层输出形状的计算方法: 由于 (320−64+16×2+32)/32=10 且 (480−64+16×2+32)/32=15 ,我们构造一个步幅为 32 的转置卷积层,并将卷积核的高和宽设为 64 ,填充为 16 。 我们可以看到如果步幅为

72.全卷积神经网络(FCN)及代码实现相关推荐

  1. 【CV语义分割】全卷积神经网络FCN(更新ing)

    学习总结 (1)paper<Fully Convolutional Networks for Semantic Segmentation> (2)论文翻译可以参考:https://www. ...

  2. 全卷积神经网络(FCN)

    目录 卷积化 上采样 跳跃结构 卷积化 上采样 跳跃结构 卷积化 上采样 跳跃结构 论文:Fully Convolutional Networks for Semantic Segmentation( ...

  3. 全卷积神经网络FCN

    卷积神经网络CNN(YannLecun,1998年)通过构建多层的卷积层自动提取图像上的特征,一般来说,排在前边较浅的卷积层采用较小的感知域,可以学习到图像的一些局部的特征(如纹理特征),排在后边较深 ...

  4. picpick尺子像素大小精度不够准确_picpick尺子像素大小精度不够准确_【论文解读】像素级分割里程碑算法——FCN全卷积神经网络......

    FCN论文链接:Fully Convolutional Networks for Semantic Segmentation 作者代码(caffe版):https://github.com/shelh ...

  5. 全卷积网络FCN与卷积神经网络CNN的区别

    背景 CNN能够对图片进行分类,可是怎么样才能识别图片中特定部分的物体,在2015年之前还是一个世界难题.神经网络大神Jonathan Long发表了<Fully Convolutional N ...

  6. 卷积神经网络( CNN)与全卷积神经网络(FCN)

    目录 卷积神经网络(CNN) 卷积层 卷积层尺寸的计算原理 标准卷积计算举例 1 x 1 卷积计算举例 全连接层计算举例 附:TensorFlow 中卷积层的简单实现 激励层 池化层 池化层的作用 输 ...

  7. 11.全连接卷积神经网络 FCN

    视频:48 全连接卷积神经网络 FCN[动手学深度学习v2]_哔哩哔哩_bilibili 书籍:13.11. 全卷积网络 - 动手学深度学习 2.0.0-beta0 documentation (d2 ...

  8. 全卷积神经网络(FCN)论文笔记

    全卷积神经网络(FCN)论文笔记 Fully Convolutional Networks for Semantic Segmentation Abstract 卷积网络是一种功能强大的视觉模型,可以 ...

  9. 全卷积神经网络( FCN ):语义分割深度模型先驱

    语义分割 简单地说,分割就是抠图.语义分割,就是按图像中物体表达的含义进行抠图. 现在ps已经集成很多自动分割的功能,相比旧版本软件,新软件提高了美工人员的抠图和美图的效率. 如果我们能在更复杂的环境 ...

最新文章

  1. php 3d animation,css3D+动画的例子(附完整代码)
  2. UVA 12034 Race
  3. Linux基础命令---more
  4. dockerfile centos+jdk+时区设置
  5. 计算机重启如何进入设置界面,win7电脑无法正常启动,一开机就进入到bios设置界面怎么办?...
  6. 随便聊聊,Linux 中的环境变量
  7. 4.2 算法之数论 185 反正切函数的应用 scratch
  8. Java中常用的加密方法(JDK)
  9. [Java] 蓝桥杯 BASIC-9 基础练习 特殊回文数
  10. winrar 4.20注册码
  11. jquery-seat-charts 使用-自定义座位号 及 重新加载数据
  12. Excel 通过DDE与INTOUCH通信,数据格式
  13. 利用无线串口进行单片机通信(基于MK60)
  14. gossip协议学习笔记
  15. View UI (iview)表格合并单元格(行/列合并)
  16. SAP MM批次管理(2)批次主数据--大海
  17. 锐捷交换机系统安装与升级
  18. HRRRRRRRRRRPILTRITLE
  19. 23、商铺编辑 - 小程序端开发 - 微擎小程序模块应用开发
  20. 3dmax里面cr材质转换vr材质_不花钱,教你学会VR与CR材质互转!

热门文章

  1. key_t键和ftok函数
  2. 字符数组的定义和初始化
  3. 基于GIS技术的城市交通管理应用
  4. Android 8.0 开机动画,RK3326 android10.0(Q) 开机logo+开关机动画替换
  5. tplink错误代码51215_求教tplink wr886n v5.0 ttl 接线方法
  6. 【Nginx】配置中 resolver 指令的使用
  7. 河北安格计算机专修学院简介,石家庄那23家院校被取消办学资格?
  8. ps2键盘测试软件,PS2键盘测试程序3
  9. kali-dirBuster简单使用
  10. java 动态添加字段 以及 动态新增字段注解