FCN简单理解

article/2025/9/16 18:14:50

文章目录

    • 整体把握
    • 卷积层替换全连接层的意义
    • 卷积层替换全连接层的具体方法
    • 网络结构中“放大”、“缩小”
    • 跳级的思想
    • 损失函数

整体把握

  1. FCN的论文主要集中于语义分割,当然这种结构现在已经运用在计算机视觉的各种任务中。
  2. FCN创造性的将传统CNN的全连接层都转换成了卷积层。
  3. FCN支持任意尺度的图片输入,改变了传统CNN要求固定输入图片尺寸的要求。
  4. FCN中可将卷积分为两个过程,分别使得图片“缩小”、“变大”。所谓“缩小”指的是经过卷积提取图片的特征,所谓“放大”指的是经过反卷积将“缩小”的特征图还原成与输入图像尺寸相同的特征图。
输入图片
卷积
特征图
反卷积,上采样
与输入图片尺寸相同的特征图
  1. FCN中如果直接将特征图的尺寸通过反卷积转换为与输入图片尺寸相同,结果会非常粗糙。于是作者提出了跳级的思想,这样可以很好的解决这一问题。另外这种思想与之后的FPN、yolo等非常相似。
  2. FCN的运行原理:将一张任意尺寸的图片输入到FCN中,首先经过卷积得到特征图(因为该特征图非常小,故可以称为热图),然后运用反卷积和跳级的方法,还原出与输入图片尺寸相同的特征图,将该特征图与原始图像对比,实现了每个像素的预测,保留了原始输入图像中的空间信息。
  3. 整体的运行流程如下所示:
    在这里插入图片描述

卷积层替换全连接层的意义

  1. 之所以要进行替换,是为了方便和高效
  2. 对于方便而言。
    1. 传统的CNN要求输入图片的尺寸必须要固定,这是因为传统的CNN全连接层的权值参数是固定的,则输入全连接层的尺寸也必须是固定的。如果输入图片的尺寸不固定,等运行至全连接层就会出错。
    2. FCN中没有全连接层,也就没有某一个要求的固定输入,从而对输入图像的尺寸没有要求。
  3. 对于高效而言。
    1. 传统的CNN要求输入的尺寸必须要固定,在图片中包含多个待检测物体时,一般做法是将图片裁剪成多个图片块输入网络,检测这多个图片块的分类置信度。
      1. 比如现有 384 × 384 384\times384 384×384大小的图片,CNN要求输入图片的尺寸为 244 × 244 244\times244 244×244,这时图片将按照 244 × 244 244\times244 244×244的大小裁剪为多个图片块,之后输入到CNN模型,判断这些图像块的分类置信度。最后整合判断图像包含的物体。
      2. 比如现有图片 244 × 244 244\times244 244×244,虽然符合CNN模型的输入尺寸,但是因为图片中包含有多个待检测物体,所以一般也将图片分成多个图像块,之后利用填充等方法将图像块扩充至 244 × 244 244\times244 244×244。最后整合判断图像包含的物体。
      3. 这种做法,一方面会使CNN因为多个图片块的出现,增大运算负担;另一方面,这些图片块只包含着局部信息,不利于图片的整体分析。
    2. FCN将整张图片输入,经过多次卷积后形成的特征图,也叫热图,能够整体概括图片中出现目标的检测概率。

卷积层替换全连接层的具体方法

一般而言,CNN是由全连接层和卷积层组成的。下面我们以图像分类为例,阐述方法。
在这里插入图片描述
上图中上半部分是传统的CNN结构,下半部分代表着FCN结构。

  1. 传统的CNN:假如输入的图片经过5层卷积层后,生成的特征图为 256 × 7 × 7 256\times7\times7 256×7×7(通道数、宽、高)。那么,经过三层全连接层后,特征图分别变换为 1 × 1 × 4096 1\times1\times4096 1×1×4096 1 × 1 × 4096 1\times1\times4096 1×1×4096 1 × 1 × 1000 1\times1\times1000 1×1×1000,三个一维的向量。
  2. FCN:假如输入的图片经过5层卷积层后,生成的特征图为 256 × 7 × 7 256\times7\times7 256×7×7(通道数、宽、高)。设置尺寸为[7,7],维度为4096的卷积核,得到特征图为 4096 × 1 × 1 4096\times1\times1 4096×1×1。设置尺寸为[1,1],维度为4096的卷积核,得到特征图为 4096 × 1 × 1 4096\times1\times1 4096×1×1。最后,设置尺寸为[1,1],维度为1000的卷积核,得到特征图为 1000 × 1 × 1 1000\times1\times1 1000×1×1

网络结构中“放大”、“缩小”

仔细观察第一张图,会发现“缩小”的过程中每层卷积层输出的尺寸是上一层尺寸的一半;而在“放大”过程中每层卷积层输出的尺寸是上一层的一倍。个人认为这是作者有意为之,尺寸之间存在着一种隐秘的线性关系。

跳级的思想

前面提到了“放大”、“缩小”的两个卷积过程,可是根据实际操作发现,一步直接将“缩小”后特征图放大效果非常不好,有很多图片的细节没有办法体现。于是作者提出了跳级的思想。
在这里插入图片描述
所谓跳级,也就是分步将特征图“放大”。可以看到图中有三种“放大”的策略,它们分别是FCN-32s,FCN-16s,FCN-8s。而且FCN中对特征图的放大一共是32倍。
我们以FCN-8s为例讲解跳级思想,首先将 1 × 1 1\times1 1×1特征图上采样2倍,然后与之前特征图尺寸相同的相加,得到新的上采样2倍特征图。
新的上采样2倍的特征图继续上采样2倍,然后与之前特征图尺寸相同的相加,得到新的上采样4倍的特征图。
之后,特征图不再与之前的特征图相加,以2倍的上采样不断进行,直到采样的总倍数为32倍。
所以跳级的精华在于与之前的特征图相融合,可以更好的利用底层位置信息和高层语义信息。
实验证明FCN-8s是效果最好的。
在这里插入图片描述

损失函数

因为FCN在目标分割的输出是逐像素的预测,所以将每个像素当成一个训练样本,损失函数用softmax表示。


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

相关文章

全卷积神经网络(FCN)

目录 卷积化上采样跳跃结构卷积化上采样跳跃结构 卷积化 上采样 跳跃结构 论文:Fully Convolutional Networks for Semantic Segmentation(2015) 参考:https://zhuanlan.zhihu.com/p/80715481 全卷积神经网络(Fully Convolutional Networks…

全卷积网络(FCN)实战:使用FCN实现语义分割

全卷积网络(FCN)实战:使用FCN实现语义分割 FCN对图像进行像素级的分类,从而解决了语义级别的图像分割(semantic segmentation)问题。与经典的CNN在卷积层之后使用全连接层得到固定长度的特征向量进行分类&…

FCN

转载自: http://blog.csdn.net/taigw/article/details/51401448 在上述原文的基础上结合自己理解做出了部分修改。 从图像分类到图像分割 卷积神经网络(CNN)自2012年以来,在图像分类和图像检测等方面取得了巨大的成就和广泛的应用。 CNN的强大…

FCN的理解

直观展现网络结构:http://ethereon.github.io/netscope/#/editor 卷积与逆卷积的动图https://github.com/vdumoulin/conv_arithmetic 【原文图】“Fully convolutional networks for semantic segmentation.” 上图中,32x即为扩大32倍。 Pool5扩…

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前台与后台数据交互-前台调后台

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