0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

语义分割算法系统介绍

新机器视觉 来源:新机器视觉 作者:Xavier CHEN 2020-11-05 10:34 次阅读

图像语义分割是图像处理和是机器视觉技术中关于图像理解的重要任务。语义分割即是对图像中每一个像素点进行分类,确定每个点的类别,从而进行区域划分,为了能够帮助大家更好的了解语义分割领域,我们精选知乎文章。作者Xavier CHEN针对语义分割进行系统的介绍,从原理解析到算法发展总结,文章思路清晰,总结全面,推荐大家阅读。

本文作者为Xavier CHEN,毕业于浙江大学,在知乎持续分享前沿文章。

01

前言

之前做了一个语义分割的综述报告,现在把报告总结成文章。这篇文章将分为三个部分:


1.语义分割基本介绍:明确语义分割解决的是什么问题。


2.从FCN到Deeplab v3+:解读语义分割模型的发展,常用方法与技巧


3.代码实战中需要注意的问题。

02

语义分割基本介绍

2.1 概念

语义分割(semantic segmentation) : 就是按照“语义”给图像上目标类别中的每一点打一个标签,使得不同种类的东西在图像上被区分开来。可以理解成像素级别的分类任务。

输入:(H*W*3)就是正常的图片

输出:( H*W*class )可以看为图片上每个点的one-hot表示,每一个channel对应一个class,对每一个pixel位置,都有class数目 个channel,每个channel的值对应那个像素属于该class的预测概率。

figure1

2.2评价准则

1.像素精度(pixel accuracy ):每一类像素正确分类的个数/ 每一类像素的实际个数。

2.均像素精度(mean pixel accuracy ):每一类像素的精度的平均值。

3.平均交并比(Mean Intersection over Union):求出每一类的IOU取平均值。IOU指的是两块区域相交的部分/两个部分的并集,如figure2中 绿色部分/总面积。

4.权频交并比(Frequency Weight Intersection over Union):每一类出现的频率作为权重

figure2

03

从FCN 到Deeplab V3+

语义分割的原理和常用技巧

3.1 FCN

FCN是语义分割的开山之作,主要特色有两点:

1.全连接层换成卷积层

2.不同尺度的信息融合FCN-8S,16s,32s

看详细讲解 推荐:

https://zhuanlan.zhihu.com/p/30195134

3.1.1 全连接层换成卷积层

figure3

以Alexnet的拓扑结构为例

原本的结构:224大小的图片经过一系列卷积,得到大小为1/32 = 7的feature map,经过三层全连接层,得到基于FC的分布式表示。

我们把三层全连接层全都换成卷积层,卷积核的大小和个数如下图中间行所示,我们去掉了全连接层,但是得到了另外一种基于不同channel的分布式表示:Heatmap

举一个例子,我们有一个大小为384的图片,经过替换了FC的Alexnet,得到的是6*6*1000的Heatmap,相当于原来的Alexnet 以stride = 32在输入图片上滑动,经过上采样之后,就可以得到粗略的分割结果。

figure4

3.1.2 不同尺度的信息融合

就像刚刚举的Alexnet的例子,对于任何的分类神经网络我们都可以用卷积层替换FC层,只是换了一种信息的分布式表示。如果我们直接把Heatmap上采样,就得到FCN-32s。如下图

figure5

但是我们知道,随着一次次的池化,虽然感受野不断增大,语义信息不断增强。但是池化造成了像素位置信息的丢失:直观举例,1/32大小的Heatmap上采样到原图之后,在Heatmap上如果偏移一个像素,在原图就偏移32个像素,这是不能容忍的。

见figure6,前面的层虽然语义信息较少,但是位置信息较多,作者就把1/8 1/16 1/32的三个层的输出融合起来了。先把1/32的输出上采样到1/16,和Pool4的输出做elementwose addition , 结果再上采样到1/8,和Pool3的输出各个元素相加。得到1/8的结果,上采样8倍,求Loss。

figure6

3.2 U-net

figure7

U-net用于解决小样本的简单问题分割,比如医疗影片的分割。它遵循的基本原理与FCN一样:

1.Encoder-Decoder结构:前半部分为多层卷积池化,不断扩大感受野,用于提取特征。后半部分上采样回复图片尺寸。

2.更丰富的信息融合:如灰色剪头,更多的前后层之间的信息融合。这里是把前面层的输出和后面层concat(串联)到一起,区别于FCN的逐元素加和。不同Feature map串联到一起后,后面接卷积层,可以让卷积核在channel上自己做出选择。注意的是,在串联之前,需要把前层的feature map crop到和后层一样的大小。

3.3 SegNet

figure 8

在结构上看,SegNet和U-net其实大同小异,都是编码-解码结果。区别在意,SegNet没有直接融合不同尺度的层的信息,为了解决为止信息丢失的问题,SegNet使用了带有坐标(index)的池化。如下图所示,在Max pooling时,选择最大像素的同时,记录下该像素在Feature map的位置(左图)。在反池化的时候,根据记录的坐标,把最大值复原到原来对应的位置,其他的位置补零(右图)。后面的卷积可以把0的元素给填上。这样一来,就解决了由于多次池化造成的位置信息的丢失。

