什么是语义分割_多模态语义理解

什么是语义分割_多模态语义理解原文地址:SegNet复现详解:http://mi.eng.cam.ac.uk/projects/segnet/tutorial.html 实现代码:    github                       TensorFlow简介:        SegNet是Cambridge提出旨在解决自动驾驶或者智能机器人的图像语义分割深度网络,开放源码,基于caffe框架。SegNet基于FCN…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

原文地址:SegNet

复现详解:http://mi.eng.cam.ac.uk/projects/segnet/tutorial.html 

实现代码:    github    

                   TensorFlow

简介:

        SegNet是Cambridge提出旨在解决自动驾驶或者智能机器人的图像语义分割深度网络,开放源码,基于caffe框架。SegNet基于FCN,修改VGG-16网络得到的语义分割网络,有两种版本的SegNet,分别为SegNetBayesian SegNet,同时SegNet作者根据网络的深度提供了一个basic版(浅网络)。


网络框架:

什么是语义分割_多模态语义理解

        SegNet和FCN思路十分相似,只是Encoder,Decoder(Upsampling)使用的技术不一致。此外SegNet的编码器部分使用的是VGG16的前13层卷积网络,每个编码器层都对应一个解码器层,最终解码器的输出被送入soft-max分类器以独立的为每个像素产生类概率。

        左边是卷积提取特征,通过pooling增大感受野,同时图片变小,该过程称为Encoder,右边是反卷积(在这里反卷积与卷积没有区别)与upsampling,通过反卷积使得图像分类后特征得以重现,upsampling还原到图像原始尺寸,该过程称为Decoder,最后通过Softmax,输出不同分类的最大值,得到最终分割图。


Encoder

        Encoder过程中,通过卷积提取特征,SegNet使用的卷积为same卷积,即卷积后保持图像原始尺寸;在Decoder过程中,同样使用same卷积,不过卷积的作用是为upsampling变大的图像丰富信息,使得在Pooling过程丢失的信息可以通过学习在Decoder得到。SegNet中的卷积与传统CNN的卷积并没有区别。

什么是语义分割_多模态语义理解

Pooling&Upsampling(decoder):

        Pooling在CNN中是使得图片缩小一半的手段,通常有max与mean两种Pooling方式,下图所示的是max Pooling。max Pooling是使用一个2×2的filter,取出这4个权重最大的一个,原图大小为4×4,Pooling之后大小为2×2,原图左上角粉色的四个数,最后只剩最大的6,这就是max的意思。 

        在SegNet中的Pooling与其他Pooling多了一个index功能(该文章亮点之一),也就是每次Pooling,都会保存通过max选出的权值在2×2 filter中的相对位置,对于上图的6来说,6在粉色2×2 filter中的位置为(1,1)(index从0开始),黄色的3的index为(0,0)。同时,从网络框架图可以看到绿色的pooling与红色的upsampling通过pool indices相连,实际上是pooling后的indices输出到对应的upsampling(因为网络是对称的,所以第1次的pooling对应最后1次的upsamping,如此类推)。 
        Upsamping就是Pooling的逆过程(index在Upsampling过程中发挥作用),Upsamping使得图片变大2倍。我们清楚的知道Pooling之后,每个filter会丢失了3个权重,这些权重是无法复原的,但是在Upsamping层中可以得到在Pooling中相对Pooling filter的位置。所以Upsampling中先对输入的特征图放大两倍,然后把输入特征图的数据根据Pooling indices放入,下图所示,Unpooling对应上述的Upsampling,switch variables对应Pooling indices。 

这里写图片描述

        对比FCN可以发现SegNet在Unpooling时用index信息,直接将数据放回对应位置,后面再接Conv训练学习。这个上采样不需要训练学习(只是占用了一些存储空间)。反观FCN则是用transposed convolution策略,即将feature 反卷积后得到upsampling,这一过程需要学习,同时将encoder阶段对应的feature做通道降维,使得通道维度和upsampling相同,这样就能做像素相加得到最终的decoder输出. 

什么是语义分割_多模态语义理解

Deconvolution:

        pooling&Upsampling示意图中右边的Upsampling可以知道,2×2的输入,变成4×4的图,但是除了被记住位置的Pooling indices,其他位置的权值为0,因为数据已经被pooling走了。因此,SegNet使用的反卷积在这里用于填充缺失的内容,因此这里的反卷积与卷积是一模一样,在网络框架图中跟随Upsampling层后面的是也是卷积层。

Output:

        在网络框架中,SegNet,最后一个卷积层会输出所有的类别(包括other类),网络最后加上一个softmax层,由于是end to end, 所以softmax需要求出所有每一个像素在所有类别最大的概率,最为该像素的label,最终完成图像像素级别的分类。

Bayesian SegNet

        可以知道,在SeNet中最后每个像素都会对每一类的概率进行计算,再通过Softmat输出概率最大的一个,然后这个像素点就认为是这一类别,对应的概率就是这一像素属于该类的概率。这种由原因到结果的推导,可以称为先验概率,任何先验概率使用都会出现一个问题,不能知道这一结果的可靠性,即便先验概率非常大,但是对于不同的样本,先验概率无法保证一定正确。正是如此,才需要有从结果寻找原因的贝叶斯概率,即后验概率,它能给出结果的可信程度,即置信度。Bayesian SegNet正是通过后验概率,告诉我们图像语义分割结果的置信度是多少。Bayesian SegNet如下图所示。 

什么是语义分割_多模态语义理解

        对比两框架图,并没有发现Bayesian SegNet与SegNet的差别,事实上,从网络变化的角度看,Bayesian SegNet只是在卷积层中多加了一个DropOut层,其作用后面解释。最右边的两个图Segmentation与Model Uncertainty,就是像素点语义分割输出与其不确定度(颜色越深代表不确定性越大,即置信度越低)。

