【语义分割专题】语义分割相关工作--Multi-Scale Context Aggregation by Dilated Convolution

Dilated Convolution介绍 Dilated Convolution介绍 相关的两篇论文分别是[ICLR2016]MULTI-SCALE CONTEXT AGGREGATION BY DILATED CONVOLUTIONS 和 [CVPR2017]Dilated Residual Networks。作者为Fisher Yu(http://www.yf.io/) 。 1.问题背景 语义分割,目标检测检测任务需要高... 阅读详情

Multi-Scale Context Aggregation by Dilated Convolution

Yu, Fisher and Vladlen Koltun. “Multi-Scale Context Aggregation by Dilated Convolutions.” CoRR abs/1511.07122 (2016): n. pag.

本文主要是对空洞卷积(扩张卷积)以及感受野的理解

dilated convolution是针对图像语义分割问题中下采样会降低图像分辨率、丢失信息而提出的一种卷积思路。?

在基于FCN思想的语义分割问题中,输出图像的size要和输入图像的size一致。但是FCN中有若干stride>1的池化层,所以越高较高的网络层中,单位像素中包含的原始图像的信息就越多,也就是感受野越大,但这是以通过池化降低分辨率、损失原始图像中的信息作为代价而得来的;由于pooling层的存在,后面层的feature map的size会越来越小。但由于需要计算loss等原因,最后输出图像呃size要和输入图像的size保持一致,所以在FCN中的后端网络层中,必须对feature map进行上采样操作,将缩小的feautre map再还原到原始尺寸,在这个过程中,不可能将池化过程中丢失的信息完全还原回来,这样就造成了信息的丢失,语义分割的精度降低。

若如果不加pooling层,在较小的卷积核尺寸的前提下,感受野会很小;但如果为了增大感受野,在中段的网络层中使用size较大的卷积核,计算量又会暴增,内存扛不住!因为中段的channel一般会非常大,比如1024、2018,跟最开始rgb图像的3个channel比起来,增大了几百倍。

Dilated Convolution的提出

 加pooling层,损失信息,降低精度;不加pooling层,感受野变小,模型学习不到全局信息...怎么办?
        ====> 我们先做一个决定:不要pooling层。没有pooling层,后续网络层中,较小size的卷积核的感受野会很小,没有全局视野;

        ====> 既然小size的卷积核感受野小,那就增大卷积核的size;

        ====> 但卷积核size越大,计算量就会随之加大;

        ====> 那可不可以让卷积核增大,使感受野增大,但计算量不变呢?

        ====> 有啊,把原本紧密贴着的卷积核变得"蓬松"一些,但卷积核需要计算的点不变,也就是蓬松出来的位置全填进去0,还按照卷积核原本的计算方式计算就)可以了。

        ====> 这样,由于卷积核的"蓬松",感受野变大了,又由于卷积核中的有效计算点不变,所以计算量不变。除此之外,每层的feature map的size都不变,所以图像信息都保存了下来。一举三得,OK!妥了!

在这里插入图片描述

F(dilated) = [pow(2, (dilated / 2) +2) - 1] × [pow(2, (dilated / 2) +2) - 1]

其中,dilated表示卷积核中每个计算点自己的"半径", F(dilated)就是卷积核的感受野尺寸。比如上图中(a),dilated=1,F(dilated) = 3×3;图(b)中,dilated=2,F(dilated)=7×7;图(c)中,dilated=4, F(dilated)=15×15。

卷积核大小kxk,dilation factor:n-推出感受野大小为:(k+1)x n - 1

import warnings
import os
os.environ['KERAS_BACKEND'] = 'theano'
import keras.backend as K
K.set_image_dim_ordering('th')
from keras.models import Model
from keras.layers import Conv2D, MaxPooling2D, Input
from keras.layers import Dropout, UpSampling2D, ZeroPadding2D
from keras.layers import Permute, Reshape, Activation
from keras.utils.data_utils import get_file
from datasets import CONFIG


