【语义分割专题】语义分割相关工作--Fully Convolutional DenseNet

The One Hundred Layers Tiramisu: Fully Convolutional Dense Nets for Semantic Segmentation Abstract 用于语义图像分割的最先进方法建立在卷积神经网络(CNN)上。 典型的分割体系结构由(a)负责提取粗略语义特征的下采样路径组成,其后是(b)训练的上采样路径,以恢复模型输出处的输入图像分辨率(c)帖子处理模块(例如条件随机场)来重新定义模型预测。 最近,一种新的CNN架构,即密集连接卷积网络(DenseNets),在图像分类任务中表现出色。 DenseNets的想法基于以下观察... 阅读详情

The One Hundred Layers Tiramisu: Fully Convolutional DenseNets for Semantic Segmentation

在本文中扩充了DenseNets,以解决语义分割的问题。在城市场景基准数据集(CamVid和Gatech)上获得了最优异的结果,没有使用进一步的后处理模块(如CRF)和预训练模型。此外,由于模型的优异结构,这个方根比当前发布在这些数据集上取得了最佳的网络参数要少得多。

DenseNets背后的思想是让每一层以一种前馈的方式与所有层相连接,能够让网络更容易训练,更加准确。

主要贡献在:

  • 针对语义分割任务,将DenseNets的结构扩展到了全卷积网络中;
  • 提出密集网络中进行上采样路径的方式,这要比其他的上采样路径性能更好。
  • 证明了网络能够在标准的基准测试数据集上产生较好的效果。

https://arxiv.org/abs/1611.09326

在这里插入图片描述

在这里插入图片描述

  • DenseBlock: BatchNormalization + Activation [ Relu ] + Convolution2D + Dropout

  • TransitionDown: BatchNormalization + Activation [ Relu ] + Convolution2D + Dropout + MaxPooling2D

  • TransitionUp: Deconvolution2D (Convolutions Transposed)

在这里插入图片描述

论文架构:

  • Abstract
    一个典型的图像分割模型的结构是:一个下采样的模块用来提取粗糙的语义信息;之后一个经过训练的上采样模型来恢复图像的尺寸;最后一个后处理单元来精修模型预测。

    发现了一个新的网络架构DenseNet

    将DenseNets扩展到语义分割上

  • Introduction
    FCN为了补偿池化层造成的损失,FCN引进了skip connections跳跃连接结构,在下采样和上采样之间的路径中。

    这种结构有利于增加准确率以及帮助快速训练优化。

    DenseNet:parameter efficiency;implicit deep supervision;feature reuse;以便skip connections 和 multi-scale supervision

    论文主要贡献:将DenseNet网络架构引入到了FCN当中,并缓解了特征图探索,也就是只使用前几层;提出基于dense blocks的上采样路径;在几个数据集达到最先进。

  • Related Work
    主要改进的措施:

    改进上采样的路径(从简单的双线性插值 - > unpooling or transposed connvolutions -> skip connections);

    引进广泛的语义理解;扩张卷积;RNNS;无监督的全局图像描述符;提出一个基于扩张卷积的语义模块来扩大网络呃感受野

    赋予FCN结构化的能力:增加一个CRF模块(Conditional Random Fields)

  • Fully Convolutional DenseNets
    a down sampling path;an upsampling path;skip connections;
    跳过连接通过重用特征映射帮助上采样路径从下采样路径恢复空间详细信息。
    我们模型的目标是通过扩展更复杂的DenseNet体系结构来进一步利用特征重用,同时避免网络上采样路径上的特征爆炸。

    DenseNetss回顾;DenseNets到FCNS中;语义分割;

  • Experiments
    两个基准数据集;IOU;

    训练细节:HeUniform和RMSprop;

    两个数据集;

  • Conclusion

公式

在这里插入图片描述

代码

在这里插入图片描述

模块化

from keras.layers import Activation,Conv2D,MaxPooling2D,UpSampling2D,Dense,BatchNormalization,Input,Reshape,multiply,add,Dropout,AveragePooling2D,GlobalAveragePooling2D,concatenate
from keras.layers.convolutional import Conv2DTranspose
from keras.models import Model
import keras.backend as K
from keras.regularizers import l2
from keras.engine import Layer,InputSpec
from keras.utils import conv_utils


