🚀 Midas 3.1 DPT (Intel/dpt-swinv2-tiny-256 使用Swinv2主干网络)
DPT(密集预测变换器)模型在140万张图像上进行训练,用于单目深度估计。该模型由Ranftl等人在2021年的论文Vision Transformers for Dense Prediction中提出,并首次在此仓库发布。
免责声明:发布DPT的团队并未为此模型撰写模型卡片,此模型卡片由英特尔和Hugging Face团队共同撰写。
🚀 快速开始
本模型主要用于单目深度估计,可在生成式AI、3D重建和自动驾驶等领域发挥作用。下面将介绍模型的安装和使用方法。
✨ 主要特性
- 多数据集训练:在140万张图像上进行训练,提升了模型的泛化能力。
- 先进的骨干网络:采用SwinV2作为骨干网络,适用于单目深度估计任务。
- 多用途应用:可应用于生成式AI、3D重建和自动驾驶等领域。
📦 安装指南
安装依赖
确保更新PyTorch和Transformers,版本不匹配可能会产生错误,如:"TypeError: unsupported operand type(s) for //: 'NoneType' and 'NoneType'"。
经测试,以下版本可正常运行:
import torch
import transformers
print(torch.__version__)
print(transformers.__version__)
out: '2.2.1+cpu'
out: '4.37.2'
安装命令如下:
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
💻 使用示例
基础用法
以下是如何在图像上使用此模型进行零样本深度估计的示例:
output = prediction.squeeze().cpu().numpy()
formatted = (output * 255 / np.max(output)).astype("uint8")
depth = Image.fromarray(formatted)
depth
高级用法
也可以使用pipeline API:
from transformers import pipeline
pipe = pipeline(task="depth-estimation", model="Intel/dpt-swinv2-tiny-256")
result = pipe("http://images.cocodataset.org/val2017/000000181816.jpg")
result["depth"]
📚 详细文档
单目深度估计概述
单目深度估计的目标是从单张图像或相机视角推断出详细的深度信息,在生成式AI、3D重建和自动驾驶等领域有广泛应用。然而,由于问题的约束不足,从单张图像的单个像素中推导深度是具有挑战性的。最近的进展归功于基于学习的方法,特别是MiDaS,它利用数据集混合和尺度与平移不变损失。MiDaS不断发展,推出了具有更强大骨干网络的版本以及适用于移动设备的轻量级变体。随着变换器架构在计算机视觉中的兴起,包括ViT、Swin和SwinV2等模型的开创,人们开始转向使用它们进行深度估计。受此启发,MiDaS v3.1将有前景的基于变换器的编码器与传统卷积编码器相结合,旨在全面研究深度估计技术。该论文重点描述了这些骨干网络在MiDaS中的集成,对不同的v3.1模型进行了全面比较,并为未来骨干网络与MiDaS的结合提供了指导。
Swin Transformer简介
Swin Transformer(Swin代表Shifted window)最初在arxiv上被描述,它能够作为计算机视觉的通用骨干网络。它本质上是一种分层变换器,其表示通过移位窗口计算。移位窗口方案通过将自注意力计算限制在非重叠的局部窗口内,同时允许跨窗口连接,提高了效率。Swin Transformer在COCO目标检测(测试开发集上的框AP为58.7,掩码AP为51.1)和ADE20K语义分割(验证集上的mIoU为53.5)上取得了强大的性能,大幅超越了以前的模型。
模型描述
此Midas 3.1 DPT模型使用SwinV2 Philosophy模型作为骨干网络,与Beit采用不同的视觉方法,Swin骨干网络更侧重于使用分层方法。

之前发布的MiDaS v3.0仅使用了原始视觉变换器ViT,而MiDaS v3.1提供了基于BEiT、Swin、SwinV2、Next-ViT和LeViT的额外模型。
Midas 3.1 DPT模型(Swin骨干网络)
该模型指的是基于Swin骨干网络的Intel dpt-swinv2-tiny-256。arxiv论文对Beit和Swin骨干网络进行了比较。使用BEiT变换器可实现最高质量的深度估计。我们提供了Swin-L、SwinV2-L、SwinV2-B、SwinV2-T等变体,其中数字表示512x512和384x384的训练分辨率,字母分别表示大型和基础模型。
模型信息
预期用途
预期用途 |
描述 |
主要预期用途 |
可以使用原始模型进行零样本单目深度估计。请查看模型中心以查找针对您感兴趣的任务进行微调的版本。 |
主要预期用户 |
任何从事单目深度估计的人员 |
超出范围的用途 |
在大多数情况下,此模型需要针对您的特定任务进行微调。该模型不应被用于故意为人们创造敌对或疏远的环境。 |
定量分析
模型 |
方形分辨率HRWSI RMSE |
方形分辨率混合MVS REL |
方形分辨率ReDWeb RMSE |
BEiT 384-L |
0.068 |
0.070 |
0.076 |
Swin-L训练1 |
0.0708 |
0.0724 |
0.0826 |
Swin-L训练2 |
0.0713 |
0.0720 |
0.0831 |
ViT-L |
0.071 |
0.072 |
0.082 |
Next-ViT-L-1K-6M |
0.075 |
0.073 |
0.085 |
DeiT3-L-22K-1K |
0.070 |
0.070 |
0.080 |
ViT-L-Hybrid |
0.075 |
0.075 |
0.085 |
DeiT3-L |
0.077 |
0.075 |
0.087 |
ConvNeXt-XL |
0.075 |
0.075 |
0.085 |
ConvNeXt-L |
0.076 |
0.076 |
0.087 |
EfficientNet-L2 |
0.165 |
0.277 |
0.219 |
ViT-L Reversed |
0.071 |
0.073 |
0.081 |
Swin-L Equidistant |
0.072 |
0.074 |
0.083 |
伦理考虑和局限性
dpt-swinv2-tiny-256可能会产生事实错误的输出,不应依赖它来产生事实准确的信息。由于预训练模型和微调数据集的局限性,此模型有可能生成淫秽、有偏见或其他冒犯性的输出。
因此,在部署dpt-swinv2-tiny-256的任何应用程序之前,开发人员应进行安全测试。
注意事项和建议
用户(直接用户和下游用户)应了解该模型的风险、偏差和局限性。
以下是一些了解英特尔AI软件的有用链接:
免责声明
此模型的许可证不构成法律建议。我们不对使用此模型的第三方的行为负责。在将此模型用于商业目的之前,请咨询律师。
BibTeX引用和引用信息
@article{DBLP:journals/corr/abs-2103-13413,
author = {Ren{\'{e}} Reiner Birkl, Diana Wofk, Matthias Muller},
title = {MiDaS v3.1 – A Model Zoo for Robust Monocular Relative Depth Estimation},
journal = {CoRR},
volume = {abs/2307.14460},
year = {2021},
url = {https://arxiv.org/abs/2307.14460},
eprinttype = {arXiv},
eprint = {2307.14460},
timestamp = {Wed, 26 Jul 2023},
biburl = {https://dblp.org/rec/journals/corr/abs-2307.14460.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}
模型输入输出示例
输入图像 |
输出深度图像 |
 |
 |
视频示例

MiDaS深度估计是英特尔实验室的一个用于单目深度估计的机器学习模型。它在多达12个数据集上进行训练,涵盖了室内和室外场景。有多种不同的MiDaS模型可供选择,从高质量深度估计模型到适用于移动下游任务的轻量级模型(链接)。