Hunyuan3D本地部署

1.环境准备

新建一个python 3.10的环境并激活进入该环境

Hunyuan3D要求CUDA版本为12.1,先查一下有没有对应版本

复制代码
ls -l /usr/local/ | grep cuda-12.1

有的话我们需要在该虚拟环境中指向该CUDA版本的路径

复制代码
# 手动创建 activate.d 目录(按 conda 规范路径)
mkdir -p $CONDA_PREFIX/etc/conda/activate.d/

# 进入刚创建的 activate.d 目录
cd $CONDA_PREFIX/etc/conda/activate.d/

# 创建环境变量配置文件
touch cuda121_env.sh
echo 'export PATH=/usr/local/cuda-12.1/bin:$PATH' >> cuda121_env.sh
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH' >> cuda121_env.sh

# 赋予执行权限
chmod +x cuda121_env.sh

# 先退出环境
conda deactivate

# 重新激活环境,加载新配置
conda activate hunyuan3d

指向后,可以nvcc -V查看一下当前虚拟环境对应的CUDA版本

无误后,从GitHub上把项目拉下来。如果外网下载不下来,或者比较慢的话,可以手动去官网下载zip,再上传服务器,再unzip即可。

复制代码
git clone https://github.com/Tencent/Hunyuan3D-2.git

而后先指定下pip镜像源,再进行安装

复制代码
# 更换 pypi 源加速库
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

cd ./Hunyuan3D-2
pip install -r requirements.txt

# for texture
cd hy3dgen/texgen/custom_rasterizer
python3 setup.py install
cd ../../..
cd hy3dgen/texgen/differentiable_renderer
python3 setup.py install

2.下载模型

截至2025.3.20,Hunyuan3D-2模型仓库大小约为56GB,Hunyuan3D-2mv为28GB,Hunyuan3D-2mini为23GB,请参考官方运行硬件要求以及显存消耗拉取所需模型仓库,完整拉取供需106GB硬盘空间。先df -h指令查看一下硬盘存储情况,按需安装即可。模型下载指令中记得将'---local-dir'后或'cache_dir'的路径替换为自己存放的本地数据盘路径

复制代码
export HF_ENDPOINT="https://hf-mirror.com"
source ~/.bashrc
# Hunyuan3D-2
huggingface-cli download --resume-download tencent/Hunyuan3D-2 --local-dir /root/autodl-tmp/weights/Hunyuan3D-2
# Hunyuan3D-2mv
huggingface-cli download --resume-download tencent/Hunyuan3D-2mv --local-dir /root/autodl-tmp/weights/Hunyuan3D-2mv
#Hunyuan3D-2mini
huggingface-cli download --resume-download tencent/Hunyuan3D-2mini --local-dir /root/autodl-tmp/weights/Hunyuan3D-2mini

3.模型调用

我只拉了Hunyuan3D-2,也就是单视图白模生成+纹理生成

3.1单视图白模生成

在项目仓库下(Hunyuan3D-2/hy3dgen/shapegen/utils.py:83)更改模型加载路径base_dir

新建一个测试脚本

python 复制代码
import time
import torch
from PIL import Image

from hy3dgen.rembg import BackgroundRemover
from hy3dgen.shapegen import Hunyuan3DDiTFlowMatchingPipeline

image_path = '输入图像路径'
image = Image.open(image_path).convert("RGBA")
if image.mode == 'RGB':
    rembg = BackgroundRemover()
    image = rembg(image)

pipeline = Hunyuan3DDiTFlowMatchingPipeline.from_pretrained(
    '模型上一层文件路径/Hunyuan3D-2-main/model/Hunyuan3D-2',
    subfolder='hunyuan3d-dit-v2-0',
    variant='fp16'
)

start_time = time.time()
mesh = pipeline(image=image,
                num_inference_steps=50,
                octree_resolution=380,
                num_chunks=20000,
                generator=torch.manual_seed(12345),
                output_type='trimesh'
                )[0]
print("--- %s seconds ---" % (time.time() - start_time))
mesh.export(f'输出路径/Hunyuan3D-2-main/output/yaya.glb')

执行该脚本,大概30s内就生成了

生成的文件是glb文件,可以在线查看,也可以blender导入。这里是我随手放的一个手托乌鸦玩偶的图片。

3.2单视图纹理生成

同理先去改一下模型的读取路径,在Hunyuan3D-2/hy3dgen/texgen/pipelines.py:55,这边要改两个地方,一个是base_dir,一个是multiview_model_path的第二个参数

再新建一个测试脚本

python 复制代码
from PIL import Image

from hy3dgen.rembg import BackgroundRemover
from hy3dgen.shapegen import Hunyuan3DDiTFlowMatchingPipeline
from hy3dgen.texgen import Hunyuan3DPaintPipeline

model_path = '调用的模型的本地路径Hunyuan3D-2-main/model/Hunyuan3D-2/AI-ModelScope/Hunyuan3D-2'
pipeline_shapegen = Hunyuan3DDiTFlowMatchingPipeline.from_pretrained(model_path)
pipeline_texgen = Hunyuan3DPaintPipeline.from_pretrained(model_path)

image_path = '自己图像的输入路径"
image = Image.open(image_path).convert("RGBA")

if image.mode == 'RGB':
    rembg = BackgroundRemover()
    image = rembg(image)

mesh = pipeline_shapegen(image=image)[0]
mesh = pipeline_texgen(mesh, image=image)
mesh.export('输出保存路径Hunyuan3D-2-main/output/rixiang_textured.glb')

运行脚本,输出信息如下,这里需要的时间会很长,可以直接扔后台去输出

用blender打开输出的模型。blender刚打开还是白模,需要 z 快捷键选择blender进行渲染一下

4.致谢

多谢datawhale官方提供的指导手册

Hunyuan3D官方GitHub主页

相关推荐
清风笑烟语18 小时前
rustfs 集群部署
3d
还是大剑师兰特1 天前
Unity 从零搭建简易3D场景(新手分步教程)
3d·unity·游戏引擎
EQ-雪梨蛋花汤1 天前
Android 3D 开发教程(三):Sceneform-EQR 配置 PBR 材质、光照、相机与实时阴影
android·3d·材质
弈语道破AI1 天前
3D渲染不再熬时间!即梦 Seedance 2.5 具备3D白模渲染功能的AI视频生成工具
人工智能·3d·音视频
答案—answer2 天前
VibeCoding 能做到什么程度?我用它做了一座 3D 数字博物馆
3d·ai编程·threejs·vibecoding
玖玥拾2 天前
Unity3D RPG 入门项目(四)背包拖拽、物品悬浮提示、项目开发思维
3d·unity·游戏引擎
cyadyx3 天前
【Three.js】Three.js 中加载 3D 模型
前端·javascript·3d
chaoyuanl3 天前
悬空玻璃剧场源头厂家选型全解析|270°裸眼3D悬空玻璃剧场投资避坑指南
大数据·人工智能·3d·xr·娱乐·mr
在下胡三汉3 天前
GLTF vs OBJ vs FBX vs GLB:选择合适的 3D 文件格式,怎么获取下载
3d
fanfan_hongyun3 天前
Cesium for unity (可加载3dTileset)
3d