深度学习500问——Chapter09:图像分割(4)

文章目录

9.10 Mask-RCNN

9.10.1 Mask-RCNN 的网络结构示意图

9.10.2 RCNN行人检测框架

9.10.3 Mask-RCNN 技术要点

9.11 CNN在基于弱监督学习的图像分割中的应用

9.11.1 Scribble 标记

9.11.2 图像级别标记

9.11.3 DeepLab+bounding box+image-level labels

9.11.4 统一的框架

9.11.5 弱监督分割最新进展


9.10 Mask-RCNN

9.10.1 Mask-RCNN 的网络结构示意图

其中黑色部分为原来的Faster-RCNN,红色部分为在Faster 网络上的修改:

1)将ROI Pooling层替换成了 ROIAlign;

2)添加并列的FCN层(Mask层);

先来概述一下 Mask-RCNN的几个特点(来自于Paper Mask R-CNN 的Abstract):

1) 在边框识别的基础上添加分支网络,用于语义Mask 识别;

2)训练简单,相对于 Faster仅增加一个小的 Overhead,可以跑到 5FPS;

3)可以方便的扩展到其他任务,比如人的姿态估计等;

4)不借助Trick,在每个任务上,效果优于目前所有的 single-model entries;包括 COCO 2016 的Winners。

9.10.2 RCNN行人检测框架

来看下后面两种RCNN方法与Mask结合的示意图:

图中灰色部分是原来的RCNN结合 ResNet or FPN的网络,下面黑色部分为新添加的并联 Mask层,这个图本身与上面的图也没有什么区别,旨在说明作者所提出的Mask RCNN方法的泛化适应能力:可以和多种RCNN框架结合,表现都不错。

9.10.3 Mask-RCNN 技术要点

1. 技术要点1-强化的基础网络

通过ResNet-101 + FPN用作特征提取网络,达到 state-of-the-art的效果。

2. 技术要点2-ROIAlign

采用ROIAlign替代RoiPooling(改进池化操作)。引入了一个插值的过程,先通过双线性插值到1414,再pooling到77,很大程度上解决了仅通过Pooling直接采样带来的Misalignment对齐问题。

PS:虽然 Misalignment 在分类问题上影响并不大,但在Pixel级别的Mask上会存在较大误差。

后面我们把结果对比贴出来(Table c & d),能够看到 ROIAlign带来较大的改进,可以看到,Stride越大改进越明显。

3. 技术要点3-Loss Function

每个ROIAlign对应 k*m^2维度的输出。K对应类别个数,即输出K个mask,m对应池化分辨率(7*7)。Loss函数定义:

Lmask(Cls_k)=Sigmoid(Cls_k)

平均二值交叉熵(average binary cross-entropy)Loss,通过逐像素的Sigmoid计算得到。

Why K 个 mask?通过对应每个Class对应一个Mask可以有效避免类间竞争(其他Class不贡献Loss)。

通过结果对比来看(Table2 b),也就是作者所说的 Decouple解耦,要比多分类的Softmax效果好很多。

另外,作者给出了很多实验分割结果,就不都列了,只贴一张和FCIS的对比图(FCIS出现了Overlap的问题)。

9.11 CNN在基于弱监督学习的图像分割中的应用

答案来源:CNN在基于弱监督学习的图像分割中的应用 - 知乎

最近基于深度学习的图像分割技术一般依赖于卷积神经网络CNN的训练,训练过程中需要非常大量的标记图像,即一般要求训练图像中都要有精确的分割结果。

对于图像分割而言,要得到大量的完整标记过的图像非常困难,比如在ImageNet数据集上,有1400万张图有类别标记,有50万张图给出了bounding box,但是只有4460张图像有像素级别的分割结果。对训练图像中的每个像素做标记非常耗时,特别是对医学图像而言,完成对一个三维的CT或者MRI图像中各组织的标记过程需要数小时。

如果学习算法能通过对一些粗略标记过的数据集的学习就能完成好的分割结果,那么对训练数据的标记过程就很简单,这可以大大降低花在训练数据标记上的时间。这次粗略标记可以是:

  1. 只给出一张图像里面包含哪些物体。
  2. 给出某个物体的边界框。
  3. 对图像中的物体区域做部分像素的标记,例如画一些线条、涂鸦等(scribbles)。

