Back to MCP directory
publicPublicdnsLocal runtime

sharp

SHARP是一个由苹果研究开发的AI模型,能够将单张2D照片快速转换为3D高斯泼溅表示,实现照片到交互式3D场景的实时转换,推理时间不到一秒。

article

README

🚀 SHARP - 单目视图合成

SHARP(Sharp Monocular View Synthesis)是苹果研究团队推出的一款AI模型,它能够在不到一秒的时间内,将单张2D照片转换为3D高斯点云(3D Gaussian Splat)表示,从而生成交互式3D场景。

English | 简体中文 | 繁體中文 | 日本語

Docker Version License arXiv

Demo

✨ SHARP 是什么?

SHARP 是苹果研究团队开发的一个AI模型,它可以将单张2D照片转换为3D高斯点云表示,具备以下能力:

  • 照片转3D:将任意照片转换为交互式3D场景。
  • 实时渲染:生成的3DGS可以实时渲染。
  • 超快速:在GPU上推理时间少于1秒。
  • 零样本泛化:无需微调即可处理任何图像。

应用场景

| 行业 | 应用 | | ---- | ---- | | 电子商务 | 从单张照片生成360°产品视图 | | 房地产 | 虚拟房产游览 | | 社交媒体 | 3D照片效果 | | 游戏/视觉特效 | 快速3D资产原型制作 | | 增强现实/虚拟现实 | 快速环境生成 |

⚠️ 重要提示:SHARP 生成的是小范围视图合成(±15 - 30°),并非完整的360°重建,适用于视差效果和深度感知渲染。

🚀 快速开始

Docker(推荐)

# 拉取并运行(一体化,包含模型约15GB)
docker run -d --gpus all -p 8080:8080 --name sharp neosun/sharp:latest

# 访问Web界面
open http://localhost:8080

# API文档
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 Server | stdio | 用于AI助手集成 |

🌐 Web界面

访问 http://localhost:8080 可使用Web界面:

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

📡 REST API

端点

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

示例:生成3D场景

# 上传图像并生成3D
curl -X POST http://localhost:8080/api/predict \
  -F "file=@photo.jpg" \
  -F "render_video=true"

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

# 下载结果
curl -O http://localhost:8080/api/files/abc123.ply
curl -O http://localhost:8080/api/files/abc123.mp4

GPU管理

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

# 释放GPU内存
curl -X POST http://localhost:8080/api/gpu/offload
# {"status":"offloaded"}

🤖 MCP集成

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

配置

添加到你的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使用示例

用户:从 /path/to/image.jpg 生成一个3D场景

助手:我将从该图像生成一个3D高斯点云。
[调用predict工具,文件路径为 "/path/to/image.jpg"]
结果:PLY文件保存到 /tmp/sharp/output/image.ply

⚙️ 配置

环境变量

| 变量 | 默认值 | 描述 | | ---- | ---- | ---- | | PORT | 8080 | 服务器端口 | | GPU_IDLE_TIMEOUT | 300 | 自动释放GPU内存的超时时间(秒) | | MODEL_PATH | (内置) | 自定义模型路径 |

硬件要求

| 组件 | 最低要求 | 推荐配置 | | ---- | ---- | ---- | | GPU | 4GB显存 | 8GB+显存 | | 内存 | 8GB | 16GB | | 存储 | 20GB | 30GB |

📁 项目结构

sharp/
├── app.py              # Flask API服务器
├── gpu_manager.py      # GPU资源管理
├── mcp_server.py       # MCP接口
├── templates/          # Web UI模板
├── static/             # 前端资源
├── src/sharp/          # 核心模型代码
├── Dockerfile          # 容器定义
└── docker-compose.yml  # Compose配置

🔧 技术栈

  • 模型:苹果SHARP(3D高斯点云)
  • 后端:Flask + Gunicorn
  • GPU:CUDA 12.4 + PyTorch
  • 容器:NVIDIA Docker
  • MCP:FastMCP

📊 性能

| 指标 | 值 | | ---- | ---- | | 推理时间 | ~1秒 | | 视频渲染时间 | ~80秒 | | GPU内存使用 | ~2.7 GB | | PLY文件大小 | ~60 MB |

📝 更新日志

v1.0.0 (2024-12-27)

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

📄 许可证

本项目使用苹果的示例代码许可证。详情请参阅 LICENSE

🙏 致谢

⭐ 星标历史

Star History Chart

📱 关注公众号

公众号

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client