腾讯首个3D生成大模型Hunyuan3D-1.0分享

Hunyuan3D-1.0是腾讯混元团队开发的首个同时支持文字、图像转3D的大模型,可以基于文本描述或单张图像生成3D模型。

Hunyuan3D-1.0采用了多视图生成和多视图重建两阶段的方法,能够从不同视角捕捉对象的纹理和几何信息。

在多视图生成阶段,Hunyuan3D-1.0模型采用自适应CFG技术,为不同视角和时间步设置不同的CFG尺度值,以平衡生成控制和多样性。

在多视图重建阶段,Hunyuan3D-1.0模型结合了已校准和未校准的混合输入,通过专门的视角无关分支整合条件图像信息,提升生成图像中的不可见部分精度。

Hunyuan3D-1.0具备强大的泛化能力,可以重建不同尺度的物体,从建筑到花草工具等。

github项目地址:https://github.com/tencent/Hunyuan3D-1。

一、环境安装

1、python环境

建议安装python版本在3.10以上。

2、pip库安装

pip install torch==2.2.0+cu118 torchvision==0.17.0+cu118 torchaudio==2.2.0 --extra-index-url https://download.pytorch.org/whl/cu118

pip install diffusers transformers rembg tqdm omegaconf matplotlib opencv-python imageio jaxtyping einops SentencePiece accelerate trimesh PyMCubes xatlas libigl open3d -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install git+https://github.com/facebookresearch/pytorch3d

pip install git+https://github.com/NVlabs/nvdiffrast

3、模型下载

git lfs install

git clone https://huggingface.co/tencent/Hunyuan3D-1

、功能测试

1、运行测试

(1)python代码调用测试

import os
import torch
from PIL import Image
import argparsefrom infer import Text2Image, Removebg, Image2Views, Views2Mesh, GifRendererdef initialize_models(args):"""Initialize all the models required for the process."""rembg_model = Removebg()image_to_views_model = Image2Views(device=args.device, use_lite=args.use_lite)views_to_mesh_model = Views2Mesh(args.mv23d_cfg_path, args.mv23d_ckt_path, args.device, use_lite=args.use_lite)text_to_image_model = Nonegif_renderer = Noneif args.text_prompt:text_to_image_model = Text2Image(pretrain=args.text2image_path, device=args.device, save_memory=args.save_memory)if args.do_render:gif_renderer = GifRenderer(device=args.device)return rembg_model, image_to_views_model, views_to_mesh_model, text_to_image_model, gif_rendererdef text_to_image(text_to_image_model, args):"""Convert text prompt to an image."""res_rgb_pil = text_to_image_model(args.text_prompt,seed=args.t2i_seed,steps=args.t2i_steps)return res_rgb_pildef remove_background(rembg_model, res_rgb_pil):"""Remove background from the image."""return rembg_model(res_rgb_pil)def image_to_views(image_to_views_model, res_rgba_pil, args):"""Convert RGBA image to multiple views."""return image_to_views_model(res_rgba_pil,seed=args.gen_seed,steps=args.gen_steps)def views_to_mesh(views_to_mesh_model, views_grid_pil, cond_img, args):"""Convert views into a 3D mesh."""views_to_mesh_model(views_grid_pil,cond_img,seed=args.gen_seed,target_face_count=args.max_faces_num,save_folder=args.save_folder,do_texture_mapping=args.do_texture_mapping)def render_gif(gif_renderer, args):"""Render a 3D mesh as a GIF."""gif_renderer(os.path.join(args.save_folder, 'mesh.obj'),gif_dst_path=os.path.join(args.save_folder, 'output.gif'),)def save_image(image, path):"""Save the PIL image to a specified path."""image.save(path)def get_args():"""Parse and return the command-line arguments."""parser = argparse.ArgumentParser()parser.add_argument("--use_lite", default=False, action="store_true")parser.add_argument("--mv23d_cfg_path", default="./svrm/configs/svrm.yaml", type=str)parser.add_argument("--mv23d_ckt_path", default="Hunyuan3D-1/svrm/svrm.safetensors", type=str)parser.add_argument("--text2image_path", default="Hunyuan3D-1/weights/hunyuanDiT", type=str)parser.add_argument("--save_folder", default="./outputs/test/", type=str)parser.add_argument("--text_prompt", default="", type=str)parser.add_argument("--image_prompt", default="", type=str)parser.add_argument("--device", default="cuda:0", type=str)parser.add_argument("--t2i_seed", default=0, type=int)parser.add_argument("--t2i_steps", default=25, type=int)parser.add_argument("--gen_seed", default=0, type=int)parser.add_argument("--gen_steps", default=50, type=int)parser.add_argument("--max_faces_num", default=80000, type=int, help="max num of face, suggest 80000 for effect, 10000 for speed")parser.add_argument("--save_memory", default=False, action="store_true")parser.add_argument("--do_texture_mapping", default=False, action="store_true")parser.add_argument("--do_render", default=False, action="store_true")return parser.parse_args()def main():args = get_args()assert not (args.text_prompt and args.image_prompt), "Specify either a text or an image prompt, not both"assert args.text_prompt or args.image_prompt, "Either a text prompt or an image prompt must be specified"os.makedirs(args.save_folder, exist_ok=True)rembg_model, image_to_views_model, views_to_mesh_model, text_to_image_model, gif_renderer = initialize_models(args)# Stage 1: Text to Imageif args.text_prompt:res_rgb_pil = text_to_image(text_to_image_model, args)save_image(res_rgb_pil, os.path.join(args.save_folder, "img.jpg"))else:res_rgb_pil = Image.open(args.image_prompt)# Stage 2: Remove Backgroundres_rgba_pil = remove_background(rembg_model, res_rgb_pil)save_image(res_rgba_pil, os.path.join(args.save_folder, "img_nobg.png"))# Stage 3: Image to Views(views_grid_pil, cond_img), _ = image_to_views(image_to_views_model, res_rgba_pil, args)save_image(views_grid_pil, os.path.join(args.save_folder, "views.jpg"))# Stage 4: Views to Meshviews_to_mesh(views_to_mesh_model, views_grid_pil, cond_img, args)# Stage 5: Render GIFif args.do_render:render_gif(gif_renderer, args)if __name__ == "__main__":main()

