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:53 阅读更多 →
设计类与造型类专业|核心区别及基础概念要点梳理

设计类与造型类专业|核心区别及基础概念要点梳理

设计类与造型类是国内美术学大类下的两大核心分支,分别对应应用型创作、纯艺术创作培养方向,是美术类高考招生的主流专业分类。发展背景与基本原理国内美术类专业划分最初参考近现代美术教育体系框架,2000年后结合国内文化产业、实业发展需求…

2026/9/24 8:35:53 阅读更多 →
校园网综合布线系统设计方案:从需求梳理到测试验收的完整指南

校园网综合布线系统设计方案:从需求梳理到测试验收的完整指南

/* 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:53 阅读更多 →

最新新闻

电源防倒灌设计实战:从二极管到理想二极管的工程突围

电源防倒灌设计实战:从二极管到理想二极管的工程突围

/* 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 9:12:24 阅读更多 →
云计算导论深度拆解:从定义到开源实践,构建完整知识体系

云计算导论深度拆解:从定义到开源实践,构建完整知识体系

/* 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 9:12:24 阅读更多 →
嘉立创EDA丝印调整与图片导入实战:从位号乱飞到板面规范

嘉立创EDA丝印调整与图片导入实战:从位号乱飞到板面规范

/* 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 9:12:24 阅读更多 →
GitHub热榜项目实战指南:从访问加速到本地运行全流程

GitHub热榜项目实战指南:从访问加速到本地运行全流程

/* 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 9:12:24 阅读更多 →
反激开关电源实战设计:拓扑原理、PCB布局与EMI避坑指南

反激开关电源实战设计:拓扑原理、PCB布局与EMI避坑指南

/* 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 9:12:24 阅读更多 →
无源RS232转RS485转换器设计:从串口取电到稳定通信

无源RS232转RS485转换器设计:从串口取电到稳定通信

/* 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 9:11:23 阅读更多 →

日新闻

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

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

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

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/23 9:53:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/23 9:53:40 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/23 9:53:40 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/23 9:53:40 阅读更多 →