常用语义分割小样本模型

1.介绍

深度卷积神经网络在图像分类、目标检测、语义分割等许多视觉理解任务上都取得了重大突破。一个关键的原因是大规模数据集的可用性,比如ImageNet,这些数据集支持对深度模型的培训。然而,数据标记是昂贵的,特别是对于密集的预测任务,如语义分割和实例分割。此外,在对模型进行训练之后,很难将模型应用于新类的预测。与机器学习算法不同的是,人类只看到几个例子就能很容易地从图像中分割出一个新概念。人类和机器学习算法之间的差距激发了对小样本学习的研究,其目的是学习一个模型,可以很好地推广到具有稀缺标记的训练数据的新类别。

语义分割:给图像的每个像素点标注类别。通常认为这个类别与邻近像素类别有关,同时也和这个像素点归属的整体类别有关。利用图像分类的网络结构,可以利用不同层次的特征向量来满足判定需求。现有算法的主要区别是如何提高这些向量的分辨率,以及如何组合这些向量。

几种结构

·
全卷积网络FCN:上采样提高分割精度,不同特征向量相加。[3]

·
UNET:拼接特征向量;编码-解码结构;采用弹性形变的方式,进行数据增广;用边界加权的损失函数分离接触的细胞。[4]

·
SegNet:记录池化的位置,反池化时恢复。[3]

·
PSPNet:多尺度池化特征向量,上采样后拼接[3]

·
Deeplab:池化跨度为1,然后接带孔卷积。

·
ICNet:多分辨图像输入,综合不同网络生成结果。

小样本分割的终极目的是利用支持集中的K个训练图像对来“学习”一个模型,使得该模型能对训练图像对中出现的类别的新样本能够实现分割。

  1. 相关工作

2.1 元学习

元学习解决的是学习如何学习的问题。元学习的思想是学习「学习(训练)」过程。主要有基于记忆Memory的方法、基于预测梯度的方法、利用Attention注意力机制的方法、借鉴LSTM的方法、面向RL的Meta
Learning方法、利用WaveNet的方法、预测Loss的方法等等等。

2.2 小样本学习

小样本学习是元学习在监督学习领域的应用,Few-shot
Learning

模型大致可分为三类:Mode Based,Metric Based 和 Optimization Based。

其中 Model Based 方法旨在通过模型结构的设计快速在少量样本上更新参数,直接建立输入 x 和预测值 P 的映射函数;Metric
Based方法通过度量 batch 集中的样本和
support 集中样本的距离,借助最近邻的思想完成分类;Optimization Based方法认为普通的梯度下降方法难以在 few-shot 场景下拟合,因此通过调整优化方法来完成小样本分类的任务。

2.3 语义分割

语义分割就是按照“语义”给图像上目标类别中的每一点打一个标签,使得不同种类的东西在图像上被区分开来。可以理解成像素级别的分类任务。输入:(HW3)正常的图片;输出:( HWclass )可以看为图片上每个点的one-hot表示,每一个channel对应一个class,对每一个pixel位置,都有class数目个channel,每个channel的值对应那个像素属于该class的预测概率。

FCN是语义分割的开山之作,主要特色有两点:全连接层换成卷积层,不同尺度的信息融合FCN-8S,16s,32s。

U-net用于解决小样本的简单问题分割,比如医疗影片的分割。它遵循的基本原理与FCN一样:1.Encoder-Decoder结构:前半部分为多层卷积池化,不断扩大感受野,用于提取特征。后半部分上采样回复图片尺寸。2.更丰富的信息融合:如灰色剪头,更多的前后层之间的信息融合。这里是把前面层的输出和后面层concat(串联)到一起,区别于FCN的逐元素加和。不同Feature map串联到一起后,后面接卷积层,可以让卷积核在channel上自己做出选择。注意的是,在串联之前,需要把前层的feature map crop到和后层一样的大小。

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

Deeplab V1不同于之前的思路,他的特色有两点:1.由于Pooling-Upsample会丢失位置信息而且多层上下采样开销较大,把控制感受野大小的方法化成:带孔卷积(Atrous conv)2.加入CRF(条件随机场),利用像素之间的关连信息:相邻的像素,或者颜色相近的像素有更大的可能属于同一个class。

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

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

Deeplab V2在v1的基础上做出了改进,引入了ASPP(Atrous Spatial Pyramid Pooling)的结构,如上图所示。我们注意到,Deeplab v1使用带孔卷积扩大感受野之后,没有融合不同层之间的信息。ASPP层就是为了融合不同级别的语义信息:选择不同扩张率的带孔卷积去处理Feature Map,由于感受野不同,得到的信息的Level也就不同,ASPP层把这些不同层级的feature map concat到一起,进行信息融合。

