【技术综述】基于弱监督深度学习的图像分割方法综述​_image segmentation with a bounding box prior-程序员宅基地

技术标签: 图像处理  

文章首发于微信公众号《有三AI》

【技术综述】基于弱监督深度学习的图像分割方法综述​

本文是基于弱监督的深度学习的图像分割方法的综述,阐述了弱监督方法的原理以及相对于全监督方法的优势,首发与《有三AI》

作者 | 孙叔桥 编辑 | 言有三 

 

1 基础概念

生活中,我们和周围的事物都是有“标签”的,比如人、杯子、天空等等。在不同的场景下,相同的事物可能对应了不同的标签,比如长在地上的一片小草称为“草地”,长在花盆里的很可能属于“盆栽”,画在画中的又属于“装饰”。

如果把整幅图像比作我们生活的世界,那么具有相同“标签”的像素就组成了我们和周围的事物。图像分割的任务就是给这些像素标注它们所对应的“标签”,而这个标签通常取决于这个像素所属于的“整体”的类别。比如下图中就被分割成了天空、植被、草地和大象。

当然,与生活中相似,根据分类方式的不同,一个像素可能属于多种类别。比如下图中组成椅子的像素,按照整体应标注为“椅子”,细分下又属于“椅背”,按照材料分又属于“木头”。

根据方法和任务的不同,图像分割可以分成很多类。比如在只关心图像主要内容的时候,类别可能只有两类:前景(关心的内容)和背景(除前景之外的其他部分,即不关心的内容)。或者只关心可数的目标,比如行人自行车杯子等等;或只关心不可数目标,比如天空草地海洋等。由此,我们给出了下面两种可能的分类方式:

 - 按模型分类:根据实现分割的手段,图像分割可以大致分为传统方法基于深度学习的方法。前者依靠纯数学公式推导实现分割,而后者则依靠深度学习结构(如神经网络、随机树等)实现分割。

 - 按任务分类:根据图像分割的具体任务,又可以将其分为语义分割(semantic segmentation)、实例分割(instancesegmentation)与全景分割(panoptic segmentation)。

如上图所示,语义分割是比较容易的一种,其要求的是对所有像素点进行类别标注,比如天空、车、杯子等,但是不区分相同类别的个体,即所有属于“杯子”的像素点都被标注成相同的标签。实例分割比语义分割困难一些,其不仅要求要标注像素点,还要区分相同类别的不同实例,比如“这个杯子”和“那个杯子”。

但是实例分割受限其要求,通常都是对可数的物体进行分割,而在不可数内容上(比如草地、马路等),要么没有分割,要么属于一个类别。当其将属于某一个不可数类别的像素点都标注成相同标签,而所有属于可数类别的像素点按实例标注时,就成为了所谓的全景分割(如下图所示)。

本文中我们主要介绍基于深度学习的图像分割方法,包括语义分割、实例分割和全景分割。

 

2 为什么要弱监督学习 

像前面说过的,图像分割的任务是对每个像素都进行标注。因此,在深度学习方法中,直观上就需要所有的像素都有真值标注。不难看出,这个要求下,真值标注的生成是极度耗时耗力的,尤其是以人工标注的方式。比如,CityScapes数据库,在精标条件下,一张图片的标注就需要1.5个小时。如此一来,数据库标注的成本可想而知。

基于此,许多研究人员就想到用弱监督的方式进行网络训练,从而降低标注成本。所谓弱监督,就是用更容易获得的真值标注替代逐像素的真值标注,常见的输入有image-level tags和bounding boxes。下图给出的是这两种标注的示例。

image-level tag:一张图片对应一个标签。如上图,标签为“猫”。

bounding box:即用一个矩形框(2D)或长方体(3D)给出目标存在的位置及标签。

可见,这两种标注的获得比逐个像素标注容易太多。具体来说,一个bounding box的标注只需要7秒,而一个image-level tag的标注只需要1秒,按照这种方式,CityScapes数据库的标注时间将缩短30倍

