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

article/2025/9/16 18:40:31

文章目录

  • 1. 综述
    • 简介
    • 核心思想
  • 2. FCN网络
    • 2.1 网络结构
    • 2.2 上采样 Upsampling
    • 2.3 跳级结构
  • 3 FCN训练
  • 4. 其它
    • 4.1 FCN与CNN
    • 4.2 FCN的不足
    • 4.3 答疑
  • 【参考】

1. 综述

简介

全卷积网络(Fully Convolutional Networks,FCN)是Jonathan Long等人于2015年在Fully Convolutional Networks for Semantic Segmentation一文中提出的用于图像语义分割的一种框架,是深度学习用于语义分割领域的开山之作。FCN将传统CNN后面的全连接层换成了卷积层,这样网络的输出将是热力图而非类别;同时,为解决卷积和池化导致图像尺寸的变小,使用上采样方式对图像尺寸进行恢复。

核心思想

  • 不含全连接层的全卷积网络,可适应任意尺寸输入;
  • 反卷积层增大图像尺寸,输出精细结果;
  • 结合不同深度层结果的跳级结构,确保鲁棒性和精确性。

网络结构

2. FCN网络

2.1 网络结构

FCN网络结构主要分为两个部分:全卷积部分和反卷积部分。其中全卷积部分为一些经典的CNN网络(如VGG,ResNet等),用于提取特征;反卷积部分则是通过上采样得到原尺寸的语义分割图像。FCN的输入可以为任意尺寸的彩色图像,输出与输入尺寸相同,通道数为n(目标类别数)+1(背景)。FCN网络结构如下:
FCN网络结构

2.2 上采样 Upsampling

在卷积过程的卷积操作和池化操作会使得特征图的尺寸变小,为得到原图像大小的稠密像素预测,需要对得到的特征图进行上采样操作。可通过双线性插值(Bilinear)实现上采样,且双线性插值易于通过固定卷积核的转置卷积(transposed convolution)实现,转置卷积即为反卷积(deconvolution)。在论文中,作者并没有固定卷积核,而是让卷积核变成可学习的参数。转置卷积操作过程如下:
转置卷积

2.3 跳级结构

如果仅对最后一层的特征图进行上采样得到原图大小的分割,最终的分割效果往往并不理想。因为最后一层的特征图太小,这意味着过多细节的丢失。因此,通过跳级结构将最后一层的预测(富有全局信息)和更浅层(富有局部信息)的预测结合起来,在遵守全局预测的同时进行局部预测。

将底层(stride 32)的预测(FCN-32s)进行2倍的上采样得到原尺寸的图像,并与从pool4层(stride 16)进行的预测融合起来(相加),这一部分的网络被称为FCN-16s。随后将这一部分的预测再进行一次2倍的上采样并与从pool3层得到的预测融合起来,这一部分的网络被称为FCN-8s。图示如下:
Skip connection

3 FCN训练

  • 阶段1:以经典的分类网络为初始化,最后两级为全连接(红色),参数弃去不用。

在这里插入图片描述

  • 阶段2FCN-32s 网络—从特征小图预测分割小图,之后直接升采样为大图。

在这里插入图片描述

  • 阶段3FCN-16s 网络—上采样分为两次完成。在第二次升采样前,把第4个pooling层的预测结果融合进来,使用跳级结构提升精确性。

在这里插入图片描述

  • 阶段4FCN-8s 网络—升采样分为三次完成。 进一步融合了第3个pooling层的预测结果。

在这里插入图片描述

4. 其它

4.1 FCN与CNN

CNN的强大之处在于它的多层结构能自动学习特征,可学习到多个层次的特征:

  • 较浅的卷积层感知域较小,学习到一些局部区域的特征;
  • 较深的卷积层感知域较大,学习到更加抽象一些的特征;

抽象特征对分类很有帮助,可以很好地判断出一幅图像中包含什么类别的物体。但抽象特征对物体的大小、位置和方向等敏感性低,因为丢失了一些物体的细节,不能很好地给出物体的具体轮廓、指出每个像素具体属于哪个物体,因此难以做到精确的分割。而FCN是从抽象的特征中恢复出每个像素所属的类别,即从图像级别的分类进一步延伸到像素级别的分类。

4.2 FCN的不足

  • 得到的结果还不够精细,对细节不够敏感;
  • 未考虑像素与像素之间的关系,缺乏空间一致性等。

4.3 答疑

  1. 为什么说如果一个神经网络里面只有卷积层,那么输入的图像大小是可以任意的。但是如果神经网络里不仅仅只有卷积层,还有全连接层,那么输入的图像的大小必须是固定的?
  • 卷积层的参数和输入大小无关,它仅仅是一个卷积核在图像上滑动,不管输入图像多大都没关系。图像进行卷积时,因为每一个卷积核中的权值都是共享的,因此无论输入图像的尺寸多大,都可以按步长滑动做卷积,不同之处在于经过卷积运算,不同大小的输入图片所提取出的卷积特征的大小是不同的。
  • 全连接层的参数与输入图像大小有关,因为它要把输入图像的所有像素点连接起来。在含有全连接层的神经网络中,假设输入的图像大小一样,那经过卷积得到特征的尺寸也都是相同的。如输入特征尺寸为 a × b a×b a×b,之后连接一个 1 × c 1×c 1×c 的全连接层,那么卷积层的输出与全连接层间的权值矩阵大小为 ( a × b ) × c (a×b)×c (a×b)×c。但如果输入与原图像大小不同,得到新的卷积输出为 a ′ × b ′ a'×b' a×b。与之对应,卷积层的输出与全连接层间的权值矩阵大小应为 ( a ′ × b ′ ) × c (a'×b')×c (a×b)×c。很明显,权值矩阵大小发生了变化,故而也就无法使用和训练了。

【参考】

  1. 图像分割:全卷积神经网络(FCN)详解;
  2. 语义分割–全卷积网络FCN详解;
  3. FCN理解:为什么FCN可以使输入的图像大小可以是任意的;

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

相关文章

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.包含功能 登录/注销 权限验证 侧边栏…

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

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

什么是前端、JavaWeb、Web前端、前台、后台

JavaWeb是java开发中的一个方向 Java有搞安卓的,搞Web的,搞嵌入式的,等等。。 JavaWeb就是指搞web方向的,JavaWeb分两块一块是服务器端 叫后端,另一块叫前端,也就是Web前端。前端就是用户能看到的部分&am…

(Web前端)十分优秀的后台管理框架收集

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

web 后台学习介绍

什么是后台 后台,指网站后台,有时也称为网站管理后台,是指用于管理网站前台的一系列操作,如:产品、企业信息的增加、更新、删除等。动态网页一般指的就是后台和静态页面结合的网页。例如,我们最常用的淘宝…

有关Web前端和后台的部分简介

有关Web前端和后台的部分简介 Web前端简述 1:Web前端是什么 Web前端技术包括JavaScript,ActionScript,CSS,xHTML等“传统”技术与Adobe RIA,Google Gears,以及概念性较强的交互式设计,艺术性设计较强的视觉设计等等。它所涵盖的…