热门标签 | 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,以加快计算速度。

点击打开链接


推荐阅读
  • 探索CNN的可视化技术
    神经网络的可视化在理论学习与实践应用中扮演着至关重要的角色。本文深入探讨了三种有效的CNN(卷积神经网络)可视化方法,旨在帮助读者更好地理解和优化模型。 ... [详细]
  • 本文详细介绍如何在SSM(Spring + Spring MVC + MyBatis)框架中实现分页功能。包括分页的基本概念、数据准备、前端分页栏的设计与实现、后端分页逻辑的编写以及最终的测试步骤。 ... [详细]
  • 本文介绍了如何通过安装和配置php_uploadprogress扩展来实现文件上传时的进度条显示功能。通过一个简单的示例,详细解释了从安装扩展到编写具体代码的全过程。 ... [详细]
  • Hadoop MapReduce 实战案例:手机流量使用统计分析
    本文通过一个具体的Hadoop MapReduce案例,详细介绍了如何利用MapReduce框架来统计和分析手机用户的流量使用情况,包括上行和下行流量的计算以及总流量的汇总。 ... [详细]
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • 本文探讨了如何使用Scrapy框架构建高效的数据采集系统,以及如何通过异步处理技术提升数据存储的效率。同时,文章还介绍了针对不同网站采用的不同采集策略。 ... [详细]
  • 使用Python构建网页版图像编辑器
    本文详细介绍了一款基于Python开发的网页版图像编辑工具,具备多种图像处理功能,如黑白转换、铅笔素描效果等。 ... [详细]
  • SSE图像算法优化系列三:超高速导向滤波实现过程纪要(欢迎挑战)
    自从何凯明提出导向滤波后,因为其算法的简单性和有效性,该算法得到了广泛的应用,以至于新版的matlab都将其作为标准自带的函数之一了&#x ... [详细]
  • 本周三大青年学术分享会即将开启
    由雷锋网旗下的AI研习社主办,旨在促进AI领域的知识共享和技术交流。通过邀请来自学术界和工业界的专家进行在线分享,活动致力于搭建一个连接理论与实践的平台。 ... [详细]
  • 知识图谱与图神经网络在金融科技中的应用探讨
    本文详细介绍了融慧金科AI Lab负责人张凯博士在2020爱分析·中国人工智能高峰论坛上的演讲,探讨了知识图谱与图神经网络模型如何在金融科技领域发挥重要作用。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • 本文总结了一次针对大厂Java研发岗位的面试经历,探讨了面试中常见的问题及其背后的原因,并分享了一些实用的面试准备资料。 ... [详细]
  • 本文源自Coursera平台吴恩达教授的深度学习课程,重点探讨了卷积神经网络(ConvNets)从二维图像处理向一维信号及三维数据处理的拓展应用。 ... [详细]
  • PHP函数的工作原理与性能分析
    在编程语言中,函数是最基本的组成单元。本文将探讨PHP函数的特点、调用机制以及性能表现,并通过实际测试给出优化建议。 ... [详细]
  • 自动驾驶中的9种传感器融合算法
    来源丨AI修炼之路在自动驾驶汽车中,传感器融合是融合来自多个传感器数据的过程。该步骤在机器人技术中是强制性的,因为它提供了更高的可靠性、冗余性以及最终的 ... [详细]
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社区 版权所有