在弱监督算法中,有的网络是直接利用这些标注作为输入;也有的网络是在这些标注的基础上生成部分像素点的标注,再进行全监督训练。但无论哪种方式,都可见直接降低了标注成本。

 

3 常用的弱监督分割算法

说完了基本概念和必要性,下面我们从输入的角度具体聊一下常用的弱监督分割算法有哪些。在分割任务中,常用的分割网络有AlexNetVGGGoogleNetResNetReNet等,且通常借助迁移学习和必要的数据处理及扩张实现较好的分割。这些方法和结构在弱监督分割算法中也非常常见。具体而言,分割任务中常用的方法有译码器(decoder)的变体;整合上下文信息的方法,如条件随机场、扩张卷积、多尺度估计、特征融合等。

下图就是一个典型的编码器-解码器结构。

考虑到关于分割算法的综述有许多,本文着重介绍弱监督分割算法中特殊的处理方法。针对不同任务需求,每种输入下的算法都按照语义分割、实例分割进行归纳(前景分割被归入语义分割中);而全景分割要同时完成两种分割任务,因此单独列出来。总体上,目前弱监督的语义分割研究成果比较多,但是实例分割与全景分割则要少很多。由于论文数量庞大,这里每种场景仅列出一篇有代表性的论文作为范例。

1. 基于image-level tags的分割算法

Image-level tags已经在前文给出了示例,可以看出这一种标注中主要包含的是相同类别之间的共性,但无法区分实例(比如所有的车都会被标注成“车”,而不会区分颜色、形状、大小、牌子等等)。因此基于image-level tags的算法大多用于语义分割,或是具有语义分割功能的实例分割或全景分割算法。下面就按照分类介绍部分基于image-level tags的深度学习分割算法。

(1) 《Built-in Foreground/Background Prior for Weakly-Supervised Semantic Segmentation》

这篇论文中提出的方法,是利用目标标签作为语义分割训练的先验,从而实现更高精度的分割效果。为了实现这个目的,这个方法中构建了一个预训练网络,其作用是给出前景像素点信息,而忽略背景信息。

下图是具体的网络结构。给定输入图像,网络经过了一个典型的编码器-解码器结构,随后通过一个条件随机场(CRF)生成最后的mask。整个网络的训练只需要image-level tags就可以。

带有内置前背景先验的弱监督网络结构,图片来源于论文。

上图是编码器-解码器神经网络部分的完整结构,图片来源于论文。该网络结构是从VGG-16网络结构来的,感受野128,步长8。

(2) 《Exploiting saliency for object segmentation from image level labels》

此前的研究已经证明,可以从image-level labels中提取不同目标的信息(如下图所示)。

热度图(heatmap),图片来源于论文。

但是从上面的热度图也可以看出,如果目标之间存在遮挡,那么在没有额外信息的情况下,获取完整的目标就很困难了(固有的不适定问题)。

出于这个考虑,这篇论文中提出了一个可以提供辅助信息的模型。整个网络的训练只用到了image-level labels和saliency masks。下图是标注和论文结果。

下图是具体的网络结构,可以看出,辅助信息与分割网络是并行的,共同用于计算最后的损失。图片来源于论文。

2. 基于bounding boxes的分割算法

Bounding boxes是目标识别中常用的一种标注方式。现在许多算法已经能够实现很高精度的bounding boxes检测了,因此COCOChallenge等许多比赛已经取消了bounding boxes为输出的部分,而是更多关注于像素级的分割任务。

尽管如此,bounding boxes作为一种能够有效区分不同实例的标注方式,既包含了语义信息,也包含了实例信息。因此,boundingboxes被广泛应用于分割任务中,尤其是实例分割与全景分割。

(1) 语义分割

《Image Segmentation with A Bounding Box Prior》

