# Depth-Anything 一个简单而强大的单目深度估计基础模型。 ## 论文 `Depth Anything: Unleashing the Power of Large-Scale Unlabeled Data` - https://arxiv.org/abs/2401.10891 - CVPR 2024 ## 模型结构 本文方法通过联合利用带标签和未标记图像,充分利用大规模未标记数据的优势,通过深度模型的自我挑战和语义辅助感知,实现了更强大的单目深度估计性能。 ## 算法原理 Depth-Anything 利用标记和未标记的图像来促进更好的单目深度估计(MDE)。形式上,标记集和未标记集分别表示为Dl和Du。工作目标是从Dl学习教师模型T。然后,利用T为Du分配伪深度标签。最后,在标记集和伪标记集的组合上训练了一个学生模型S。如图提供了一个简短的说明,流水线包括如下。实线:标记的图像流,虚线:未标记的图像,特别强调大规模未标记图像的价值,S表示添加强扰动。为了使深度估计模型具有丰富的语义先验,在在线的学生模型和冻结的编码器之间强制执行辅助约束,保持语义能力。
## 环境配置 ``` mv depth-anything_pytoch depth-anything # 去框架名后缀 # -v 路径、docker_name和imageID根据实际情况修改 ``` ### Docker(方法一) ``` docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:1.13.1-ubuntu20.04-dtk23.10-py38 # 本镜像imageID为:0a56ef1842a7 docker run -it -v /path/your_code_data/:/path/your_code_data/ -v /opt/hyhal/:/opt/hyhal/:ro --shm-size=16G --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video --name docker_name imageID bash cd /your_code_path/depth-anything pip install -r requirements.txt ``` ### Dockerfile(方法二) ``` cd /your_code_path/depth-anything/docker docker build --no-cache -t codestral:latest . docker run -it -v /path/your_code_data/:/path/your_code_data/ -v /opt/hyhal/:/opt/hyhal/:ro --shm-size=16G --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video --name docker_name imageID bash cd /your_code_path/depth-anything pip install -r requirements.txt ``` ### Anaconda(方法三) 关于本项目DCU显卡所需的特殊深度学习库可从[光合](https://developer.sourcefind.cn/tool/)开发者社区下载安装。 ``` DTK驱动:dtk23.10 python:python3.8 pytorch:1.13.1 ``` `Tips:以上DTK驱动、python、pytorch等DCU相关工具版本需要严格一一对应` 其它非深度学习库参照requirements.txt安装: ``` pip install -r requirements.txt ``` ## 数据集 数据集有`NYUv2`,`KITTI`等,这里提供了NYUv2 - https://cs.nyu.edu/~fergus/datasets/nyu_depth_v2.html \ - 也可用这里处理过的 https://github.com/cleinc/bts/tree/master/pytorch#nyu-depvh-v2 训练数据目录结构如下,用于正常训练的完整数据集请按此目录结构进行制备: ``` ├──sync ├──class_1 ├──rgb_00000.jpg ├──sync_depth_00000.png ├──... ├──class_2 ├──... ``` ## 训练 训练只采用了部分数据集`NYUv2`,在GPU和DCU上完全保持一致。\ 注意:修改配置文件 metric_depth/zoedepth/utils/comfig.py 中对应字段数据地址路径。 ### 单机单卡 ``` cd ./metric_depth python train_mono.py -m zoedepth --pretrained_resource="local::../checkpoints/depth_anything_vitb14.pth" -d nyu # 这里是在预训练权重depth_anything_vitb14.pth上进行的微调,可根据情况自行选择。 ``` ## 推理 ``` python run_img.py --encoder vitb --img-path assets/examples --outdir depth_vis # 注意更改模型文件路径 ``` ## result 训练结果:loss情况,红色为GPU,蓝色为DCU
推理结果 DCU
GPU
### 精度 GPU:A800,DCU:Z100L
## 应用场景 ### 算法类别 `深度估计` ### 热点应用行业 `制造,电商,医疗,教育` ## 源码仓库及问题反馈 - https://developer.sourcefind.cn/codes/modelzoo/depth-anything_pytorch ## 参考资料 - https://github.com/LiheYoung/Depth-Anything