深度学习论文: DINOv2: Learning Robust Visual Features without Supervision

深度学习论文: DINOv2: Learning Robust Visual Features without Supervision
DINOv2: Learning Robust Visual Features without Supervision
PDF: https://arxiv.org/abs/2304.07193
PyTorch代码: https://github.com/shanglianlm0525/CvPytorch
PyTorch代码: https://github.com/shanglianlm0525/PyTorch-Networks

1 概述

提出一种自监督学习方法DINOv2,可在不需要微调的情况下,生成适用于各种图像分布和任务的通用视觉特征,使用精心筛选的大量图像数据进行预训练,并利用自动流程构建数据集以提高稳定性并加速训练。
在这里插入图片描述

2 Data Processing

本文创建了LVD-142M数据集,通过从大量未筛选的网络数据中挑选与现有筛选数据集相似的图像。数据管道包括筛选/未筛选数据源、图像去重和检索系统,直接处理图像,不依赖元数据或文本。
在这里插入图片描述
数据源包括多个筛选数据集如ImageNet,以及从公开网络爬取的未筛选图像。从网页中提取图像URL,并进行后处理,包括去重、过滤不当内容和模糊人脸,最终获得12亿张独特图像。

去重阶段使用现有技术移除近乎重复图像,提高数据多样性。自监督图像检索通过计算图像嵌入和余弦相似度,从未筛选数据中挑选与筛选数据集中图像接近的图像。

实现细节方面,使用Faiss库进行高效的索引和批量搜索最近嵌入,利用GPU加速处理,并通过计算集群在不到两天的时间内完成了LVD-142M数据集的生成。

3 Discriminative Self-supervised Pre-training

本文采用自监督学习方法来训练特征,结合了DINO、iBOT损失和SwAV居中。同时还加入了特征分散的正则化器和高分辨率训练阶段。

  • 图像级目标:计算学生和教师网络提取特征间的交叉熵损失,使用DINO头处理类标记,并通过softmax和居中处理得到损失项。

  • 补丁级目标:对学生网络的输入补丁进行随机遮蔽,应用iBOT头处理掩码标记,计算损失项。

  • 头权重解耦:DINO和iBOT损失使用独立的MLP头,避免参数共享。

  • Sinkhorn-Knopp居中:采用SwAV的居中方法进行批归一化。

  • KoLeo正则化:基于Kozachenko-Leonenko熵估计器,促使批次内特征均匀分布。

  • 分辨率调整:在预训练的最后阶段提高图像分辨率至518×518,以适应像素级任务需求。

4 Efficient implementation

在这里插入图片描述

为了在更大规模上训练模型,采用了以下改进措施:

  • 快速内存高效注意力:实现了改进版的FlashAttention,提高自注意力层的内存使用效率和速度。

  • 序列打包:采用序列打包技术,将不同长度的标记序列合并为一个长序列,提高训练效率。

  • 高效随机深度:改进随机深度实现,跳过丢弃残差的计算,节省内存和计算资源。

  • 全分片数据并行(FSDP):使用FSDP跨GPU分割模型副本,减少内存占用,提高计算效率和扩展性。

  • 模型蒸馏:对于较小模型,采用知识蒸馏方法,从最大的ViT-g模型中提取知识,而不是从头开始训练。

这些技术改进旨在提高大规模数据集上大型模型的训练效率,同时保持或提高最终模型的性能。通过蒸馏方法,即使是较小的模型也能获得与大型模型相似的性能。

5 Results

5-1 ImageNet Classification

在这里插入图片描述

5-2 Image and Video classification Benchmarks

在这里插入图片描述

5-3 Instance Recognition

在这里插入图片描述

5-4 Semantic segmentation

在这里插入图片描述

5-5 Depth estimation

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【产品面对面】deepin 办公升级:打印管理器全功能解析及驱动资源汇总

内容来源:deepin(深度)社区 如果你想要或者正在使用 deepin 进行办公,那么一定会使用到 “打印管理器”。打印管理器作为一款管理打印机的工具,将成为你办公得力助手之一。近期,我们会在 deepin 应用商店发…

【学习心得】算法刷题心得分享

一、为什么要刷题? 提升编程能力,强化对数据结构的理解,熟练掌握常用的算法等为竞赛、考试做准备找实习、找工作需要(上机考试面试手撕代码)提升自信心,放松一下 二、刷题前应该有哪些知识储备?…

Web 网页性能优化

Web 网页性能及性能优化 一、Web 性能 Web 性能是 Web 开发的一个重要方面,侧重于网页加载速度以及对用户输入的响应速度 通过优化网站来改善性能,可以在为用户提供更好的体验 网页性能既广泛又非常深入 1. 为什么性能这么重要? 1. 性能…

Spring Boot前后端简单集成MinIo开发

Spring Boot前后端简单集成MinIo开发 源码地址重要配置和代码MinIO配置核心代码 最终效果 源码地址 minioStudy 重要配置和代码 MinIO配置 pom文件引入依赖 <!-- minio --> <dependency><groupId>io.minio</groupId><artifactId>minio</ar…

驱鸟设备之机场专用电子炮驱鸟器

近年来&#xff0c;随着全球环保意识的显著增强&#xff0c;鸟类种群数量呈现稳步上升的趋势。然而&#xff0c;这一积极的生态变化也带来了一系列挑战&#xff0c;其中之一就是鸟击事件的概率显著增加。在这种情况下&#xff0c;采取有效的鸟害防治措施显得尤为重要。 合理利用…

【Centos7】CentOS 7下的PyTorch安装策略:高效实践指南