这篇论文放在这里作为一个基准,是微软2009年提出的一种基于传统手段的前景分割方法。在此之前,尽管bounding box被广泛利用与图像分割任务中,但是大多数算法只是用其排除外部信息或有时用于初始化能量函数。

这篇论文中提出bounding box可以作为一种强大的拓扑先验(topological prior),既可以防止模型过度萎缩(分割小于前景目标的区域),也可以确保bounding box就足够用于分割任务了。论文用包含在全局能量最小化框架内的强约束表达此先验,从而构造一个NP-hard的完整程序。

下图左边是没有先验的分割结果,右边是有先验的分割结果。图片来源于论文。   

下面的公式是将tightness prior融入图割(gruph cut framework)而得到的integer program(IP):

论文随后还介绍了一种可能的优化策略,包括linear relaxation和一种新的graph cut算法(称作pinpointing)。后者既可以作为fractional LP solution的舍入法(rounding method,效果比阈值方法好),也可以作为独立的快速启发式搜索(fast standaloneheuristic)。下图是pinpointing的结果,图片来源于论文。

下图是论文中的算法与其他算法的实验结果比较,图片来源于论文。可以看出,在人的头部附近和植物枝干附近,这篇论文中的算法具有明显优势。

(2) 实例分割

《DeepCut: Object Segmentation from Bounding Box Annotations using Convolutional Neural Networks》

这篇论文提出了一种给定弱标注的实例分割方法。其将微软研究院提出的GrabCut进行扩展,可以实现给定bounding boxes的神经网络分类器训练。该论文将分类问题视为在稠密连接的条件随机场下的能量最小化问题,并通过不断迭代实现实例分割。

论文中还提出了一些DeepCut方法的变体,并将它们与其它算法在弱监督条件下进行了比较。值得注意的是,该算法在解决大脑和肺的两个问题上已经得到了实验,精度还不错(使用的数据库是fetal magnetric resonance dataset)。下图是基本的DeepCut网络结构,图片来源于论文。

下图是实验结果,图片来自于论文。

3. 全景分割

《Weakly- and Semi-Supervised Panoptic Segmentation》

这篇文章介绍了一种基于弱监督的全景分割(实例分割加语义分割)的网络结构,目前在CityScapes上面语义分割与实例分割都是第一。论文中其实主要提出的是一种可以通过image-level tags和bounding boxes生成像素点标注的方法,当然这个方法无法标注全部的像素点的真值,但是按照前文所提到的理论,这些像素点的个数已经足够支撑网络的训练。同时,真值会随着网络结构的不断训练,逐渐完善。下图是真值标注的完善过程,图片来源于论文。

结果示例,图片来源于论文。

论文效果,图片来源于论文。

 

4 总结一下

通过这篇文章,我们了解了什么是图像分割及其种类,什么是图像分割中的弱监督训练,以及常用的方法。简而言之,弱监督训练就是用更少、更容易获得的真值标注,替代逐像素的真值标注,从而在降低标注成本的基础上,维持较高水平的分割。

目前,随着分割领域的不断发展,语义分割与实例分割逐渐融合,全景分割正在成为新的主流趋势。至于如何用好弱监督标签,怎么实现高精度的全景分割,就靠各位了。

 

参考文献

[1] A. Bansal, X. Chen, B. C. Russell, et al. Pixelnet: Representation of the pixels, by the pixels, and for the pixels[C].CoRR,2017.

[2] Saleh F., Aliakbarian M.S., Salzmann M., et al. Built-in Foreground/Background Prior for Weakly-Supervised SemanticSegmentation[C]. ECCV, 2016, vol 9912.

[3] S. J. Oh, R. Benenson, A. Khoreva, et al. Exploiting saliency for object segmentation from image level labels[C]. CVPR,2017. 

[4] V. S. Lempitsky, P. Kohli, C. Rother, et al. Image

segmentation with a bounding box prior[C]. ICCV 2009: 277–284.

