近三年CVPR引用最高的论文:​恺明一如既往的正常发挥

作者 | 笑傲 编辑 | 极市平台

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

点击进入→自动驾驶之心【全栈算法】技术交流群

导读

 

恺明大神无惊无险连续三年上榜。

近三年CVPR引用量最高论文(截止目前2022年11月):

  • CVPR2020引用量最高的论文:MoCo

  • CVPR2021引用量最高的论文:SimSiam

  • CVPR2022引用量最高的论文:MAE

它们的共同点是:

  • 三篇论文唯一单位:Facebook(FAIR)

  • 三篇论文唯一共同作者:何恺明(KaimingHe)

  • 三篇论文均属于:自监督学习(Self-Supervised Learning)

MoCo CVPR2020

f61232e21fca481740cd8ce2974e51cf.jpeg
MoCo CVPR2020
  • 论文地址:https://arxiv.org/pdf/1911.05722.pdf

  • 开源地址:https://github.com/facebookresearch/moco

  • 李沐精读:https://www.bilibili.com/video/BV1C3411s7t9/?spm_id_from=333.999.0.0&vd_source=ec54183c11e50329f6359027c7459966

  • 知乎解读:https://zhuanlan.zhihu.com/p/382763210

  • 知乎解读:https://zhuanlan.zhihu.com/p/365886585

MoCo为CV拉开了Self-Supervised的新篇章,与Transformer联手成为了深度学习炙手可热的研究方向。

MoCo主要设计了三个核心操作:Dictionary as a queueMomentum updateShuffling BN

Dictionary as a queue

MoCo提出了将memory bank的方法改进为dictionary as a queue,意思就是跟memory bank类似,也保存数据集中数据特征,只不过变成了queue的形式存储,这样每个epoch会enqueue进来一个batch的数据特征,然后dequeue出去dictionary中保存时间最久的一个batch的数据特征,整体上来看每个epoch,dictionary中保存的数据特征总数是不变的,并且随着epoch的进行会更新dictionary的数据特征。同时dictionary的容量不需要很大。

56d4a073922d0b6cfac591570908c455.jpeg
图2:三种对比损失机制比较

Momentum update 动量更新

MoCo在dictionary as a queue的基础上,增加了一个momentum encoder的操作,key的encoder参数等于query的encoder参数的滑动平均,公式如下:

e84057f74491b9c373bc3c42141a297d.jpeg

 和 分别是key的encoder和query的encoder的参数,m是0-1之间的动量系数。因为momentum encoder的存在,导致key支路的参数避免了突变,可以将多个epoch的数据特征近似成一个静止的大batch数据特征。

MoCo伪代码如下

f_k.params = f_q.params # 初始化  
for x in loader: # 输入一个图像序列x,包含N张图,没有标签  
    x_q = aug(x) # 用于查询的图(数据增强得到)  
    x_k = aug(x) # 模板图(数据增强得到),自监督就体现在这里,只有图x和x的数据增强才被归为一类  
    q = f_q.forward(x_q) # 提取查询特征,输出NxC  
    k = f_k.forward(x_k) # 提取模板特征,输出NxC  
    # 不使用梯度更新f_k的参数,这是因为文章假设用于提取模板的表示应该是稳定的,不应立即更新  
    k = k.detach()   
    # 这里bmm是分批矩阵乘法  
    l_pos = bmm(q.view(N,1,C), k.view(N,C,1)) # 输出Nx1,也就是自己与自己的增强图的特征的匹配度  
    l_neg = mm(q.view(N,C), queue.view(C,K)) # 输出Nxk,自己与上一批次所有图的匹配度(全不匹配)  
    logits = cat([l_pos, l_neg], dim=1) # 输出Nx(1+k)  
    labels = zeros(N)  
    # NCE损失函数,就是为了保证自己与自己衍生的匹配度输出越大越好,否则越小越好  
    loss = CrossEntropyLoss(logits/t, labels)   
    loss.backward()  
    update(f_q.params) # f_q使用梯度立即更新  
    # 由于假设模板特征的表示方法是稳定的,因此它更新得更慢,这里使用动量法更新,相当于做了个滤波。  
    f_k.params = m*f_k.params+(1-m)*f_q.params   
    enqueue(queue, k) # 为了生成反例,所以引入了队列  
    dequeue(queue)