【Centos7】CentOS 7下的PyTorch安装策略&#xff1a;高效实践指南 大家好 我是寸铁&#x1f44a; 总结了一篇【Centos7】CentOS 7下的PyTorch安装策略&#xff1a;高效实践指南✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 前言 由于需要跑深度学习&#xff0c;要用到pytorch&a…

伦敦金交易规则赶快学起来!

今年美联储开启降息的时间窗口也许就在下半年&#xff0c;黄金价格有望再次迎来趋势性的上涨&#xff0c;投资者进入黄金市场可谓恰逢其时。目前市场上主流的黄金投资方式是电子盘交易&#xff0c;当中又以国际市场上的伦敦金&#xff0c;在全球范围最为普及。 炒卖伦敦金&…

计算机网络学习记录 运输层 Day5

你好,我是Qiuner. 为记录自己编程学习过程和帮助别人少走弯路而写博客 这是我的 github https://github.com/Qiuner ⭐️ ​ gitee https://gitee.com/Qiuner &#x1f339; 如果本篇文章帮到了你 不妨点个赞吧~ 我会很高兴的 &#x1f604; (^ ~ ^) 想看更多 那就点个关注吧 我…

Transformer系列:图文详解KV-Cache,解码器推理加速优化

前言 KV-Cache是一种加速Transformer推理的策略&#xff0c;几乎所有自回归模型都内置了KV-Cache&#xff0c;理解KV-Cache有助于更深刻地认识Transformer中注意力机制的工作方式。 自回归推理过程知识准备 自回归模型采用shift-right的训练方式&#xff0c;用前文预测下一个…

uniapp内置的button组件的问题

问题描述 由于想要使用uniapp内置button组件的开放能力&#xff0c;所以就直接使用了button&#xff0c;但是他本身带着边框&#xff0c;而且使用 border&#xff1a;none&#xff1b;是没有效果的。 问题图片 解决方案 button::after {border: none;} 正确样式 此时的分享…

大话C语言:第22篇 字符数组

1 字符数组概述 C语言中没有字符串这种数据类型&#xff0c;可以通过char的数组来替代。数字0(和字符 \0 等价)结尾的char数组就是一个字符串&#xff0c;字符串是一种特殊的char的数组。 #include <stdio.h>int main() {char c1[] {c, , p, r, o, g}; // 普通字符数…

算法学习笔记——时间复杂度和空间复杂度

时间复杂度和空间复杂度 常数操作&#xff1a; 固定时间的操作&#xff0c;执行时间和数据量无关 位运算 > 算数运算 > 寻址 > 哈希运算&#xff0c;都是常数操作&#xff0c;哈希运算操作时间最慢 链表的get(i)方法不是常数操作&#xff0c;因为链表不是连续的存储…

idea如何根据路径快速在项目中快速打卡该页面

在idea项目中使用快捷键shift根据路径快速找到该文件并打卡 双击shift(连续按两下shift) -粘贴文件路径-鼠标左键点击选中跳转的路径 自动进入该路径页面 例如&#xff1a;我的实例路径为src/views/user/govType.vue 输入src/views/user/govType或加vue后缀src/views/user/go…

实验八、地址解析协议《计算机网络》

水逆退散&#xff0c;学业进步&#xff0c;祝我们都好&#xff0c;不止在夏天。 目录 一、实验目的 二、实验内容 &#xff08;1&#xff09;预备知识 &#xff08;2&#xff09;实验步骤 三、实验小结 一、实验目的 完成本练习之后&#xff0c;您应该能够确定给定 IP 地…

机器学习多场景实战

机器学习已不再局限于理论探讨&#xff0c;而是广泛渗透到我们生活的方方面面&#xff0c;成为解决复杂问题、优化决策过程的强有力工具。从智能推荐系统个性化推送你可能喜爱的电影和商品&#xff0c;到金融风控领域精准识别欺诈交易&#xff1b;每一个应用场景都是机器学习技…

15 - 有趣的电影(高频 SQL 50 题基础版)

15 - 有趣的电影 select* from cinema wheredescription!boring and id%2!0 order by rating desc;

医用腕带朔源用的条形码与二维码如何选择

在医疗环境中的医用腕带作为患者身份识别和管理的重要工具&#xff0c;做为条形码和二维码腕带上的溯源技术&#xff0c;更是为患者信息快速获取、准确传递的保障&#xff0c;实现更加高效和准确的患者身份识别和管理&#xff0c;这种技术可以大大提高医疗服务的效率和质量&…

v1.2.70-FastJson的AutoType机制研究

v1.2.70-FastJson的AutoType机制研究 最近在对接Alexa亚马逊语音技能&#xff0c;Smart Home Skill Apis时&#xff0c;有一个配置的JSON字符串是这样的&#xff1a; { "capabilityResources": {"friendlyNames": [{"type": "asset",…

如何组织基于Sqlalchemy的项目

在使用 SQLAlchemy 构建项目时&#xff0c;可以遵循一些常用的组织结构和最佳实践&#xff0c;以确保项目清晰、易于维护。下面就是我在构建项目时遇到的一些问题&#xff0c;并做了详细的记录&#xff0c;为了方便大家学习少走一些弯路。 1、问题背景 在基于Sqlalchemy的项目…

python 内置map()函数(高效处理序列数据方法,将函数应用于一个序列的每个元素)(懒加载)

文章目录 深入解析 Python 内置函数 map()函数定义与用法基本示例 map() 与列表推导式比较&#xff08;列表推导式在语法上更加简洁&#xff0c; map() 在某些情况下执行效率更高&#xff09;示例&#xff1a;将数字转化为字符串 map() 结合 lambda 函数使用多个序列结论 深入解…