File size: 3,206 Bytes
e7b9fb6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
"""
自动下载MagicArticulate和Michelangelo所需的模型文件
在HF Space启动时调用
"""

import os
import logging
from pathlib import Path

logger = logging.getLogger(__name__)

def download_models():
    """下载所有必需的模型文件"""
    try:
        from huggingface_hub import hf_hub_download
        
        logger.info("🔄 开始下载模型文件...")
        
        # 1. 下载Michelangelo模型
        michelangelo_path = "third_party/Michelangelo/checkpoints/aligned_shape_latents/shapevae-256.ckpt"
        if not os.path.exists(michelangelo_path):
            logger.info("📥 下载Michelangelo模型...")
            try:
                file_path = hf_hub_download(
                    repo_id="Maikou/Michelangelo",
                    filename="checkpoints/aligned_shape_latents/shapevae-256.ckpt",
                    local_dir="third_party/Michelangelo"
                )
                logger.info(f"✅ Michelangelo模型下载完成: {file_path}")
            except Exception as e:
                logger.error(f"❌ Michelangelo模型下载失败: {e}")
        else:
            logger.info("✅ Michelangelo模型已存在")
        
        # 2. 下载MagicArticulate层次模型
        hier_path = "skeleton_ckpt/checkpoint_trainonv2_hier.pth"
        if not os.path.exists(hier_path):
            logger.info("📥 下载MagicArticulate层次模型...")
            try:
                os.makedirs("skeleton_ckpt", exist_ok=True)
                file_path = hf_hub_download(
                    repo_id="Seed3D/MagicArticulate",
                    filename="skeleton_ckpt/checkpoint_trainonv2_hier.pth",
                    local_dir=""
                )
                logger.info(f"✅ MagicArticulate层次模型下载完成: {file_path}")
            except Exception as e:
                logger.error(f"❌ MagicArticulate层次模型下载失败: {e}")
        else:
            logger.info("✅ MagicArticulate层次模型已存在")
        
        # 3. 下载MagicArticulate空间模型
        spatial_path = "skeleton_ckpt/checkpoint_trainonv2_spatial.pth"
        if not os.path.exists(spatial_path):
            logger.info("📥 下载MagicArticulate空间模型...")
            try:
                os.makedirs("skeleton_ckpt", exist_ok=True)
                file_path = hf_hub_download(
                    repo_id="Seed3D/MagicArticulate",
                    filename="skeleton_ckpt/checkpoint_trainonv2_spatial.pth",
                    local_dir=""
                )
                logger.info(f"✅ MagicArticulate空间模型下载完成: {file_path}")
            except Exception as e:
                logger.error(f"❌ MagicArticulate空间模型下载失败: {e}")
        else:
            logger.info("✅ MagicArticulate空间模型已存在")
        
        logger.info("🎯 模型下载过程完成")
        return True
        
    except ImportError:
        logger.error("❌ huggingface_hub未安装,无法下载模型")
        return False
    except Exception as e:
        logger.error(f"💥 模型下载过程出错: {e}")
        return False

if __name__ == "__main__":
    download_models()