figure 9

3.4 Deeplab V1

figure10

这篇论文不同于之前的思路,他的特色有两点:

1.由于Pooling-Upsample会丢失位置信息而且多层上下采样开销较大,把控制感受野大小的方法化成:带孔卷积(Atrous conv)

2.加入CRF(条件随机场),利用像素之间的关连信息:相邻的像素,或者颜色相近的像素有更大的可能属于同一个class。

3.4.1 Atrous Conv

如右下图片所示,一个扩张率为2的带孔卷积接在一个扩张率为1的正常卷积后面,可以达到大小为7的感受野,但是输出的大小并没有减小,参数量也没有增大。

figure 11

3.4.2 条件随机场CRF

figure 12

3.5 PSPnet

figure13

原理都大同小异,前面的不同level的信息融合都是融合浅层和后层的Feature Map,因为后层的感受野大,语义特征强,浅层的感受野小,局部特征明显且位置信息丰富。

PSPnet则使用了空间金字塔池化,得到一组感受野大小不同的feature map,将这些感受野不同的map concat到一起,完成多层次的语义特征融合。

3.6 Deeplab V2

figure 14

Deeplab v2在v1的基础上做出了改进,引入了ASPP(Atrous Spatial Pyramid Pooling)的结构,如上图所示。我们注意到,Deeplab v1使用带孔卷积扩大感受野之后,没有融合不同层之间的信息。

ASPP层就是为了融合不同级别的语义信息:选择不同扩张率的带孔卷积去处理Feature Map,由于感受野不同,得到的信息的Level也就不同,ASPP层把这些不同层级的feature map concat到一起,进行信息融合。

3.7 Deeplab v3

Deeplab v3在原有基础上的改动是:

1.改进了ASPP模块

2.引入Resnet Block

3.丢弃CRF

figure15

新的ASPP模块:

1.加入了Batch Norm

2.加入特征的全局平均池化(在扩张率很大的情况下,有效权重会变小)。如图14中的(b)Image Pooling就是全局平均池化,它的加入是对全局特征的强调、加强。

在旧的ASPP模块中:我们以为在扩张率足够大的时候,感受野足够大,所以获得的特征倾向于全局特征。但实际上,扩张率过大的情况下,Atrous conv出现了“权值退化”的问题,感受野过大,都已近扩展到了图像外面,大多数的权重都和图像外围的zero padding进行了点乘,这样并没有获取图像中的信息。有效的权值个数很少,往往就是1。于是我们加了全局平均池化,强行利用全局信息。

3.8 Deeplab v3+

figure16

可以看成是把Deeplab v3作为编码器(上半部分)。后面再进行解码,并且在解码的过程中在此运用了不同层级特征的融合。

此外,在encoder部分加入了Xception的结构减少了参数量,提高运行速递。关于Xception如何减少参数量,提高速度。建议阅读论文 : Mobilenet

https://arxiv.org/pdf/1704.04861.pdf

3.9 套路总结

看完这么多论文,会发现他们的方法都差不多,总结为一下几点。在自己设计语义分割模型的时候,遵循一下规则,都是可以涨点的。但是要结合自己的项目要求,选择合适的方法。

1.全卷积网络,滑窗的形式

2.感受野的控制:Pooling+Upsample => Atrous convolution

3.不同Level的特征融合:统一尺寸之后Add / Concat+Conv, SPP, ASPP…

4.考虑相邻像素之间的关系:CRF

5.在条件允许的情况下,图像越大越好。

6.分割某一个特定的类别,可以考虑使用先验知识+ 对结果进行图像形态学处理

7.此外还有一些其他的研究思路:实时语义分割,视频语义分割

责任编辑:xj

原文标题:一文速览!语义分割算法盘点

文章出处:【微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4454

    浏览量

    90747
  • FC
    FC
    +关注

    关注

    1

    文章

    75

    浏览量

    41870
  • 卷积
    +关注

    关注

    0

    文章

    95

    浏览量

    18409