SimSiam CVPR2021

62d68a0056d61628fc5d709172707f98.jpeg
SimSiam CVPR2021
  • 论文地址:https://arxiv.org/pdf/2011.10566.pdf

  • 知乎解读:https://zhuanlan.zhihu.com/p/452659570

  • 解读博客:https://www.cnblogs.com/wyboooo/p/14036948.html

Siamese Network是近年来自监督/无监督任务中非常常用的网络,他是应用于两个或更多输入的一个权值共享的网络,是比较两个实体天然的工具。目前的大部分方法都是用一个图像的两种augmentation作为输入,在不同的条件下来最大化他们的相似度。但是Siamese Network会遇到的一个问题是,他的解可能会collapse至一个常量。目前常用的解决这个问题的方法有:Contrastive Learning,引入负样本,负样本会把constant 输出排除到解空间以外;Clustering;momentum encoder。在本文中作者就指出,一个简单的Siamese 网络不需要以上方法也可以有效避免collapsing问题,并且不依赖于large-batch训练。作者将他们的方法称为“SimSiam”,并指出其中的stop-gradient操作才是在避免collapsing中非常重要的。这可能是由于有一个潜在的优化问题被解决了。作者推测实际上这里有两组变量,SimSiam实际上是在交替优化每一组变量。SimSiam 伪代码如下:

# Algorithm1 SimSiam Pseudocode, Pytorch-like  

# f: backbone + projection mlp  

# h: prediction mlp  

for x in loader: # load a minibatch x with n samples  
 x1, x2 = aug(x), aug(x) # random augmentation  
 z1, z2 = f(x1), f(x2) # projections, n-by-d  
 p1, p2 = h(z1), h(z2) # predictions, n-by-d  
 L = D(p1, z2)/2 + D(p2, z1)/2 # loss  
 L.backward() # back-propagate  
 update(f, h) # SGD update  
      
def D(p, z): # negative cosine similarity  
 z = z.detach() # stop gradient  
 p = normalize(p, dim=1) # l2-normalize  
 z = normalize(z, dim=1) # l2-normalize  
return -(p*z).sum(dim=1).mean()

MAE CVPR2022

0d10754692c7a45858a2576a8d8662f6.jpeg
MAE CVPR2022
  • 论文地址:https://arxiv.org/pdf/2111.06377.pdf

  • 开源地址:https://github.com/facebookresearch/mae

  • 李沐精读:https://www.bilibili.com/video/BV1sq4y1q77t/?spm_id_from=333.788&vd_source=ec54183c11e50329f6359027c7459966

  • 知乎解读:https://zhuanlan.zhihu.com/p/432950958

  • 知乎解读:https://zhuanlan.zhihu.com/p/448407149

Motivation

虽然预训练在NLP上正发展的如火如荼,但是在计算机视觉方向却鲜有文章,究其原因,论文中给出了三个重要的点。

  • 模型架构不同:在过去的几十年,计算机视觉被卷积神经网络所垄断着,卷积是一个基于划窗的算法,它和其它嵌入(位置嵌入等)的融合比较困难,直到Transformer的提出才解决了这个问题。

  • 信息密度不同:文本数据是经过人类高度抽象之后的一种信号,它的信息是密集的,所以仅仅预测文本中的几个被掩码掉的单词就能很好的捕捉文本的语义特征。而图像数据是一个信息密度非常小的矩阵,其中包含着大量的冗余信息,而且像素和它周围的像素仅仅在纹理上就有非常大的相似性,恢复被掩码的像素并不需要太多的语义信息。

  • 解码器的作用不同:在BERT的掩码语言模型任务中,预测被掩码掉的单词是需要解码器了解文本的语义信息的。但是在计算机视觉的掩码预测任务中,预测被掩码的像素往往对图像的语义信息依赖的并不严重。