9.11.1 Scribble 标记

论文地址:ScribbleSup: Scribble-Supervised Convolutional Networks for Semantic Segmentation (CVPR 2016)

香港中文大学的Di Lin提出了一个基于Scirbble标记的弱监督学习方法。Scribble是一个很方便使用的标记方法,因此被用得比较广泛。如下图,只需要画五条线就能完成对一副图像的标记工作。

ScribbleSup分为两步,第一步将像素的类别信息从scribbles传播到其他未标记的像素,自动完成所有的训练图像的标记工作;第二步使用这些标记图像训练CNN。在第一步中,该方法先生成super-pixels,然后基于graph cut方法对所有的super-pixel进行标记。

Graph Cut的能量函数为:

\sum_{i}\psi i\left(y_i|X,S\right)+\sum{i,j}\psi_{ij}\left(y_i,y_j,X\right)

在这个graph中,每个super-pixel是graph中的一个节点,相接壤的super-pixel之间有一条连接的边。这个能量函数中的一元项包括两种情况,一个是来自scribble的,一个是来自CNN对该super-pixel预测的概率。整个最优化过程实际上是求graph cut能量函数和CNN参数联合最优值的过程:

\sum_{i}\psi _i^{scr}\left(y_i|X,S\right)+\sum i-logP\left(y_i| X,\theta\right)+\sum{i,j}\psi _{ij}\left(y_i,y_j|X\right)

上式的最优化是通过交替求Y\theta的最优值来实现的。文章中发现通过三次迭代就能得到比较好的结果。

9.11.2 图像级别标记

论文地址:Constrained Convolutional Neural Networks for Weakly Supervised Segmentation (ICCV 2015)

UC Berkeley 的Deep Pathak使用了一个具有图像级别标记的训练数据来做弱监督学习。训练数据中只给出图像中包含某种物体,但是没有其位置信息和所包含的像素信息。该文章的方法将image tags转化为对CNN输出的label分布的限制条件,因此称为 Constrained convolution neural network(CCNN)。

该方法把训练过程看作是有线性限制条件的最优化过程:

\underset{\theta ,P}{minimize} D(P(X)||Q(X|\theta ))\ subject\to A\overrightarrow{P} \geqslant \overrightarrow{b},\sum_{X}^{ }P(X)=1

其中的线性限制条件来自于训练数据上的标记,例如一幅图像中前景类别像素个数期望值的上界或者下界(物体大小)、某个类别的像素个数在某图像中为0,或者至少为1等。该目标函数可以转化为一个 loss function,然后通过SGD进行训练。

实验中发现单纯使用Image tags作为限制条件得到的分割结果还比较差,在PASCAL VOC 2012 test数据集上得到的mIOU为35.6%,加上物体大小的限制条件后能达到45.1%,如果再使用bounding box做限制,可以达到54%。FCN-8s可以达到62.2%,可见弱监督学习要取得好的结果还是比较难。

9.11.3 DeepLab+bounding box+image-level labels

论文地址:Weakly-and Semi-Supervised Learning of a DCNN for Semantic Image Segmentation

Google的George Papandreou 和UCLA的Liang-Chieh Chen 等在DeeoLab的基础上进一步研究了使用bounding box和image-level labels作为标记的训练数据。使用了期望值最大化算法(EM)来估计未标记的像素的类别和CNN的参数。

  对于image-level标记的数据,我们可以观测到图像的像素值和图像级别的标记 ,但是不知道每个像素的标号,因此把 y 当做隐变量。使用如下的概率图模式:

P\left ( x,y,z;\theta \right ) = P\left ( x \right )\left (\prod_{m=1}^{M} P\left ( y_m|x;\theta \right )\right )P\left ( z|y \right )

 这篇论文是通过EM算法来学习模型的参数\theta,具体推导过程可参考原论文。

 对于给出bounding box标记的训练图像,该方法先使用CRF对该训练图像做自动分割,然后在分割的基础上做全监督学习。通过实验发现,单纯使用图像级别的标记得到的分割效果较差,但是使用bounding box的训练数据可以得到较好的结果,在VOC2012 test数据集上得到mIoU 62.2%。另外如果使用少量的全标记图像和大量的弱标记图像进行结合,可以得到与全监督学习(70.3%)接近的分割结果(69.0%)。