原文标题:一文速览!语义分割算法盘点

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    一种在线激光雷达语义分割框架MemorySeg

    本文提出了一种在线激光雷达语义分割框架MemorySeg,它利用三维潜在记忆来改进当前帧的预测。传统的方法通常只使用单次扫描的环境信息来完成语义分割任务,而忽略了观测的时间连续性所蕴含
    的头像 发表于 11-21 10:48 238次阅读
    一种在线激光雷达<b class='flag-5'>语义</b><b class='flag-5'>分割</b>框架MemorySeg

    深度学习图像语义分割指标介绍

    深度学习在图像语义分割上已经取得了重大进展与明显的效果,产生了很多专注于图像语义分割的模型与基准数据集,这些基准数据集提供了一套统一的批判模型的标准,多数时候我们评价一个模型的性能会从
    发表于 10-09 15:26 164次阅读
    深度学习图像<b class='flag-5'>语义</b><b class='flag-5'>分割</b>指标<b class='flag-5'>介绍</b>

    智慧矿山ai算法系列解析 堵料检测算法功能优势

    智慧矿山AI算法系列中的堵料检测算法的功能优势,了解其重要性和带来的价值
    的头像 发表于 09-28 18:48 356次阅读
    智慧矿山ai<b class='flag-5'>算法系</b>列解析 堵料检测<b class='flag-5'>算法</b>功能优势

    介绍一种自动驾驶汽车中可行驶区域和车道分割的高效轻量级模型

    本文介绍了TwinLiteNet:一种自动驾驶汽车中可行驶区域和车道分割的高效轻量级模型。语义分割是自动驾驶中理解周围环境的一项常见任务。
    发表于 08-03 14:20 851次阅读
    <b class='flag-5'>介绍</b>一种自动驾驶汽车中可行驶区域和车道<b class='flag-5'>分割</b>的高效轻量级模型

    基于深度学习的点云分割的方法介绍

      摘 要:点云分割是点云数据理解中的一个关键技术,但传统算法无法进行实时语义分割。近年来深度学习被应用在点云分割上并取得了重要进展。综述了
    发表于 07-20 15:23 0次下载

    实时语义建图与潜在先验网络和准平面分割

    论文在III-B部分描述了论文方法背后的SLAM管道。论文的2D潜在先验网络(LPN)在III-C中描述。LPN输出融合到论文在III-D中描述的论文新颖的准平面超分段(QPOS)方法分割的地图
    的头像 发表于 07-19 15:55 301次阅读
    实时<b class='flag-5'>语义</b>建图与潜在先验网络和准平面<b class='flag-5'>分割</b>

    遗传算法的基本原理 基于遗传算法的图像分割

      摘要:遗传算法是对生物进化论中自然选择和遗传学机理中生物进化过程的模拟来计算最优解的方法。遗传算法具有众多的优点,如鲁棒性、并行性、自适应性和快速收敛,可以应用在图像处理技术领域中图像分割技术
    发表于 07-18 16:04 1次下载

    CVPR 2023 | 华科&amp;MSRA新作:基于CLIP的轻量级开放词汇语义分割架构

    本文提出了 SAN 框架,用于开放词汇语义分割。该框架成功地利用了冻结的 CLIP 模型的特征以及端到端的流程,并最大化地采用冻结的 CLIP 模型。 简介 本文介绍了一种名为Side
    的头像 发表于 07-10 10:05 585次阅读
    CVPR 2023 | 华科&amp;MSRA新作:基于CLIP的轻量级开放词汇<b class='flag-5'>语义</b><b class='flag-5'>分割</b>架构

    CVPR 2023 中的领域适应: 一种免反向传播的TTA语义分割方法

    TTA 在语义分割中的应用,效率和性能都至关重要。现有方法要么效率低(例如,需要反向传播的优化),要么忽略语义适应(例如,分布对齐)。此外,还会受到不稳定优化和异常分布引起的误差积累的困扰。
    的头像 发表于 06-30 15:13 618次阅读
    CVPR 2023 中的领域适应: 一种免反向传播的TTA<b class='flag-5'>语义</b><b class='flag-5'>分割</b>方法

    PyTorch教程-14.9. 语义分割和数据集

    14.9. 语义分割和数据集¶ Colab [火炬]在 Colab 中打开笔记本 Colab [mxnet] Open the notebook in Colab Colab [jax
    的头像 发表于 06-05 15:44 412次阅读
    PyTorch教程-14.9. <b class='flag-5'>语义</b><b class='flag-5'>分割</b>和数据集

    PyTorch教程14.9之语义分割和数据集

    电子发烧友网站提供《PyTorch教程14.9之语义分割和数据集.pdf》资料免费下载
    发表于 06-05 11:10 0次下载
    PyTorch教程14.9之<b class='flag-5'>语义</b><b class='flag-5'>分割</b>和数据集

    使用LabVIEW实现 DeepLabv3+ 语义分割含源码

    使用LabVIEW实现 DeepLabv3+ 语义分割含源码
    的头像 发表于 05-26 10:23 581次阅读
    使用LabVIEW实现 DeepLabv3+ <b class='flag-5'>语义</b><b class='flag-5'>分割</b>含源码

    模型在学习可转移的语义分割表示方面的有效性

    当前语义分割任务存在一个特别常见的问题是收集 groundtruth 的成本和耗时很高,所以会使用预训练。例如监督分类或自监督特征提取,通常用于训练模型 backbone。基于该问题,这篇文章介绍的方法被叫做 decoder d
    的头像 发表于 05-18 11:35 553次阅读
    模型在学习可转移的<b class='flag-5'>语义</b><b class='flag-5'>分割</b>表示方面的有效性

    AI算法说-图像分割

    语义分割是区分同类物体的分割任务,实例分割是区分不同实例的分割任务,而全景分割则同时达到这两个目
    的头像 发表于 05-17 14:44 872次阅读
    AI<b class='flag-5'>算法</b>说-图像<b class='flag-5'>分割</b>

    语义分割标注:从认知到实践

    随着人工智能技术的不断发展,语义分割标注已经成为计算机视觉领域的一个热门话题。语义分割是指将图像中的每个像素分配给一个预定义的语义类别,以便
    的头像 发表于 04-30 21:20 767次阅读