阅读笔记-SoViT Mind visual tokens for vision transformer

Introduction

这篇文章的出发点包含两方面:

1. ViT是纯transformer的结构,剔除了CNN中具有的一些归纳偏置,使其必须依赖较大规模的数据集去学习这种偏置,从而对于中心规模scratch训练得到的模型性能远低于CNN结构。

2. 在ViT方法,以及基于ViT的系列方法中,都引入了一个class token,利用encoder输出的class token的特征进行分类,但忽略了每个patch token所包含的语义信息

所以本文的主要工作就是针对前述两方面分别设计了两个模块。如图1所示, 其核心的bockbone和ViT相同。在 ‘A small, hierarchical module' 中其实是一个简化的CNN backbone; 在 'second-order, cross covariance pooling'中其本质就是一种特征池化的方式,我们在CCT Escaping the big data paradigm with compact transformers 那篇文章也接触到类似的池化方法,那里提出的一种seqpooling的方法本质是一种加权平均的思想。

[图片上传失败...(image-27f07a-1619591409974)]

Method

  • Embedding of visual tokens

类似与T2T的方式,为了更好的从scratch处理中小规模的数据,同样的引入了inductive bias,但该偏置的引入又不影响backbone,即ViT的结构,于是只能在输入上进行操作。T2T使用的是多层的T2T module, 这里其实本质上就是简化的cnn backbone。其最基础的结构为:

[图片上传失败...(image-8f6163-1619591409974)]

当然中间的stage本部分可以使用不同的经典cnn结构,比如dense net和resnet net, inception net等等, 最终获得的特征图尺寸为原始图像的8倍下采样,最后一层1x1的卷积层将特征维度映射为backbone的输入尺寸,可以发现这里backbone丝毫没改变。

  • Fusing class and visual tokens for classification

ViT仅利用class token的特征进行最后的分类,而研究认为在最后输出的patch token (visual token)中同样含有利于分类的语义信息,因此可以将class token与patch token结合用于分类。最直接的想法是将patch token特征平均池化和class token融合。而本文使用的是second-order pooling,又称为bilinear pooling。

second-order pooling的主要思想是利用不同机制获得的特征之间的相关性来刻画图像。具体而言,同一个样本以不同方式获得的特征分别为X\in R^{N\times m},Y\in R^{N\times n}, 于是特征之间的相关性其实就是X,Y之间的协方差矩阵X^TY\in R^{m\times n}, 于是vec(X^TY)就是其二阶池化的结果。

在ViT中每个样本划分成不同的patch token,每个patch token都对应一个特征,于是通过两个线性变换 W_1, W_2, 就能分别获得 X, Y

 研究还发现,对于池化后的特征进行归一化操作能更好的提升性能,于是本文采用的是奇异值幂归一化,本质上就是对协方差的奇异值进行幂次变化  $ svPN(Q) = U \text{diag}(\lambda_i^\alpha)V^T $, 其中 $ \alpha $ 表示幂归一化的力度。

visual token的特征在池化之后和 class token有不同的联合方式,如图2所示:

[图片上传失败...(image-4c4af7-1619591409973)]

Experiments

实验部分相对而言还是比较充分的。

  • 消融实验

    1. Table 2. 对比了在 token embedding部分使用不同的结构的性能对比,发现纯CNN的结构优于T2T,且ResNet block的性能最好

    2. Table 3. 对比了不同的池化方式: 一阶池化和二阶池化,以及Figure2中的不同特征融合方式的性能对比。这里一阶池化没说明具体是什么池化,估计是平均池化。发现二阶池化的性能要优于一阶池化,且二阶池化的作用相对于baseline(只用class token) 的收益总是正向的,但一阶的情况下有些特征融合下性能反而下降了不少。总的而言,二阶池化的方式并在最后的FC层后与class token相加融合获得性能最好,也就是Figure 2中左下角的结构。

    3. Table 4. 分析了 二阶池化中的归一化的不同设置的结果。 a表是\alpha的设置, 当其为0.5时性能最好,下半部分是对奇异值分解的近似迭代算法以提升计算速度。 b 表 对比了使用 二阶池化方式表示样本和使用visual tokens之间的相似度矩阵similarity matrix表示样本的结果,发现二阶池化的方式优势显著,无论是计算量还是性能; c表是两个分支分别生成不同的X,Y时的结果,注意 m,n其实是对称的。发现维度越高性能越好。d表则分析了不同的归一化方式,其中EPN是对每一个元素进行幂乘处理,这里是0.5,

[图片上传失败...(image-c3053c-1619591409973)] [图片上传失败...(image-fb94eb-1619591409973)]

[图片上传失败...(image-6c2bee-1619591409973)]

   4.  Table 5 对比了相同规模的T2T-ViT 和 SoViT的收敛速度和性能,发现在 transformer block较少时, SoViT显著的超越T2T-ViT, 在transformer block增多时这种差异性缩小。 另外T2T-ViT是在310个epochs的结果,而 SoViT的收敛速度显著提升。

[图片上传失败...(image-3d0b1-1619591409973)]

Thoughts

  1. 文章以T2T-ViT作为baseline进行对比,虽然验证了性能优于T2T-ViT, 但并没有分析出这种性能优势来源于哪里?如果T2T-ViT的backbone之后加上second-order pooling的性能又将如何呢?
  2. CCT方法中低层使用的也是CNN 的backbone, 对visual tokens使用的是seq pooling的方式,那么seq pooling和second-order pooling的性能对比又将怎样呢?
  3. 该方法的代码暂时未放出,里面取得的高性能对应的超参数具体设置还不是很清楚,超参数是怎样选择的呢?对超参数是否鲁棒是个问题。

参考文献

https://openaccess.thecvf.com/content_cvpr_2018/papers/Koniusz_A_Deeper_Look_CVPR_2018_paper.pdf

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

推薦閱讀更多精彩內容