9.11.4 统一的框架

论文地址:Learning to Segment Under Various Forms of Weak Supervision (CVPR 2015)

  Wisconsin-Madison大学的Jia Xu提出了一个统一的框架来处理各种不同类型的弱标记:图像级别的标记、bounding box和部分像素标记如scribbles。该方法把所有的训练图像分成共计 n 个super-pixel,对每个super-pixel提取一个 d 维特征向量。因为不知道每个super-pixel所属的类别,相当于无监督学习,因此该方法对所有的super-pixel做聚类,使用的是最大间隔聚类方法(max-margin clustering, MMC),该过程的最优化目标函数是:

\underset{W,H}{min} \frac{1}{2}tr\left ( W^TW \right ) + \lambda\sum_{p=1}^{n}\sum_{c=1}^{C}\xi \left ( w_c;x_p;h_p^c \right)

 在这个目标函数的基础上,根据不同的弱标记方式,可以给出不同的限制条件,因此该方法就是在相应的限制条件下求最大间隔聚类。

 该方法在Siftflow数据集上得到了比较好的结果,比state-of-the-art的结果提高了10%以上。

小结:在弱标记的数据集上训练图像分割算法可以减少对大量全标记数据的依赖,在大多数应用中会更加贴合实际情况。弱标记可以是图像级别的标记、边框和部分像素的标记等。训练的方法一般看做是限制条件下的最优化方法。另外EM算法可以用于CNN参数和像素类别的联合求优。

9.11.5 弱监督分割最新进展

  • bbox监督

1. Learning to Segment via Cut-and-Paste(ECCV 2018)

利用GAN对抗学习的思想,在cut-paste思想指导下利用bbox弱监督进行实例分割。 
采用对抗学习的思想,网络主体分为两大部分:mask生成器和合成图像判别器。具体过程为:

(1)在图像上截取gt,经过特征提取后预测一个bbox内gt的mask;

(2)在原图上随机cut一个背景图像,将bbox内按照生成的mask提取出物体分割结果,然后paste到原图裁剪的背景上去;

3)合成的图像经过判别器进行真假判断。 通过生成器生成更好mask来使得判别器更难判别,在对抗学习中提升两者的性能,逐渐获得更好的结果 .

2. Simple Does It: Weakly Supervised Instance and Semantic Segmentation(CVPR2017) 

本文做的是bbox弱监督语义/实例分割任务,能达到全监督分割效果(DeepLabv1)的95%。主要工作为:讨论了使用弱监督语义标签进行迭代训练的方法,以及其限制和不足之处;证明了通过类似GrabCut的算法能通过bbox生成分割训练标签方法的可行性,可以避免像上面的迭代方法重新调整网络训练策略;在VOC数据集上逼近监督学习的分割任务效果。 作者的启发是:将bbox level的mask送入网络训练后得到分割mask的比输入的bbox mask要好(这是很好的insight)。因此启发的操作是:将bbox level标注作为初始mask输入优化,每次得到的标注作为gt进行下一轮的迭代,从而不断获得更好的效果。

 在此基础上,再加上优化的GrabCut+算法,以及部分区域的筛选,以及BSDS500的边界预测信息整合到一起,能够达到很好的弱监督迭代分割效果。

  • 分类监督

1. Weakly Supervised Learning of Instance Segmentation with Inter-pixel Relations(CVPR2019) 

 使用分类标注作为弱监督信息,在CAM提取到特征的基础上,进一步设计IRNet学习额外的特征约束,从而到达更好的弱监督实例分割效果。为了解决CAM应用到实例分割的上述局限,设计IRNet。其组成为两部分:

(1)不分类别的实例响应图。

(2)pairwise semantic affinitie。其中通过不分类别的实例响应图和CAM结合,约束后得到instance-wise CAMS;另一个分支预先预测物体的边界然后得到pairwise semantic affinitie(关于这个的论文参考Related Work的对应部分,有相应的方法,暂时不深究)进行融合和处理得到最终的分割。

2. Weakly Supervised Instance Segmentation using Class Peak Response(CVPR2018) 