Deeplab v3在原有基础上的改动是:1.改进了ASPP模块2.引入Resnet
Block 3.丢弃CRF。新的ASPP模块:1.加入了Batch Norm 2.加入特征的全局平均池化(在扩张率很大的情况下,有效权重会变小)。全局平均池化的加入是对全局特征的强调、加强。在旧的ASPP模块中:我们以为在扩张率足够大的时候,感受野足够大,所以获得的特征倾向于全局特征。但实际上,扩张率过大的情况下,Atrous conv出现了“权值退化”的问题,感受野过大,都已近扩展到了图像外面,大多数的权重都和图像外围的zero padding进行了点乘,这样并没有获取图像中的信息。有效的权值个数很少,往往就是1。于是我们加了全局平均池化,强行利用全局信息。

Deeplab v3+可以看成是把Deeplab v3作为编码器(上半部分)。后面再进行解码,并且在解码的过程中在此运用了不同层级特征的融合。此外,在encoder部分加入了Xception的结构减少了参数量,提高运行速递。

3.方法总结分类

3.1 OSLSM

motivition就是学习一个one-shot的分割模型,首次提出双分支的网络用于few-shot segmentation,条件分支用VGG提取特征,生成权重(w,b),分割分支用FCN-32s结构对query image 进行特征提取,将其与条件分支所得参数进行点乘再通过σ函数得到分割结果。得到一个分割图,上采样到图像大小,利用某个阈值产生分割的二值图,

输出的时候,为了是参数量与分割分支的特征图的通道数相对应,采用weight hashing的策略,将输出的1000维向量映射为4097维(w:4096, b:1),这种映射机制是建模成固定权重参数的全连接层来实现的。

3.2 co-FCN

文章的主要比较惊奇的一点是仅对原始图像做一些稀疏的标注(目标位置上点几个关键点,背景位置上点几个关键点)就却能够实现对目标的像素级的分割。网络结构和BMVC那篇paper设置类似,也是采用双分支结构,将标注信息与原始图像concate后输入conditioning branch得到输入图像的embedding。利用segmentation branch对qurey image进行特征提取,并将结果与conditioning branch得到的embedding进行concate,再进行像素级分割。

3.3 AMP-2 motivation:如何得到一个更好的原型。

方法:在task流中,不断地更新每个类别地原型。

3.4 SG-One

训练任务的流程:

网络包含一个主干网络Stem(代表的是VGG-16的前3个Block)和两个分支:Guidance Branch 和 Segmentation Branch,需要注意的是两个分支共用了三个卷积块
,个人的理解是,如果两个分支完全独立,那么Guidance Branch产生的指导就会一成不变;这就失去了意义,作者在论文最后的消融实验中做了相关的分析与实验;与Segmentation Branch 产生交互后就可以在优化分割损失的同时对引导的特征图进行优化,使之匹配相应的真实mask. 网络在训练的时候加载了在ILSVRC数据集上预训练的权重。

测试任务的流程:

主要的创新点:

a.提出使用masked average pooling 来提取
support set 的中目标的表征向量;

b.采用余弦相似度来度量 query set 的表征向量与support
set 的表征向量之间距离,用于指导query set的分割;

为什么masked average pooling会有用?

解释如下:全卷积网络(FCN)能够保留输入图像的中每个像素相对位置;所以通过将二值mask与提取到的特征图相乘就可以完全保留目标的特征信息,排除掉背景等无关类别的特征。

3.5 PANet

创新点:

利用了prototypes上的度量学习,无参数

提出prototypes对齐正则化,充分利用support的知识

对于带有弱注释的少样本直接使用

用同一个backbone来提取support和query的深度特征,然后使用masked average pooling从support的特征将不同的前景物体和背景嵌入不同的prototypes中,每个prototype表示对应的类别,这样query图像的每个的像素通过参考离它的嵌入表达最近的特定类的prototype来标记,得到query的预测mask后;训练的时候,得到mask后,再将刚才提取的query feature和mask作为新的“support set”,将之前的support set作为新的“query set”,再用“support set”对“query set”做一波预测,然后再算一个loss

prototype紧凑且鲁棒的对每个语义类别进行表达;mask标记那块就是无参度量学习,通过和嵌入空间的逐像素匹配来执行分割

执行一个prototype对齐正则化,用query和他的mask建立新的support,然后用这个来预测原始的support set的分割,实验证明能鼓励query的prototype对齐他们的support的prototype,只有训练的时候这么做(反向再推一次,看看是否真的相似)

3.6 CANet

主要贡献:

开发了一种新颖的双分支密集比较模块,该模块有效地利用来自CNN的多级特征表示来进行密集的特征比较。

提出迭代优化模块,以迭代方式改进预测结果。迭代细化的能力可以推广到具有少量镜头学习的看不见的类,以生成细粒度图。

采用注意机制有效地融合来自k-shot设置中的多个支持示例的信息,其优于单次结果的不可学习的融合方法。

证明给定的支持集具有弱注释,即边界框,我们的模型仍然可以获得与昂贵的像素级注释支持集的结果相当的性能,这进一步减少了新类别对于少数镜头分割的标记工作量。

3.7 PGNet

在CANet基础上加了一个图注意力机制

3.8 FWB

两个主要创新点:

Feature Weighting

支持集前后景差异标准化向量:

最大化特征差异:

最终得到的关联向量:

标准化处理后的余弦相似性:

