FCN的理解

article/2025/9/16 18:43:15

直观展现网络结构:http://ethereon.github.io/netscope/#/editor

卷积与逆卷积的动图https://github.com/vdumoulin/conv_arithmetic

【原文图】“Fully convolutional networks for semantic segmentation.” 

上图中,32x即为扩大32倍。

Pool5扩大32倍就可以得到原来图像大小了。

Pool5扩大2倍与Pool4融合得到,再扩大16倍也可以得到原来图像大小了。

扩大2倍与Pool3融合再扩大8倍也可以得到原来图像大小了。

以下内容来自http://blog.csdn.net/shenxiaolu1984/article/details/51348149

核心思想

本文包含了当下CNN的三个思潮 
- 不含全连接层(fc)的全卷积(fully conv)网络。可适应任意尺寸输入。 
- 增大数据尺寸的反卷积(deconv)层。能够输出精细的结果。 
- 结合不同深度层结果的跳级(skip)结构。同时确保鲁棒性和精确性。

网络结构

网络结构如下。输入可为任意尺寸图像彩色图像;输出与输入尺寸相同,深度为:20类目标+背景=21。 
这里写图片描述

全卷积-提取特征

虚线上半部分为全卷积网络。(蓝:卷积,绿:max pooling)。对于不同尺寸的输入图像,各层数据的尺寸(height,width)相应变化,深度(channel)不变。 
这部分由深度学习分类问题中经典网络AlexNet1修改而来。只不过,把最后两个全连接层(fc)改成了卷积层。

论文中,达到最高精度的分类网络是VGG16,但提供的模型基于AlexNet。此处使用AlexNet便于绘图。

逐像素预测

虚线下半部分中,分别从卷积网络的不同阶段,以卷积层(蓝色×3)预测深度为21的分类结果。

例:第一个预测模块 
输入16*16*4096,卷积模板尺寸1*1,输出16*16*21。 
相当于对每个像素施加一个全连接层,从4096维特征,预测21类结果。

反卷积-升采样

(这里会先进行上采样,即扩大像素;再进行卷积——通过学习获得权值)

下半部分,反卷积层(橙色×3)可以把输入数据尺寸放大。和卷积层一样,上采样的具体参数经过训练确定。

这里图像的反卷积与下图的full卷积原理是一样的,使用了这一种反卷积手段使得图像可以变大,FCN作者使用的方法是这里所说反卷积的一种变体,这样就可以获得相应的像素值,图像可以实现end to end

例:反卷积2 
这里写图片描述 
输入:每个像素值等于filter的权重 
输出:步长为stride,截取的宽度为pad。

跳级结构

下半部分,使用逐数据相加(黄色×2),把三个不同深度的预测结果进行融合:较浅的结果更为精细,较深的结果更为鲁棒。 
在融合之前,使用裁剪层(灰色×2)统一两者大小。最后裁剪成和输入相同尺寸输出。

训练

训练过程分为四个阶段,也体现了作者的设计思路,值得研究。

第1阶段

这里写图片描述 
以经典的分类网络为初始化。最后两级是全连接(红色),参数弃去不用。

第2阶段

这里写图片描述 
从特征小图(16*16*4096)预测分割小图(16*16*21),之后直接升采样为大图。 
反卷积(橙色)的步长为32,这个网络称为FCN-32s。 
这一阶段使用单GPU训练约需3天。

第3阶段

这里写图片描述 
升采样分为两次完成(橙色×2)。 
在第二次升采样前,把第4个pooling层(绿色)的预测结果(蓝色)融合进来。使用跳级结构提升精确性。 
第二次反卷积步长为16,这个网络称为FCN-16s。 
这一阶段使用单GPU训练约需1天。

第4阶段

这里写图片描述 
升采样分为三次完成(橙色×3)。 
进一步融合了第3个pooling层的预测结果。 
第三次反卷积步长为8,记为FCN-8s。 
这一阶段使用单GPU训练约需1天。

较浅层的预测结果包含了更多细节信息。比较2,3,4阶段可以看出,跳级结构利用浅层信息辅助逐步升采样,有更精细的结果。 
这里写图片描述

其他参数

minibatch:20张图片 
learning rate:0.001 
初始化: 
分类网络之外的卷积层参数初始化为0。 
反卷积参数初始化为bilinear插值。最后一层反卷积固定位bilinear插值不做学习。

结论

总体来说,本文的逻辑如下: 
- 想要精确预测每个像素的分割结果 
- 必须经历从大到小,再从小到大的两个过程 
- 在升采样过程中,分阶段增大比一步到位效果更好 
- 在升采样的每个阶段,使用降采样对应层的特征进行辅助


http://chatgpt.dhexx.cn/article/Mmbp9xdJ.shtml

相关文章

FCN(全卷积网络)详解

FCN详解 全卷积网络就是在全连接网络的基础上,通过用卷积网络替换全连接网络得到的。 首先看一下什么是全连接网络,以及全连接网络的缺点。 通常的CNN网络中,在最后都会有几层全连接网络来融合特征信息,然后再对融合后的特征信…

FCN的学习及理解(Fully Convolutional Networks for Semantic Segmentation)

论文Fully Convolutional Networks for Semantic Segmentation 是图像分割的milestone论文。 理清一下我学习过程中关注的重点。 fcn开源代码 github下载地址https://github.com/shelhamer/fcn.berkeleyvision.org 核心思想 该论文包含了当下CNN的三个思潮 - 不含全连接层(…

FCN详解

