首页/新闻资讯/正文详情

PaddleHub MiDaS_Large 单目深度估计实战:安装、API 调用与推理原理解析

发布时间:2026/9/24 8:35:26 来源:云帆数科 栏目:资讯中心
PaddleHub MiDaS_Large 单目深度估计实战:安装、API 调用与推理原理解析
人工智能大模型微调模型推理服务【免费下载链接】PaddleFormersPaddleFormers is an easy-to-use library of pre-trained large language model zoo based on PaddlePaddle.项目地址https://gitcode.com/gh_mirrors/pa/PaddleFormers点击查看免费下载本篇技术指南以 PaddleHub 图像-深度估计模块 MiDaS_Large 为主体讲解如何在 PaddlePaddle 生态下使用 MiDaS_Large 完成单目深度估计Monocular Depth Estimation包括环境安装、hub.Module加载方式、depth_estimationAPI 的完整参数与返回值约定并结合本仓库源码剖析其预处理流水线、Paddle Inference 推理引擎与深度图可视化后处理的全过程。读完本文你将能够直接复现输入一张普通 RGB 图片、输出对应深度图的完整流程并理解每个参数在源码层面的真实作用。一、模型基本信息模型名称MiDaS_Large类别图像 - 深度估计网络-数据集3D Movies, WSVD, ReDWeb, MegaDepth是否支持 Fine-tuning否模型大小399MB最新更新日期2021-02-26数据指标-MiDaS_Large 是一个单目深度估计模型仅通过一张输入图像即可估计其中每个像素对应的场景深度信息无需双目相机、深度传感器等额外设备。它在本仓库中属于推理型InferencePaddleHub 模块——模型以预训练权重 Paddle Inference 格式发布不支持在 PaddleHub 框架内进行 Fine-tuning 微调这一点与 BERT/ERNIE 等支持微调的 NLP 模块有本质区别使用时请按开箱即用的预测模型来定位它。从源码注释transforms.py 与 utils.py 首行可以看到本模块的预处理与深度图写入工具参考自 Intel ISL 开源的 MiDaS 项目属于该经典方法的 Paddle 化移植实现。仓库中还提供了同系列的轻量版本 MiDaS_Small结构与用法完全一致可在精度与速度之间按需选择。二、环境依赖与安装1. 环境依赖使用 MiDaS_Large 需要满足以下最低版本要求paddlepaddle 2.0.0paddlehub 2.0.0PaddleHub 的安装方式可参考 PaddleHub 安装文档由于模型通过 Paddle Inference 预测器执行请确保本机已正确安装对应版本的 PaddlePaddleCPU 版或 GPU 版均可GPU 版需额外配置 CUDA 环境。2. 安装模块在满足上述依赖后通过 PaddleHub 命令行安装模块$ hub install MiDaS_Large如需安装指定版本当前仓库内版本为 1.0.0$ hub install MiDaS_Large1.0.0hub install命令在 paddlehub/commands/install.py 中实现当传入的不是本地目录也不是归档包时命令会将参数按拆分为模块名与版本号交由LocalModuleManager.install从服务器下载并安装同时支持--ignore_env_mismatch参数以忽略环境不匹配的检查。安装过程中如遇到问题可参考各平台的零基础快速上手文档Windows 安装 | Linux 安装 | macOS 安装。三、模型 API 预测1. 预测代码示例安装完成后即可在 Python 中加载模块并执行深度估计import paddlehub as hub import cv2 model hub.Module(nameMiDaS_Large) result model.depth_estimation(images[cv2.imread(/PATH/TO/IMAGE)]) # or # result model.depth_estimation(paths[/PATH/TO/IMAGE])其中hub.Module(nameMiDaS_Large)会通过模块管理器查找本地已安装模块若本地不存在则会自动从服务器下载参见 paddlehub/module/module.py 中init_with_name的逻辑。result为包含深度数据的列表列表中每个元素的形状为[H, W]与输入图片的空间尺寸一致。2. depth_estimation API 详解depth_estimation的完整签名如下def depth_estimation(imagesNone, pathsNone, batch_size1, output_diroutput, visualizationFalse):参数说明参数类型说明imageslist[numpy.ndarray]图片数据列表每个 ndarray 的 shape 为[H, W, C]BGR 通道顺序pathslist[str]图片文件路径列表batch_sizeint推理时的 batch 大小默认 1output_dirstr可视化结果的保存目录默认outputvisualizationbool是否将深度结果保存为图片文件默认False。NOTE:paths与images两个参数选择其一提供数据即可images的优先级更高当images非空时直接使用之见 module.py 中load_datas的实现。返回值res(list[numpy.ndarray])图像深度数据列表每个 ndarray 的 shape 为[H, W]即逐像素的深度值。四、源码级原理剖析理解了 API 之后结合仓库源码可以更深入地把握一次depth_estimation调用的完整链路。整个流程由 module.py 组织为加载数据 → 预处理 → 模型推理 → 后处理四个阶段。1. 模块定义与模型加载MiDaS_Large 是一个标准的 PaddleHub V2 模块通过moduleinfo装饰器声明名称、作者、版本等元信息module.pymoduleinfo( nameMiDaS_Large, # 模型名称 typeCV/style_transfer, # 模型类型 authorjm12138, version1.0.0 # 版本号 ) class MiDaS_Large(Module):在__init__中模块加载了位于model-f6b98070目录下的 Paddle Inference 格式模型并构造了固定输入尺寸为384 × 384的预处理流水线self.net_h, self.net_w 384, 384 self.transform Compose([ Resize(self.net_w, self.net_h, resize_targetNone, keep_aspect_ratioFalse, ensure_multiple_of32, resize_methodupper_bound, image_interpolation_methodcv2.INTER_CUBIC), NormalizeImage(mean[0.485, 0.456, 0.406], std[0.229, 0.224, 0.225]), PrepareForNet() ])其中的归一化均值与标准差[0.485, 0.456, 0.406]/[0.229, 0.224, 0.225]是 ImageNet 预训练的标准统计量说明该深度估计骨干网络沿用了 ImageNet 预训练特征提取器的输入约定。2. 预处理流水线预处理逻辑集中在 transforms.py 的三个类中Resize默认keep_aspect_ratioFalse将图像直接缩放至 384×384ensure_multiple_of32保证输出尺寸是 32 的整数倍resize_methodupper_bound表示输出尺寸不超过给定尺寸并结合constrain_to_multiple_of做对齐。get_size中还实现了lower_bound、upper_bound、minimal三种缩放策略供不同场景复用。NormalizeImage按(image - mean) / std逐通道归一化。PrepareForNet将图像从[H, W, C]转置为[C, H, W]的 NCHW 布局并转为连续内存的float32数组以满足网络输入要求。此外在 module.py 的preprocess中图像首先通过cv2.cvtColor(img, cv2.COLOR_BGR2RGB) / 255.0完成 BGR→RGB 转换并缩放到[0, 1]区间——这解释了 API 中images参数为何要求 BGR 顺序的 ndarray与cv2.imread的输出保持一致。3. Paddle Inference 推理引擎模型执行部分由 inference.py 中的InferenceModel承担它基于paddle.inference的Config/create_predictor构建预测器模型文件以combinedTrue方式加载即读取__model__网络结构与__params__参数两个合并文件。运行设备use_gpuTrue时通过config.enable_use_gpu(100, 0)启用 GPU并会检查CUDA_VISIBLE_DEVICES环境变量否则config.disable_gpu()且可叠加use_mkldnnTrue开启 CPU 上的 MKL-DNN 加速。MiDaS_Large 模块初始化时以use_gpu参数透传、use_mkldnnFalse创建实例。batch 处理forward中按batch_size将输入数据切分np.array_split逐块copy_from_cpu→predictor.run()→copy_to_cpu最后将各分块结果np.concatenate合并返回。这意味着即便传入超过batch_size的图片列表也会被自动分批推理。4. 后处理与深度图可视化推理输出的是 384×384 的低分辨率深度图module.py 的postprocess会通过cv2.resize(..., interpolationcv2.INTER_CUBIC)将其双三次插值回输入图像的原始尺寸保证返回的[H, W]深度图与输入逐像素对齐。当visualizationTrue时模块调用 utils.py 中的write_depth输出两类文件保存到output_dir下.pfm文件通过write_pfm写入保留原始浮点精度float32的深度数据供专业工具或后续计算使用.png文件将深度值按max_val * (depth - depth_min) / (depth_max - depth_min)线性拉伸到[0, 255]bits2时为 uint16 的[0, 65535]范围见write_depth的bits2参数后保存为 16 位灰度图便于直接查看深度明暗分布。五、使用建议与注意事项输入约定通过images传入时务必使用 BGR 顺序的[H, W, C]ndarray推荐直接使用cv2.imread读取paths模式下模块内部同样使用cv2.imread读取两个参数二选一。输出语义返回的深度值为模型估计的相对深度数值越大代表距离越近或越远的语义取决于模型的尺度约定并非物理世界的绝对距离如需绝对尺度需结合相机参数做额外标定。不支持微调MiDaS_Large 为推理型模块不能通过 PaddleHub 的 fine-tune 流程进行训练若需要训练深度估计模型请结合 PaddleHub Fine-tune 文档 中的思路自建数据集与模型。硬件加速默认在 CPU 上运行若显存充足可在实例化时利用 Paddle Inference 的 GPU 支持获得更快的推理速度当前模块封装未直接暴露use_gpu开关其默认配置为use_gpuFalse, use_mkldnnFalse可通过修改模块初始化参数或环境配置调整。六、更新历史1.0.02021-02-26 发布初始版本$ hub install MiDaS_Large1.0.0以上即 MiDaS_Large 单目深度估计模块的完整使用指南从环境安装、API 调用到预处理/推理/后处理的源码级原理读者可以基于本仓库路径直接复现单图输入 → 深度图输出的完整流程并将其接入自己的图像处理、三维重建或自动驾驶等下游任务中。赞分享人工智能大模型微调模型推理服务【免费下载链接】PaddleFormersPaddleFormers is an easy-to-use library of pre-trained large language model zoo based on PaddlePaddle.项目地址https://gitcode.com/gh_mirrors/pa/PaddleFormers点击查看免费下载相关推荐PaddleFormers 单目深度估计实战MiDaS_Large 模块的安装、预测 API 与源码级原理解析PaddleFormers 单目深度估计实战MiDaS_Large 模块的安装、预测 API 与源码级原理解析 导读 本文以 PaddleFormers 仓库人工智能大模型微调模型推理服务单目深度估计技术深度解析从原理到Monodepth2实战应用单目深度估计技术深度解析从原理到Monodepth2实战应用 单目深度估计技术作为计算机视觉领域的重要分支通过单张二维图像实现对三维场景的深度感知。Mono计算机视觉深度学习Transformers 单目深度估计实战指南Pipeline 推理与手动推理全解析Transformers 单目深度估计实战指南Pipeline 推理与手动推理全解析 导读 单目深度估计Monocular Depth Estimation人工智能深度学习机器学习预训练微调NLP计算机视觉语音多模态创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