def BN_ReLU_Conv(inputs, n_filters, filter_size=3, dropout_p=0.2):
    '''Apply successivly BatchNormalization, ReLu nonlinearity, Convolution and Dropout (if dropout_p > 0)'''

    l = BatchNormalization()(inputs)
    l = Activation('relu')(l)
    l = Conv2D(n_filters, filter_size, padding='same', kernel_initializer='he_uniform')(l)
    if dropout_p != 0.0:
        l = Dropout(dropout_p)(l)
    return l

def TransitionDown(inputs, n_filters, dropout_p=0.2):
    """ Apply first a BN_ReLu_conv layer with filter size = 1, and a max pooling with a factor 2  """
    l = BN_ReLU_Conv(inputs, n_filters, filter_size=1, dropout_p=dropout_p)
    l = MaxPooling2D((2,2))(l)
    return l

def TransitionUp(skip_connection, block_to_upsample, n_filters_keep):
    '''Performs upsampling on block_to_upsample by a factor 2 and concatenates it with the skip_connection'''
    #Upsample and concatenate with skip connection
    l = Conv2DTranspose(n_filters_keep, kernel_size=3, strides=2, padding='same', kernel_initializer='he_uniform')(block_to_upsample)
    l = concatenate([l, skip_connection], axis=-1)
    return l

def SoftmaxLayer(inputs, n_classes):
    """
    Performs 1x1 convolution followed by softmax nonlinearity
    The output will have the shape (batch_size  * n_rows * n_cols, n_classes)
    """
    l = Conv2D(n_classes, kernel_size=1, padding='same', kernel_initializer='he_uniform')(inputs)
    l = Reshape((-1, n_classes))(l)
    l = Activation('softmax')(l)#or softmax for multi-class
    return l
Using TensorFlow backend.

FC_DenseNet

def FC_DenseNet(
        input_shape=(None, None, 3),
        n_classes=1,
        n_filters_first_conv=48,
        n_pool=5,
        growth_rate=16,
        n_layers_per_block=[4, 5, 7, 10, 12, 15, 12, 10, 7, 5, 4],
        dropout_p=0.2
):
    if type(n_layers_per_block) == list:
        print(len(n_layers_per_block))
    elif type(n_layers_per_block) == int:
        n_layers_per_block = [n_layers_per_block] * (2 * n_pool + 1)
    else:
        raise ValueError

    #####################
    # First Convolution #
    #####################
    inputs = Input(shape=input_shape)
    stack = Conv2D(filters=n_filters_first_conv, kernel_size=3, padding='same', kernel_initializer='he_uniform')(inputs)
    n_filters = n_filters_first_conv

    #####################
    # Downsampling path #
    #####################
    skip_connection_list = []

    for i in range(n_pool):
        for j in range(n_layers_per_block[i]):
            l = BN_ReLU_Conv(stack, growth_rate, dropout_p=dropout_p)
            stack = concatenate([stack, l])
            n_filters += growth_rate

        skip_connection_list.append(stack)
        stack = TransitionDown(stack, n_filters, dropout_p)
    skip_connection_list = skip_connection_list[::-1]

    #####################
    #    Bottleneck     #
    #####################
    block_to_upsample = []

    for j in range(n_layers_per_block[n_pool]):
        l = BN_ReLU_Conv(stack, growth_rate, dropout_p=dropout_p)
        block_to_upsample.append(l)
        stack = concatenate([stack, l])
    block_to_upsample = concatenate(block_to_upsample)

    #####################
    #  Upsampling path  #
    #####################
    for i in range(n_pool):
        n_filters_keep = growth_rate * n_layers_per_block[n_pool + i]
        stack = TransitionUp(skip_connection_list[i], block_to_upsample, n_filters_keep)

        block_to_upsample = []
        for j in range(n_layers_per_block[n_pool + i + 1]):
            l = BN_ReLU_Conv(stack, growth_rate, dropout_p=dropout_p)
            block_to_upsample.append(l)
            stack = concatenate([stack, l])
        block_to_upsample = concatenate(block_to_upsample)

    #####################
    #  Softmax          #
    #####################

    output = SoftmaxLayer(stack, n_classes)
    model = Model(inputs=inputs, outputs=output)


    return model
The One Hundred Layers Tiramisu: Fully Convolutional DenseNets for Semantic Segmentation 今天介绍一篇文章,FCN和DenseNet的超强结合体,2017CVPR,一起来欣赏下吧! 文章地址:https://arxiv.org/abs/1611.09326 1、 FC-DenseNet提出背景 FCN:FCN是首个在传统CNN的基础上解决像素级语义分割问题的网络。同过加入上采样层,使得输出图像尺寸和输入一样大小,也即网络的输入可以是任意大小的图像,不需要像AlexNet那样需要统... 阅读详情

