硬件深度 × AI深度 = 完美深度图
将结构光/ToF深度相机的绝对度量精度,与 Depth Anything V2 单目深度估计的无空洞平滑特性相融合, 实现既有毫米级绝对距离、又无空洞且平滑的高质量深度图输出。
- 🔗 硬件+AI融合:Gemini 335Le 提供绝对深度,Depth Anything V2 填充空洞并平滑噪声
- 🚀 远程GPU加速:深度图推理卸载到 GPU 服务器(4090/3090等),通过局域网 WebSocket 通信
- ⚡ 低延迟:有线网络 ~20ms,WiFi ~100ms 往返延迟
- 📊 实时可视化:Web端三画面 Dashboard(RGB + 深度图 + 高程图)
- 🤖 机器人就绪:输出绝对度量深度图 + 自适应高程图,可直接用于 RL 策略的 height_scan 观测
┌─────────────────────┐ WebSocket ┌──────────────────────┐
│ Orange Pi 5 Max │ ◄──────────────────────► │ GPU 服务器 (4090) │
│ │ RGB JPEG (~45KB) ──► │ │
│ Gemini 335Le 相机 │ │ Depth Anything V2 │
│ ├─ RGB 640×480 │ ◄── 深度图 zlib (~150KB) │ PyTorch CUDA 推理 │
│ ├─ Depth 640×480 │ + 可视化 JPEG │ │
│ └─ IMU 200Hz │ │ ~15ms/帧 (4090) │
│ │ └──────────────────────┘
│ 深度融合模块 │
│ ├─ 尺度对齐 (LSQ) │
│ ├─ 空洞填充 │
│ └─ 加权混合 │
│ │
│ 自适应高程图 │
│ ├─ 自动地面估计 │
│ ├─ 自动覆盖范围 │
│ └─ 障碍物检测 │
│ │
│ Web Dashboard │
│ └─ FastAPI+WS │
└─────────────────────┘
| 组件 | 型号 | 用途 |
|---|---|---|
| 深度相机 | Orbbec Gemini 335Le | RGB + 结构光深度 + IMU |
| 边缘计算 | Orange Pi 5 Max (RK3588) | 数据采集、融合、Web服务 |
| GPU服务器 | 任意 NVIDIA GPU (推荐 3060+) | Depth Anything V2 推理 |
| 网络 | 局域网(推荐有线千兆) | 图像传输 |
💡 也支持其他深度相机(RealSense、Azure Kinect等),只需修改相机驱动部分。
depth-fusion-gpu/
├── server/ # GPU 服务器端(4090主机上运行)
│ ├── da_v2_server.py # DA V2 WebSocket 推理服务
│ └── requirements.txt
│
├── client/ # 边缘端(Orange Pi上运行)
│ ├── depth_fusion_remote.py # 远程 GPU 深度融合模块
│ ├── height_map_adaptive.py # 自适应高程图生成器
│ ├── vision_server.py # Web可视化 Dashboard
│ └── requirements.txt
│
├── docs/
│ ├── architecture.png # 架构图
│ └── setup_guide.md # 详细部署指南
│
├── README.md
└── LICENSE
# 克隆仓库
git clone https://github.com/YOUR_USERNAME/depth-fusion-gpu.git
cd depth-fusion-gpu
# 创建conda环境
conda create -n da_server python=3.10 -y
conda activate da_server
# 安装依赖
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu128
pip install -r server/requirements.txt
# 下载 Depth Anything V2 模型代码和权重
git clone https://github.com/DepthAnything/Depth-Anything-V2.git
wget https://huggingface.co/depth-anything/Depth-Anything-V2-Small/resolve/main/depth_anything_v2_vits.pth
# 启动推理服务
python server/da_v2_server.py --encoder vits
# 想要更高质量: --encoder vitb 或 --encoder vitl# 安装依赖
pip install websocket-client opencv-python fastapi uvicorn pyorbbecsdk
# 修改 GPU 服务器 IP(编辑 client/vision_server.py 中的 server_url)
# 默认: ws://192.168.5.43:9999
# 启动
cd client
python vision_server.py
# 浏览器打开 http://<OrangePi_IP>:8888| 硬件深度 (Gemini) | AI深度 (DA V2) | |
|---|---|---|
| 精度 | ✅ 绝对度量 (mm级) | ❌ 仅相对深度 |
| 完整性 | ❌ 有空洞(黑色/反光/透明物体) | ✅ 每个像素都有值 |
| 平滑度 | ❌ 噪声大,竖条纹 | ✅ 平滑连续 |
| 速度 | ✅ 实时 30fps |
-
尺度对齐:用 Gemini 有效像素对 DA V2 做最小二乘拟合
Gemini_depth ≈ scale × DA_depth + shift -
加权混合:Gemini 有效区域做 α:β 混合(默认 60:40)
fused[valid] = α × Gemini + (1-α) × DA_aligned -
空洞填充:Gemini 无效区域直接用对齐后的 DA V2
fused[invalid] = DA_aligned[invalid] -
边界平滑:双边滤波消除融合边界
| 参数 | 默认值 | 说明 |
|---|---|---|
--encoder |
vits |
模型大小:vits(最快25M) / vitb(平衡97M) / vitl(最精335M) |
--port |
9999 |
WebSocket 端口 |
| 参数 | 默认值 | 说明 |
|---|---|---|
server_url |
ws://192.168.5.43:9999 |
GPU服务器地址 |
blend_alpha |
0.4 |
Gemini权重(0=全用DA, 1=全用Gemini) |
resolution |
0.04 |
高程图网格分辨率(m) |
obstacle_thresh |
0.05 |
障碍物高度阈值(m) |
在 RTX 4090 + Orange Pi 5 Max + WiFi 环境下测试:
| 指标 | 数值 |
|---|---|
| DA V2 推理延迟 (vits) | ~15ms |
| 网络往返 (WiFi) | ~100ms |
| 网络往返 (有线) | ~3ms |
| 端到端延迟 (WiFi) | ~110ms |
| 端到端延迟 (有线) | ~20ms |
| 深度图有效像素提升 | +30~50% |
| Dashboard 帧率 | ~10 FPS (WiFi) / ~30 FPS (有线) |
| 方案 | 推理延迟 | 深度图质量 |
|---|---|---|
| 纯Gemini(无AI) | 0ms | 有空洞,噪声大 |
| CPU本地 DA V2 (Orange Pi) | 1336ms | 好,但更新太慢 |
| 远程GPU DA V2 (4090+WiFi) | ~110ms | 好,接近实时 |
| 远程GPU DA V2 (4090+有线) | ~20ms | 好,完全实时 |
- 足式机器人:为 RL 策略提供高质量 height_scan 观测
- 移动机器人:实时障碍物检测与地形感知
- 3D重建:高质量深度图用于点云/Mesh重建
- AR/VR:实时深度感知
- Depth Anything V2 - 单目深度估计模型
- Orbbec SDK - 深度相机驱动
MIT License - 详见 LICENSE
