CVPR 2022 | FAIR提出MaskFeat:自监督视觉预训练新方法!灵感之一来自16年前CVPR论文...

ea9c3ff230eb41b13f8f77fb0af7473c.png

编 | 小咸鱼 好困
源 | 新智元

【导读】近日,北大校友、约翰·霍普金斯大学博士生提出了一种新的方法:MaskFeat,摘下12个SOTA!这是一个能用于视频模型的自监督预训练方法:掩码特征预测(MaskFeat)。

0bd3683583dd70385ab76c18ca22c4f0.png

论文标题:
Masked Feature Prediction for Self-Supervised Visual Pre-Training

Masked Feature Prediction for Vision Self-Supervised Pre-Training

论文链接:
https://arxiv.org/abs/2112.09133

简而言之,MaskFeat的ViT-B在ImageNet 1K上的准确率达到了84.0%,MViT-L在Kinetics-400上的准确率达到了86.7%,成功地超越了BEiT等方法。

d2ffa8dc556255bfca0c25814775d10a.png

一作Chen Wei是约翰·霍普金斯大学的计算机科学博士生,此前在北京大学获得了计算机科学学士学位。

并曾在FAIR、谷歌和华为诺亚方舟实验室实习,主要研究方向是视觉自监督学习。

062e67eadeaa1307db1afbc4cd0ce2f3.pngHOG VS Pixel Colors65d371f903319d683db1cf6ae111189b.png

「Mask-and-Predict」总要有个可以「Predict」的特征来让模型学习到东西。

MaskFeat最核心的改变就是将MAE对图像像素(pixel)的直接预测,替换成对图像的方向梯度直方图(HOG)的预测。

f5629caebc7a41f482ccbaf4c8207c91.png
▲图像HOG特征向量

说到HOG,这可不是什么新鲜玩意儿。

HOG是一种经典的图像特征提取算法,发表于2005年的CVPR,到现在已经收获了37000+的引用。

e9a05c0d7c26c16f7bdb48a5fc0d39ab.png
▲https://hal.inria.fr/file/index/docid/548512/filename/hog_cvpr2005.pdf

那为什么预测图像的HOG比直接预测像素更好呢?

像素作为预测目标,有一个潜在的缺点,那就是会让模型过度拟合局部统计数据(例如光照和对比度变化)和高频细节,而这些对于视觉内容的解释来说很可能并不是特别重要。

相反,方向梯度直方图(HOG)是描述局部子区域内梯度方向或边缘方向分布的特征描述符,通过简单的梯度滤波(即减去相邻像素)来计算每个像素的梯度大小和方向来实现的。

4ff43a938d52c04aa171663211ae95be.png
▲通过将局部梯度组织化和归一化,HOG对模糊问题更加稳健

HOG的特点是善于捕捉局部形状和外观,同时对几何变化不敏感,对光的变化也有不变性,计算引入的开销还很小,可以忽略不计。

563a5dc9d0ce30e528422de7b9aab93e.png

这次,MaskFeat引入HOG,其实正是将手工特征与深度学习模型结合起来的一次尝试。

MaskFeat首先随机地mask输入序列的一部分,然后预测被mask区域的特征。

34ccebd8a47301388f188acc3bc979bb.png
▲对未见过的验证图像的HOG预测

只不过,模型是通过预测给定masked input(左)的HOG特征(中间)来学习的,原始图像(右)并不用于预测。

方向梯度直方图(HOG)这个点子的加入使得MaskFeat模型更加简化,在性能和效率方面都有非常出色的表现。

53db9d1ea80915bd29ab81eaa08677c6.png

在不使用额外的模型权重、监督和数据的情况下,MaskFeat预训练的MViT-L在Kinetics-400数据集上获得了86.7%的Top-1准确率。

这个成绩以5.2%的幅度领先此前的SOTA,也超过了使用如IN-21K和JFT-300M这些大规模图像数据集的方法。

此外,MaskFeat的准确率在Kinetics-600数据集上为88.3%,在Kinetics-700数据集上为80.4%,在AVA数据集上为38.8 mAP,而在SSv2数据集上为75.0%。

25d90961bf23b6b24f9db6b314588053.png结果分析4a637069eb4ee43f5ac1345ad1685672.png

Kinetics-400数据集