FCN(fully convolution net) FCN对图像进行像素级的分类,从而解决了语义级别的图像分割(semantic segmentation)问题。与经典的CNN在卷积层之后使用全连接层得到固定长度的特征向量进行分类(全连接层+softmax输出)不同,FCN可以接受任意尺寸的输入图像(为什么?因为全连…

FCN(全卷积神经网络)详解

文章目录 1. 综述简介核心思想 2. FCN网络2.1 网络结构2.2 上采样 Upsampling2.3 跳级结构 3 FCN训练4. 其它4.1 FCN与CNN4.2 FCN的不足4.3 答疑 【参考】 1. 综述 简介 全卷积网络(Fully Convolutional Networks,FCN)是Jonathan Long等人于…

FCN网络解析

1 FCN网络介绍 FCN(Fully Convolutional Networks,全卷积网络) 用于图像语义分割,它是首个端对端的针对像素级预测的全卷积网络,自从该网络提出后,就成为语义分割的基本框架,后续算法基本都是在…

全卷积网络FCN详解

入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删。 目录 一、FCN提出原因 二、FCN的网络结构分析 三、基本网络结构的源码分析(FCN-32s) 1、conv_relu函数—…

四、全卷积网络FCN详细讲解(超级详细哦)

四、全卷积网络FCN详细讲解(超级详细哦) 1、全卷积网络(FCN)的简单介绍1.1、CNN与FCN的比较 2、FCN上采样理论讲解2.1、双线性插值上采样2.2、反卷积上采样2.3、反池化上采样 2、 FCN具体实现过程3、 FCN模型实现过程3.1、模型训练…

什么是前端,后端???什么是后台???

序言: 相信很多刚刚接触web开发不久,或者是对于web开发没有一个粗略认知的朋友们,有时候会被这样的一个问题迷惑:什么是前端,后端???什么是后台??&#xff1f…

Web后台管理系统

开发语言:C# 数据库:sql2008 登录页面 后台管理首页 部分操作页面 后台管理系统,界面简洁,大方,操作简单,所有功能可定制开发。 后台管理系统制作 如果你对编程感兴趣或者想往编程方向发展,可…

后台交互-首页

目录 一、小程序首页动态加载数据数据库准备后台环境搭建实现小程序数据交互 二、通过wxs将首页动态数据优化 一、小程序首页动态加载数据 数据库准备 首先要准备数据库以及数据 在本机数据库创建oapro数据库,然后导入运行数据库文件 /*Navicat Premium Data Trans…

Web后台管理框架收集,后台模板

Web 开发中几乎的平台都需要一个后台管理,但是从零开发一套后台控制面板并不容易,幸运的是有很多开源免费的后台控制面板可以给开发者使用,以下是我整理的一些UI框架模板,可以拿来稍加改造就能直接使用 ,简单实用 1、s…

后台管理系统,前端框架

1:vue-element-admin 推荐指数:star:55k Github 地址:https://github.com/PanJiaChen/vue-element-admin Demo体验:https://panjiachen.github.io/vue-element-admin/#/dashboard 一个基于 vue2.0 和 Eelement 的控制面板 UI 框…

Web后台快速开发框架

Web后台快速开发框架 Coldairarrow 目录 目录 第1章 目录 1 第2章 简介 3 第3章 基础准备 4 3.1 开发环境要求 4 3.2 基础数据库构建 4 3.3 运行 5 第4章 详细教程 6 4.1 代码架构 6 4.1.1总体架构 6 4.1.2基础设施层 …

10个开源web后台管理系统(一)

Web 开发中几乎的平台都需要一个后台管理,但是从零开发一套后台控制面板并不容易,幸运的是有很多开源免费的后台控制面板可以给开发者使用 10个开源WEB后台管理系统(一) 1. vue-Element-Admin vue-element-admin 是一个后台前端…

10个开源web后台管理系统(二)

Web 开发中几乎的平台都需要一个后台管理,但是从零开发一套后台控制面板并不容易,幸运的是有很多开源免费的后台控制面板可以给开发者使用 10个开源WEB后台管理系统(二) 10个开源WEB后台管理系统(一) 6.…

js前台与后台数据交互-前台调后台

网站是围绕数据库来编程的,以数据库中的数据为中心,通过后台来操作这些数据,然后将数据传给前台来显示出来(当然可以将后台代码嵌入到前台)。即: 下面就讲前台与后台进行数据交互的方法,分前台调…

EMQX的Web管理后台-Dashboard

一、引言 当EMQX安装好虽然可以使用Linux命令操作,但是作为一个MQTT的服务器,还是需要一个Web管理后台方便查看数据和操作。因此,EMQX启动后会默认加载一个名为「Dashboard」的插件,用以提供的一个后端 Web 控制台,通过…

web 前后台数据交互的方式

做web开发,很重要的一个环节就是前后台的数据的交互,数据从页面提交到contoller层,数据从controler层传送到jsp页面来显示。这2个过程中数据具体是如何来传送的,是本节讲解的内容。 首先说一下数据如何从后台的contorller层传送到…

(Web前端)后台管理系统框架收集

一、(Web前端)常用的后台管理系统框架 1、使用vue-element-admin https://panjiachen.github.io/vue-element-admin-site/zh/guide/ 模板建议使用 vueAdmin-template , 桌面端 electron-vue-admin 1.包含功能 登录/注销 权限验证 侧边栏…

什么是前端什么是后端?什么是前台后台

前台:呈现给用户的视觉和基本的操作。简单来说就是访问网站的人看到的内容和页面。下图以百度为例,我们看到的界面就是前台 后台:指程序的使用人员,管理人员经过密码或其他验证手段之后才可以看到的内容,一般可以进行一…