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

news2024/9/21 23:02:24

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. 真实的和合成的数据上的高质量注释

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

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

相关文章

如何在 Ubuntu 上安装 OpenSSH Server ?

OpenSSH 是一组工具集合,它允许您使用 SSH 在网络上进行安全、加密的通信。它包括安全远程登录、文件传输和应用程序隧道的特性。OpenSSH 通常用于 Linux 系统上的安全远程访问和文件传输。由于其强大的安全措施,受到世界各地许多用户的信任。 本教程将…

【Rust练习】16.模式

文章题目来自:https://practice-zh.course.rs/pattern-match/patterns.html 1 🌟🌟 使用 | 可以匹配多个值, 而使用 … 可以匹配一个闭区间的数值序列 fn main() {} fn match_number(n: i32) {match n {// 匹配一个单独的值1 > println!(…

2024 研究生数学建模竞赛(E题)建模秘籍|高速公路应急车道紧急启用模型|文章代码思路大全

铛铛!小秘籍来咯! 小秘籍团队独辟蹊径,运用聚类分析,逻辑回归模型,决策树/规则,ARIMA等强大工具,构建了这一题的详细解答哦! 为大家量身打造创新解决方案。小秘籍团队,始…

Python基于TensorFlow实现Transformer分类模型(Transformer分类算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 随着深度学习技术的发展,自然语言处理(NLP)领域取得了显著的进步。…

人工智能开发实战推荐算法应用解析

内容导读 个性化推荐思路推荐算法分类推荐效果评估 一、个性化推荐思路 推荐系统能为你提供个性化的智能服务,是基于以下事实认知:人们倾向于喜欢那些与自己喜欢的东西相似的其它物品,或倾向于与自己趣味相投的人有相似的爱好,…

9.安卓逆向-安卓开发基础-安卓四大组件2

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于:图灵Python学院 本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要盲目相信。 工…

mysql为什么建议创建字段的时候not null

相信大家在建表或者给表新加字段的时候,一些老司机们都会建议我们,字段要定义为not null,原因呢是一是占用存储空间,另一个是避免出现一些意料之外的错误。当然针对这个问题,大家可能也会在网上去搜下,不过…

C语言中的一些小知识(三)

一、你了解printf()吗? 你知道下面代码的输出结果吗? int a123; printf("%2d \n",a); printf() 函数是 C 语言中用于格式化输出的标准函数,它允许你将数据以特定的格式输出到标准输出设备(通常是屏幕)。p…

20240921全国计算机二级Python考试(大头博士计算二级)

一、背景需求: 20240921我在上海应用技术大学44号楼考场参加2024年9月的全国计算机二级(Python语言程序设计)考试。 时隔多年,再次来到大学校园,恍若隔世 扫码找考场在哪里 考场须知 1、进考场,先刷身份证…

有关elementui form验证问题,有值却仍然显示不通过

参考链接 有关elementui form验证问题,有值却仍然显示不通过 - 一棵写代码的柳树 - 博客园 需要保证表单上的 :model" "和prop" "对应的属性相同 el-form 绑定数据:model 和 规则:rules input 绑定 数据表单里的数据 其父组件提供校验所绑定的…

Mybatis的XML实现方法

Mybatis的开发有两种方式: 1、注解 2、XML 使用Mybatis的注解方式,主要是来完成一些简单的增删改查功能。如果需要实现复杂的SQL功能,建议使用XML来配置映射语句,也就是将SQL语句写在XML配置文件中。 Mybatis的XML的实现需要以下…

leetcode练习 二叉树的最大深度

给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3提示: 树中节点的数量在 [0, 104] 区间内。-100 …

java使用ByteBuffer进行多文件合并和拆分

1.背景 因为验证证书的需要,需要把证书文件和公钥给到客户,考虑到多个文件交互的不便性,所以决定将2个文件合并成一个文件交互给客户。刚开始采用字符串拼接2个文件内容,但是由于是加密文件,采用字符串形式合并后&…

fastadmin 部署后前台会员中心出现404错误

访问前台会员中心出现404错误。 解决:nginx访问站点增加伪静态 location / {if (!-e $request_filename){rewrite ^(.*)$ /index.php?s$1 last; break;} }在phpstydy中增加伪静态,如图:

保姆级教程教你如何安装Hadoop,实现Hadoop单机(非分布式)配置

下载Ubutu镜像 前往阿里镜像站https://mirrors.aliyun.com/oldubuntu-releases/releases/16.04.0/?spma2c6h.25603864.0.0.6be57ff3u2zMGR 选择下载ubuntu-16.04-desktop-amd64.iso 下载时间较久,请耐心等待 创建实验用虚拟机 选择创建新的虚拟机 选择典型并下一…

伊犁-linux 硬盘添加,分区,格式化

主要是linux 下操作硬盘分区,格式化 这样1个sata 盘就添加成功了 !  继续添加三块 sata1 hda sata hdb sata hdc sata hdd scsi sda 作为启动盘 进行操作系统的引导 如果scsi 往下调整 先敲enter 在用- 号往下 如果是往上调整敲…

win7自带壁纸丢失主题丢失

有时候盗版破解或者其他美化工具会导致win7自带的壁纸丢失,从个性化管理里面无法恢复原始的壁纸(如下图),但是由于工作原因公司的电脑又不方便设置第三方的壁纸,所以找了一下解决方案。 经典问题,百度找到的…

华为全联接大会HUAWEI Connect 2024印象(二):昇腾AI端侧推理

此次参加HUAWEI Connect 2024最主要目标是了解昇腾AI端侧推理技术,希望将其融合到我现在嵌入式系统课程中,不过刚开始在一楼找到一个小展台,看到了香橙派Orange Pi。香橙派是深圳迅龙的一个品牌,他们和很多芯片厂商都合作过&#…

创建Application(Qt)模板项目时的 Base class选择

在Qt中,当你使用Qt Creator新建一个Qt Widgets Application项目时,选择Base class是一个重要的步骤,因为它决定了你的主窗口或对话框将继承自哪个类,从而决定了你的应用程序将具有哪些基本的功能和外观。以下是一些常见的Base cla…

毕业设计选题:基于ssm+vue+uniapp的校园商铺系统小程序

开发语言:Java框架:ssmuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:M…