# CITYSCAPES MODEL
def get_dilation_model_cityscapes(input_shape, classes):
    # 构建模型
    model_in = Input(shape=input_shape)    
    h = Conv2D(64, (3, 3), activation='relu', name='conv1_1')(model_in)  # (,64,1394,1394)
    h = Conv2D(64, (3, 3), activation='relu', name='conv1_2')(h)         # (,64,1392,1392)
    h = MaxPooling2D(pool_size=(2, 2), strides=(2, 2), name='pool1')(h)  # (,64,696,696)
    h = Conv2D(128, (3, 3), activation='relu', name='conv2_1')(h)        # (,128,694,694)
    h = Conv2D(128, (3, 3), activation='relu', name='conv2_2')(h)        # (,128,692,692)
    h = MaxPooling2D(pool_size=(2, 2), strides=(2, 2), name='pool2')(h)  # (,128,346,346)
    h = Conv2D(256, (3, 3), activation='relu', name='conv3_1')(h)        # (,256,344,344)
    h = Conv2D(256, (3, 3), activation='relu', name='conv3_2')(h)        # (,256,342,342)
    h = Conv2D(256, (3, 3), activation='relu', name='conv3_3')(h)        # (,256,340,340)
    h = MaxPooling2D(pool_size=(2, 2), strides=(2, 2), name='pool3')(h)  # (,256,170,170)
    h = Conv2D(512, (3, 3), activation='relu', name='conv4_1')(h)        # (,512,168,168)
    h = Conv2D(512, (3, 3), activation='relu', name='conv4_2')(h)        # (,512,166,166)
    h = Conv2D(512, (3, 3), activation='relu', name='conv4_3')(h)        # (,512,164,164)
    h = Conv2D(512, (3, 3), dilation_rate=(2, 2), activation='relu', name='conv5_1')(h)  # (,512,160,160) 扩张卷积比普通卷积对于尺度的缩小作用更大
    h = Conv2D(512, (3, 3), dilation_rate=(2, 2), activation='relu', name='conv5_2')(h)  # (,512,156,156) 扩张卷积
    h = Conv2D(512, (3, 3), dilation_rate=(2, 2), activation='relu', name='conv5_3')(h)  # (,512,152,152) 扩展卷积
    h = Conv2D(4096,(7, 7), dilation_rate=(4, 4), activation='relu', name='fc6')(h)     # (,4096,128,128)  扩张后的卷积核大小为 25*25
    h = Dropout(0.5, name='drop6')(h)
    h = Conv2D(4096, (1, 1), activation='relu', name='fc7')(h)   # (,4096,128,128)
    h = Dropout(0.5, name='drop7')(h)
    h = Conv2D(classes, (1, 1), name='final')(h)                   # (,19,128,128)  classes=19 最后要在通道上取softmax,因此通道数等于类别数
    h = Conv2D(classes, (3, 3), padding='same', activation='relu', name='ctx_conv1_1')(h)  # (,19,128,128)
    h = Conv2D(classes, (3, 3), padding='same', activation='relu', name='ctx_conv1_2')(h)  # (,19,128,128)
    h = ZeroPadding2D(padding=(2, 2))(h)
    h = Conv2D(classes, (3, 3), dilation_rate=(2, 2), activation='relu', name='ctx_conv2_1')(h)   # (,19,128,128)
    h = ZeroPadding2D(padding=(4, 4))(h)
    h = Conv2D(classes, (3, 3), dilation_rate=(4, 4), activation='relu', name='ctx_conv3_1')(h)   # (,19,128,128)
    h = ZeroPadding2D(padding=(8, 8))(h)
    h = Conv2D(classes, (3, 3), dilation_rate=(8, 8), activation='relu', name='ctx_conv4_1')(h)   # (,19,128,128)
    h = ZeroPadding2D(padding=(16, 16))(h)
    h = Conv2D(classes, (3, 3), dilation_rate=(16, 16), activation='relu', name='ctx_conv5_1')(h)  # (,19,128,128)
    h = ZeroPadding2D(padding=(32, 32))(h)
    h = Conv2D(classes, (3, 3), dilation_rate=(32, 32), activation='relu', name='ctx_conv6_1')(h)  # (,19,128,128)
    h = ZeroPadding2D(padding=(64, 64))(h)
    h = Conv2D(classes, (3, 3), dilation_rate=(64, 64), activation='relu', name='ctx_conv7_1')(h)  # (,19,128,128)
    h = ZeroPadding2D(padding=(1, 1))(h)
    h = Conv2D(classes, (3, 3), activation='relu', name='ctx_fc1')(h)     # (,19,128,128)
    h = Conv2D(classes, (1, 1), name='ctx_final')(h)                      # (,19,128,128)

    # the following two layers pretend to be a Deconvolution with grouping layer.
    # never managed to implement it in Keras
    # since it's just a gaussian upsampling trainable=False is recommended
    # tensorflow实现中用 tf.image.resize_bilinear 执行双线性插值上采样
    h = UpSampling2D(size=(8, 8))(h)        # 上采样8倍 (,19,1024,1024)  
    # 使用卷积操作构造一个高斯上采样,这里trainable=False
    logits = Conv2D(classes, (16, 16), padding='same', use_bias=False, trainable=False, name='ctx_upsample')(h)  # (,19,1024,1024)

    # 在通道层面施加softmax
    _, c, h, w = logits._keras_shape            # (None,19,1024,1024)
    x = Permute(dims=(2, 3, 1))(logits)         # (None,1024,2024,19)
    x = Reshape(target_shape=(h * w, c))(x)     # (None,1048576,19)
    x = Activation('softmax')(x)                # (None,1048576,19)
    x = Reshape(target_shape=(h, w, c))(x)      # (None,1024,1024,19)
    model_out = Permute(dims=(3, 1, 2))(x)      # (None,19,1024,1024)
    
    # 构建模型
    model = Model(input=model_in, output=model_out, name='dilation_cityscapes')
    return model


