论文 | NeurIPS2020 CrossTransformers:spatially-aware few-shot transfer

一 写在前面

未经允许,不得转载,谢谢~~~

嘿,好久不见,我要开始慢慢恢复科研论文笔记的更新啦~

今天分享的文章是做小样本图像识别的。

主要信息:

二 主要内容

2.1 相关背景

小样本图像识别的方法从整体上来看大概可以分成两个阶段:

  1. representation learning:获取到一个比较好的图像特征提取器;
  2. classifier:通过比对query images和support images进行query image的标签预测

文章首先总结了现有方法的共同点:

  1. 在representation leanring的学习上具有的一个共同点就是都会使用训练图片的类别标签做一个监督学习;
  2. 在classifier学习阶段具有的一个共同点是会将query和support图像之间的整体特征进行比较,例如ProtoNet就是将query的特征与support set中每个类中心的特征进行比较。

2.2 本文工作

文章首先支持现有方法的不足:

  1. 完全依靠类别标签进行特征学习的方式会导致只能学习到跟类别相关的信息,而忽略其他更加通用的特征表示;
  2. 在做图像比较的时候,图像中的一些重要objects和scenes通常是local的,直接用整体特征进行比较的效果不一定是最好的;

相对应地,文章提出了从两个方面进行优化:

  1. 针对第一个问题,提出引入自监督学习的方法SimCLR来获取更加通用的图像特征表示;
  2. 针对第二个问题,提出基于Transformer的新结构CrossTransformer,希望能够进行local信息的图像匹配;

三 方法介绍

文章是基于ProtoNet结构的,所以首先介绍下ProtoNet, 然后分别介绍以上两点novelty。

3.1 ProtoNet

ProtoNet算的上是小样本图像识别领域最flagship的工作了,这里只做个简单的介绍。

N-way-K-shot
给定一堆带标签可供参考的Support Images,具体表示为有N个类别,每个类别有K张带标注的图像,以及一个等待被分类的query image (query image的类别一定属于N个类别),我们需要根据support images预测出query image的类别标签。

key idea:
Protonet的想法非常直接但有效。即对每张图像都先用神经网络得到一个特征表示,然后对support set中每个类别c的所有特征取一个平均,作为这个类别的类中心。最后比较query feature跟各个类中心之间的距离,取最近的一个类别作为预测结果。

3.2 SSL with SimCLR

这里的想法也比较直接,就是觉得自监督学习得到的特征表示不仅对semantic敏感,而且对属于相同类别的不同图片也具有区分度,可以理解为只用class informaction进行监督学习得到的特征是class-level的,SSL学习到的是instance-level的,因此作者认为SSL学习到的特征泛化性会更好。

具体的做法也比较简单。为了区分原来的episode和现在用自监督的episode, 分别用MD-categorization episode以及SimCLR episode来表示它们。在训练的过程中随机转化50%的MD-categorization episode为SimCLR episode, 对SimCLR episode用SimCLR中的方法进行增强,然后对query image也进行增强,最后用各自对应的loss function进行优化。

:( 这边的具体细节感觉只看文章还不是特别清楚,可能需要感兴趣的同学可以自己看看他们的code

3.3 CrossTransformers

这部分都是基于Transformer构建的,如果之前完全不了解的话或许是会比较困难的,建议看看原文:https://arxiv.org/abs/1706.03762, 或者推荐一个我个人最推荐的blog:https://zhuanlan.zhihu.com/p/48508221

文章的主要框架图如下图所示:

第一张是文章原图,第二张是我在原图的基础上把各个重要部分对应的数据维度标注上去以及补充了额外内容的图,可以对照着看。

文章原图
带标记图

主要的pipeline包括以下几步:

  1. 首先看输入,给定最左边的一个query image x_q, 以及最上面的support set中类别为c的几个图像{x_1^c, x_2^c, ...}, 网络的目的是要获取到一个query-specific的类中心(不再是原始ProtoNet版本中直接取平均的方法)
  2. 首先注意到不管是对于query还是对于support images,都是先用一个\phi()得到图像的特征表示,这里文章中用的是ResNet,并且去掉了最后一个pooling层,所以得到的特征维度为R^{H`^ \times W^` \times D}
  3. 接下来就是基于query,key,value的attention操作。这里的query是指query image,而key和value都是指support sets。理解这一点对理解整个attention还挺重要的。

网络图中的query heads,key heads都是将输入特征从D维度映射到d_k维度,而value heads将输入特征从D维度映射到d_v维度。

具体地,(建议对着图看)

  • query heads将query特征从R^{H^` \times W^` \times D}维度映射到R^{H^` \times W^` \times d_k}维度(图中shi黄色的框框);
  • key heads将support特征从R^{H^` \times W^` \times D}维度映射到R^{H^` \times W^` \times d_k}维度(图中亮黄色的框框,左右两个表示的是一样的意思,看第一个就行了);
  • value heads将support特征从R^{H^` \times W^` \times D}映射到R^{H^` \times W^` \times d_v}维度(图中红色框框,也看其中一个就可)。
  1. 然后就是计算query和key之间的attention,我们还是只看一个query(shi黄色框)和一个support图像特征(第一个亮黄色框框),经过映射之后两个的特征维度都是R^{H^` \times W^` \times d_k},对于query中任意一个位置p和support中的任意一个位置m,特征维度都是d_k, 通过向量点乘的方法可以得到这2个点之间的attention值,图中小黑点在的位置。对每个HxW中的点都计算一次attention,最终就会得到一张query和一张support的attention mapa_1^c, 当然还做了一个softmax操作得到更新后的attention map\tilde{a_1^c}。对suppport中的多张图采取同样的操作就会得到多张attention map。

  2. 最后就是利用这些attention maps对support set中不同图像的vaule特征进行加权平均。这部分操作可以理解为,对于<query, support image i>, 对于HxW中的任意一个位置,都用其第i张attention map的值乘上对应第i个红色框框位置的value,最后把不同support images的结果值进行相加得到最终query-aligned prototype的特征表示,其维度为R^{H^` \times W^` \times d_v}

  3. 到这里为止我们获取到了query-aligned prototype R^{H^` \times W^` \times d_v}。 但是要做小样本预测到这里还没有完全完整,我把第二张图中把剩下的部分补上了。对于query image,其实也用value head做了一个映射,得到一个query image的value 特征表示,其维度为R^{H^` \times W^` \times d_v}, 跟prototype的维度是一样的,这样就可以比较这两者之间的距离,进而进行label预测了.

五 写在最后

我在写这个blog的时候,尽量避免了公式的出现,但可能有些地方解释的还是有些不好理解,尤其是crossTransformer部分涉及的符号略多,大家见谅啦。

这篇文章暂时介绍到这里,最后打个不那么相关的广告,我们做小样本视频分类的工作(AMeFu-Net)近期开源了,link: https://github.com/lovelyqian/AMeFu-Net,欢迎大家关注~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,013评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,205评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,370评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,168评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,153评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,954评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,271评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,916评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,382评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,877评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,989评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,624评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,209评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,199评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,418评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,401评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,700评论 2 345