精读Simpler is Better: Few-shot Semantic Segmentation with Classifier Weight Transformer

摘要

 

        传统的语义分割模型通常由三部分组成:一个CNN编码器,一个CNN解码器和一个区分前景像素与背景像素的简单的分类器。当模型学习识别一个没见过的新类时,需要分别训练这三个部分进行元学习,如果新类别中图象太少,那么同时训练三个模块就十分困难。

        本文提出里一种新的训练方法,在面对新类时只关注模型中最简单的部分,即分类器。作者假设,一个学习了大量图片和信息的传统分割网络已经能够从任何一张图片中捕捉到充分的,有利于区分背景和前景的信息,无论训练时是否遇到了同类的图。那么面对少样本的新类时,只要对分类器进行元学习即可。

        对于分类器的学习,作者提出了一种分类器权重转移方法CWT,根据每一张查询集图象,临时调整分类器参数

架构

图(a)为传统方法,要训练三个模块,图(b)为本文方法,编码器解码器在经过大量有标记数据训练后便冻结,只调整分类器权重。

借助Transformer的思想,作者将分类器权重转化为Query,将图象提取出来的特征转化为Key和Value,然后根据这三个值调整分类器权重,最后通过残差连接,与原分类器参数求和。

方法

预训练

预训练就是传统的分割网络的训练。具体参数设置见文章4.2节,在此不赘述了

元学习

本文提出的元学习名为episodic training。一般来说,本文提出的元学习针对是小样本的类进行学习。

元学习分两步,第一步是内循环,和预训练一样,根据支持集上的图片和mask进行训练,不过只修改分类器参数。文中指出,当新类样本数够大时,只使用外循环,即只更新分类器,就能匹敌SOTA,但是当面对小样本时,表现就不尽如人意。

第二步是外循环,根据每一副查询图片,微调分类器参数,而且微调后的参数只针对这一张查询图片,不能用于其他查询图象,也不覆盖修改原分类器参数。

假设每一张查询图像,提取出的特征为F,形状为n*d,n为单通道的像素数,d为通道数,则全连接分类器参数w形状为2*d

参照Transformer,令Query = w*Wq, Key = F*Wk, Value = F*Wv

其中Wq,Wk,Wv均为可学习的d*da矩阵,d为维度数,da为人为规定的隐藏层维度数,本文将其设置为了2048

根据这三个数,以及残差链接,可求得新分类器权重为

w^{*}=w+\psi (softmax(\frac{wW_{q}(FW_{k})^{T}}{\sqrt{d_{a}}}FW_{v}))

Ψ是一个线性层,输入维度为da,输出维度为d。softmax针对的维度为行。

求出每一张查询集对应的权重后,只需要把特征F塞进w*即可

实验结果

COCO
COCO-20i
PASCAL-5i

        上面两图为本文方法在两个数据集上的分类结果,Mean指的是mIoU。这两个数据集都分为了s-0到s-3四个大类,每个大类中5小类。两次实验的预训练和元学习的数据均来自于同一数据集,即单次实验不会同时用到COCO和PASCAL。

        由图可知,本文方法在COCO上取得了最佳表现,在PASCAL上稍有落后,但本文方法能从样本数增多的过程中受益,在5-shot实验中夺回了第一。

        上图展示的是数据集交叉的情况,箭头左边的用于预训练,箭头右边的作为元学习时没见过的新类。对比这三个表格可见,本文能在处理新类时依然保持良好表现。

消融实验 

1.对比传统的元学习三个模块的方法和本文只更新分类器的方法

2.CWT的有无对模型的影响。虽然只在内循环中,即只在面对支持集时更新参数,一样能取得不错的性能,但如果没有CWT,在面对支持集与查询集相去甚远时,模型表现便会严重下降

上图就是不进行CWT后表现不佳的例子。 

3.针对支持集图象和针对查询及图象进行CWT的差别

 第二个消融实验证明了CWT存在的重要性,第三个则证明了正对每一副查询集图象进行CWT的重要性

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值