相关推荐

iTunes登录协议逆向与自动化实现

本文详细解析了iTunes登录协议的逆向工程与自动化实现方法,涵盖请求体构造、签名生成和会话管理等关键技术。通过XML结构解析、X-Apple-ActionSignature生成原理及完整登录流程实现,帮助开发者高效完成iTunes自动化登录,提升工作效率。

weixin_26938645的博客 941

The One Hundred Layers Tiramisu:Fully Convolutional DenseNets for Semantic Segmentation手动翻译

The One Hundred Layers Tiramisu:Fully Convolutional DenseNets for Semantic Segmentation 一百层的Tiramisu:用于语义分割的全卷积DenseNets 典型分割架构: (a)负责提取粗糙语义特征的下行采样路径 (b) 一个上采样路径,用于在模型的输出处恢复输入图像的分辨率 ©(可选)后处理模块(如条件随机域)...

qq_35024702的博客 887

新手必看:LiteRadio 2c SE遥控器从开箱到飞行的完整指南(附常见问题解答)

本文为新手提供LiteRadio 2c SE遥控器的完整使用指南,涵盖从开箱到首飞的20个关键步骤。详细介绍了遥控器的功能设置、与无人机的对频技巧以及首飞注意事项,帮助用户快速掌握飞行控制,避免常见错误。特别适合无人机初学者阅读。

weixin_29209801的博客 381

文献阅读系列-3|The One Hundred Layers Tiramisu:Fully Convolutional DenseNets for Semantic Segmentation

The One Hundred Layers Tiramisu:Fully Convolutional DenseNets for Semantic Segmentation 用于语义分割的FC-DenseNets 文章目录The One Hundred Layers Tiramisu:Fully Convolutional DenseNets for Semantic Segmentation外文文献阅读-3摘要1.引言2.相关工作3.Fully Convolutional DenseNets3.1De

北屿的博客 607

别再只用STM32了!手把手教你用STM32F4+FPGA EP2C8搭建低成本多轴运动控制器(附S形加减速算法避坑)

本文详细介绍了如何利用STM32F4与FPGA EP2C8搭建低成本多轴运动控制器,解决传统方案在脉冲输出频率、多轴同步性和实时响应方面的瓶颈。通过硬件设计、软件架构和S形加减速算法的优化,实现商用级性能,成本控制在500元以内,适合创客和小型自动化设备开发。

weixin_28693683的博客 302

交换芯片数据通路四大核心微架构深度解析

数据通路是交换芯片性能的物理根基,决定着低延迟、高吞吐与突发承载能力。其本质是在硅片约束下对带宽、时序、功耗与统计复用的系统性权衡。Crossbar提供确定性低延迟但受RC延迟与功耗制约;VOQ通过虚拟队列隔离输出争抢,却引入仲裁复杂度与内存开销;Shared Buffer依托统计复用提升缓存利用率,但面临碎片化与管理策略挑战;Cell Fabric以固定长度cell重构交换粒度,在AI与金融等小包敏感场景实现尾延迟稳定。这些架构并非替代关系,而是面向不同网络不确定性(如流量不对称性、突发强度、包长分布)的

weixin_32667955的博客 190

【图像分割论文阅读】The One Hundred Layers Tiramisu: Fully Convolutional DenseNets for Semantic Segmentation

本文出自加拿大蒙特利尔学习算法研究院、蒙特尔理工学院、蒙特利尔伊玛吉亚公司、巴塞罗那计算机视觉中心联合出品。注意到Bengio也在其中。文章最终发表于CVPR2017. 论文地址:The One Hundred Layers Tiramisu: Fully Convolutional DenseNets for Semantic Segmentation 背景 从某种意义上来说,本文的结构...

Ray 1167

[系统安全] 一.什么是逆向分析、逆向分析基础及经典扫雷游戏逆向

娜璋AI安全之家于2020年8月18日开通,将专注于Python和安全技术,主要分享Web渗透、系统安全、CVE复现、威胁情报分析、人工智能、大数据分析、恶意代码检测等文章。真心想把自己近十年的所学所做所感分享出来,与大家一起进步。 系统安全系列作者将深入研究恶意样本分析、逆向分析、攻防实战等,通过在线笔记和实践操作的形式分享与博友们学习,希望能与您一起进步。第一篇文章先带领大家学习什么是逆向分析,然后详细讲解逆向分析的典型应用,接着通过OllyDbg工具逆向分析经典的游戏扫雷,再通过Cheat Engin