Feature Boosting


4.数据集介绍

PASCAL-5i

MS COCO-20i

FSS-100

5.评测指标介绍

Mean-IoU:

IoU就是每一个类别的交集与并集之比,而mIoU则是所有类别的平均IoU。


FB-IoU:

前景和背景一起的准确率

6.结果陈列


常用语义分割小样本模型相关推荐

  1. 全卷积神经网络( FCN ):语义分割深度模型先驱

    语义分割 简单地说,分割就是抠图.语义分割,就是按图像中物体表达的含义进行抠图. 现在ps已经集成很多自动分割的功能,相比旧版本软件,新软件提高了美工人员的抠图和美图的效率. 如果我们能在更复杂的环境 ...

  2. 语义分割——Enet模型实现

    利用训练好的Enet模型完成,图片和视频的语义分割(适合小白入门) 代码下载 下面附上对于代码的解读 # USAGE # python segment.py --model enet-cityscap ...

  3. 语义分割——Unet模型

    语义分割的UNET网络结构 Unet是2015年诞生的模型,它几乎是当前segmentation项目中应用最广的模型. Unet能从更少的训练图像中进行学习,当它在少于40张图的生物医学数据集上训练时 ...

  4. 零基础入门语义分割-Task5 模型训练与验证

    使用Pytorch来完成CNN的训练和验证过程,逻辑结构如下: 构造训练集和验证集: 每轮进行训练和验证,并根据最优验证集精度保存模型. train_loader = torch.utils.data ...

  5. AI深度学习入门与实战19 语义分割:打造简单高效的人像分割模型

    上一讲,我向你介绍了语义分割的原理.在理解上一课时中 U-Net 语义分割网络的基础上,这一讲,让我们来实际构建一个人像分割模型吧. 语义分割的评估 我们先简单回顾一下语义分割的目的:把一张图中的每一 ...

  6. 超详细!手把手带你轻松用 MMSegmentation 跑语义分割数据集

    在带你轻松掌握 MMSegmentation 整体构建流程一文中,我们带大家认识了 MMSegmentation 的整体框架,分享了 MMSegmentation 中已经复现的主流语义分割模型. Op ...

  7. 道路场景语义分割算法

    道路场景语义分割算法 输入输出接口 Input: (1)左右两个摄像头采集的实时图像视频分辨率(整型int) (2)左右两个摄像头采集的实时图像视频格式 (RGB,YUV,MP4等) (3)摄像头标定 ...

  8. 语义分割和实例分割_一文读懂语义分割与实例分割

    以人工智能为导向的现代计算机视觉技术,在过去的十年中发生了巨大的变化.今天,它被广泛用于图像分类.人脸识别.物体检测.视频分析以及机器人及自动驾驶汽车中的图像处理等领域.图像分割技术是目前预测图像领域 ...

  9. 【语义分割】ps实现对粗标签精细标注

    常用语义分割数据集标注工具如labelme等,可以很方便的实现对图像的标注: 当需标注的图像过多时,为了减少标注成本,可以先标注部分图像,用这些数据去训练出一个模型,之后再用其他要标注的图片传入该模型 ...

最新文章

  1. linux7 yum安装rabbitmq,CentOS7linux下yum安装RabbitMQ以及使用顶
  2. VB.NET实现DirectSound9 (6) 声音特效
  3. 开发团队如何完成一个项目?
  4. Spring Cloud Eureka 入门 (三)服务消费者详解
  5. 谈谈 Android 中的 PathClassLoader 和 DexClassLoader
  6. Sublime 插件- px 转rem
  7. Mybase到期 破解
  8. 前端写分页(用了自己同事写的插件)
  9. c char转int_C/C++ 各数据类型占用字节数
  10. Nginx教程负载均衡机制
  11. linux包之bash之内置命令ulimit
  12. 管理Kubernetes集群时需要关注的关键指标
  13. 网络篇 使用Visio来画流程图(进阶篇)-01.1
  14. 超市便利店零售POS收银前台,好用的零售收银软件盘点机PDA收银机,批发销售出库单开单,超市零售批发进销存收银开单管理软件
  15. OpenSIPS Crash 宕机的初步解决办法(二)
  16. EBAZ4205 ZYNQ HDMI扩展板 显示Linux桌面播放视频
  17. 搞机攻略(Android Root iOS越狱)
  18. 长江游艇俱乐部租金问题
  19. linux下CURL工具的使用(常用选项)
  20. idea pycharm 的注册方式

热门文章

  1. jar包部署shell脚本编写,在服务器上部署jar包,在Linux服务器上部署服务,设置编码格式,设置内存管理
  2. 2022-2028年中国海洋电力行业市场深度分析及发展策略分析报告
  3. Docker安装Nextcloud
  4. 请注意更新TensorFlow 2.0的旧代码
  5. 国民技术芯片相关产业研发
  6. 人工智能微控制器体系结构
  7. 服务器技术综述(三)
  8. Yolo:实时目标检测实战(上)
  9. pip install numpy/pandas时报错的解决方法
  10. Python : IndentationError: expected an indented block