Loading [MathJax]/jax/output/CommonHTML/config.js
部署DeepSeek模型,进群交流最in玩法!
立即加群
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >训练BERT,我只花了一半的时间

训练BERT,我只花了一半的时间

作者头像
godweiyang
发布于 2021-07-19 06:44:08
发布于 2021-07-19 06:44:08
98200
代码可运行
举报
文章被收录于专栏:算法码上来算法码上来
运行总次数:0
代码可运行

相信很多人都知道Hugging Face,也都用过它的Transformers预训练语言模型,但你们有没有觉得它训练的有点太慢了呢?

这时候,字节第二快的男人要站出来了(第一快是我mentor),手把手教你怎么让训练时间缩短一半。

训练BERT

首先我们要安装Transformers库,这很简单:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install transformers

然后我们直接把官方的例子拷贝下来,这里我们用的是GLUE任务,地址是https://github.com/huggingface/transformers/blob/master/examples/pytorch/text-classification/run_glue.py。因为代码太长了,这里就不放了,拷贝下来后文件名是run_glue.py

接着我们就可以直接运行这个代码了,我们采用mrpc数据集,开启FP16训练,命令如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
python run_glue.py \
  --model_name_or_path bert-base-cased \
  --task_name mrpc \
  --do_train \
  --do_eval \
  --max_seq_length 128 \
  --per_device_train_batch_size 32 \
  --num_train_epochs 3 \
  --output_dir /tmp/mrpc/ \
  --overwrite_output_dir \
  --fp16

我这里是单卡训练的,训练完后输出如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
***** train metrics *****
  epoch                    =        3.0
  train_loss               =     0.3921
  train_runtime            = 0:00:45.06
  train_samples            =       3668
  train_samples_per_second =    244.166
  train_steps_per_second   =      7.655

可以看出,训练总共耗时「45秒」,是不是有点等不及了呢?

加速训练

首先我们需要安装训练加速库,这里我们用到的是LightSeq,项目地址是https://github.com/bytedance/lightseq。不过我们还是直接pip安装:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install lightseq

然后我们需要做的就是将Hugging Face的BERT替换成LightSeq的BERT,代码如下,放在文件replace_module.py中。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from lightseq.training.ops.pytorch.transformer_encoder_layer import (
    LSTransformerEncoderLayer,
)

class LSHFTransformerEncoderLayer(LSTransformerEncoderLayer):
    def __init__(self, *args, **kwargs):
        super(LSHFTransformerEncoderLayer, self).__init__(*args, **kwargs)

    def forward(self, hidden_states, encoder_padding_mask, *args, **kwargs):
        encoder_padding_mask /= -10000.0
        output = super().forward(hidden_states, encoder_padding_mask)
        return (output, None, None, None)

def gen_ls_bert_config(training_args, config):
    bert_config = LSTransformerEncoderLayer.get_config(
        max_batch_tokens=4096,
        max_seq_len=config.max_position_embeddings,
        hidden_size=config.hidden_size,
        intermediate_size=config.intermediate_size,
        nhead=config.num_attention_heads,
        attn_prob_dropout_ratio=config.attention_probs_dropout_prob,
        activation_dropout_ratio=0.1,
        hidden_dropout_ratio=config.hidden_dropout_prob,
        pre_layer_norm=False,
        fp16=training_args.fp16,
        local_rank=training_args.local_rank,
    )
    return bert_config

def inject_ls_enc_layer(model, training_args, config):
    for i in range(config.num_hidden_layers):
        bert_config = gen_ls_bert_config(training_args, config)
        model.bert.encoder.layer[i] = LSHFTransformerEncoderLayer(bert_config)

这里LSHFTransformerEncoderLayer是继承的LightSeq中的LSTransformerEncoderLayer类,然后重写了forward函数。原因是Hugging Face的输入格式和LightSeq略有不同,需要在forward之前转换一下。

gen_ls_bert_config函数是用来定义LightSeq的encoder参数配置,这里直接从Hugging Face的主函数入口获取即可。

inject_ls_enc_layer函数就是用来替换BERT中的每一层encoder的,首先定义每一层的参数配置,然后用LSHFTransformerEncoderLayer类去替换原始的encoder层即可。