基于这三个动机,作者设计了基于掩码自编码器(Masked AutoEncoder,MAE)的图像预训练任务。MAE的先对图像的Patch进行掩码,然后通过模型还原这些掩码,从事实现模型的预训练。MAE的核心是通过75%的高掩码率来对图像添加噪音,这样图像便很难通过周围的像素来对被掩码的像素进行重建,迫使编码器去学习图像中的语义信息。

模型介绍

MAE的网络结构如图1所示,它是一个非对称的Encoder-Decoder架构的模型,Encoder架构是采用了ViT提出的以Transformer为基础的骨干网络,它的基于Patch的输入正好可以拿来作为掩码的基本单元。MAE的Decoder是一个轻量级的结构,它在深度和宽度上都比Encoder小很多。MAE的另一个非对称的表现在Encoder仅将未被掩码的部分作为输入,而Decoder将整个图像的Patch(掩码标志和Encoder编码后的未被掩码patch的图像特征)作为输入。

44aa62a5cf7b272240971e71f2143b47.jpeg
图1:MAE的网络结构

往期回顾

2022最新!自动驾驶、计算机视觉和AI公司汇总

5c67439b1f5d9a358c621e40444ba68f.png

自动驾驶之心】全栈技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多传感器融合、SLAM、光流估计、深度估计、轨迹预测、高精地图、规划控制、模型部署落地、自动驾驶仿真测试、硬件配置、AI求职交流等方向;

a709c3c7a8a79f2d5abfb678e9b23acc.jpeg

添加汽车人助理微信邀请入群

备注:学校/公司+方向+昵称

自动驾驶之心【知识星球】

想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D目标检测、多传感器融合、目标跟踪、光流估计、轨迹预测)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球(三天内无条件退款),日常分享论文+代码,这里汇聚行业和学术界大佬,前沿技术方向尽在掌握中,期待交流!

e8bbd05a6a220d6edd32c9bde4cdbfc3.jpeg

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是三篇近三年关于图像分类的外文文献和相关代码地址: 1. 论文题目:"Dual Attention Network for Scene Segmentation" 论文作者:Jun Fu, Jing Liu, Haijie Tian, Zhiwei Fang, and Hanqing Lu 期刊/会议:CVPR 2019 论文简介:本文提出了一种基于双重注意力机制的图像分类方法,称为Dual Attention Network(DAN)。该方法可以有效地捕捉图像中的全局和局部信息,并在场景分割任务中实现了最先进的性能。此外,本文还提出了一种新的注意力损失函数,用于训练DAN。 代码地址:https://github.com/junfu1115/DANet 2. 论文题目:"A Stronger Baseline for ImageNet Classification" 论文作者:Saining Xie, Ross Girshick, Piotr Dollár, Zhuowen Tu, and Kaiming He 期刊/会议:CVPR 2020 论文简介:本文提出了一种新的图像分类网络,称为Swin Transformer。该网络基于Transformer架构,并在ImageNet数据集上实现了最先进的性能。Swin Transformer具有更高的计算效率和更好的可扩展性,可以应用于各种计算机视觉任务。 代码地址:https://github.com/microsoft/Swin-Transformer 3. 论文题目:"Self-Label-Cleaner: Label Noise Detection and Joint Learning with Clean Labels" 论文作者:Jiequan Cui, Hua Yang, Yuzhuo Ren, and Hongkai Xiong 期刊/会议:ICCV 2021 论文简介:本文提出了一种新的图像分类方法,称为Self-Label-Cleaner(SLC)。该方法可以检测和修复标签噪声,并在深度神经网络中实现联合学习。SLC采用一种基于特征相似度的标签清洗方法,可以在不需要额外标注的情况下提高图像分类的准确率。 代码地址:https://github.com/JiequanCui/Self-Label-Cleaner

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值