论文阅读笔记:Sapiens: Foundation for Human Vision Models

Sapiens: Foundation for Human Vision Models

  • 1 背景
    • 1.1 问题
    • 1.2 目标
  • 2 方法
  • 3 创新点
  • 4 模块
    • 4.1 Humans-300M数据集
    • 4.2 预训练
    • 4.3 2D位姿估计
    • 4.4 身体部位分割
    • 4.5 深度估计
    • 4.6 表面法线估计
  • 5 实验
    • 5.1 实现细节
    • 5.2 2D位姿估计
    • 5.3 身体部位分割
    • 5.4 深度估计
    • 5.5 表面法线估计
    • 5.6 讨论
  • 6 结论

论文:https://arxiv.org/abs/2408.12569
代码:https://github.com/facebookresearch/sapiens
Demo:1.https://about.meta.com/realitylabs/codecavatars/sapiens
             2.https://huggingface.co/collections/facebook/sapiens-66d22047daa6402d565cb2fc

1 背景

1.1 问题

目前在2D和3D中生成具有真实感的人方面已取得重大的进展。这些方法的成功很大程度归功于对各种资产的稳健估计,例如2D关键点,细粒度人体部分分割,深度或者表面法线。

例如ControlNet。

问题1:对这些资产的稳健和准确估计仍然是一个活跃的研究领域,复杂的系统来提高单个任务的性能往往阻碍了更广泛的应用。

问题2:野生数据集的标签缺乏准确性。

1.2 目标

作者认为,这种以人为中心的模型应该满足3个标准:泛化性,广泛适用性和高保真性:

(1)泛化性保证了对未知条件的鲁棒性,使模型能够在不同的环境中一致的执行。

(2)广泛的适用性表明了该模型的通用性,使其在最少修改的情况下适用于广泛的任务。

(3)高保真性是指模型能够产生精确的、高分辨率的输出,这对于人类生成任务来说是必不可少的。

本文的目标是提供一个体现了这些属性的统一的框架和模型,称为Sapines。

2 方法

(1)依据之前的工作,利用大型数据集和可扩展的模型架构是泛化的关键。

(2)为了更广泛的适用性,采用先预训练再微调的方法,使得预训练后能够以最小的调整来适应特定的任务。

这种方法提出的一个关键问题是:哪种类型的数据对预训练最有效?在给定计算限制的情况下,应该把重点放在收集尽可能多的人类图像上,还是最好在一个较小的数据集上预训练,以更好的反应显示世界的变异性?现有的方法往往忽略了下游任务背景下的预训练数据分布。为了研究预训练数据分布对特定人类任务的影响,作者收集制作了Humans-300M数据集,该数据集包含3亿张不同的人类图像,这些未标记的图像用于从头预训练各种尺寸的VIT,参数计数范围从300M到20B。

从大型数据集中学习通用视觉特征的各种自监督方法中,作者选择了masked-autoencoder(MAE)方法。MAE相比于对比策略或多推理策略,其单便推理允许以相同的计算资源处理更大数量的图像。

Segment Anything中也是用MAE对图像编码器进行预训练的。
在这里插入图片描述

(3)为了更高的保真度,作者将预训练的原始输入分辨率提高到1024像素,与现有最大的视觉主干(MAWS预训练的VIT模型)相比,FLOPs增加了4倍。每个模型在1.2万亿个tokens上进行预训练。

这里的1.2万亿个tokens应该是这么计算来的:

patch_size = 16
image_size = 1024
image_num = 3E8
token_num = (image_size // patch_size)**2 * image_num

表1列出了与早期方法的比较。
在这里插入图片描述

为了在以人为中心的任务上进行微调,作者使用了一致的编码器-解码器架构,编码器使用预训练权重进行初始化,而解码器是一个随机初始化的轻量级的,任务特定的头。然后对这两个组件进行端到端的微调。四个基本的以人为中心的视觉任务——2D姿态估计、身体部位分割、深度估计和表面法线预测,如图1所示。
在这里插入图片描述

由于Benchmark往往包含噪音标签,在模型微调过程中提供不一致的监督信号,同时,利用细粒度和精准的注释也很重要。因此作者提出了一个更密集的用于姿态估计的2D全身关键点集和一个用于身体部位分割的相机类别词汇表。具体来说,作者引入了一个包含身体,手,脚和面部的308个关键点综合合集。此外将分割类扩展到28类,涵盖了头发,舌头,牙齿,上/下唇、躯干等身体部位。为了保证标注的质量和一致性以及高度的自动化,作者使用多视图捕获设置来收集位姿和分割标记。作者还利用以人为中心的合成数据进行深度和法线估计,利用RenderPeople的600次详细扫描来生成高分辨率的深度图和表面法线。

这里作者分别从模型和数据两个方面,保证子任务输出结果的准确性,即文中提出的保真度。

3 创新点

  1. 作者引入了Sapiens,一个在大规模人体图像数据集上预训练的VIT家族

  2. 本研究表明,在相同的计算预算下,简单的数据整理和大规模预训练显著提高了模型的性能

  3. 模型经过高质量甚至合成标签的微调,表现出了广泛的泛化性

  4. 本文是第一个原生支持以人为中心任务的高保真推理的1K分辨率模型,在二维姿势、身体部位分割、深度和正常估计的基准测试集上取得了最先进的性能。

4 模块

4.1 Humans-300M数据集

本文使用了一个大型的人类图像数据集对大约10亿张野生人类图像进行预训练。预处理包含丢弃有水印,文本,艺术描述或非自然元素的图像。随后,使用现成的行人边界框检测器对图像进行过滤,保留检测分数在0.9以上且边界框超过300像素的图像。图2给出了数据集中每幅图像的人数分布情况,其中超过2.48亿张图像包含多个主体。
在这里插入图片描述

4.2 预训练

作者遵循masked-autoencoder方法进行预训练。模型是在给定原始人体图像的部分观测值下训练的,以重构原始人体图像。与所有的自编码器一样,本文模型包含一个编码器,将可见光图像映射到一个潜在的表示,以及一个解码器,从这个潜在的表示中重建原始图像。预训练数据集有单人图像和多人图像组成,每幅图像以正方形的宽高比例缩放到固定大小,类似于VIT,将图像划分成固定大小的规则非重叠块。随机选择这些块的子集并对其进行掩膜,剩余部分可见。将掩码块占可见块的比例定义为掩膜比,在整个训练过程中保持固定不变。图3展示了本文预训练模型在未知人体图像上的重建。

本文模型表现出对各种图像特征的泛化能力,包括尺度、裁剪、主体的年龄,种族和数量。本文的模型中每个图像块token占图像面积的0.02%((16*16)/(1024*1024)≈0.02%),而标准Vits的图像块面积token占图像面积的0.4%((16*16)/(224*224)≈0.4%),减少了16倍,这为模型提供了细粒度的token推理。如图3,即使使用了95%的掩码比例,本文模型也可以在遮挡样本上实现人体解剖结构的重建。
在这里插入图片描述

4.3 2D位姿估计

遵循自上而下的范式,即从输入图像 I ∈ R H × W × 3 I∈R^{H×W×3} IRH×W×3中检测 K K K 个关键点的位置。大多数方法将这个问题归结为热力图预测, K K K 个热力图表示对应关键点处于任意空间位置的概率。作者定义了一个用于关键点检测的姿态估计transformer P P P。训练和推理时的边界框缩放为 H × W H×W H×W,并作为输入提供给P。设 y ∈ R H × W × K y∈R^{H×W×K} yRH×W×K 表示给定输入 I I I 对应于真值关键点的 K K K 个热力图。位姿估计器将输入 I I I 转换成为一组预测热力图 y ^ ∈ R H × W × K \hat{y}∈R^{H×W×K} y^RH×W×K,即 y ^ = P ( I ) \hat{y}=P(I) y^=P(I) P P P 的训练目标是最小化均方差损失 L p o s e = M S E ( y , y ^ ) L_{pose}=MSE(y,\hat{y}) Lpose=MSE(y,y^)。在微调过程中, P P P的编码器用预训练的权值初始化,解码器随机初始化。长宽比 H : W H:W H:W 设置为4:3。预训练的位置嵌入相应地被插值。作者使用具有反卷积和卷积操作的轻量级解码器。

作者对 P P P 中的编码器和解码器进行了跨多个骨架的微调,包括 K = 17 K=17 K=17 K = 133 K=133 K=133 和一个新的 K = 308 K=308 K=308 高细节骨架,如图4(左)所示。与现有的最多包含68个面部关键点的格式相比,本文档 标注由243个面部关键点组成,包括眼睛,嘴唇,鼻子和耳朵周围的代表性点。这种设计是为了细致捕捉真是世界中面部表情的细微细节而量身定做。利用这些关键点,作者从一个室内拍摄装置中手动标注了100万张4K分辨率的图像。
在这里插入图片描述

4.4 身体部位分割

人体部位分割通常被称为人体解析,其目的是将输入图像 I I I 中的像素分为 C C C 类。大多数方法将这个问题转化为估计每个像素的类别概率,以创建一个概率图 p ^ ∈ R H × W × C \hat{p}∈R^{H×W×C} p^RH×W×C,即 p ^ = S ( I ) \hat{p}=S(I) p^=S(I),其中 S S S 是分割模型。如前所述,对 S S S 采用相同的编码器-解码器结构和初始化方案, S S S 被微调以最小化实际概率图 p p p 和预测概率图 p ^ \hat{p} p^ L s e g = W e i g h t e d C E ( p , p ^ ) L_{seg}=WeightedCE(p,\hat{p}) Lseg=WeightedCE(p,p^)

作者在两个部分分割词汇表中微调 S S S:C=20的标准集和C=28的新词汇表,如图4(右)所示。

4.5 深度估计

对于深度估计,作者采用了用于分割的架构,修改后的解码器输出通道设置为1进行回归。用 d ∈ R H × W d∈R^{H×W} dRH×W 表示图像 I I I 的真实深度图,用D表示深度估计器,其中 d ^ = D ( I ) \hat{d}=D(I) d^=D(I),M 表示图像中人类像素的个数。对于相对深度估计,作者使用图像中的最大和最小深度将 d d d 归一化到 [0,1]。 D D D 的损失 L d e p t h L_{depth} Ldepth 定义如下:
在这里插入图片描述

出自论文《Depth map prediction from a single image using a multi-scale deep network》,主要是为了解决平均尺度误差占总误差很大一部分的问题,例如真值深度全是0,预测深度全1,相对深度是没有误差的,但如果直接用L1或L2就会产生误差,所以作者令:

L d e p t h = 1 M ∑ i = 1 M ( l o g ( d i ) − l o g ( d ^ i ) + α ( d , d ^ ) ) L_{depth}=\frac{1}{M}\sum_{i=1}^M(log(d_i)-log(\hat{d}_i)+\alpha(d,\hat{d})) Ldepth=M1i=1M(log(di)log(d^i)+α(d,d^))

其中 α ( d , d ^ ) = 1 M ∑ i = 1 M ( l o g d ^ i − l o g ( d i ) ) \alpha(d,\hat{d})=\frac{1}{M}\sum_{i=1}^M(log{\hat{d}_i}-log(d_i)) α(d,d^)=M1i=1M(logd^ilog(di)),这个式子经过推导最终成为式(3)。

推导过程可见:https://zhuanlan.zhihu.com/p/29312227

同时,作者利用600张高分辨率摄影测量人体扫描数据渲染了50万张合成图像,如图5所示,以获得具有高保真度的鲁棒弹幕深度估计模型。从100张HDRI环境图集合中选择随机背景,在场景中放置一个虚拟相机,随机调整其焦距,旋转和平移,以获取4K分辨率的图像极其相关的GT真值深度图。
在这里插入图片描述

4.6 表面法线估计

与前面的任务类似,作者将法向量估计器 N N N 的解码器输出通道设置为3,对应于每个像素处法向量的 x y z xyz xyz 分量。生成的合成数据也被用作表面法线估计的监督。设 n n n 为图像 I I I 的真值发现图,即 n ^ = N ( I ) \hat{n}=N(I) n^=N(I)。与深度相似, 损失 L n o r m a l L_{normal} Lnormal 仅针对图像中的人体像素计算,定义如下:
在这里插入图片描述

总结:

综上所述,2D位姿估计,身体部位估计,深度估计和表面法线估计的网络结构基本一致,差别在于解码器的输出通道和含义不同,2D位姿估计的K个通道表示K个关键点的概率,身体部位估计的C个通道表示C个身体部位类别的概率,深度估计的1个通道表示相对深度,表面法线的3个通道表示 x y z xyz xyz 分量。

5 实验

5.1 实现细节

  1. 最大的模型Sapiens-2B使用Pytorch在1024个A100上预训练了18天。

  2. 预训练的分辨率为1024*1024,patch size为16。

  3. 微调的分辨率高宽比例为4:3,即1024*768。

  4. 不同尺寸的模型设计指标如表2。
    在这里插入图片描述

5.2 2D位姿估计

作者使用现成的边界框检测器进行单人姿态推断。表3展示了与现有的全身姿态估计方法的比较。
在这里插入图片描述

尽管只使用了来自室内捕获的数据和注释,但Sapiens显示出队真实世界的强大泛化能力,如图6所示。
在这里插入图片描述

5.3 身体部位分割

表4展示Spaiens与其他方法的对比。
在这里插入图片描述

图7展示了本文模型的效果。
在这里插入图片描述

5.4 深度估计

表5比较了现有深度估计SOTA模型和本文提出方法的对比。
在这里插入图片描述

图8将本文方法的效果和DepthAnything进行了对比。
在这里插入图片描述

5.5 表面法线估计

表6将本文模型与现有的人体表面法线估计模型进行了对比。
在这里插入图片描述

图9将本文模型与PIFuHD,ECON进行了对比。
在这里插入图片描述

5.6 讨论

(1)预训练数据的重要性:网络提取的特征质量与预训练数据质量紧密相连。表7展示了使用Human300M进行预训练可以在所有指标上获得更好的性能,这突出了在固定的计算预算下,以人为中心的预训练的好处。
在这里插入图片描述

作者还研究了在预训练期间所能看到的人类图像的数量的影响。图10显示,随着预训练数据规模的增加,性能稳步提高,没有出现饱和现象。
在这里插入图片描述

(2)零样本泛化性:本文模型对各种情况都具有泛化性。例如在分割中,Sapiens在单人图像上微调,主体多样性有限,背景变化小,且只有第三人称视图(如图4)。但因为大规模预训练,使得模型能够再多个主体,不同年龄和视图上进行泛化,如图11所示,这些观察对其他任务也成立。
在这里插入图片描述

(3)缺陷:虽然模型整体很好但并不完美,在具有复杂姿态、稀有姿态、拥挤和严重遮挡的人体图像上效果欠佳。尽管激进的数据增广和裁剪策略可以缓解这一问题,但作者认为本文模型可以作为一种工具来获得大规模的,真实世界的人的标签进行监督,以开发下一代人类视觉模型。

6 结论

本文模型的性能归功于:

  1. 在一个专门为理解人类而定制的大型数据集上进行大规模的预训练

  2. 扩展的高分辨率和大容量的VIT骨干

  3. 真实的和合成的数据上的高质量注释

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

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

相关文章

SVN笔记-SVN安装

SVN笔记-SVN安装 1、在windows下安装 SVN 1、准备svn的安装文件 下载地址:https://sourceforge.net/projects/win32svn/ 2、下载完成后,在相应的盘符中会有一个Setup-Subversion-1.8.17.msi的文件,目前最新的版本是1.8.17, 这里…

UGit:腾讯自研的Git客户端新宠

UGit 是一款专门针对腾讯内部研发环境特点量身定制的 Git 客户端,其目标在于大幅提升开发效率以及确保团队协作的高度流畅性。UGit 能够良好地支持 macOS 10.11 及以上版本、Apple Silicon 以及 Win64 位系统。 可以下载体验一把。 https://ugit.qq.com/zh/index.…

【CSS Tricks】如何做一个粒子效果的logo

效果展示 代码展示 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>粒子效果Logo</title>…

【图像匹配】基于Harris算法的图像匹配,matlab实现

博主简介&#xff1a;matlab图像代码项目合作&#xff08;扣扣&#xff1a;3249726188&#xff09; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 本次案例是基于基于Harris算法的图像匹配&#xff0c;用matlab实现。 一、案例背景和算法介绍 …

echarts 散点图tooltip显示一个点对应多个y值

tooltip&#xff1a;显示 tooltip: {trigger: "axis",extraCssText: max-width:50px; white-space:pre-wrap,formatter: function (params) {let arr []params.forEach(v > {arr.push(v.data[1])});return params[0].data[0]":<br>["arr.toStr…

Android 签名、空包签名 、jarsigner、apksigner

jarsigner是JDK提供的针对jar包签名的通用工具, 位于JDK/bin/jarsigner.exe apksigner是Google官方提供的针对Android apk签名及验证的专用工具, 位于Android SDK/build-tools/SDK版本/apksigner.bat jarsigner&#xff1a; jarsigner签名空包执行的命令&#xff1a; jar…

解决Hive乱码问题

在插入数据后&#xff0c;发现hive乱码 原因&#xff1a;Hive默认将存储表结构的元数据列编码设置为latin1&#xff0c;不支持中文 解决方法&#xff1a;在MySQL中修改对应Hive元数据列的编码 先查看mysql的所有字符集编码 1、先修改my.cnf 代码如下&#xff1a; vim /etc/…

weblogic CVE-2017-3506 靶场攻略

漏洞描述 Weblogic的WLS Security组件对外提供了webserver服务&#xff0c;其中使⽤了XMLDecoder来解析⽤户输⼊的XML数据&#xff0c;在解析过程中出现反序列化漏洞&#xff0c;可导致任意命令执⾏。 影响版本 受影响版本&#xff1a;WebLogic 10.3.6.0, 12.1.3.0, 12.2.1.…

YOLOv8改进 | 自定义数据集训练 | AirNet助力YOLOv8检测

目录 一、本文介绍 二、AirNet原理介绍 2.1 对比基降解编码器&#xff08;CBDE&#xff09; 2.2 降解引导修复网络&#xff08;DGRN&#xff09; 三、yolov8与AirNet结合修改教程 3.1 核心代码文件的创建与添加 3.1.1 AirNet.py文件添加 3.1.2 __init__.py文件添加 3…

AIGC时代!AI的“iPhone时刻”与投资机遇

AIGC时代&#xff01;AI的“iPhone时刻”与投资机遇 前言AI的“iPhone时刻”与投资机遇 前言 AIGC&#xff0c;也就是人工智能生成内容&#xff0c;它就像是一股汹涌的浪潮&#xff0c;席卷了整个科技世界。它的出现&#xff0c;让我们看到了人工智能的无限潜力&#xff0c;也…

微服务架构中的负载均衡与服务注册中心(Nacos)

1. 负载均衡&#xff1a;解决实际业务问题 1.1 业务场景思考 想象一个电子商务平台的微服务架构。我们有一个订单服务和多个用户服务实例。当订单服务需要调用用户服务时&#xff0c;它如何选择具体调用哪一台用户服务器&#xff1f;这就是负载均衡要解决的核心问题。 1.2 常…

HTML5好看的水果蔬菜在线商城网站源码系列模板2

文章目录 1.设计来源1.1 主界面1.2 商品列表界面1.3 商品详情界面1.4 其他界面效果 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/142059220 HTML5好看的水果蔬菜在线商城…

并查集LRU cache

并查集的定义 将n个不同的元素划分成一些不相交的集合。开始时&#xff0c;每个元素自成一个单元素集合&#xff0c;然后按一定的规律将归于同一组元素的集合合并。在此过程中要反复用到查询某一个元素归属于那个集合的运算。适合于描述这类问题的抽象数据类型称为并查集(unio…

2024华为杯研赛E题保姆级教程思路分析

E题题目&#xff1a;高速公路应急车道紧急启用模型 今年的E题设计到图像/视频处理&#xff0c;实际上&#xff0c;E题的难度相对来说较低&#xff0c;大家不用畏惧视频的处理&#xff0c;被这个吓到。实际上&#xff0c;这个不难&#xff0c;解决了视频的处理问题&#xff0c;…

Hazel 2024

不喜欢游戏的人也可以做引擎&#xff0c;比如 cherno 引擎的作用主要是有两点&#xff1a; 将数据可视化交互 当然有些引擎的功能也包含有制作数据文件&#xff0c;称之为资产 assets 不做窗口类的应用栈&#xff0c;可能要花一年才能做一个能实际使用的应用&#xff0c;只需…

笔记整理—内核!启动!—linux应用编程、网络编程部分(2)linux的文件管理策略

关于硬盘中的静态文件与inode&#xff1a;例如文件存储在扇区中&#xff0c;一个文件占用10个字节&#xff0c;一个扇区为512字节&#xff0c;这样的情况下一个扇区就只放了一个实际为10字节的文件&#xff0c;余下的502字节不可存放其他文件&#xff0c;因为扇区已经是可以访问…

机器学习 | Scikit Learn中的普通最小二乘法和岭回归

在统计建模中&#xff0c;普通最小二乘法&#xff08;OLS&#xff09;和岭回归是两种广泛使用的线性回归分析技术。OLS是一种传统的方法&#xff0c;它通过最小化预测值和实际值之间的平方误差之和来找到数据的最佳拟合线。然而&#xff0c;OLS可以遭受高方差和过拟合时&#x…

基于PHP的电脑线上销售系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于phpMySQL的电脑线上销售系…

【C语言】自定义类型——联合和枚举

目录 一、联合体&#xff08;共用体&#xff09; &#xff08;1&#xff09;联合体类型的声明 &#xff08;2&#xff09;联合体类型的特点 &#xff08;3&#xff09;联合体和结构体的比较 &#xff08;4&#xff09;联合体大小的计算 &#xff08;5&#xff09;联合体的…

RK3588/RK3588s运行yolov8达到27ms

前言 Hello&#xff0c;小伙伴们~~我最近做了一个比较有意思的东西&#xff0c;想起来也好久没有写博客了&#xff0c;就记录一下吧。希望和大家一起学习&#xff0c;一起进步&#xff01; 我简单介绍一下我最近做的这个东西的经过哈~上个月在B站上看到了一个博主发了一条视频关…