然后我们打开run_glue.py,在头文件处加上inject_ls_enc_layer的引用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from replace_module import inject_ls_enc_layer

最后在定义完model后,将model中的encoder替换即可,利用上面引用的替换函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
model = AutoModelForSequenceClassification.from_pretrained(
    model_args.model_name_or_path,
    from_tf=bool(".ckpt" in model_args.model_name_or_path),
    config=config,
    cache_dir=model_args.cache_dir,
    revision=model_args.model_revision,
    use_auth_token=True if model_args.use_auth_token else None,
)

# 在model定义后立刻替换
inject_ls_enc_layer(model, training_args, config)

我们重新运行上一次运行的命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
python run_glue.py \
  --model_name_or_path bert-base-cased \
  --task_name mrpc \
  --do_train \
  --do_eval \
  --max_seq_length 128 \
  --per_device_train_batch_size 32 \
  --num_train_epochs 3 \
  --output_dir /tmp/mrpc/ \
  --overwrite_output_dir \
  --fp16

最终输出如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
***** train metrics *****
  epoch                    =        3.0
  train_loss               =     0.6077
  train_runtime            = 0:00:25.08
  train_samples            =       3668
  train_samples_per_second =    438.603
  train_steps_per_second   =     13.751

这次运行时间只有「25秒」!不愧是字节最快的男人。

加载预训练参数

有眼尖的小伙伴可能发现了,上面加速后效果变差了呀。没错,因为新建了encoder类之后,参数都是随机初始化的了,所以要重新加载一下预训练参数。

LightSeq的encoder类初始化的时候提供了预训练参数初始化的选项,我们只需要将预训练参数从Hugging Face的BERT中提取出来即可:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def get_hf_bert_enc_layer_params(layer):
    init_ws = []
    init_bs = []

    init_ws.append(layer.attention.self.query.weight.detach().clone())
    init_bs.append(layer.attention.self.query.bias.detach().clone())
    init_ws.append(layer.attention.self.key.weight.detach().clone())
    init_bs.append(layer.attention.self.key.bias.detach().clone())
    init_ws.append(layer.attention.self.value.weight.detach().clone())
    init_bs.append(layer.attention.self.value.bias.detach().clone())
    init_ws.append(layer.attention.output.dense.weight.detach().clone())
    init_bs.append(layer.attention.output.dense.bias.detach().clone())
    init_ws.append(layer.attention.output.LayerNorm.weight.detach().clone())
    init_bs.append(layer.attention.output.LayerNorm.bias.detach().clone())

    init_ws.append(layer.intermediate.dense.weight.detach().clone())
    init_bs.append(layer.intermediate.dense.bias.detach().clone())
    init_ws.append(layer.output.dense.weight.detach().clone())
    init_bs.append(layer.output.dense.bias.detach().clone())
    init_ws.append(layer.output.LayerNorm.weight.detach().clone())
    init_bs.append(layer.output.LayerNorm.bias.detach().clone())

    return init_ws, init_bs

注意参数在列表中的顺序不能错了,然后将这两个列表加入到LSHFTransformerEncoderLayer类的初始化参数中去:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def inject_ls_enc_layer(model, training_args, config):
    for i in range(config.num_hidden_layers):
        bert_config = gen_ls_bert_config(training_args, config)
        # 提取预训练参数
        init_ws, init_bs = get_hf_bert_enc_layer_params(model.bert.encoder.layer[i])
        # 利用预训练参数进行初始化
        model.bert.encoder.layer[i] = LSHFTransformerEncoderLayer(
            bert_config, init_ws, init_bs
        )

接着运行命令不变,效果就上来啦。

和竞品比如何?

另一款知名的训练加速库DeepSpeed你们可能也听过,那和它比速度怎么样呢?

Hugging Face已经内置了DeepSpeed,可以直接开启。不过它并没有替换掉encoder,所以模型还是用PyTorch写的,速度依然很慢。因此我们需要手动替换一下encoder。

代码和上面类似,也是定义参数配置和encoder类:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from deepspeed.ops.transformer import (
    DeepSpeedTransformerConfig,
    DeepSpeedTransformerLayer
)

