说明文档
DA-2 WebGPU 移植版
本仓库包含 DA-2 (Depth Anything in Any Direction) 模型的移植版本,可使用 WebGPU 和 ONNX Runtime 完全在浏览器中运行。
原始工作由 EnVision-Research 开发。此移植版本支持实时、客户端全景图像深度估计,无需后端服务器进行推理。
🔗 原始工作
DA<sup>2</sup>: Depth Anything in Any Direction
如果您使用本工作,请引用原始论文:
@article{li2025da2,
title={DA2: Depth Anything in Any Direction},
author={Li, Haodong and Zheng, Wangguangdong and He, Jing and Liu, Yuhao and Lin, Xin and Yang, Xin and Chen, Ying-Cong and Guo, Chunchao},
journal={arXiv preprint arXiv:2509.26618},
year={2025}
}
🚀 WebGPU 演示
本项目包含一个基于 Web 的演示,可直接在浏览器中运行模型。
前置要求
- Python 3.10+(用于模型导出)
- 支持 WebGPU 的浏览器(Chrome 113+、Edge 113+ 或 Firefox Nightly)
安装
-
克隆仓库:
git clone <your-repo-url> cd DA-2-Web -
设置 Python 环境:
python3 -m venv venv source venv/bin/activate # Windows 上使用: venv\Scripts\activate pip install -r requirements.txt
模型准备
运行演示前,首先需要将 PyTorch 模型转换为 ONNX 格式。
-
下载模型权重: 从 HuggingFace 仓库 下载
model.safetensors,并将其放置在本项目根目录下。 -
导出为 ONNX: 运行导出脚本。该脚本会处理转换为 FP16 的过程,并应用 WebGPU 兼容性所需的修复(例如将
clamp替换为max/min)。python export_onnx.py这将生成
da2_model.onnx。 -
合并 ONNX 文件: 导出过程可能会生成外部数据文件。使用合并脚本创建单个
.onnx文件,便于 Web 端加载。python merge_onnx.py这将生成
da2_model_single.onnx。
运行演示
-
启动本地 Web 服务器: 需要通过 HTTP(S) 提供文件服务,以便浏览器加载模型和 WebGPU 上下文。
python3 -m http.server 8000 -
在浏览器中打开: 在支持 WebGPU 的浏览器中访问
http://localhost:8000/web/。 -
使用方法:
- 点击"Choose File"上传全景图像。
- 点击"Run Inference"生成深度图。
- 整个过程完全在本地 GPU 上运行。
🛠️ 移植技术细节
- 精度: 模型已转换为 FP16(半精度),以减小文件体积(~1.4GB -> ~700MB)并提升消费级 GPU 上的性能。
- Opset: 使用 ONNX Opset 17 导出。
- 修改内容:
- 修改了
SphereViT和ViT_w_Esphere模块以确保严格的 FP16 兼容性。 - 将
torch.clamp操作替换为torch.max和torch.min组合,以避免onnxruntime-web在处理混合标量/张量输入时的Clip算子问题。 - 球面嵌入已预先计算并在模型图中转换为 FP16。
- 修改了
📄 许可证
本项目遵循原始 DA-2 仓库 的许可证。请参阅原始仓库了解许可证详情。
phiph/DA-2-WebGPU
作者 phiph
创建时间: 2025-11-27 22:03:09+00:00
更新时间: 2025-11-27 22:44:48+00:00
在 Hugging Face 上查看