基于SI4835的全波段收音机DIY:从芯片选型到PCB布局的完整实践
基于SI4835的全波段收音机DIY:从芯片选型到PCB布局的完整实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 8:35:26

飞牛fnOS ARM设备上通过KVM安装Ubuntu虚拟机完整指南
飞牛fnOS ARM设备上通过KVM安装Ubuntu虚拟机完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 8:35:20

魔百盒B860AV1.1-T刷Armbian:NAND版S905M2-B轻量服务器实战
魔百盒B860AV1.1-T刷Armbian:NAND版S905M2-B轻量服务器实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 8:35:14

2025ICPC武汉邀请赛vp复盘:高效补题方法与算法避坑指南
2025ICPC武汉邀请赛vp复盘:高效补题方法与算法避坑指南

2025ICPC武汉邀请赛的vp,我一共拖了两周才补完。不是题太难,是补题这件事本身需要状态,刚打完正赛那几天满脑子都是“早知道当时多花十分钟想想B题”,根本静不下心重新面对那帮老朋友。等情绪过了,挑了个周末完整模拟了… · 2026/9/24 23:04:28

GC性能陷阱全解析:从STW到内存管理,一篇掌握排查与调优
GC性能陷阱全解析:从STW到内存管理,一篇掌握排查与调优