def gen_ds_bert_config(training_args, config):
    bert_config = DeepSpeedTransformerConfig(
        batch_size=4096,
        hidden_size=config.hidden_size,
        intermediate_size=config.intermediate_size,
        heads=config.num_attention_heads,
        attn_dropout_ratio=config.attention_probs_dropout_prob,
        hidden_dropout_ratio=config.hidden_dropout_prob,
        num_hidden_layers=config.num_hidden_layers,
        initializer_range=0.02,
        layer_norm_eps=1e-8,
        local_rank=training_args.local_rank,
        fp16=training_args.fp16,
        pre_layer_norm=False,
        huggingface=True,
        training=True
    )
    return bert_config

def inject_ds_enc_layer(model, training_args, config):
    for i in range(config.num_hidden_layers):
        bert_config = gen_ds_bert_config(training_args, config)
        model.bert.encoder.layer[i] = DeepSpeedTransformerLayer(bert_config)

然后在run_glue.py里引用inject_ds_enc_layer替换函数,并对model进行替换:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from replace_module import inject_ds_enc_layer

model = AutoModelForSequenceClassification.from_pretrained(
    model_args.model_name_or_path,
    from_tf=bool(".ckpt" in model_args.model_name_or_path),
    config=config,
    cache_dir=model_args.cache_dir,
    revision=model_args.model_revision,
    use_auth_token=True if model_args.use_auth_token else None,
)

# 在model定义后立刻替换
inject_ds_enc_layer(model, training_args, config)

最后我们还需要定义一个DeepSpeed需要用到的运行参数配置ds_config.json

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "train_micro_batch_size_per_gpu": "auto",
  "optimizer": {
    "type": "AdamW",
    "params": {
      "lr": "auto",
      "betas": [
        0.9,
        0.999
      ],
      "eps": 1e-8,
      "weight_decay": "auto",
      "torch_adam": true
    }
  },
  "scheduler": {
    "type": "WarmupDecayLR",
    "params": {
      "warmup_num_steps": "auto",
      "warmup_min_lr": "auto",
      "warmup_max_lr": "auto",
      "total_num_steps": "auto"
    }
  },
  "gradient_clipping": "auto",
  "fp16": {
    "enabled": "auto",
    "loss_scale": 0,
    "initial_scale_power": 7
  }
}

运行命令需要稍稍修改,采用DeepSpeed的启动器:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
deepspeed --num_gpus=1 run_glue.py \
  --model_name_or_path bert-base-cased \
  --task_name mrpc \
  --do_train \
  --do_eval \
  --max_seq_length 128 \
  --per_device_train_batch_size 32 \
  --num_train_epochs 3 \
  --output_dir /tmp/mrpc/ \
  --overwrite_output_dir \
  --fp16 \
  --deepspeed ds_config.json

输出结果如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
***** train metrics *****
  epoch                    =        3.0
  train_loss               =     0.5865
  train_runtime            = 0:00:37.17
  train_samples            =       3668
  train_samples_per_second =    296.032
  train_steps_per_second   =      9.281

发现DeepSpeed用了整整「37秒」才训练完,和LightSeq的「25秒」相比还是有差距的。

总结

最终对比下来,Hugging Face花了「45秒」训练完成,DeepSpeed花了「37秒」,而LightSeq只花了「25秒」

「项目地址:」 https://github.com/bytedance/lightseq

「技术原理:」 https://zhuanlan.zhihu.com/p/383657837

「其它使用例子:」 https://zhuanlan.zhihu.com/p/382961951

