许可协议: mit
标签:
模型索引:
- 名称: dpt-beit-large-512
结果:
- 任务:
类型: 单目深度估计
名称: 单目深度估计
数据集:
类型: MIX-6
名称: MIX-6
指标:
- 类型: 零样本迁移
值: 10.82
名称: 零样本迁移
配置: 零样本迁移
已验证: false
单目深度估计与BEiT概述
单目深度估计旨在从单张图像或单一视角推断精细深度信息,应用于生成式AI、三维重建和自动驾驶等领域。然而,由于问题本身的欠约束特性,从单张图像的像素中推导深度具有挑战性。最新进展归功于基于学习的方法,特别是结合数据集混合与尺度平移不变损失的MiDaS框架。MiDaS通过迭代升级,已推出搭载更强骨干网络和轻量化移动版本的多个版本。随着Transformer架构在计算机视觉领域的崛起(包括ViT等模型的创新),深度估计领域也开始转向使用此类架构。受此启发,MiDaS v3.1在传统卷积编码器基础上引入了前景广阔的基于Transformer的编码器,旨在全面探索深度估计技术。本文重点描述这些骨干网络与MiDaS的整合,系统比较不同v3.1模型,并为未来骨干网络与MiDaS的结合使用提供指导。
输入图像 |
输出深度图 |
 |
 |
模型描述
该DPT模型以BEiT模型为骨干网络,顶部添加颈部与头部结构实现单目深度估计。

前代版本MiDaS v3.0仅采用标准视觉Transformer ViT,而MiDaS v3.1新增了基于BEiT、Swin、SwinV2、Next-ViT和LeViT的模型。
DPT 3.1 (BEiT骨干网络)
使用BEiT Transformer可获得最高质量的深度估计结果。我们提供BEiT512-L、BEiT384-L和BEiT384-B等变体,其中数字表示512x512和384x384的训练分辨率,字母分别代表大模型和基础模型。虽然存在BEiT v2和BEiT-3等新版,但本研究未涉及。BEiT v2缺乏384x384及以上分辨率的预训练检查点,仅提供224x224版本;BEiT-3则在本研究完成后发布。
DPT(密集预测Transformer)模型基于140万张图像训练,用于单目深度估计。该模型由Ranftl等人在论文《Vision Transformers for Dense Prediction》(2021)中提出,并首次发布于此代码库。
本模型卡特指论文中的BEiT512-L,对应名称为dpt-beit-large-512。2013年最新论文《MiDaS v3.1 – 鲁棒单目相对深度估计模型库》专门讨论了BEiT应用。
本模型卡由Hugging Face团队与英特尔联合撰写。
预期用途 |
描述 |
主要用途 |
原始模型可用于零样本单目深度估计。查看模型中心寻找针对特定任务的微调版本。 |
主要用户 |
单目深度估计研究者 |
非适用场景 |
多数情况下需针对具体任务微调。禁止用于制造敌对或排斥性环境。 |
使用方法
请确保更新PyTorch和Transformers版本,版本不匹配可能导致错误(如"TypeError: unsupported operand type(s) for //: 'NoneType' and 'NoneType'")。
经贡献者测试,以下版本可正常运行:
import torch
import transformers
print(torch.__version__)
print(transformers.__version__)
输出: '2.2.1+cpu'
输出: '4.37.2'
安装:
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
使用示例
零样本深度估计图像示例:
from transformers import DPTImageProcessor, DPTForDepthEstimation
import torch
import numpy as np
from PIL import Image
import requests
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
processor = DPTImageProcessor.from_pretrained("Intel/dpt-beit-large-512")
model = DPTForDepthEstimation.from_pretrained("Intel/dpt-beit-large-512")
inputs = processor(images=image, return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
predicted_depth = outputs.predicted_depth
prediction = torch.nn.functional.interpolate(
predicted_depth.unsqueeze(1),
size=image.size[::-1],
mode="bicubic",
align_corners=False,
)
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-beit-large-512")
result = pipe("http://images.cocodataset.org/val2017/000000181816.jpg")
result["depth"]
定量分析
模型 |
方形分辨率HRWSI RMSE |
方形分辨率Blended 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混合 |
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反向 |
0.071 |
0.073 |
0.081 |
Swin-L等距 |
0.072 |
0.074 |
0.083 |
--- |
--- |
--- |
--- |
伦理考量与限制
dpt-beit-large-512可能产生事实性错误输出,不可依赖其生成准确信息。由于预训练模型和微调数据集的局限性,该模型可能生成低俗、偏见或其他冒犯性内容。
因此,在部署任何dpt-beit-large-512应用前,开发者应进行安全性测试。
注意事项与建议
用户(包括直接使用者和下游开发者)应充分了解模型的风险、偏见和局限性。
以下是了解英特尔AI软件的有用链接:
- 英特尔神经压缩器链接
- 英特尔Transformers扩展链接
免责声明
本模型许可协议不构成法律建议。我们不承担第三方使用该模型的行为责任。商业用途前请咨询律师。
BibTeX引用信息
@article{DBLP:journals/corr/abs-2103-13413,
author = {René Reiner Birkl, Diana Wofk, Matthias Muller},
title = {MiDaS v3.1 – 鲁棒单目相对深度估计模型库},
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计算机科学文献库, https://dblp.org}
}