未完......

更多详细的欢迎关注:杰哥新技术

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

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

相关文章

【JavaEE初阶 — 多线程】内存可见性问题 volatile

1. 内存可见性问题 内存可见性的概念 什么是内存可见性问题呢? 当一个线程对共享变量进行了修改,那么另外的线程都是立即可以看到修改后的最新值。在Java中,可以借助 synchronized、volatile 以及各种Lock 实现可见性。如果我们将变量声…

排序算法.

排序算法是最常用的一种算法.它解决的主要问题是在一定的时间复杂度和空间复杂度的条件下,对n个数按照一定的顺序进行排序.排序算法主要分为四大类,即插入类,交换类,选择类和归并类,不同的排序算法的时间复杂程度和空间复杂程度差别很大. 排序算法主要有以下几种: 1.插入类排…

iOS18.1通話錄音實測 錄音夠清晰 文字轉錄廣東話用唔到?

iOS 18.1功能實測|期待已久的通話錄音功能終在iOS18.1推出,讓用家可以在通話過程中輕鬆錄音,並附上逐字稿功能,為使用者提供更靈活的通話記錄方式。記者實測通話錄音功能,看看錄音清晰度、方便性、逐字轉錄的表現。 打…

403 Request Entity Too Lager(请求体太大啦)

昨天收到 QA 的生产报障,说是测试环境的附件上传功能报了 403 的错误,错误信息:403 Request Entity Too Lager。我尝试复现问题,发现传个几兆的文件都费劲啊,一传一个失败。不用说,项目用到 ng 代理&#x…

【C++】新手入门指南

> 🍃 本系列为初阶C的内容,如果感兴趣,欢迎订阅🚩 > 🎊个人主页:[小编的个人主页])小编的个人主页 > 🎀 🎉欢迎大家点赞👍收藏⭐文章 > ✌️ 🤞 &#x1…

ElasticSearch备考 -- Cross cluster replication(CCR)

一、题目 操作在cluster1(local)中操作索引task,复制到cluster2(remote)中 二、思考 CCR 我们可以对标MySQL 理解为为主从,后者备份。主节点负责写入数据,从/备节点负责同步时主节点的数据。 …

IDEA在编译时: java: 找不到符号符号: 变量 log

一、问题 IDEA在编译的时候报Error:(30, 17) java: 找不到符号符号: 变量 log Error:(30, 17) java: 找不到符号 符号: 变量 log 位置: 类 com.mokerson.rabbitmq.config.RabbitMqConfig 二、解决方案 背景:下载其他同事代码时,第一次运行&#xff0c…