上周三凌晨两点多,我被一条监控告警拉起来:某个服务的TP99从30ms涨到了480ms,而且很有规律——每90秒左右就有一波明显的停顿。登录服务器抓了一下日志,果然,JVM的GC日志里每隔一段时间就出现一次full GC,停… · 2026/9/24 23:04:28

企业微信API二次开发:AI智能客服如何自动处理客户咨询?接口参数是什么
企业微信API二次开发:AI智能客服如何自动处理客户咨询?接口参数是什么

自动处理咨询不靠「AI 专用接口」,靠两条已有能力串起来。收:设置回调{"method": "/client/setCallback","params": {"callbackUrl": "你的公网可访问地址","authType": "Authorizati… · 2026/9/24 23:04:28

Spring与SpringMVC父子容器:Bean查找规则、经典踩坑与Boot演进
Spring与SpringMVC父子容器:Bean查找规则、经典踩坑与Boot演进

“Spring和SpringMVC为什么需要父子容器”这个问题,杀伤力在于:背过答案的人都能讲出“父容器放Service,子容器放Controller”,但你再往下问“这个结构是怎么搭起来的”“Bean在父子容器之间怎么查找”“为什么有人在这个结构里把… · 2026/9/24 23:04:21

Java并发编程全优笔记:JMM、锁与线程池实战解析
Java并发编程全优笔记:JMM、锁与线程池实战解析

这两年面试Java后端,几乎每一轮技术面都绕不开一道题——并发编程。不管是校招还是社招,问线程池参数、问synchronized和ReentrantLock的区别、问ConcurrentHashMap的扩容机制,都是家常便饭。我自己当年啃《Java并发编程的艺术》那本书时&… · 2026/9/24 23:04:21

OLAP实战:从数据仓库建模到BI报表性能优化
OLAP实战:从数据仓库建模到BI报表性能优化

前阵子跟一个做供应链的同行聊天,他说公司BI里最核心那张订单分析报表,查询要跑十几分钟,业务部门催了半年,数据组天天加班优化SQL,最后搞不定。我问他数据量多大,他说订单明细表大概8亿行。我说你需要的不… · 2026/9/24 23:04:21

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码