# model function
def DilationNet(dataset, pretrained=True):
    """ 根据有关参数,初始化模型,导入权重
    """
    classes = CONFIG[dataset]['classes']          # 类别数目
    input_shape = CONFIG[dataset]['input_shape']  # 采用th顺序,维度在前

    # get the model
    if dataset == 'cityscapes':
        model = get_dilation_model_cityscapes(input_shape=input_shape, 
                                              classes=classes)
    # 导入权重
    if pretrained:
        assert K.image_dim_ordering() == 'th'
        weights_path = get_file("cityscapes.h5", origin=None, 
            cache_subdir='models') 
        model.load_weights(weights_path)

    return model


if __name__ == '__main__':
    ds = 'cityscapes'  # choose between cityscapes, kitti, camvid, voc12
    # get the model
    model = DilationNet(dataset=ds)
    model.compile(optimizer='sgd', loss='categorical_crossentropy')
    model.summary()
目标分割(三)Dilated Convolutions讲解 目标分割Dilated Convolutions讲解0、 ABSTRACT1、 INTRODUCTION2、 DILATED CONVOLUTIONS3、 MULTI-SCALE CONTEXT AGGREGATION4、 Front End 前端Reference            ... 阅读详情

相关推荐

Multi-Scale Context Aggregation by Dilated Convolutions 总结

摘要 针对图像分割中像素的密集预测,开发了一种新的卷积网络模块。膨胀的卷积系统地聚合多尺度上下文信息而不丢失分辨率。 膨胀的卷积支持接收域的指数扩展。 前言 近年来,有两种处理多尺度推理和全分辨率密集预测的方法: 持续地从下采用层中反复使用up-convolutions(上卷积?)恢复损失的分辨率 提供多个重新扫描的图像最为输入到网络中,并结合这些多...

Beans___Lee的博客 589

Multi-Scale Context Aggregation By Dilated Convolutions