杨秀璋的专栏 2万+

The One Hundred Layers Tiramisu: Fully Convolutional DenseNets for Semantic Segmentation_2016

作者:Simon Jégou Michal Drozdzal David VazquezAbstract 典型的语义分割架构由(a)一条下采样路径,负责提取粗的语义特征,再加一个(b)一条上采样路径,负责回复图像分辨率,和一个可选的后处理模块(比如,条件随机场)来精调模型预测。 最近一个新的架构DenseNets,主意来源于:如果每层直接连接其他层,就像前馈机制一样,网络会变

sunyao_123的博客 4393

Unity 面试篇|(二)Unity基础篇 【全面总结 | 持续更新】

在主线程运行的同时开启另一段逻辑处理,来协助当前程序的执行,协程很像多线程,但是不是多线程,Unity的协程实在每帧结束之后去检测yield的条件是否满足。一个程序在运行(执行)的过程中所需要的硬件和软件环境运行时的主要作用是提供程序运行所需要的环境和基础设施,通过为程序提供内存分配、线程管理、类型检查、对象实例化和垃圾回收等操作来支持程序的运行公共语言运行时(Common Language Runtime,CLR)是整个.NET框架的核心,它为.NET应用程序提供了一个托管的代码执行环境。

游戏开发小Y的博客 13万+

光学传播仿真软件:ASAP_(1).ASAP软件介绍与安装

ASAP(Advanced System for Analysis and Propagation)是一款强大的光学传播仿真软件,广泛应用于光学系统的设计、分析和优化。它提供了丰富的建模工具和仿真功能,可以帮助用户从简单的光学元件到复杂的光学系统进行仿真。:支持光学、机械、热学等多物理场的联合仿真。:采用高精度的算法,确保仿真结果的准确性。:内置了大量的光学元件,如透镜、反射镜、棱镜、光栅等。:提供直观的用户界面,支持多种建模和仿真方式。:支持使用脚本语言进行二次开发,增强软件的定制能力。

kkchenjj的博客 1601

图像分割“The One Hundred Layers Tiramisu: Fully Convolutional DenseNets for Semantic Segmentation”

code:: https://github.com/SimJeg/FC-DenseNet DSOD中的一篇参考文献,不需要预训练进行图像分割,同样使用了DenseNet。在CamVid和Gatech数据库上,没有预训练,没有CRF后处理,达到了state-of-the-art的效果。DenseNet的优点:(1)参数有效性,参数使用效率高;(2)隐式深层监督,short paths;(3)特征重用

cv_family_z的博客 6939

【全志V821_FoxPi】6-3 GC2083 MIPI摄像头适配

本文介绍了在全志V821芯片上适配GC2083 MIPI摄像头的方案。GC2083是一款支持1080P@30fps的高性能CMOS图像传感器,采用MIPI CSI-2接口,具有低功耗特性。文章详细列出了传感器的技术参数和工作电压要求,并提供了设备树配置示例,包括CSI接口、ISP处理单元和传感器节点的具体设置。通过快速配置命令one_gc2083_sensor或手动修改设备树即可启用该摄像头模组,适用于IPC等对图像质量有要求的嵌入式应用场景。

第四维度的博客 1932

论文:FCOS: Fully Convolutional One-Stage Object Detection

转载自大佬文章,有一点没看懂,还需要慢慢消化! 论文地址 | https://arxiv.org/pdf/1904.01355.pdf 1 .网络整体介绍        &nbsp本文提出了一种全卷积one-stage目标检测算法(FCOS),以逐像素预测的方式解决目标检测问题,类似于语义分割。目前最流行的不论是one...

杨杨子江的博客 345

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

自己整理的深度学习图像和无人驾驶的相关名词

深度学习图像 基础名词 MLP:Multi-Layer Perceptron 多层感知器。 BP:errorBackPropagation BP算法是由学习过程由信号的正向传播与误差的反向传播两个过程组成。 CNN:Convolutional Neural NetWork 卷积神经网络 RNN:Recurrent Neural Network 循环神经网络 LSTM:Long Shor...

MAGICYANG的专栏 1498

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