相比于不使用预训练的CNN,严重依赖大规模图像数据集和监督性预训练的基于Transformer的方法,MaskFeat表现出极佳的性能。

c7b2cf5193fbed84273348a775187e27.png
▲在Kinetics-400数据集上的比较

经过300个epoch预训练的MaskFeat将MViT-S,16×4的81.1%的top-1准确率提高了1.1%。其中,16×4表示该模型在训练过程中采用16个时间跨度为4的帧作为输入。

而在K400上用MaskFeat预训练了800个epoch的MViT-L 16×4达到了84.3%的top-1准确率,比其基线高出了3.8%,比使用IN-21K训练的监督模型高出了0.8%。

MaskFeat也以一己之力将K400上没有外部数据的最佳准确率(MoViNet-A6的81.5%)提高了5.2%。

此外,MaskFeat仅用K400的结果(86.7%)就能和86.5%的Florence和86.8%的SwinV2-G不相上下。其中,Florence使用了9亿个文本-图像对,SwinV2-G使用了一个具有30亿个参数的巨型模型,并首先在IN-21K和7千万张内部图像的大型数据集上进行自监督和监督预训练。

可以说,MaskFeat在参数量、计算成本、数据和注释方面的高效性再次证明了直接在未标记的视频上进行预训练的优势,也为一种全新的视频预训练方式打开了大门。

Kinetics-600 & Kinetics-700数据集

fd06f3dac9a8a6898f9c327ce83748f9.png
▲在Kinetics-600数据集上的比较
872cecf9ce0424000169385d86203fb4.png
▲在Kinetics-700数据集上的比较

MaskFeat在K600和K700上分别达到了86.4%和77.5%的top-1准确率,与之前基于Transformer的方法相比,既没有使用外部的图像数据,而且FLOPs还减少了10倍以上。

而在更大的输入分辨率312和更长的持续时间40×3下,MaskFeat在K600上实现了88.3%的top-1准确率,在K700上实现了80.4%的top-1准确率。

于是,MaskFeat在没有任何外部监督(如IN-21K和JFT-300M)的情况下,为每个数据集都创造了新的SOTA。

ImageNet-1K数据集

0c54194ec924b9a3ff0f3f4ce96a6596.png

对MaskFeat进行1600个epoch的预训练,在ViT-B上微调100个epoch,在ViT-L上微调50个epoch。

当图像大小为224x224时,MaskFeat与在IN-21K上进行的有监督的预训练相比,在ViT-B上打成了平手,而在ViT-L上直接实现了超越。

当图像大小为384x384时,利用IN-21K的有监督预训练需要用到比MaskFeat多10倍的图像和标注。

通常来说,由于缺乏典型的CNN归纳偏置,ViT模型对数据要求很高,并且需要大规模的监督预训练。而MaskFeat可以在没有外部标记数据的情况下通过解决特征图像修复任务来克服这个问题。

此外,与BEiT相比,MaskFeat只需要计算HOG特征,摆脱了dVAE的tokenizer。而后者在250M DALL-E数据集上引入了额外的预训练阶段,并在mask预测期间引入了不可忽视的推理开销。与MoCo v3和DINO相比,MaskFeat也更准确、更简单。

76d548c3f6749cd17f5c077f29fb717f.png
▲此处MaskFeat的预训练为300个epoch

随着MAE、MaskFeat等模型的出现,NLP界的制胜武器「Mask-and-Predict」会是CV自监督预训练的下一个标准范式吗?

对此,来自清华大学的知友「谢凌曦」表示:

视觉自监督领域做了这么些年,从最早的生成式学习出发,绕了一圈,又回到生成式学习。到头来,我们发现像素级特征跟各种手工特征、tokenizer、甚至离线预训练网络得到的特征,在作为判断生成图像质量方面,没有本质区别。
也就是说,自监督也许只是把模型和参数调得更适合下游任务,但在「新知识从哪里来」这个问题上,并没有任何实质进展。

1c7b36f1ee849fc8965dd44b9600e3b3.png后台回复关键词【入群

加入卖萌屋NLP、CV与搜推广与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

b3f2a562a54e316010cff17e73274ee1.gif 16fbbaf87363d1025e47fb5f8e17179c.png

[1]https://arxiv.org/pdf/2112.09133.pdf