1 Introduction 之前的网络比如FCN或者Deep Lab v1都存在从小的分辨率图像往大了进行上采样,那么问题就来了,下采样是必要的嘛?话有一些方法提供多个重构版本(multiple rescaled versions of the image)再进行联合求解预测,这样的操作是必要的嘛? 本文提出一种CNN模型,不会丢失分辨率,也不会联合多个预测去得到最后的分割图。这个模型是基于空洞卷积的,它在保证分辨率的情况下(就是不进行下采样),能够极大的扩大感受野(感受野的大小可以决定单个像素点能够参考

qq_43492938的博客 2280

GCANet(Gated Context Aggregation Network for Image Dehazing and Deraining)图像去雾去雨

GCANet.py import torch import torch.nn as nn import torch.nn.functional as F class ShareSepConv(nn.Module): def __init__(self, kernel_size): super(ShareSepConv, self).__init__() assert kernel_size % 2 == 1, 'kernel size should be o.

w18226357716的博客 9846

【译】Multi-Scale Context Aggregation by Dilation Convolutions(空洞卷积)

Multi-Scale Context Aggregation by Dilation Convolutions   通过膨胀卷积进行多层次的上下文聚合 原作:Fisher Yu, Princeton University; Vladlen Koltun ,Intel Labs 翻译:一梦轻尘 原文链接:Multi-Scale Context Aggregation by Dilatio...

qq_21167623的博客 6956

Multi-Scale Context Aggregation by Dilated Convolutions.zip

Multi-Scale Context Aggregation by Dilated Convolutions.zip

不止于ACC:用CarSim的‘Multiple Objects’和路径跟踪器玩转复杂交通流场景

本文深入探讨了如何利用CarSim的'Multiple Objects'模块和路径跟踪器模拟复杂交通流场景,超越传统ACC测试的局限。通过批量控制、动态交互和参数化设计,实现多车智能响应和复杂轨迹模拟,适用于连续变道、拥堵博弈、匝道汇流等真实交通场景。

weixin_30954265的博客 497

【Dilated Conv】《Multi-Scale Context Aggregation by Dilated Convolutions》

ICLR-2016 文章目录1 Background and Motivation2 Advantages / Contributions3 Method3.1 Dilated Convolution3.2 Multi-scale Context Aggregation3.3 Front End4 Experiments4.1 Datasets4.2 Controlled evaluatio...

bryant_meng 978

Ubuntu22.04下3分钟搞定GitHub加速:SwitchHosts+小鱼工具保姆级配置指南

本文提供Ubuntu22.04下快速解决GitHub下载超时问题的保姆级教程,通过SwitchHosts图形化工具和小鱼一键换源工具实现高效加速。详细步骤包括环境准备、工具安装配置及验证方法,帮助开发者轻松优化GitHub访问速度,提升工作效率。

weixin_29258297的博客 567

Dilated/Atrous Convolution(空洞卷积)

参考文献 【1】总结-空洞卷积(Dilated/Atrous Convolution) 【2】Dilated Convolutions(空洞卷积) 【3】Understanding Convolution for Semantic Segmentation

xiaochengJF的博客 1419

ADB命令解锁Android手机屏幕的3种实用方法(附详细步骤)

本文详细介绍了在Android手机屏幕失灵或密码遗忘时,利用ADB命令解锁屏幕的三种实用方法。包括通过ADB模拟输入事件、移除锁屏认证文件(需Root权限)以及结合恢复模式抢救数据。文章提供了详细的操作步骤与风险提示,强调提前开启USB调试的重要性,是Android用户应对紧急锁屏情况的有效技术指南。

weixin_29229055的博客 925

博士申请-考核制经验分享(2)——个人简历

申博过程中一般在联系导师时就将个人简历作为邮件附件,有些学校也会在提交材料或者复试阶段提交个人简历。

weixin_49282401的博客 5529

RTDETR改进专栏(包含RTDETR、YOLOV5-DETR、YOLOV8-DETR)

RTDETR改进专栏(性价比高,创新度高),目前RTDETR改进已经有350+个改进点!

qq_37706472的博客 7万+

基于STM32设计的数字电子秤

当前项目是采用采用STM32+称重模块+OLED实现了简单的电子秤项目,称重模块上采用24位的ADC芯片,精度较高。实现了称重,校准、去皮等功能。

1万+

YOLOV11|YOLO12改进系列指南

YOLOV11V12改进系列指南,仅仅69.9包含YOLOV11V12模型改进方案、含有440+种改进的集合,且含有多种二次创新和原创改进!

qq_37706472的博客 15万+

深水区探秘:小红书App x-s参数逆向与高并发爬虫实战(2026版)

在移动互联网的碎片化时代,小红书凭借其“社区+电商”的独特模式,积累了超过3亿月活用户。其内容生态覆盖了从美妆、穿搭到旅行、数码等几乎所有垂直领域。对于数据分析师、市场研究员以及AI算法工程师而言,小红书平台蕴含的价值是巨大的——无论是热门趋势洞察、KOL画像分析,还是多模态图文数据的采集。然而,想要高效、稳定地获取小红书App的公开数据,却并非易事。与Web端相比,小红书App的防护体系堪称“铜墙铁壁”。其核心的反爬机制建立在动态混淆的加密参数之上,尤其是请求头中的X-SX-T以及X-S-Common。

2201_76125261的博客 270

世界职业院校技能大赛商贸赛道项目参考逐字稿一

商贸赛道“智选优品”—基于大数据与AI驱动的跨境电商平台项目参考逐字稿您订阅本专栏后即可`永久享有所有文章的查阅权`,希望我们更新的参考资料能帮助到您。如果您需要我们团队赋能培训可联系我(企业一线工程师及国一获奖选手在线培训支持:每周直播精讲(可回放,支持弹幕答疑)、代码Review+技术售后(拉群随时问,12h内响应)、④路演PPT+答辩话术一对一点评,评委视角提前彩排、适合:中职/高职赛项选手、指导老师带队、校企工作室、整校打包另谈(可开发票))

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 1595

深度学习总结

算法面试题

abcdefg666666123的博客 945

cilium native-routing模式流程分析

本文分析cilium native routing模式下的报文路径和涉及到的ebpf源码分析。实验环境在vxlan模式下修改参数后而来。native routing和vxlan模式的区别主要是跨节点通信时,vxlan模式需要封装,native routing模式需要根据目的ip查找路由表转发到其他节点。

fengcai_ke的博客 989

膨胀卷积--Multi-scale context aggregation by dilated convolutions

Multi-scale context aggregation by dilated convolutions ICLR 2016https://arxiv.org/abs/1511.07122Code: https://github.com/fyu/dilation https://github.com/bordesf/dilation针对语义分割问题 semantic segmenta

AI小作坊 的博客 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

第十二章:MULTI-SCALE CONTEXT AGGREGATION BY DILATED CONVOLUTIONS——通过膨胀卷积的多尺度上下文聚合

目前用于语义分割的先进模型是基于最初设计用于图像分类的卷积网络的改进。然而,像语义分割这样的密集预测问题在结构上与图像分类不同。在这项工作中,我们开发了一个专门为密集预测设计的新的卷积网络模块。所提出的模块使用膨胀卷积来系统地聚合多尺度的上下文信息,而不会丢失分辨率。该架构基于膨胀卷积支持对感受野的指数级扩展,同时不会丢失分辨率或覆盖范围。我们证明了所提出的上下文模块可以提高最先进的语义分割系统的准确性。此外,我们还研究了将图像分类网络适应到密集预测的方法,并证明简化适应网络可以提高准确性。

ADICDFHL的博客 1168

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【论文笔记】Multi-scale Context Aggregation By Dilated Convolutions

语义分割的挑战性在于他需要结合像素级的准确性和多尺度上下文推理。在图像分类任务中可以通过降采样和池化降低分辨率,从而获得全局预测;而密度预测任务中需要采用全分辨率。在调节流量预测问题中的多尺度推理和全分辨率密度预测时,存在两种路径。一种时采用重复上卷积,从而恢复丢失的分辨率,同时从下采样层获取全局视野。第二种则是提供了多个缩放版本的图像作为输入,并且将对应预测值进行组合。

lokol.的秘密基地 827

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

MULTI-SCALE CONTEXT AGGREGATION BY DILATED CONVOLUTIONS

本文要点有三: 提出dilated convolution(空洞卷积,扩张卷积)most important 网络使用扩张卷积,增大感受野,感受野随层数指数级增加;同时每一层通过padding操作,保证卷积后的图像大小不发生改变 FRONT END module 利用dilated convolution修改VGG16,能够完成初步的语义分割任务 context ...

chixia1785的博客 581

Container: Context Aggregation Network

摘要 卷积神经网络(CNNs)在计算机视觉中无处不在,具有无数有效和高效的变化。最近,变形金刚——最初是在自然语言处理中引入的——已经越来越多地应用于计算机视觉。早期的用户继续使用CNN的骨干,最新的网络是端到端无CNN的Transformer解决方案。最近一个令人惊讶的发现表明,一个简单的基于MLP的解决方案,没有任何传统的卷积或Transformer组件,可以产生有效的视觉表示。虽然cnn、transformer和MLP-Mixers可以被视为完全不同的架构,但我们提供了一个统一的视图,表明它们实际上

weixin_36670529的博客 3314

YOLOv8最新改进系列:YOLOv8改进之添加注意力-ContextAggregation,有效涨点!!!

YOLOv8最新改进系列:YOLOv8改进之添加注意力-ContextAggregation,有效涨点!!!

B站 Ai学术叫叫兽的文案地 9700

膨胀卷积——《MULTI-SCALE CONTEXT AGGREGATION BY DILATED CONVOLUTIONS》

看这篇论文主要是想了解膨胀卷积,搜出这篇,看起来貌似比deeplab简单一些,于是以此入手。这篇论文把膨胀卷积的计算原理讲的很清楚,但是作用和产生的缘由的话还是deeplab的论文更容易懂,deeplab里面叫"hole algorithm"。 1. dense prediction 在谈膨胀卷积之前想先说一下dense prediction,一开始对这个概念不太理解,看了看别人的解释后说说自...

老笨妞 6146
上一篇: 【语义分割专题】语义分割相关工作--PSPNet
下一篇: 【语义分割专题】语义分割相关工作--DeepLab系列
mind_programmonkey
mind_programmonkey 领域专家: 算法与数据结构技术领域 领域专家: 算法与数据结构技术领域
博客等级 码龄9年 4435粉丝 1111原创
评论
成就一亿技术人!
拼手气红包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、付费专栏及课程。

余额充值