ChatGLM-6B Python调用教程:从model.chat到多轮对话上下文管理的完整指南

**ChatGLM-6B** 是智谱AI开源的中英双语对话大语言模型,拥有62亿参数,最低仅需 **6GB 显存**(INT4量化)即可在消费级显卡上本地部署。本教程面向新手,手把手带你用 Python 完成 ChatGLM-6B 的调用:从环境安装、模型加载,到 `model.chat` 单轮对话,再到 `history` 参数实现多轮对话上下文管理,最后附赠流式输出、低成本部署与 API 服务

gitblog_00018的博客 366

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

图像分类任务

图像分类任务经典处理手段

weixin_70221721的博客 378

语义分割的三点奇技淫巧

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达来源|Peiyuan Liao@知乎,https://www.zhihu.com/question/272988870/answer/562262315本文已获作者授权,未经作者授权,不得二次转载。本人才学疏浅,就分享一些水Kaggle时看到的和用过的tricks吧,纯工程没理论,不保证一定能用hhh代...

小白学视觉 732

Fully Convolutional DenseNets for Semantic Segmentation

论文:https://arxiv.org/abs/1611.09326 代码:https://github.com/SimJeg/FC-DenseNet摘要典型的分割体系结构由下列部分组成: (a)负责提取粗略语义特征的下采样路径; (b)训练上采样路径以将模型输出的分辨率恢复至输入图像分辨率大小; (c)处理模块(例如,条件随机场)来优化模型预测。(可选)本文扩展DenseNet为全卷积网

PartyPartyAnimal的博客 3461

语义分割 FCN-DenseNet 应用入门

简单粗暴的掌握FCN-DenseNet自定义数据集训练应用入门操作,开发属于自己的语义分割工具

氢键H-H 6618

语义分割--Fully Convolutional DenseNets for Semantic Segmentation

The One Hundred Layers Tiramisu: Fully Convolutional DenseNets for Semantic Segmentation CVPRW 2017 Code: https://github.com/SimJeg/FC-DenseNet本文将 DenseNets 按照 FCN 方式用于 语义分割首先看看 DenseNets 该网络主要由 d

AI小作坊 的博客 7825

The One Hundred Layers Tiramisu: Fully Convolutional DenseNets for Semantic Segmentation

论文地址:http://xueshu.baidu.com/usercenter/paper/show?paperid=a76088e42441c28b0fcfc5ae45e04a2d&site=xueshu_se

weixin_41012399的博客 271

[深度学习从入门到女装]FC-DenseNets for Semantic Segmentation

论文地址:The One Hundred Layers Tiramisu: Fully Convolutional DenseNets for Semantic Segmentation   这篇文章使用DenseNet+U-Net来做语义分割 Dense Block: 每层的输入使用上一层的输出和上一层的输入concat到一起作为这一层的输入,得到k个feature map的输出...

炼丹师 2108

Semantic Segmentation

Semantic Segmentation Deep Dual Learning for Semantic Image Segmentation-2017 [Paper]Segmentation-Aware Convolutional Networks Using Local Attention Masks - 2017 [Paper] [Code-Caffe][Project]Stacke

Touch_Dream的博客 2290

【扩散模型】数学基础和原理解析

其中 time_embedding 和 text_embedding 都是不变的,在每一个块里边都对模型提供当前Unet所处time信息以及全局text的指导信息(就是prompt),Resnet 中 xx_embeding 的生效方式就是直接加上去(简单粗暴),Transformer 中执行交叉注意力来使用指导信息 xx_embeding,大部分区域中 time_embeding 和 text_embeding 也都是直接加和然后当作一个最终 embeding 来用的。

weixin_57974242的博客 2139

语义分割+视频分割开源代码集合

来源:优快云博客(http://blog.csdn.net/zhangjunhit/article/details/78190283)语义分割 Global Deconvolutional Networks BMVC 2016 https://github.com/DrSleep/GDNThe One Hundred Layers Tiramisu: Fully Convolutional De...

liumingchun13的博客 5329
上一篇: 【语义分割专题】语义分割相关工作--UNet网络介绍
下一篇: 【语义分割专题】语义分割相关工作--ENet网络相关工作
mind_programmonkey
mind_programmonkey 领域专家: 算法与数据结构技术领域 领域专家: 算法与数据结构技术领域
博客等级 码龄9年 4435粉丝 1111原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mind_programmonkey

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值