[5] M. Rajchl, M. C. H. Lee, O. Oktay, et al. Deepcut: Object segmentation from bounding box annotations usingconvolutional neural networks[J]. IEEE transactions on Medical Imaging, 2017, 36(2): 674–683. 

[6] Q. Li, A. Arnab, and P. H. S. Torr. Weakly- and semi-supervised panoptic segmentation[C]. ECCV, 2018: 106–124.

[7] C. Rother, V. Kolmogorov, and A. Blake. Grabcut: interactive foreground extraction using iterated graph cuts[J]. ACMTransactions on Graphics, 2004, 23(3): 309–314. 、

 

2019年有三AI培养计划已经开始,一个季度一期,系统性进阶为深度学习算法工程师,不妨看看。

重新解释“季”划 & 为什么我不是在搞培训

 

另外本周知乎Live,欢迎来看

转载文章请后台联系

侵权必究

感谢各位看官的耐心阅读,不足之处希望多多指教。后续内容将会不定期奉上,欢迎大家关注有三公众号 有三AI

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/hacker_long/article/details/88677087

智能推荐

Springboot/java/node/python/php基于springboot+vue手机售后管理系统【2024年毕设】-程序员宅基地

文章浏览阅读779次,点赞19次,收藏24次。springboot微信小程序的小疾病问诊服务系统的设计与实现。springboot基于spring的物业管理系统的设计与实现。springboot基于Java的高校学生请假系统。ssm基于Android的购物商场APP设计与实现。springboot基于微信小程序的智慧校园系统。ssm基于Android的英语词典的设计与开发。ssm基于SSM+Vue的学生实践管理平台开发。ssm基于android的企业员工考勤系统。ssm基于web的暗香小店系统的设计与实现。ssm基于Web的高等学校公费医疗管理系统。

css中hover属性的使用技巧_css hover的用法-程序员宅基地