一文熟悉新版llama.cpp使用并本地部署LLAMA

0. 简介 最近是快到双十一了再给大家上点干货。去年我们写了一个大模型的系列,经过一年,大模型的发展已经日新月异。这一次我们来看一下使用llama.cpp这个项目,其主要解决的是推理过程中的性能问题。主要有两点优化: llama.cpp …

[翻译]ANSI X9.24-3-2017

目录 1 目的 2 范围 2.1 应用 3 参考文献 4 术语和定义 4.1 高级加密标准(AES) 4.2 AES 4.3 算法 4.4 ANSI 4.5 基础推导密钥(BDK) 4.6 BDK 4.7 BDK ID 4.8 加密密钥 4.9 加密密钥同步 4.10 密码强度 4.11 派生 4.12 派生标识符(ID) 4…

使用 GitHub Actions 部署到开发服务器的详细指南

使用 GitHub Actions 部署到开发服务器的详细指南 在本篇博客中,我们将介绍如何使用 GitHub Actions 实现自动化部署,将代码从 GitHub 仓库的 dev 分支自动部署到开发服务器。通过这种方式,可以确保每次在 dev 分支推送代码时,服…

Docker安装部署RabbitMQ

1. Docker环境准备 1.1 安装Docker 在开始Docker安装部署RabbitMQ之前,确保您的系统环境已经满足Docker的运行要求。以下是在不同操作系统上安装Docker的步骤和命令行演示。 对于Linux系统 在基于Debian的系统(如Ubuntu)上,您…

UniAPP u-popup 禁止背景滑动

增加class .NoScroll {overflow: hidden;position: fixed; }在外层div上增加该class判断条件

ubuntu 24.04运行chattts时cuda安装错误原因分析

使用ubuntu 24.04,按照2noise/ChatTTS官方流程安装依赖时报错。ChatTTShttps://github.com/2noise/ChatTTS 这是因为cuda版本不对,ChatTTS目前的版本,要求支持cuda 12.4及以上,但是如果nvidia显卡驱动版本较老,无法支…

spring-security(记住密码,CSRF)

注册PersistentTokenRepository PersistentTokenRepository实现类 InMemoryTokenRepositoryImpl基于内存实现 JdbcTokenRepositoryImpl基于数据库实现 基于内存实现 Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { Bean publi…

iOS问题记录 - 503 Service Temporarily Unavailable

文章目录 前言开发环境问题描述问题分析解决方案最后 前言 最近有个项目经历了大改动,本地测试没什么问题,于是准备通过打包机打包用于内部测试的包,然后问题就来了。 开发环境 Xcode: 16.1Fastlane: 2.219.0 问题描述 问题出在登录苹果…

linux-vlan

# VLAN # 1.topo # 2.创建命名空间 ip netns add ns1 ip netns add ns2 ip netns add ns3 # 3.创建veth设备 ip link add ns1-veth0 type veth peer name ns21-veth0 ip link add ns3-veth0 type veth peer name ns23-veth0 # 4.veth设备放入命名空间,启动接口 ip link set n…

HTB:Precious[WriteUP]

目录 连接至HTB服务器并启动靶机 使用nmap对靶机TCP端口进行开放扫描 使用curl访问靶机80端口 使用ffuf爆破一下子域 使用浏览器访问该域名 使用curl访问该域名响应头 使用exiftool工具查看该pdf信息 横向移动 USER_FLAG:adf5793a876a190f0c08b3b6247cec32…

链表归并与并集相关算法题

两递增归并为递减到原位 假设有两个按元素递增次序排列的线性表,均以单链表形式存储。将这两个单链表归并为一个按元素递减次序排列的单链表,并要求利用原来两个单链表的节点存放归并后的单链表 算法思想 因为两链表已按元素值递增次序排列&#xff0…

山东布谷科技:关于直播源码|语音源码|一对一直播源码提交App Store的流程及重构建议

自从YY、六间房开启国内聊天室和秀场等网红盛行的网络红利时代以来,紧随其后国内各大音视频平台相应出现,先有映客花椒等直播平台的风头正劲,后有功能板块更丰富的头条抖音Tiktok等,盈利功能点不仅仅有直播PK连麦等礼物打赏功能&a…

C++ 【STL容器系列(一)】vector的使用

1.介绍 vector是STL中的容器之一( STL(standard template libaray-标准模板库):是C标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。),STL的容器有非常多&#x…