[2]https://www.zhihu.com/question/506657286/answer/2275700206

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/477290.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简化Swagger使用的自制Starter:spring-boot-starter-swagger,欢迎使用和吐槽

项目简介 该项目主要利用Spring Boot的自动化配置特性来实现快速的将swagger2引入spring boot应用来生成API文档,简化原生使用swagger2的整合代码。 GitHub:https://github.com/dyc87112/spring-boot-starter-swagger码云:http://git.oschi…

LeetCode 1354. 多次求和构造目标数组(优先队列+逆向思考)

1. 题目 给你一个整数数组 target 。一开始&#xff0c;你有一个数组 A &#xff0c;它的所有元素均为 1 &#xff0c;你可以执行以下操作&#xff1a; 令 x 为你数组里所有元素的和选择满足 0 < i < target.size 的任意下标 i &#xff0c;并让 A 数组里下标为 i 处的…

Spring Boot自动化配置的利弊及解决之道

Spring Boot中的双刃剑&#xff1a;自动化配置 在之前发布的Spring Boot基础教程系列文章中&#xff0c;我们通过各种功能性示例体验了Spring Boot的自动化配置给我们所带来的超便利的新开发方式。但是&#xff0c;在一些情况下Spring Boot的自动化配置也会给我们惹来不少的麻…

人在ACL2022,无人戴口罩我有些慌

文 | 小伟大家好&#xff0c;我是阿伟 (不是杰哥不要的阿伟)&#xff0c;NLP小萌新&#xff0c;好久不见&#xff01;之前忙着赶ddl一直没时间写文&#xff0c;趁着这次去都柏林参加了人生第一次线下ACL会议的机会&#xff0c;把自己的一些体验分享给大家。22号早上到了都柏林发…

剑指Offer - 面试题32 - I. 从上到下打印二叉树(按层BFS遍历,queue)

1. 题目 从上到下打印出二叉树的每个节点&#xff0c;同一层的节点按照从左到右的顺序打印。 例如: 给定二叉树: [3,9,20,null,null,15,7],3/ \9 20/ \15 7 返回&#xff1a; [3,9,20,15,7]提示&#xff1a; 节点总数 < 1000来源&#xff1a;力扣&#xff08;LeetCode…

Spring Boot中使用Actuator的/info端点输出Git版本信息

对于Spring Boot的Actuator模块相信大家已经不陌生了&#xff0c;尤其对于其中的/health、/metrics等强大端点已经不陌生&#xff08;如您还不了解Actuator模块&#xff0c;建议先阅读《Spring Boot Actuator监控端点小结》&#xff09;。但是&#xff0c;其中还有一个比较特殊…

管培生走下神坛,“高管捷径”破灭

文 | 翟元元源 | Tech星球曾经令打工人羡慕不已的管培生光环&#xff0c;正逐渐失色。近日&#xff0c;一位叮咚买菜的管培生在某社交平台爆料&#xff0c;管培生这一带有职业光环的角色有着不为人知的B面。“叮咚买菜管培生&#xff0c;别去&#xff0c;快跑。每天12小时以上体…

剑指Offer - 面试题32 - III. 从上到下打印二叉树 III(BFS,queue+stack)

1. 题目 请实现一个函数按照之字形顺序打印二叉树&#xff0c; 即第一行按照从左到右的顺序打印&#xff0c; 第二层按照从右到左的顺序打印&#xff0c; 第三行再按照从左到右的顺序打印&#xff0c;其他行以此类推。 例如: 给定二叉树: [3,9,20,null,null,15,7],3/ \9 20/…

互联网行业,回暖了?

源 | 36氪经过这一年的调整&#xff0c;中国互联网企业或许才算得上真正成熟起来。有统计显示&#xff0c;目前中国互联网公司股价已经缓慢升至 3 个月以来的新高。反映中概股表现的纳斯达克中国金龙指数在近期连涨三天&#xff0c;自5月11日以来更是累计上涨逾40%。利好的信号…

使用Spring Boot Actuator、Jolokia和Grafana实现准实时监控

由于最近在做监控方面的工作&#xff0c;因此也读了不少相关的经验分享。其中有这样一篇文章总结了一些基于Spring Boot的监控方案&#xff0c;因此翻译了一下&#xff0c;希望可以对大家有所帮助。 原文&#xff1a;Near real-time monitoring charts with Spring Boot Actuat…

