【语义分割】PANet Few-Shot Image Semantic Segmentation with Prototype Alignment 论文理解

本文主要是介绍【语义分割】PANet Few-Shot Image Semantic Segmentation with Prototype Alignment 论文理解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

PANet Few-Shot Image Semantic Segmentation with Prototype Alignment 论文理解

  • 解决什么问题
  • 本文创新点\贡献
  • 前人方法
  • 本文IDEA来源
  • 方法
    • 方法概述
    • Alignment
    • Prototype learning
    • Non-parametric metric learning
    • Prototype alignment regularization (PAR)
  • 训练
  • 实验
    • PAR的分析
    • Generalization to weaker annotations
  • 总结

解决什么问题

少训练样本的分割


本文创新点\贡献

将prototype的提取和无参数的度量学习分开了

优点:

  1. 不需要额外学习参数,不容易过拟合

    啥意思,那一块不需要参数啊,度量学习?如何实现的呢?

  2. prototype嵌入和预测都是在计算好的特征图上进行的,没有额外的前向传播
  3. 简单易用,更弱的注释也可以,bbox或涂鸦?这尼玛还能分割了?

亮点

  1. 利用了prototypes上的度量学习,无参数
  2. 提出prototypes对齐正则化,充分利用support的知识
  3. 对于带有弱注释的少样本直接使用

前人方法

Few-shot learning

  • 输入放入神经网络,执行加权最近邻匹配来分类
  • 用一个向量特征来表示每个类
  • 独立的模组直接学习support特征和query特征的联系

Few-shot segmentation

  • 从support set生成一些用来调整query set的分割处理
  • 将提取的support特征和query对方到一起,然后decoder,来生成分割结果
  • 使用mask average pool从suppor set里提取前后景信息

本文IDEA来源

Prototypical networks for few-shot learning的延申


方法

在这里插入图片描述

方法概述

用同一个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标记那块就是无参度量学习,通过和嵌入空间的逐像素匹配来执行分割

在这里插入图片描述
算 法 总 览 , 公 式 编 号 和 顺 序 相 同 算法总览,公式编号和顺序相同


Alignment

在这里插入图片描述
执行一个prototype对齐正则化,用query和他的mask建立新的support,然后用这个来预测原始的support set的分割,实验证明能鼓励query的prototype对齐他们的support的prototype,只有训练的时候这么做

反向再推一次,看看是否真的相似

图像说明
support的嵌入特征是圆形,query图像是三角形,对每个类学习prototype(蓝色和黄色的),query通过在嵌入空间中将他的特征和最近的prototype进行匹配,来进行分割,虚线就是匹配,右图进行了prototype对齐正则化,就是通过从support到query的反向对齐。


Prototype learning

方法的选择
使用support的mask注释分开学习前景和后景的prototypes,对于什么时候融合mask有两种策略,一种是早融合,一种是晚融合:

  • 早:在送入网络提取器之前,把mask和support图片融合
  • 晚:分别把mask和提取出来的前/后景的特征融合在一起

作者选择晚输入,能保证两个特征提取器的输入一致性(query是没有mask的)

操作
给定support set S i = { ( I c , k , M c , k ) } S_i = \{ (I_{c,k},M_{c,k})\} Si={(Ic,k,Mc,k)},用 F c , k F_{c,k} Fc,k表示图片的输出特征图, c c c表示类别的index, k = 1 , . . . , K k=1,...,K k=1,...,K是support图片的index, c c c类别的prototype用下式计算:
p c = 1 K ∑ k ∑ x , y F c , k ( x , y ) L [ M c , k ( x , y ) = c ] ∑ x , y L [ M c , k ( x , y ) = c ] p_c = \frac{1}{K}\sum_k\frac{\sum_{x,y}F^{(x,y)}_{c,k}L[M^{(x,y)}_{c,k}=c]}{\sum_{x,y}L[M^{(x,y)}_{c,k}=c]} pc=K1kx,yL[Mc,k(x,y)=c]x,yFc,k(x,y)<

这篇关于【语义分割】PANet Few-Shot Image Semantic Segmentation with Prototype Alignment 论文理解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/532847

相关文章

C++字符串提取和分割的多种方法

《C++字符串提取和分割的多种方法》在C++编程中,字符串处理是一个常见的任务,尤其是在需要从字符串中提取特定数据时,本文将详细探讨如何使用C++标准库中的工具来提取和分割字符串,并分析不同方法的适用... 目录1. 字符串提取的基本方法1.1 使用 std::istringstream 和 >> 操作符示

使用Python实现批量分割PDF文件

《使用Python实现批量分割PDF文件》这篇文章主要为大家详细介绍了如何使用Python进行批量分割PDF文件功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、架构设计二、代码实现三、批量分割PDF文件四、总结本文将介绍如何使用python进js行批量分割PDF文件的方法

深入理解Apache Airflow 调度器(最新推荐)

《深入理解ApacheAirflow调度器(最新推荐)》ApacheAirflow调度器是数据管道管理系统的关键组件,负责编排dag中任务的执行,通过理解调度器的角色和工作方式,正确配置调度器,并... 目录什么是Airflow 调度器?Airflow 调度器工作机制配置Airflow调度器调优及优化建议最

一文带你理解Python中import机制与importlib的妙用

《一文带你理解Python中import机制与importlib的妙用》在Python编程的世界里,import语句是开发者最常用的工具之一,它就像一把钥匙,打开了通往各种功能和库的大门,下面就跟随小... 目录一、python import机制概述1.1 import语句的基本用法1.2 模块缓存机制1.

深入理解C语言的void*

《深入理解C语言的void*》本文主要介绍了C语言的void*,包括它的任意性、编译器对void*的类型检查以及需要显式类型转换的规则,具有一定的参考价值,感兴趣的可以了解一下... 目录一、void* 的类型任意性二、编译器对 void* 的类型检查三、需要显式类型转换占用的字节四、总结一、void* 的

使用Python将长图片分割为若干张小图片

《使用Python将长图片分割为若干张小图片》这篇文章主要为大家详细介绍了如何使用Python将长图片分割为若干张小图片,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果1. Python需求

深入理解Redis大key的危害及解决方案

《深入理解Redis大key的危害及解决方案》本文主要介绍了深入理解Redis大key的危害及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、背景二、什么是大key三、大key评价标准四、大key 产生的原因与场景五、大key影响与危

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

C#中字符串分割的多种方式

《C#中字符串分割的多种方式》在C#编程语言中,字符串处理是日常开发中不可或缺的一部分,字符串分割是处理文本数据时常用的操作,它允许我们将一个长字符串分解成多个子字符串,本文给大家介绍了C#中字符串分... 目录1. 使用 string.Split2. 使用正则表达式 (Regex.Split)3. 使用

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。