文章浏览阅读2.3w次,点赞15次,收藏63次。hover属性用不同的书写方式,来改变不同关系的元素样式。元素:hover 表示聚焦后改变自己元素:hover 元素 表示聚焦后改变其子元素元素:hover + 元素 表示聚焦后改变其指定的“亲兄弟”(条件是该兄弟元素与其相邻)元素元素:hover ~ 元素 表示聚焦后改变其指定的兄弟元素,两个元素相不相邻都行。示例:.first:hover {color: white;}/* 聚焦我改变自己 */.three:hover .three-son {font-size: 20px._css hover的用法

coursera-斯坦福-机器学习-吴恩达-第8周笔记-无监督学习_pca反向压缩-程序员宅基地

文章浏览阅读6k次,点赞3次,收藏15次。coursera-斯坦福-机器学习-吴恩达-第8周笔记-无监督学习coursera-斯坦福-机器学习-吴恩达-第8周笔记-无监督学习1聚类算法clutering1聚类算法简介2K-means21kmeans的目标函数22随机初始化23选择类别数3考试quiz维数约减 dimensionality reduction1数据压缩2数据可视化3维度约简-主成分分析法PCA1 PCA_pca反向压缩

vim插件安装及常用技巧_bxbx.vim-程序员宅基地

文章浏览阅读5.2k次。一、插件安装Vundle是vim的一个插件管理器, 同时它本身也是vim的一个插件。插件管理器用于方便、快速的安装、删除、Vim更新插件。mkdir -p ~/.vim/bundlegit clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim管理器安装完成后,vim ~/.vimrc命令创建.vimrc文件syntax on" tab宽度和缩进同样设置为4set tabstop=4set softta_bxbx.vim

java.lang.ClassNotFoundException:如何解决-程序员宅基地

文章浏览阅读7.2w次,点赞10次,收藏41次。本文适用于当前面临java.lang.ClassNotFoundException挑战的Java初学者。 它将为您提供此常见Java异常的概述,这是一个示例Java程序,可支持您的学习过程和解决策略。 如果您对与更高级的类加载器相关的问题感兴趣,我建议您复习有关java.lang.NoClassDefFoundError的文章系列,因为这些Java异常密切相关。 java.lang..._java.lang.classnotfoundexception:

串口通信数据帧_一帧数据-程序员宅基地

文章浏览阅读1.2k次,点赞9次,收藏17次。不同的设备间建立连接往往需要通信,而串口通信是十分常用的一种。UART串口通信需要两根线来实现,一根用于串口发送,另外一更用于串口接收。UART串口发送或者接收过程中一帧数据包括1位起始位、8位数据位、1位停止位,为了提高数据的可靠性可以在停止位前加上1位奇偶校验位。串口通信虽然十分简单,但是在不同设备间发送的数据往往不止1个字节,往往需要多个字节组成的数据包。当我们按照数据包发送时我们需要考虑到以及,因此我们可以采用定义数据帧的方式解决上述两个问题。_一帧数据

随便推点

Android四大组件之Activity--管理方式_android activityrecord中的activitytype-程序员宅基地

文章浏览阅读1.7k次。1. 概览Activity的管理有静态和动态两层涵义: 静态是指Activity的代码组织结构,即Application中声明的Activity的集合,这些Activity被组织在一个APK中,有特定的包名。 在编写应用程序时,Activity对应到用户界面,它定义了用户界面的布局、交互行为、启动方式等,最重要的,是Activity的生命周期函数。 在应用进程看来,只需要按照Android定义的规范,实现生命周期函数的具体逻辑即可,所有的用户界面都遵循同一个规范。 编写完一个应用程序的所有用户界面_android activityrecord中的activitytype

[LINUX]sed查找不包含某个字符串的行,并进行替换_sed不包含字符串-程序员宅基地

文章浏览阅读5.5k次,点赞3次,收藏7次。sed 查找不包含某个特性 sed -i "/src/!s/xxx/bbb/g" xxx将不包含src的行中的xxx替换为bbb_sed不包含字符串

问题解决:shared_ptr Assertion px != 0 failed 及debug经验分享_typename boost::detail::sp_dereference<t>::type bo-程序员宅基地

文章浏览阅读6.8k次,点赞11次,收藏18次。问题解决:shared_ptr Assertion px != 0 failed及debug经验分享问题详细描述:/usr/include/boost/smart_ptr/shared_ptr.hpp:646: typename boost::detail::sp_dereference::type boost::shared_ptr::operator*() const [with T = pcl::PointCloudpcl::pointxyz; typename boost::detail::sp_typename boost::detail::sp_dereference::type boost::shared_ptr::operat

看不见的“网” ,一文读懂阿里云基础设施网络_阿里云网络基线理解-程序员宅基地

文章浏览阅读553次。编者按:在这个万物智联的时代,无论是在线网络购物,还是网络强国、数字中国建设,都离不开一张“看不见的网”——基础设施网络。2009年,首届双11每秒交易订单创建峰值400;2021年,双11每秒交易订单创建峰值58.3万,12年交易数字量猛增的背后,是阿里云在庞大分布式系统上计算和IO能力的飞跃,更离不开阿里云基础设施底层网络技术的支撑。图|阿里云全球基础设施网络系统作为阿里云基础设施的重要组成部分,阿里云基础设施网络团队负责整个阿里云全球基础设施网络,包括大规模高性能数据中心网络,全球数据中心互联_阿里云网络基线理解

TCP/UDP常见端口参考_怎么查看端口映射的是tcp还是udp-程序员宅基地

文章浏览阅读1.7k次。端口列表一览端口号码 / 层 名称 注释 1 tcpmux TCP 端口服务多路复用 5 rje 远程作业入口 7 echo Echo 服务 9 discard 用于连接测试的空服务 11 systat 用于列举连接了的端口的系统状态 13 daytime 给请求主机发送日期和时间 17 qotd 给连接了的主机发送每日格言 18 msp 消息发送协议 19 _怎么查看端口映射的是tcp还是udp

推荐文章

热门文章

相关标签