剑指Offer - 面试题33. 二叉搜索树的后序遍历序列(递归)

1. 题目 输入一个整数数组&#xff0c;判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true&#xff0c;否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树&#xff1a;5/ \2 6/ \1 3 示例 1&#xff1a; 输入: [1,6,3,2,5]…

Geoffrey Hinton 最新访谈:不出五年,我们就会破解大脑的运作机制,但不是通过反向传播...

文 | Geoffrey Hinton整理 | 李梅、黄楠编 | 陈彩娴过去十年&#xff0c;AI 在计算机视觉、语音识别、机器翻译、机器人、医学、计算生物学、蛋白质折叠预测等等领域取得了一个又一个突破&#xff0c;而这些突破的背后&#xff0c;均离不开深度学习。那么&#xff0c;深度学习起…

Spring Boot 1.5.x新特性:动态修改日志级别

前天Spring Boot 1.5终于迎来了第一个RELEASE版本&#xff1a;1.5.0&#xff0c;但是由于一个编译依赖问题在第二天直接连击到了1.5.1。该版本的发布包含了超过320位贡献者的奉献、10000多次的代码提交。 每次Spring Boot版本更新所带来的新特性都是我们每个用户特别关注的。虽…

基于sklearn的LogisticRegression鸢尾花多类分类实践

文章目录1. 问题描述2. 数据介绍2.1 数据描述2.2 数据2.3 数据可视化3. 模型选择3.1 固有的多类分类器3.2 1对多的多类分类器3.3 OneVsRestClassifier3.4 OneVsOneClassifier4. 结果分析5. 附完整代码鸢尾花&#xff08;拼音&#xff1a;yuān wěi huā&#xff09;又名&#…

CMU 提出全新 GAN 结构,GAN 自此迈入预训练大军!

文&#xff5c;林锐众所周知&#xff0c;现在 GAN 的应用是越来越宽泛了&#xff0c;尤其是在 CV 领域。不仅可以调个接口生成新头像图一乐&#xff0c;也可以用 GAN 做数据增强让模型更加健壮。▲嘉然你带我走吧嘉然&#xff01;在CV领域&#xff0c;不像分类、目标检测等任务…

在传统Spring应用中使用spring-boot-actuator模块提供监控端点

在之前发布的《Spring Boot Actuator监控端点小结》一文中&#xff0c;我们介绍了Spring Boot Actuator模块为应用提供的强大监控能力。在Spring Boot应用中&#xff0c;我们只需要简单的引入spring-boot-starter-actuator依赖就能为应用添加各种有用的监控端点。其中&#xff…

剑指Offer - 面试题38. 字符串的排列(全排列,排序,回溯+剪枝)

1. 题目 输入一个字符串&#xff0c;打印出该字符串中字符的所有排列。 你可以以任意顺序返回这个字符串数组&#xff0c;但里面不能有重复元素。 示例: 输入&#xff1a;s "abc" 输出&#xff1a;["abc","acb","bac","bca&q…

我手撸了一个乞丐版深度学习框架,已开源!

文 | 王桂波知乎源 | 极市平台当前深度学习框架越来越成熟&#xff0c;对于使用者而言封装程度越来越高&#xff0c;好处就是现在可以非常快速地将这些框架作为工具使用&#xff0c;用非常少的代码就可以构建模型进行实验&#xff0c;坏处就是可能背后地实现都被隐藏起来了。在…

使用Intellij中的Spring Initializr来快速构建Spring Boot/Cloud工程

在之前的所有Spring Boot和Spring Cloud相关博文中&#xff0c;都会涉及Spring Boot工程的创建。而创建的方式多种多样&#xff0c;我们可以通过Maven来手工构建或是通过脚手架等方式快速搭建&#xff0c;也可以通过《Spring Boot快速入门》一文中提到的SPRING INITIALIZR页面工…

剑指Offer - 面试题61. 扑克牌中的顺子

1. 题目 从扑克牌中随机抽5张牌&#xff0c;判断是不是一个顺子&#xff0c;即这5张牌是不是连续的。2&#xff5e;10为数字本身&#xff0c;A为1&#xff0c;J为11&#xff0c;Q为12&#xff0c;K为13&#xff0c;而大、小王为 0 &#xff0c;可以看成任意数字。A 不能视为 1…