热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

NearMe云笔记,nation笔记

一、Deeplabv2对应论文是DeepLab:SemanticImageSegmentiationwithDeepConvolutionalNets,Atrou


一.深度实验室v2


对应论文为deep lab : semanticimagesegmentiationwithdeepconvolutionalnets、Atrous Convolution、and Fully Connected CRFs


深度实验室是谷歌基于FCN制作的。 为了获得更dense的score map,FCN将500x500的输入图像添加到第一个卷积层,将100填充添加到conv1_1,最终在fc7层终于获得了16x16的score map。 深度实验室使用一种非常优雅的方法,将VGG网络的pool4和pool5层的stride从原来的2更改为1,然后添加1填充。 这种改变导致vgg网络的总stride从原始的32变为8,并且在输入图像为514x514的情况下,fc7能够获得67x67的score map,其数量确实远远多于FCN。 这样会将大小缩小8倍,但这样会改变之后节点的感受。


1、感受野


感觉野计算公式:


RF=() RF-1 ) *stride ) fsize


体感野需要向后推层。 也就是说,“当前该层的节点在前面能看到多少前一层的节点”。 公式中假设当前层的RF=1,其中stride为在前一层的步骤,fsize为过滤器的大小,填充不影响感知范围的大小。 这是递归公式。 要详细说明这个问题,请参阅下图


最左边的图是VGG的原始结构,最下面的层面向前,可以看到4个最上面的层节点。 标签从左到右分别为{1、2、3、4}、{3、4、5、6}、{5、6、7、8},右边是将轮询的stride设为1后的标签。为了解决这个问题,作者选择了Hole算法


2 .霍尔算法


为避免体感野发生变化,某层stride从2变为1后,后一层需要采用hole算法。 具体地说,使连续的连接关系根据hole size大小为skip连接(注意!是将kernel也就是filter加0,而不是featuremap)。 如果pool4的stride从2变为1,则紧接其后的conv5_1,conv5_2和conv5_3的hole size为2。 接下来,如果pool5从2变为1,则在后面的fc6中hole size为4。 另外,由于Hole算法使feature map更dense,所以网络在差分上采样中可以得到很好的结果,不需要学习上采样的参数(FCN中采用了de-convolution ) 作者采用了将缩小8倍的featuremap用线性插值的方法恢复到与原图相同的尺寸的方法。


单击“打开链接”


单击“打开链接”


2、多孔金字塔池化(ASPP )。


为了解决多尺度图像中物体状态不同的问题,作者在SPP的启发下,采用多孔金字塔池化方法。 (有关spp的详细信息,请参阅另一篇博文。)


以vgg16网络为例,ASPP的处理方式如下图所示。 pool5输出的featuremap (处理前的featuremap的大小为28*28*512 ),进行4种rate的不同卷积处理,concate种处理后的结果(方式与spp相同)。


3、全连接条件随机场(CRF )。


弱分类器生成的分割图往往很粗糙,通常使用CRF平滑地去除噪声。 深度学习网络生成的分割图是平滑连续的。 在这种情况下,必须使用短范围CRFs恢复局部结构详细信息,而不是使其更加平滑。 但该方法还不能恢复结构中的细节,作者还采用全连接条件随机场恢复细节,效果较好。


二.深度实验室v3


对应论文是rethinkingatrousconvolutionforsemanticimagesegmentation


深度lab v3的部分采用了resnet网络,网络结构如图所示


基于深度实验室,对以下几点进行了优化。


1、延长esnet网络,即添加bloc

k5,block6,block7 ,都是由block4复制而来。在block4到block7的内部都是三个卷积层,设Muliti_Grid=(r1,r2,r3)为这三个卷积的unit rate,最终的atrous rate = unit rate * corresponding rate。 如output_stride = 16,Muliti_Grid =(1,2,4)时,block4 中的rate=2*(1,2,4) = (2,4,8),block5中的rate=4*(1,2,4)=(1,8,16)。