本文使用图像级的类别标注监督信息,通过探索类别响应峰值使分类网络能够很好地提取实例分割mask。本工作是使用图像级标注进行弱监督实例分割的首个工作。 在分类监督信息之下,CNN网络会产生一个类别响应图,每个位置是类别置信度分数。其局部极大值往往具有实例很强视觉语义线索。首先将类别峰值响应图的信息进行整合,然后反向传播将其映射到物体实例信息量较大的区域如边界。上述从类别极值响应图产生的映射图称为Peak Response Maps (PRMs),该图提供了实例物体的详细表征,可以很好地用作分割监督信息。 

 首先将图片经过正常的分类网络训练,其中在类别预测响应图上提取出局部响应极值点,进行增强卷积后预测出PRM。然后结合多种信息进行推断生成mask。

3. Weakly Supervised Semantic Segmentation Using Superpixel Pooling Network(AAAI 2017)

本文介绍通过类别标注的标签实现弱监督语义分割的方法。该方法在语义分割mask生成和使用生成mask学习分割生成网络之间反复交替。要实现这种交替迭代学习,关键点就是如何利用类别标注得到较准确的初始分割。为了解决这一问题,提出了Superpixel Pooling Network (SPN),将输入图像的超像素分割结果作为低阶结构的表征,辅助语义分割的推断。 

 首先是SPN生成初始mask,然后用另一个网络DecoupledNet来学习每个像素的mask标注。其中,该分割网络将语义分割任务解耦为分类和分割两个子任务,并且能够从类别标注中学习形状先验知识用于辅助分割。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/13891.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

作为 App 开发者会推荐安装的 Mac App

Xcode,作为 App 开发者,必须安装的工具。当然,有经验的开发者不会从 Mac App Store 下载,而是从网站下载,除了安装过程更可控,也方便多版本共存。此外,我不信任任何第三方下载方式: …

表面简单实则暗藏玄机的面试题:Java数组适合做队列吗?

Java数组本身是一种线性数据结构,它可以用来存储一系列固定大小的元素。尽管数组可以用于实现队列的一些基本操作,比如入队(enqueue)和出队(dequeue),但由于其固定的大小,它并不适合…

开关电源重点可靠性测试项目与测试方法

为确保开关电源在复杂工作环境下的安全性与稳定性,各种安全性测试成为不可或缺的环节。本文将深入探讨几项关键的安全性测试项目,帮助用户全面了解如何评估开关电源的可靠性和安全性。 一、过压保护测试方法 目的是为了检测当输出电压过高时,…

Unity限制鼠标光标位置

