单目视图合成工具

SHARP是一款AI模型,能够将单张2D照片转换为3D高斯泼溅表示,支持实时渲染和快速生成交互式3D场景,适用于电子商务、房地产、社交媒体等多个行业。

  • by neosun100
  • Python
  • 本地部署
  • 8 星标
  • 更新于
在 GitHub 查看 neosun100/sharp

使用说明

英语 | 简体中文 | 繁体中文 | 日本语

🎯 SHARP-单目视图合成

在不到一秒钟的时间内从单个图像生成交互式3D场景。

✨ 什么是SHARP?

SHARP(SHARP Monocular View Synthesis)是Apple Research的一个AI模型,它将单张2D照片转换为3D高斯Splat表示。这使得:

  • 照片转3D:将任何照片转换为交互式3D场景
  • 实时渲染:生成的3DGS可以实时渲染
  • 超快:GPU上的推理时间不到1秒
  • 零样本推广:适用于任何图像,无需微调

用例

行业 应用
电子商务 单张照片360°产品视图
房地产 虚拟房产之旅
社交媒体 3D照片效果
游戏/VFX 快速3D资产原型
AR/VR 快速生成环境

⚠️ 备注:SHARP生成小范围视图合成(±15-30°),而不是完整的360°重建。它非常适合视差效果和深度感知渲染。

🚀 快速开始

Docker(推荐)

# Pull and run (All-in-One, ~15GB with model)
docker run -d --gpus all -p 8080:8080 --name sharp neosun/sharp:latest

# Access Web UI
open http://localhost:8080

# API Documentation
open http://localhost:8080/docs

Docker Compose

version: '3.8'
services:
  sharp:
    image: neosun/sharp:latest
    container_name: sharp-service
    ports:
      - "8080:8080"
    environment:
      - GPU_IDLE_TIMEOUT=300
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
    restart: unless-stopped
docker-compose up -d

📦 特性

这个Docker镜像提供了三个接口:

接口 端口 描述
Web UI 8080 上传图像,查看3D结果
REST API 8080 使用Swagger文档进行编程访问
MCP服务器 stdio AI助手集成

🌐 Web用户界面

访问 http://localhost:8080 对于web界面:

  • 拖放图像上传
  • 实时3D预览(循环视频)
  • 下载PLY和MP4文件
  • GPU状态监控
  • 多语言支持(EN/中文)

📡 REST API

端点

方法 端点 描述
得到 /health 健康检查
职位 /api/predict 从图像生成3D
得到 /api/files/{id}.ply 下载PLY文件
得到 /api/files/{id}.mp4 下载视频
得到 /api/gpu/status GPU状态
职位 /api/gpu/offload 释放GPU内存
得到 /docs Swagger文档

示例:生成3D场景

# Upload image and generate 3D
curl -X POST http://localhost:8080/api/predict \
  -F "file=@photo.jpg" \
  -F "render_video=true"

# Response
{
  "task_id": "abc123",
  "ply_url": "/api/files/abc123.ply",
  "video_url": "/api/files/abc123.mp4"
}

# Download results
curl -O http://localhost:8080/api/files/abc123.ply
curl -O http://localhost:8080/api/files/abc123.mp4

GPU管理

# Check GPU status
curl http://localhost:8080/api/gpu/status
# {"device":"cuda","model_loaded":true,"gpu_memory_allocated_mb":2694}

# Release GPU memory
curl -X POST http://localhost:8080/api/gpu/offload
# {"status":"offloaded"}

🤖 MCP集成

SHARP包括一个用于AI助手集成的MCP(模型上下文协议)服务器。

配置

添加到您的MCP客户端配置中(例如,Claude Desktop):

{
  "mcpServers": {
    "sharp": {
      "command": "docker",
      "args": ["exec", "-i", "sharp-service", "python", "mcp_server.py"]
    }
  }
}

可用工具

工具 说明
predict 从单张图像生成3D
batch_predict 处理多个图像
gpu_status 检查GPU状态
gpu_offload 释放GPU内存
get_supported_formats 列出支持的图像格式

MCP使用示例

User: Generate a 3D scene from /path/to/image.jpg

Assistant: I'll generate a 3D Gaussian Splat from that image.
[Calls predict tool with file_path="/path/to/image.jpg"]
Result: PLY file saved to /tmp/sharp/output/image.ply

⚙️ 配置

环境变量

变量 默认值 描述
PORT 8080 服务器端口
GPU_IDLE_TIMEOUT 自动卸载前300秒
MODEL_PATH (捆绑) 自定义模型路径

硬件要求

组件 最小值 推荐
GPU 4gbvram 8GB+VRAM
RAM 8GB 16GB
存储空间 20GB 30GB

📁 项目结构

sharp/
├── app.py              # Flask API server
├── gpu_manager.py      # GPU resource management
├── mcp_server.py       # MCP interface
├── templates/          # Web UI templates
├── static/             # Frontend assets
├── src/sharp/          # Core model code
├── Dockerfile          # Container definition
└── docker-compose.yml  # Compose config

🔧 技术栈

  • 模型:苹果SHARP(3D高斯散斑)
  • 后端:Flask+Gunicorn
  • 图形处理器:CUDA 12.4+PyTorch
  • 容器:NVIDIA Docker
  • 主控程序:FastMCP

📊 演出

度量 值
推理时间 ~1秒
视频渲染 约80秒
GPU内存 ~2.7 GB
PLY文件大小 ~60 MB

📝 更新日志

v1.0.0(2024-12-27)

  • 初始版本
  • 带视频预览的Web UI
  • 带有Swagger文档的REST API
  • MCP服务器集成
  • 自动GPU内存管理

📄 许可证

此项目使用Apple的示例代码许可证。看 许可证 了解详情。

🙏 致谢

⭐ 明星历史

📱 关注公众号