- END -

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法码上来 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SIGGRAPH 2025|Large Avatar Model:单图秒级打造超写实3D交互数字人,跨平台超实时驱动渲染
论文作者来自阿里巴巴通义实验室的 3D 团队。第一作者何益升,本科毕业于武汉大学,博士毕业于香港科技大学;通讯作者原玮浩,本科毕业于浙江大学,博士毕业于香港科技大学;团队 Leader 董子龙,本科博士均毕业于浙江大学。
机器之心
2025/06/21
770
SIGGRAPH 2025|Large Avatar Model:单图秒级打造超写实3D交互数字人,跨平台超实时驱动渲染
CVPR 2025 高分论文 | 单图秒变3D真人!IDOL技术开启数字分身新时代
在虚拟现实、游戏以及 3D 内容创作领域,从单张图像重建高保真且可动画的全身 3D 人体一直是一个极具挑战性的问题:人体多样性、姿势复杂性、数据稀缺性等等。
机器之心
2025/03/24
2600
CVPR 2025 高分论文 | 单图秒变3D真人!IDOL技术开启数字分身新时代
HumanGaussian开源:基于Gaussian Splatting,高质量 3D 人体生成新框架
在 3D 生成领域,根据文本提示创建高质量的 3D 人体外观和几何形状对虚拟试穿、沉浸式远程呈现等应用有深远的意义。传统方法需要经历一系列人工制作的过程,如 3D 人体模型回归、绑定、蒙皮、纹理贴图和驱动等。为了自动化 3D 内容生成,此前的一些典型工作(比如 DreamFusion [1] )提出了分数蒸馏采样 (Score Distillation Sampling),通过优化 3D 场景的神经表达参数,使其在各个视角下渲染的 2D 图片符合大规模预训练的文生图模型分布。然而,尽管这一类方法在单个物体上取得了不错的效果,我们还是很难对具有复杂关节的细粒度人体进行精确建模。
机器之心
2023/12/12
7000
HumanGaussian开源:基于Gaussian Splatting,高质量 3D 人体生成新框架
SIGGRAPH 2024 | 头像化身动画的 3D 高斯 Blendshapes
图 1:我们的 3D 高斯混合形状类似于经典参数化人脸模型中的网格混合形状,以表情系数线性混合,实时合成逼真的人脸动画。
用户1324186
2024/06/13
5490
SIGGRAPH 2024 | 头像化身动画的 3D 高斯 Blendshapes
CVPR 2024 | ChatPose: 谈谈3D人体姿态
现有的3D姿态估计和生成系统被限制在狭窄的任务中。这与LLMs所展示的通用推理能力形成了对比。现有的多模态LLMs能够感知和解释图像中的信息,并基于丰富的世界知识进行推理,特别擅长描述场景,包括人物的外貌、活动和高级行为。如果LLM能将这种通用知识与3D人体姿态和运动联系起来,它将拥有超越现有解决方案的强大推理能力。
用户1324186
2024/06/13
6880
CVPR 2024 | ChatPose: 谈谈3D人体姿态
李飞飞团队新作:AI透视眼,穿越障碍看清你,渲染遮挡人体有新突破了
AR/VR 、电影和医疗等领域都在广泛地应用视频渲染人类形象。由于单目摄像头的视频获取较为容易,因此从单目摄像头中渲染人体一直是研究的主要方式。Vid2Avatar、MonoHuman 和 NeuMan 等方法都取得了令人瞩目的成绩。尽管只有一个摄像头视角,这些方法仍能从新的视角准确地渲染人体。
机器之心
2024/01/04
2980
李飞飞团队新作:AI透视眼,穿越障碍看清你,渲染遮挡人体有新突破了
基于少量图像的三维重建综述
基于少量图像的三维重建被认为是第三代人工智能的经典应用之一。在计算机图形学和计算机视觉领域,基于少量图像的三维重建任务因具有广泛的应用场景和很高的研究价值,长期以来吸引着众多学者的目光。引入深度学习方法后,该领域于近年来得到了长足发展。对此类基于少量图像的三维重建任务进行了全面阐述,并介绍了本研究组在该方面的系列工作,对其中涉及的数据类型进行分析,阐明其适用性和一般处理方法。此外,对常见的数据集进行分析、整理,针对不同重建方法,归纳出其基本框架、思路。最后,展示了一些常见三维重建的代表性实验结果,并提出了未来可能的研究方向。
一点人工一点智能
2023/08/25
1.3K0
基于少量图像的三维重建综述
逼真到恐怖!小姐姐挤眼挑眉五官乱飞,3D化身全新算法秒杀谷歌
再来看这个男孩,不停地变化嘴型,再加上细微的眼神动作,丝毫看不出来和我们有何区别。
新智元
2024/06/05
1530
逼真到恐怖!小姐姐挤眼挑眉五官乱飞,3D化身全新算法秒杀谷歌
HiFi4G: 通过紧凑高斯进行高保真人体性能渲染
HiFi4G 架构如图 1 所示,(a) 首先使用非刚性跟踪建立了一个粗变形图,并跟踪运动进行高斯优化。(b) HiFi4G 使用 NeuS2 初始化第一帧高斯,并构建细粒度高斯图以增强时间一致性。然后,我们利用 ED 图来扭曲 4D 高斯,对高斯图应用
用户1324186
2024/01/24
5710
HiFi4G: 通过紧凑高斯进行高保真人体性能渲染
CVPR 2024 | SC-GS: 可编辑动态场景中的系数控制高斯溅射
最近,高斯溅射作为一种表示场景为 3D 高斯点的方法,显示出在渲染质量、分辨率和速度方面的显著性能。然而,现有的高斯溅射公式只适用于静态场景,将对象运动整合到高斯表示中而不损害渲染质量和速度仍然是一个挑战。
用户1324186
2024/04/26
7250
CVPR 2024 | SC-GS: 可编辑动态场景中的系数控制高斯溅射
苹果把NeRF玩出新高度:只需单个10s视频,就能重构人物动作和场景
羿阁 发自 凹非寺 量子位 | 公众号 QbitAI 有了这个发明,以后演员拍戏再也不用抠图了? 答:可以直接一键合成。(手动狗头) 让我们赶紧来看看,这个由苹果最新研发的NeuMan框架: 只需输入一段10s左右的人物视频,就能合成该人物在新场景下做着各种新动作的影像。 前空翻?so easy! 跳舞那也是不在话下。 这妖娆的舞姿,看来NeuMan心里也有一个舞魂~ 有网友看完就表示:喔~简直是电影界未来的发展方向。 目前,有关NeuMan的研究论文已被ECCV’22收录,并且已在GitHub上开源
量子位
2022/08/26
3990
苹果把NeRF玩出新高度:只需单个10s视频,就能重构人物动作和场景
史上最快3D数字人生成器:半小时完成训练,渲染仅需16毫秒,苹果出品
而且无需复杂的采样和建模,只要随便拍一段50-100帧的视频就足够了,换算成时间不过几秒钟。
量子位
2023/12/28
3530
史上最快3D数字人生成器:半小时完成训练,渲染仅需16毫秒,苹果出品
一张照片获得3D人体信息,云从科技提出新型DenseBody框架
多年以来,如何从单一图像估计人体的姿势和形状是多项应用都在研究的问题。研究者提出不同的方法,试图部分或者联合地解决此问题。本文将介绍一种端到端的方法,使用 CNN 直接从单个彩色图像重建完整的 3D 人体几何。
机器之心
2019/04/29
9780
一张照片获得3D人体信息,云从科技提出新型DenseBody框架
InstantAvatar:从 60 秒单目视频中学习数字人化身
创建高保真数字人类对于许多应用都很重要,包括全息投影、AR/VR、3D 图形学和新兴的元宇宙等概念。目前获取个性化头像是一个复杂的过程,通常需要使用校准的多摄像头系统,并产生大量的计算成本。在本文中,作者着手构建一个仅从单眼视频学习 3D 虚拟人的系统,该系统足够轻便,可以广泛部署,并且速度足够快,可以实现步行和使用场景。
用户1324186
2023/02/03
2K0
NeRFs和3D高斯溅射技术如何重塑SLAM:综述
文章:How NeRFs and 3D Gaussian Splatting are Reshaping SLAM: a Survey
点云PCL博主
2024/06/21
1.7K0
NeRFs和3D高斯溅射技术如何重塑SLAM:综述
分割一切「3D高斯」版来了:几毫秒完成3D分割、千倍加速
今年 4 月,Meta 发布「分割一切(SAM)」AI 模型,这项成果不仅成为很多 CV 研究者心中的年度论文,更是在 ICCV 2023 上斩获最佳论文提名 。
机器之心
2023/12/12
6200
分割一切「3D高斯」版来了:几毫秒完成3D分割、千倍加速
3D视频人物肖像生成新突破!港科大、清华等发布AniPortraitGAN,面部表情、肩部运动全可控
目前用于人类生成相关的「可动画3D感知GAN」方法主要集中在头部或全身的生成,不过仅有头部的视频在真实生活中并不常见,全身生成任务通常不会控制人物的面部表情,并且很难提高生成质量。
新智元
2023/09/22
7200
3D视频人物肖像生成新突破!港科大、清华等发布AniPortraitGAN,面部表情、肩部运动全可控
GauHuman开源:基于Gaussian Splatting,高质量3D人体快速重建和实时渲染框架
图1 GauHuman可以快速重建(1~2分钟)和实时渲染(高达189帧每秒) 高质量3D人体。
机器之心
2024/01/11
9220
GauHuman开源:基于Gaussian Splatting,高质量3D人体快速重建和实时渲染框架
单张图像重建3D人手、人脸和人体
为了便于分析人类的行为、互动和情绪,本文从单目图像中计算出人体姿态、手姿态和面部表情的三维模型。为了实现这一点,本文使用数千个3D扫描来训练统一的人体3D模型,SMPL-X,它通过完全铰接的手和富有表情的脸来扩展SMPL。没有成对图像和标签,直接回归SMPL-X的参数是非常具有挑战性。因此,本文采用SMPLify方法,估计二维特征,然后优化模型参数来拟合特征。本文在以下几个重要方面对SMPLify进行了改进:
AIWalker
2021/01/05
2.5K0
CVPR2023|天大联合卡迪夫大学发布SemanticHuman:部件级、精细语义、灵活可控的3D人体编辑表征
---- 新智元报道   编辑:LRS 【新智元导读】SemanticHuman兼顾精细语义与几何刻画的三维人体表示,可实现部件级别的灵活可控编辑。 近年来三维人体表示学习受到越来越多的关注,不过现有工作由于受限于粗糙的语义和有限的表示能力无法灵活、可控、准确地表示人体,尤其是在缺乏配对监督数据的情况下。 针对上述问题,天津大学团队联合英国卡迪夫大学在CVPR2023的工作中提出一种兼顾精细语义与几何刻画的三维人体表示——SemanticHuman。 项目主页:http://cic.tju.edu.
新智元
2023/05/09
3860
CVPR2023|天大联合卡迪夫大学发布SemanticHuman:部件级、精细语义、灵活可控的3D人体编辑表征
推荐阅读
SIGGRAPH 2025|Large Avatar Model:单图秒级打造超写实3D交互数字人,跨平台超实时驱动渲染
770
CVPR 2025 高分论文 | 单图秒变3D真人!IDOL技术开启数字分身新时代
2600
HumanGaussian开源:基于Gaussian Splatting,高质量 3D 人体生成新框架
7000
SIGGRAPH 2024 | 头像化身动画的 3D 高斯 Blendshapes
5490
CVPR 2024 | ChatPose: 谈谈3D人体姿态
6880
李飞飞团队新作:AI透视眼,穿越障碍看清你,渲染遮挡人体有新突破了
2980
基于少量图像的三维重建综述
1.3K0
逼真到恐怖!小姐姐挤眼挑眉五官乱飞,3D化身全新算法秒杀谷歌
1530
HiFi4G: 通过紧凑高斯进行高保真人体性能渲染
5710
CVPR 2024 | SC-GS: 可编辑动态场景中的系数控制高斯溅射
7250
苹果把NeRF玩出新高度:只需单个10s视频,就能重构人物动作和场景
3990
史上最快3D数字人生成器:半小时完成训练,渲染仅需16毫秒,苹果出品
3530
一张照片获得3D人体信息,云从科技提出新型DenseBody框架
9780
InstantAvatar:从 60 秒单目视频中学习数字人化身
2K0
NeRFs和3D高斯溅射技术如何重塑SLAM:综述
1.7K0
分割一切「3D高斯」版来了:几毫秒完成3D分割、千倍加速
6200
3D视频人物肖像生成新突破!港科大、清华等发布AniPortraitGAN,面部表情、肩部运动全可控
7200
GauHuman开源:基于Gaussian Splatting,高质量3D人体快速重建和实时渲染框架
9220
单张图像重建3D人手、人脸和人体
2.5K0
CVPR2023|天大联合卡迪夫大学发布SemanticHuman:部件级、精细语义、灵活可控的3D人体编辑表征
3860
相关推荐
SIGGRAPH 2025|Large Avatar Model:单图秒级打造超写实3D交互数字人,跨平台超实时驱动渲染
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验