限制鼠标光标位置 private void Awake() {Cursor.lockState CursorLockMode.Confined;//Cursor.visible false;隐藏鼠标光标 }●Confined:限制光标到游戏窗口。 ●Locked:锁定光标到游戏窗口的中心并隐藏。 ●None:不被修改。

项目9-网页聊天室2(登录)

0.前端知识储备 Ajax请求中的async:false/true的作用 - front-gl - 博客园 (cnblogs.com) 01.前端页面展示 02.后端代码 2.1 CONTROLLER RequestMapping("/login")public Result login(String username, String password, HttpSession httpSession){User user …

乡村振兴与农村社会治理现代化:加强农村社会治理体系和治理能力现代化建设,提升乡村治理效能,为美丽乡村建设提供坚实保障

一、引言 在全面推进乡村振兴的伟大实践中,农村社会治理现代化是不可或缺的重要一环。随着时代的发展,传统的农村社会治理方式已经无法满足现代社会发展的需求。因此,加强农村社会治理体系和治理能力现代化建设,提升乡村治理效能…

2024年电工杯数学建模竞赛思路资料汇总贴

下文包含:2024电工杯(电工杯数学建模竞赛)思路解析、电工杯参赛时间及规则信息说明、好用的数模技巧及如何备战数学建模竞赛 C君将会第一时间发布选题建议、所有题目的思路解析、相关代码、参考文献、参考论文等多项资料,帮助大家…

深度学习(文章链接汇总)

神经网络与深度学习-简要入门 动手学深度学习-pytorch版本(一):引言 & 预备知识 动手学深度学习-pytorch版本(二):线性神经网络 YOLOv8 学习与环境配置

XSS漏洞

漏洞描述 XSS全名叫Cross Site Scripting(跨站脚本攻击)因为简写和css同名所以改名为XSS,该漏洞主要利用javascript可以控制html,css,浏览器的行为从而恶意利用,当开发人员未对输入的内容进行过滤或编码时,恶意用户在…

苍穹外卖①

1.BeanUtils.copyProperties(orders,orderVO); BeanUtils.copyProperties 是 Java 中 Apache Commons BeanUtils 库的一个方法,它用于将一个 Java Bean 的属性复制到另一个 Java Bean。这个方法非常适合于对象之间的属性复制,尤其是当源对象和目标对象的…

云服务器上部署Kubernetes集群(K8S)

master节点:master node节点:node1 由于是ubuntu系统,参考两个博客配置 安装vmware搭建k8s集群(亲试无坑)-CSDN博客 该博客是centos系统,所以稍微有点区别结合另一篇博客一起参考 kubernetes集群…

scrapy进阶(豆瓣新书速递)(比亚迪)

scrapy数据建模与请求 学习目标: 应用 在scrapy项目中进行建模应用 构造Request对象,并发送请求应用 利用meta参数在不同的解析函数中传递数据scrapy构造post请求 1. 数据建模 通常在做项目的过程中,在items.py中进行数据建模 1.1 为什么建…

gt.qpa.xcb: could not connect to display : 1

报错解释: 这个错误通常发生在使用X11(X Window System)的Linux环境中,当尝试启动一个基于Qt平台的应用程序时。错误信息表明程序无法连接到X服务器显示设备,原因可能是没有正确设置DISPLAY环境变量,或者用…

【Spring security】【pig】Note03-pig token令牌解析器过程

🌸🌸 pig token令牌解析器过程 🌸🌸 pig后端源码 一、解析请求中的令牌值。 二、验证令牌 内省并验证给定的令牌,返回其属性。返回映射表示令牌有效。 /*** author lengleng* date 2019/2/1 扩展用户信息*/ publi…

Hot100-栈

20. 有效的括号 - 力扣&#xff08;LeetCode&#xff09; class Solution {public boolean isValid(String s) {//用map的键值对匹配左右括号//按照顺序&#xff0c;先匹配的是左括号&#xff0c;所以栈里面放左括号HashMap<Character, Character> rlationship new Has…

deepinlinuxv23b3用lazarus3.2开发生成2维码

下载&#xff1a; https://sourceforge.net/projects/lazarus/files/ 最新版3.2.2的fpc,3.2的lazarus sourceforge默认下载慢&#xff0c;选择auto-select能够选择近的镜像站点&#xff0c;还不行的话也能够motrix下载会自动更换域名 linux的qrencode安装是 sudo apt…

跨境小白shopee被封号的原因?如何有效预防?

提到跨境电商平台&#xff0c;大家都知道亚马逊、Temu、TikTok shop这些是比较大的电商平台。但最近几年&#xff0c;在东南亚市场上&#xff0c;Shopee虾皮却是颇负盛名的一个跨境电商平台&#xff0c;这也让众多中国跨境小白蜂拥而至。目前shopee的商家正在不断增多&#xff…

[力扣题解] 130. 被围绕的区域

题目&#xff1a;130. 被围绕的区域 思路 代码 Method 1 : 深度优先搜索&#xff0c;自己写的 class Solution { private:int dir[4][2] {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};void dfs(vector<vector<char>>& board, vector<vector<bool>>&am…

vue3第三十四节(TS 之 interface 与 type 的异同)

1、interface 接口只能定义描述对象类型 如&#xff1a; interface PersonIn {name: string;age:number;job:string; }// 定义函数 interface FPerson {(a: number, b:string) > void }2、类型别名 type则可以定义多种类型 如&#xff1a; type userName string type…

DeepDriving | CUDA编程-02: 初识CUDA编程

本文来源公众号“DeepDriving”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;CUDA编程-02&#xff1a; 初识CUDA编程 上一篇文章DeepDriving | CUDA编程-01&#xff1a; 搭建CUDA编程环境-CSDN博客介绍了如何搭建CUDA编程环境&a…