DropOut

        在传统神经网络中DropOut层的主要作用是防止权值过度拟合,增强学习能力。DropOut层的原理是,输入经过DropOut层之后,随机使部分神经元不工作(权值为0),即只激活部分神经元,结果是这次迭代的向前和向后传播只有部分权值得到学习,即改变权值。 

因此,DropOut层服从二项分布,结果不是0,就是1,在CNN中可以设定其为0或1的概率来到达每次只让百分之几的神经元参与训练或者测试。在Bayesian SegNet中,SegNet作者把概率设置为0.5,即每次只有一半的神经元在工作。因为每次只训练部分权值,可以很清楚地知道,DropOut层会导致学习速度减慢。

Gaussian process & Monte Carlo Dropout Sampling

        参考论文:Dropout as a Bayesian approximation: Representing model uncertainty in deep learning 
这里只说明高斯过程与蒙特卡罗抽样的作用,不详细解释原理。 高斯过程是指任意有限个随机变量都服从联合高斯分布,同时只需要知道均值与协防差就能够确定一个高斯过程,所以高斯过程可以用于从有限维到无限维的回归问题,从已知高斯分布,增加新的随机变量分布可以求出新的高斯分布,根据新的分布可以求出其均值与方差。 

        如何确定一个高斯分布?需要多次采样才能确定一个分布。蒙特卡罗抽样告诉我们可以通过设计一个试验方法将一个事件的频率转化为概率,因为在足够大的样本中,事件发生的频率会趋向事件发生的概率,因此可以很方便地求出一个未知分布。通过蒙特卡罗抽样,就可以求出一个新分布的均值与方差,这样使用方差大小就可以知道一个分布对于样本的差异性,我们知道方差越大差异越大。

Use Bayesian SegNet

        在Bayesian SegNet中通过DropOut层实现多次采样,多次采样的样本值为最后输出,方差最为其不确定度,方差越大不确定度越大,如图6所示,mean为图像语义分割结果,var为不确定大小。所以在使用Bayesian SegNet预测时,需要多次向前传播采样才能够得到关于分类不确定度的灰度图,Bayesian SegNet预测如下图所示。 

这里写图片描述

第一行为输入图像,第二行为ground truth,第三行为Bayesian SegNet语义分割输出,第四行为不确定灰度图。可以看到, 
1.对于分类的边界位置,不确定性较大,即其置信度较低。 
2.对于图像语义分割错误的地方,置信度也较低。 
3.对于难以区分的类别,例如人与自行车,road与pavement,两者如果有相互重叠,不确定度会增加。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/171664.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java中垃圾回收机制_垃圾回收机制算法

    java中垃圾回收机制_垃圾回收机制算法一、如何确定某个对象是“垃圾”?这一小节先了解一个最基本的问题:如果确定某个对象是“垃圾”?既然垃圾收集器的任务是回收垃圾对象所占的空间供新的对象使用,那么垃圾收集器如何确定某个对象是“垃圾”?通过什么方法判断一个对象可以被回收了。在java中是通过引用来和对象进行关联的,也就是说如果要操作对象,必须通过引用来进行。那么很显然一个简单的办法就是通过引用计数来判断一个对象是否可以被回收。不失…

    2022年10月13日
    0
  • android无线投屏到电视盒子,【沙发管家】教你如何把电脑视频投屏到智能电视/电视盒子上!…[通俗易懂]

    原标题:【沙发管家】教你如何把电脑视频投屏到智能电视/电视盒子上!多屏互动是个什么东东呢?平时喜欢折腾的童鞋可能会了解一点,小编用通俗的话给大家解释下,多屏互动就是通过软件、协议,在同系统或者不同系统的智能硬件推送或者镜像播放。好吧,也不算太通俗。再解释一下,例如WINDOWS系统投射(镜像)至安卓(手机、平板、电视),安卓手机推送内容或者屏幕镜像至安卓端(智能机顶盒、电视)。其实目前多屏互动的精…

    2022年4月11日
    96
  • 树莓派连接wifi 设置静态ip

    树莓派连接wifi 设置静态ipsudonano/etc/dhcpcd.conf,在文件结尾添加如下代码:interfacewlan0staticip_address=内网ip地址/24staticrouters=内网网关ip地址staticdomain_name_servers=114.114.114.114#自定义dnssudoreboot…

    2022年5月9日
    89
  • 让Web页面中的编辑器支持黏贴或直接拖拽来添加图片「建议收藏」

    让Web页面中的编辑器支持黏贴或直接拖拽来添加图片「建议收藏」让Web页面中的编辑器支持黏贴或直接拖拽来添加图片

    2022年4月21日
    48
  • 打造持续学习型组织

    本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2015/06/continuous-learning-organization软件开发通常被认为是知识密集型活动,因此各个组织都会寻求能够促进持续学习的手段与方式。MarcinFloryan认为“我们需要学习型组织,并且从个体学习开始”。不过,个体学习有时会很困难,大规模的个体学习变

    2022年4月13日
    35
  • 科研方法与学术论文写作_科技论文写作与发表教程第八版pdf

    科研方法与学术论文写作_科技论文写作与发表教程第八版pdf导读:本文推荐四个学术英语写作用到的网站/插件,让你的表达更地道,更多样,减少错误。它们分别是:AcademicPhrasebank,Linggle,collocaid,grammely。1.AcademicPhrasebank网址:http://www.phrasebank.manchester.ac.uk/这个网站提供论文各部分的模版,如介绍怎么写,总结怎么写,如何描述方法,报告细节等。比如现在需要在文章中举例,可以点击GivingExamples,点击页面显示的各项内容.

    2022年10月29日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号