Spaces:
Runtime error
Runtime error
# app.py | |
import gradio as gr | |
import torch | |
import numpy as np | |
from PIL import Image | |
from transformers import AutoModel | |
import warnings | |
warnings.filterwarnings('ignore') | |
# 全局变量存储模型实例 | |
model = None | |
def initialize_model(): | |
global model | |
try: | |
if model is None: | |
model = AutoModel.from_pretrained( | |
"jadechoghari/vfusion3d", | |
trust_remote_code=True, | |
device_map="auto" # 自动处理设备分配 | |
) | |
except Exception as e: | |
print(f"模型加载错误: {str(e)}") | |
return None | |
return model | |
def process_image(input_image): | |
if input_image is None: | |
return None, "请上传图片" | |
try: | |
# 初始化模型 | |
model = initialize_model() | |
if model is None: | |
return None, "模型加载失败" | |
# 确保输入图像是PIL Image格式 | |
if not isinstance(input_image, Image.Image): | |
input_image = Image.fromarray(np.uint8(input_image)) | |
# 图像预处理 | |
input_image = input_image.resize((256, 256)) | |
# 转换为tensor并归一化 | |
image_tensor = torch.from_numpy(np.array(input_image)).float() / 255.0 | |
image_tensor = image_tensor.permute(2, 0, 1).unsqueeze(0) | |
# 模型推理 | |
with torch.no_grad(): | |
try: | |
output = model(image_tensor) | |
return output, "处理成功" | |
except Exception as e: | |
return None, f"模型推理错误: {str(e)}" | |
except Exception as e: | |
return None, f"处理错误: {str(e)}" | |
# 创建Gradio界面 | |
demo = gr.Interface( | |
fn=process_image, | |
inputs=[ | |
gr.Image( | |
type="pil", | |
label="上传图片", | |
tool="select" | |
) | |
], | |
outputs=[ | |
gr.Model3D( | |
label="生成的3D模型", | |
clear_color=[0.0, 0.0, 0.0, 0.0] | |
), | |
gr.Textbox( | |
label="处理状态", | |
placeholder="等待处理..." | |
) | |
], | |
title="麒迹云台 - 2D转3D模型生成器", | |
description="上传一张图片,AI将自动生成对应的3D模型。支持格式:jpg, png, jpeg", | |
theme=gr.themes.Soft(), | |
allow_flagging="never" | |
) | |
# 启动应用 | |
demo.launch() |