深度估计服务器

基于Depth Anything V2的单目深度估计服务器,用于食物图像的深度图估计和分量计算。

  • by Avidan87
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Avidan87/MCP-SERVER

使用说明

深度估计MCP服务器

使用depth Anything V2的KAI部分代理单目深度估计服务器。

特性

  • 深度估计:根据食物图像估计深度图
  • 部分计算:使用深度信息计算份量(重量/体积)
  • 尼日利亚食品数据库:尼日利亚食品的综合密度值
  • 快速API:高性能REST API
  • 铁路优化:具有延迟加载和自动卸载功能的成本优化部署
  • 提高准确性:平板检测和食品特定校准的准确率为70-85%(2025年12月升级)

API终点

健康检查

GET /health

返回服务器运行状况和模型加载状态。

根

GET /

返回服务信息和可用终结点。

估算深度

POST /estimate_depth

上传图像以获取深度图统计数据。

请求:

  • file:图像文件(JPEG、PNG)

答复:

{
  "depth_map_shape": [height, width],
  "min_depth": 0.0,
  "max_depth": 1.0,
  "mean_depth": 0.5,
  "success": true,
  "message": "Depth estimation completed successfully"
}

估算部分

POST /estimate_portion

上传图像以估计份量(重量和体积)。

请求:

  • file:图像文件(JPEG、PNG)
  • food_type (可选):尼日利亚食物类型(例如“jollof_rice”、“egusi-soup”)
  • reference_object (可选):图像中的参考对象(例如“手”、“板”)

答复:

{
  "estimated_weight_grams": 250.0,
  "estimated_volume_ml": 280.0,
  "confidence": 0.75,
  "reference_object_detected": true,
  "success": true,
  "message": "Portion estimation completed successfully..."
}

最近的优化(2025年12月)

🎯 2025年12月精度改进

要实现的重大升级 70-85%的部分估计准确率 (高于40-60%的基线)。

主要改进:

  1. 真实车牌检测 (新-2025年12月)

    • OpenCV霍夫圆变换用于实际盘子/碗检测
    • 用测量的参考对象代替猜测
    • 精度提升:+30-40%
  2. 食物特定身高数据库 (新-2025年12月)

    • 50多种尼日利亚食品的测量高度
    • 福福(8-12cm)、乔洛夫米(3-5cm)、汤(2-4cm)
    • 替换硬编码的5cm假设
    • 精度提升:+25-35%
  3. 增强深度细化

    • 颜色引导深度细化(联合双边滤波)
    • 不确定区域的迭代精化
    • 尼日利亚食品形状先验(30+食品)
  4. 成本优化

    • 深度任意V2小型模型(24.8M参数,Apache 2.0)
    • 延迟加载+空闲10分钟后自动卸载
    • Docker镜像中的预缓存模型
    • 预计费用:3-5美元/月(400-500MB活动内存)

准确度指标(现实估计)

带盘子检测+食物类型:

  • 预期精度:75-85%
  • 典型误差:±15-25%
  • 置信度:0.7-0.85

无板检测:

  • 预期精度:60-70%
  • 典型误差:±30-40%
  • 置信度:0.3-0.5

已知限制:

  • 照明条件差,精度下降
  • 每张图片尚不支持多种食物
  • 不规则/混合菜肴更难估计
  • 碗的深度具有挑战性(与堆积的食物相比)

铁路部署

先决条件

  • GitHub账号
  • 铁路账户(注册地址:https://railway.app)

快速部署(10分钟!)

  1. 推送到GitHub

    cd "MCP SERVER"
    git add .
    git commit -m "feat: deploy optimized Depth Estimation server to Railway"
    git push origin main
    
  2. 创建铁路项目

    • 首选https://railway.app
    • 点击“新建项目”
    • 选择“从GitHub仓库部署”
    • 连接您的存储库
    • 铁路将自动检测 railway.toml 配置
  3. 配置服务

    • 铁路自动使用以下设置 railway.toml
    • 根目录: MCP SERVER
    • Dockerfile:自动检测到
    • 健康检查: /health
  4. 等待构建

    • 首次构建大约需要15-20分钟(下载Depth Anything V2模型)
    • 查看日志以查看进度
    • 模型缓存在Docker镜像中,以备将来部署
  5. 获取您的URL

    • Railway提供了一个URL,如下所示: https://depth-estimation-production.up.railway.app
    • 测试: https://your-url.railway.app/health

Git推送上的自动部署

设置后,当您执行以下操作时,Railway会自动部署:

git add .
git commit -m "Update Depth Estimation server"
git push origin main
# Railway auto-deploys! 🚀

监控

  • 日志:铁路仪表板→ 您的服务→ Logs
  • 指标:仪表板→ 指标(CPU、内存、网络)
  • 用法:仪表板→ 使用情况(见GB小时消耗量)

成本优化技巧

  1. 低流量(每月需求量<500):当前设置是最佳的(约1美元/月)
  2. 中等流量(每月需求500-2K):考虑将空闲超时时间增加到15-20分钟
  3. 高流量(每月需求量>2K):考虑始终加载模型以获得更快的响应

本地开发

  1. 安装依赖项

    pip install -r requirements.txt
    
  2. 运行服务器

    python start_server.py
    
  3. 测试API

    curl http://localhost:8000/health
    

环境变量

  • PORT:服务器端口(默认值:8080,Render会自动设置此端口)

模型信息

  • 模型:Depth Anything V2 Small(最先进的深度估计)
  • 目的:单眼深度估计
  • 尺寸:24.8M参数(~100MB)
  • 许可证:Apache 2.0
  • 准确度:85-92%(通过后处理管道增强)
  • 特性:
    • 延迟加载(根据第一个请求加载)
    • 10分钟不活动后自动卸载
    • 色彩引导深度细化
    • 尼日利亚食品形状奖
  • 演出:
    • 集装箱冷启动:~30-60秒(降速后)
    • 模型冷启动:~5-10秒(从缓存加载模型)
    • 热推断:CPU上约30-60秒(铁路无服务器)
    • 成本:典型使用情况下,铁路每月约3-5美元

技术栈

  • 快速API:Web框架
  • PyTorch:深度学习框架
  • 深度任意V2:最先进的深度估计模型
  • 拥抱面部变压器:模型加载和推理
  • OpenCV:图像处理
  • Uvicorn:ASGI服务器

许可证

麻省理工学院