2、发现使用多孔卷积存在的问题:随着rate的增加,有效特征区域减小,如图所示。


为了解决这一问题,deeplab v3中提出的新的结构。改进的ASPP由一个1*1的卷积和3个3*3,rate=(6,12,18)的卷积组成(如果output_stride为8,则rate是两倍),将这四部分的特征图与gloabal average pooling得到的结果concat,经过一层1*1的卷积后,再送入最终的1*1卷积得到logits。

注:output_stride = input_image_size/output_feature_size


补充知识点:global average pooling (GAP)是将特征图进行整张图的均值池化,形成一个特征点,将这些特征点组成最后的向量。示意图如下:


GAP的真正意义是:对整个网路在结构上做正则化防止过拟合。其直接剔除了全连接层中黑箱的特征,直接赋予了每个channel实际的内别意义。实践证明其效果还是比较可观的,同时GAP可以实现任意图像大小的输入。但是值得我们注意的是,使用gap可能会造成收敛速度减慢。

Global Average Pooling

相对应的代码为:

image_level_features = tf.reduce_mean(net, [1, 2], name=’image_level_global_pool’, keep_dims=True)

image_level_features = slim.conv2d(image_level_features, depth, [1, 1], scope=”image_level_conv_1x1″, activation_fn=None)

image_level_features = tf.image.resize_bilinear(image_level_features, (feature_map_size[1], feature_map_size[2]))



3、修改的训练时小trick有:

(1)batch normalization:在增加的每个module上都运用了batch normalization,因为训练batch normalization的参数需要batch size较大,这里采用了output_stride=16,并在batch size=16的条件下计算batch normalization statistics。

(2)上采样logits:在之前的工作中,都采用将groundtruth下采样8倍后的结果与生成的featuremap做logits,但他们研究发现这种方式会因为细节部分没有反向传播而造成好的标注被剔除。在这篇文章中,作者将生成的featuremap上采样8倍,groundtruth保持不变的方式进行训练。

(3)在训练过程中,采用output_stride = 16, 在inference过程中,采用output_stride = 8

(4)数据增强,变换图片大小(0.5-2倍),翻转

三、Deeplab v3+ 对应论文 Encoder-Decoder with atrous separable convolution for semantic image segmentation

新引入了decoder和Xception来提高网络表现能力并降低计算复杂度

(1)Decoder

在Deeplabv3中,特征图被直接双线性插值上采样16倍变为与输入图像相同大小的图像,这种方法无法获得分割目标的细节。因此本文提出了一种简单有效的decoder如下图。encoder features来自于Deeplabv3(output_stride=16)。encoder features首先双线性插值上采样4倍,然后与网络中产生的空间分辨率相同的低层特征concate。在concate之前,先让低层特征通过一个1*1的卷积核以将channel减少到256,。concate之后,通过几个3*3卷积来重新定义特征,紧接着双线性插值上采样4倍。




(2)Xception

关于Xception介绍请见另一篇博客。

作者修改了Xception模型以适应图像分割任务。作者修改内容如下:层数更多;将所有的最大池化操作换成depthwise separable convolutions with striding;每3个depthwise separable convolutions 后加一个batch normalizaiton和Relu。

    但在作者提出的这个网络中,只在ASPP(带孔卷积模块)和decoder模块采用depthwise separable convolution,以加快计算速度。

点击打开链接


推荐阅读
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • Ihavethefollowingonhtml我在html上有以下内容<html><head><scriptsrc..3003_Tes ... [详细]
  • Python语法上的区别及注意事项
    本文介绍了Python2x和Python3x在语法上的区别,包括print语句的变化、除法运算结果的不同、raw_input函数的替代、class写法的变化等。同时还介绍了Python脚本的解释程序的指定方法,以及在不同版本的Python中如何执行脚本。对于想要学习Python的人来说,本文提供了一些注意事项和技巧。 ... [详细]
author-avatar
蜀南竹海的天空
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有