
人工智能大模型微调模型推理服务【免费下载链接】PaddleFormersPaddleFormers is an easy-to-use library of pre-trained large language model zoo based on PaddlePaddle.项目地址https://gitcode.com/gh_mirrors/pa/PaddleFormers点击查看免费下载导读MiDaS_Small 是 PaddleHub 生态中基于 MiDaS v2.1 的轻量级单目深度估计模型输入单张 RGB 图像即可输出逐像素的深度图单通道 [H, W] 深度数据广泛适用于三维重建、背景虚化、SLAM 预处理、AR 交互等需要感知场景几何结构的应用。本文以 modules/image/depth_estimation/MiDaS_Small/README.md 为核心完整讲解该模型的安装方式、depth_estimationAPI 的参数语义与返回值、可直接运行的预测代码并结合仓库内 module.py、inference.py、transforms.py、utils.py 四个源码文件深入拆解其预处理管线、Paddle Inference 推理调用链与深度图输出格式。读完本文你将能独立完成该模型的安装、单图/批量深度估计调用并理解其内部实现原理。一、模型概述MiDaS v2.1 small 单目深度估计MiDaS_Small 是一个单目深度估计Monocular Depth Estimation模型即仅凭一张 2D 图像即可估计出场景中每个像素到相机的相对深度信息。模型权重转换自 MiDaS 官方开源项目Intel ISL 团队发布的 MiDaS v2.1 系列属于该系列中的 small 尺寸版本网络更小、推理更快适合对实时性或资源占用敏感的场景。在应用层面模型返回的深度数据是相对深度而非绝对物理距离可服务于前景/背景分离与图像后处理如人像虚化、景深模拟三维重建、点云生成前的深度先验获取机器人/无人机导航、SLAM 中的几何信息补充AR 交互中的遮挡与碰撞判断。与同目录下的 MiDaS_Large 相比两者算法同源、API 完全一致主要差异在网络输入分辨率与模型规模从源码看MiDaS_Small 的module.py将网络输入固定为self.net_h, self.net_w 256, 256而 MiDaS_Large 的 module.py 则为384, 384因此 Small 版本在计算量上更小适合快速验证与轻量部署。二、模型安装与环境依赖1. 环境依赖根据 MiDaS_Small/README.md 的模型相关信息章节运行该模型需要以下依赖依赖版本要求paddlepaddle 2.0.0rc0paddlehub 2.0.0b1即需要先安装 PaddlePaddle 深度学习框架CPU 或 GPU 版本均可与 PaddleHub 模型管理/调用工具。安装遇到问题时可参考仓库内 PaddleHub 的官方安装指引Linux 零基础安装Windows 零基础安装MacOS 零基础安装PaddleHub 安装说明RST2. 安装模型PaddleHub 通过hub install命令安装模型模块安装后即可在代码中通过hub.Module(nameMiDaS_Small)加载$ hub install MiDaS_Small如需安装指定版本可显式声明版本号参照同系列模型 MiDaS_Large 的更新历史写法$ hub install MiDaS_Small1.0.0安装完成后模型权重会被解压到 PaddleHub 的模块缓存目录hub.Module加载时会根据moduleinfo元信息定位到对应目录仓库中 module.py 的moduleinfo声明了nameMiDaS_Small、version1.0.0等元数据。三、深度估计 API 说明MiDaS_Small 对外提供统一的depth_estimation深度估计接口签名如下与 module.py 中的定义一致def depth_estimation( imagesNone, pathsNone, batch_size1, output_diroutput, visualizationFalse )1. 参数详解参数类型默认值说明imageslist[numpy.ndarray]None图片数据列表其中每个 ndarray 的 shape 为 [H, W, C]BGR 通道顺序与 OpenCVimread输出一致pathslist[str]None图片文件路径列表由框架内部通过cv2.imread读取batch_sizeint1推理时每批送入模型的图片数量visualizationboolFalse是否将深度结果保存为图片文件output_dirstroutput可视化结果png/pfm的保存目录默认相对路径output注意images与paths两个参数二选一提供数据即可。从源码load_datas的实现看module.py若同时传入images会覆盖paths的读取结果若通过paths传入源码会对每个路径执行os.path.isfile断言校验路径非法会直接抛出The xxx isnt a valid file path.错误因此务必保证路径真实存在。2. 返回值res(list[numpy.ndarray])每张输入图像对应的深度数据每个 ndarray 的 shape 为 [H, W]单通道浮点深度图与输入图像同尺寸。四、预测代码示例1. 基础调用加载模型并估计深度以下代码完整演示了从加载模型到输出深度数组的全过程依据 MiDaS_Small/README.md 的预测示例并补充注释import cv2 import paddlehub as hub # 模型加载 # use_gpu是否使用GPU进行预测False 表示使用 CPU model hub.Module(nameMiDaS_Small, use_gpuFalse) # 方式一直接传入图像数组BGR 格式shape 为 [H, W, C] result model.depth_estimation(images[cv2.imread(/PATH/TO/IMAGE)]) # 方式二传入图像路径列表二者选其一 # result model.depth_estimation(paths[/PATH/TO/IMAGE]) # result 为 list每个元素是对应输入图像的深度图shape: [H, W] depth result[0] print(depth.shape) # 与输入图像 H、W 一致说明原文档预测示例中注释沿用了style_transfer的笔误表述result model.style_transfer(paths...)实际该模块对外接口为depth_estimation请以depth_estimation为准。2. 可视化输出保存深度图为 png/pfm 文件如需将深度结果落盘成图片文件可开启visualizationTrue并指定output_dirimport cv2 import paddlehub as hub model hub.Module(nameMiDaS_Small, use_gpuFalse) result model.depth_estimation( paths[/PATH/TO/IMAGE], batch_size1, output_diroutput, visualizationTrue ) # 会在 output/ 目录下生成 0.pfm 与 0.png 两个深度图文件3. 批量推理depth_estimation天然支持多图批量处理只需传入多张图片或路径并用batch_size控制每批样本数import cv2 import paddlehub as hub model hub.Module(nameMiDaS_Small, use_gpuFalse) paths [/PATH/TO/IMAGE1, /PATH/TO/IMAGE2, /PATH/TO/IMAGE3] results model.depth_estimation(pathspaths, batch_size2) # results 长度与输入图片数一致从 inference.py 的forward实现可以看出batch_size只影响内部数据切分np.array_split按批切分后逐批送入 Paddle Inference 预测器最后再将各批输出np.concatenate合并不会改变返回结果的结构与数量。五、源码级实现解析从图像到深度图的完整链路MiDaS_Small 模块虽以一行 API 对外暴露但其内部是一条完整的读取 → 预处理 → Paddle Inference 推理 → 后处理流水线。以下结合仓库源码逐一拆解。1. 模型加载与推理引擎inference.pyinference.py 定义了InferenceModel类基于 Paddle Inference 的Config与create_predictor完成模型加载与推理combined 模型格式模型路径指向model-small目录加载时若combinedTrue会拼接__model__与__params__两个文件构造Config(model, params)inference.py运行设备配置use_gpuTrue时启用 GPU 并设置显存初始大小 100MB、设备 0 号同时会检查环境变量CUDA_VISIBLE_DEVICES若未正确设置会打印提示并回退为 CPUinference.py。CPU 模式下可选use_mkldnnTrue开启 MKL-DNN 加速inference.py预测器创建eval()通过create_predictor(config)创建预测器并自动获取输入/输出 handleinference.py分批前向forward()按batch_size将输入数组切分逐批copy_from_cpu输入、predictor.run()执行、copy_to_cpu取回输出最终拼接返回inference.py。在 module.py 中模块初始化时即用InferenceModel(modelpathmodel_path, use_gpuuse_gpu, use_mkldnnFalse, combinedTrue)加载model-small目录下的推理模型并调用self.model.eval()完成预测器创建。2. 数据预处理管线transforms.py module.pymodule.py 使用 Paddle 的paddle.vision.transforms.Compose组装了与 MiDaS 官方一致的预处理流程具体包括三个环节实现细节见 transforms.pyResize将输入图像缩放到256 × 256关键参数为ensure_multiple_of32保证输出宽高是 32 的整数倍、resize_methodupper_bound输出尺寸不超过目标尺寸、image_interpolation_methodcv2.INTER_CUBIC三次插值图像缩放质量更高。Resize类内部的get_size/constrain_to_multiple_of实现了尺寸计算与 32 对齐逻辑transforms.pyNormalizeImage使用 ImageNet 统计量归一化mean[0.485, 0.456, 0.406]、std[0.229, 0.224, 0.225]transforms.pyPrepareForNet将图像从 HWC 布局转置为 CHW并转为np.float32连续内存数组以满足 Paddle Inference 的输入格式要求transforms.py。此外module.py 的preprocess还会先将 BGR 图像转为 RGB 并缩放到 [0, 1]cv2.cvtColor(img, cv2.COLOR_BGR2RGB) / 255.0再送入上述 Compose 管线最后为每个样本新增 batch 维度img[np.newaxis, ...]并np.concatenate拼接成完整 batch。3. 后处理与深度图落盘utils.py module.py推理输出的原始深度图尺寸为网络输入尺寸256 × 256module.py 的postprocess会通过cv2.resize(..., interpolationcv2.INTER_CUBIC)将其缩放回原始输入图像的宽高保证返回的深度数组与输入图像一一对应。当visualizationTrue时模块调用 utils.py 的write_depth同时输出两种格式的深度文件.pfm浮点深度图Portable Float Map保存归一化前的原始 float32 深度值便于后续三维重建等精确处理.png可视化深度图将深度值线性映射到[0, 2^(8*bits)-1]区间MiDaS_Small 在postprocess中调用时使用bits2即输出16 位uint16PNG相比 8 位图保留了更丰富的深度灰度层次utils.py。4. 数据入口校验load_datasload_datasmodule.py负责统一处理paths与images两种输入方式路径列表会逐个断言文件存在后cv2.imread读取images非空时直接采用内存中的图像数组。这一设计使得该 API 既能衔接磁盘上的数据集也能无缝接入摄像头帧、视频帧等内存数据流。六、使用注意事项与适用限制基于文档声明与源码实现使用 MiDaS_Small 时需注意以下几点返回的是相对深度模型的输出为归一化后的相对深度图不代表真实物理距离米不宜直接用于绝对尺度测量任务paths与images二选一同时传入时images优先路径传入必须保证文件真实存在否则断言失败依赖版本需要paddlepaddle 2.0.0rc0与paddlehub 2.0.0b1模型本身通过hub install安装无需手动下载权重GPU 使用use_gpuTrue前需正确设置环境变量CUDA_VISIBLE_DEVICES否则模块会自动回退到 CPU 并打印提示inference.py该模型不支持 Fine-tuning作为推理型视觉模块其用途集中在深度估计预测不提供训练/微调接口。七、小结MiDaS_Small 以极简的hub installdepth_estimation两步式使用方式向开发者交付了工业级的单目深度估计能力。通过本文的源码拆解可以看到其内部严格复刻了 MiDaS 官方的预处理规范256×256 输入、32 对齐、ImageNet 归一化、CHW 重排并借助 Paddle Inference 的 combined 模型格式与分批推理机制完成高效预测最终输出与输入同尺寸的 [H, W] 深度图支持 pfm/png 双格式落盘。无论是快速验证深度估计效果还是在其基础上构建三维感知应用这个模块都提供了一个开箱即用且实现透明的起点。对更大输入分辨率或更高精度有需求的场景可进一步参考同目录下的 MiDaS_Large 模型网络输入 384×384其 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点击查看免费下载相关推荐FCN_HRNet_W18_Face_Seg 人像分割模型实战指南基于 PaddleHub 的安装、API 调用与源码级原理解析FCN_HRNet_W18_Face_Seg 人像分割模型实战指南基于 PaddleHub 的安装、API 调用与源码级原理解析 本篇技术指南以 Paddle人工智能大模型微调模型推理服务基于 PaddleHub 的 CycleGAN Cityscapes 图像双向转换模块安装、API 调用与源码解析基于 PaddleHub 的 CycleGAN Cityscapes 图像双向转换模块安装、API 调用与源码解析 导读 本文以 PaddleFormers人工智能大模型微调模型推理服务PaddleFormers 单目深度估计实战MiDaS_Large 模块的安装、预测 API 与源码级原理解析PaddleFormers 单目深度估计实战MiDaS_Large 模块的安装、预测 API 与源码级原理解析 导读 本文以 PaddleFormers 仓库人工智能大模型微调模型推理服务创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考