尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

PaddleHub 图像分类模块 se_resnet18_vd_imagenet 实战指南:安装、预测 API 与 Serving 部署

PaddleHub 图像分类模块 se_resnet18_vd_imagenet 实战指南:安装、预测 API 与 Serving 部署 人工智能大模型微调模型推理服务【免费下载链接】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 官方图像分类模块se_resnet18_vd_imagenet展开完整讲解该模块的安装方式、命令行与 Python API 两种预测用法、关键参数含义以及基于 PaddleHub Serving 的在线服务部署流程。读完本文你将掌握该模块从「本地安装 → 单张图片分类 → HTTP 服务化调用」的完整落地路径并能结合仓库源码理解其预处理、推理与后处理的实现细节便于迁移到其他 PaddleHub CV 模块。模块基本信息se_resnet18_vd_imagenet是 PaddleHub 中面向图像分类任务的预训练模块其关键信息如下表所示项目内容模块名称se_resnet18_vd_imagenet类别image classification图像分类网络结构SE-ResNet训练数据集ImageNet-2012是否支持微调Fine-tuning否模块大小48MB最新更新日期-数据指标-该模块基于 SE-ResNet 结构在 ImageNet-2012 数据集上完成训练可对尺寸为 224×224×3 的输入图像进行 1000 类分类预测。从源码看模块类SEResNet18vdImageNet的元信息定义于 module.py其摘要为 SE_ResNet18_vd is a image classfication model, this module is trained with imagenet datasets模块类型为CV/image_classification版本为 1.1.0由 paddlepaddle 团队发布。需要注意的是原 README 中基于 Res2Net的表述与模块实际采用的 SE-ResNet 结构存在出入本文以源码中的moduleinfo声明与模块名se_resnet18_vd_imagenet为准。SE-ResNet 是在 ResNet 基础上引入 Squeeze-and-ExcitationSE注意力机制的网络变体通过显式建模通道间的相互依赖关系来提升表示能力。环境依赖与模块安装1、环境依赖使用该模块前需要确保满足以下依赖paddlepaddle 1.6.2底层深度学习框架PaddleHub Serving 与 Inference 推理均依赖 PaddlePaddle 的 inference API见下文源码分析paddlehub 1.6.0模块管理与推理框架安装指引可参考 PaddleHub 安装文档。需要说明的是安装文档 中针对当前仓库配套的 PaddleHub 版本建议了更高要求操作系统支持 Windows/Mac/LinuxPython 3.6.2PaddlePaddle 2.0.0并推荐使用pip install paddlehub2.1.0安装。实际使用时建议以仓库requirements.txt与安装文档的最新要求为准以兼容当前 PaddlePaddle 与 PaddleHub 版本。2、模块安装通过 PaddleHub 命令行安装模块$ hub install se_resnet18_vd_imagenet安装过程遇到问题时可参考对应平台的快速上手文档Windows_Quickstart | Linux_Quickstart | Mac_Quickstart。从 PaddleHub 命令行工具文档 可知hub install默认将模块安装到${HUB_HOME}/.paddlehub/modules目录未设置${HUB_HOME}时使用$HOME安装完成后即可通过其他命令或 Python API 调用该模块。模块 API 预测1、命令行预测安装完成后可直接通过hub run命令对单张图片进行分类预测$ hub run se_resnet18_vd_imagenet --input_path /PATH/TO/IMAGE--input_path用于指定待分类图片路径。命令行的完整使用说明参见 PaddleHub Command Line Instruction。该命令的执行链路在源码中有清晰对应模块类中的runnable装饰方法run_cmd定义了命令行入口module.py它通过argparse注册了三个参数——--use_gpu默认 False、--batch_size默认 1、--top_k默认 1以及输入参数--input_path最终调用self.classification(paths[args.input_path], ...)完成预测。这说明命令行方式实际等价于以paths方式调用classificationAPI且命令行默认不使用 GPU。2、预测代码示例在 Python 中以 API 方式调用模块import paddlehub as hub import cv2 classifier hub.Module(namese_resnet18_vd_imagenet) result classifier.classification(images[cv2.imread(/PATH/TO/IMAGE)]) # or # result classifier.classification(paths[/PATH/TO/IMAGE])两种传参方式的差别在于images接收的是 numpy 数组BGR 颜色空间而paths接收的是图片文件路径。在 data_feed.py 的reader生成器中可以看到paths分支会校验文件是否真实存在不存在则触发AssertionError而images分支会将 ndarray 通过Image.fromarray(im[:, :, ::-1])转回 PIL 图像——注意这里做了 BGR 到 RGB 的通道反转。仓库自带的 test.py 给出了对应的单元测试test_classification1与test_classification2分别验证paths与images两种调用方式并对一张狗图片断言预测结果中包含Pembroke且概率大于 0.5test_classification4验证传入不存在的路径会抛出AssertionErrortest_classification5验证以字符串列表作为images会抛出TypeError。这些用例可以直接作为该模块的验收参考。3、classification API 详解def classification(imagesNone, pathsNone, batch_size1, use_gpuFalse, top_k1):参数说明imageslist[numpy.ndarray]图像数据列表每个 ndarray 的形状为 [H, W, C]颜色空间为 BGRpathslist[str]图像路径列表batch_sizeint批大小控制每次送入推理引擎的图片数量默认 1use_gpubool是否使用 GPU 进行预测若使用 GPU必须先设置 CUDA_VISIBLE_DEVICES 环境变量top_kint返回概率最高的前 k 个分类结果默认 1。返回值reslist[dict]分类结果列表每个元素为一个 dictkey 为标签名称value 为对应概率。上述参数语义在 module.py 的classification实现中得到了完整验证当use_gpuTrue时若环境变量CUDA_VISIBLE_DEVICES未正确设置会抛出RuntimeError提示GPU 推理通过Config.enable_use_gpu(memory_pool_init_size_mb1000, device_id0)配置 1000MB 显存池batch_size通过np.ceil(total_num / batch_size)计算批次数并对不足一批的尾数做了容错处理预测器predictor在首次调用时通过_set_config()惰性初始化使用 PaddlePaddle Inference 的create_predictor加载.pdmodel与.pdiparams模型文件并默认disable_gpu()构建 CPU 预测器同时依据CUDA_VISIBLE_DEVICES判断是否额外构建 GPU 预测器。底层推理流程源码级完整调用链可分为三个阶段预处理data_feed.py 的process_image先将图像短边缩放到 256resize_short使用 LANCZOS 插值再从中心裁剪出 224×224 区域crop_imagecenterTrue若图像非 RGB 则转换颜色空间最后转为 float32、除以 255 归一化并按 ImageNet 数据集的均值/标准差做标准化mean [0.485, 0.456, 0.406]std [0.229, 0.224, 0.225]。模块类中的get_expected_image_width/get_expected_image_height也印证了输入尺寸固定为 224×224module.py推理将预处理后的批数据通过input_handle.copy_from_cpu送入 predictor 并执行predictor.run()后处理processor.py 的postprocess对网络输出逐样本执行 softmax 得到各类别概率按概率降序取前top_k个再通过 label_list.txt共 1000 行对应 ImageNet 1000 类标签格式为 标签名, 别名将索引映射为标签名最终组装为{label: probability}形式的 dict。Server 部署PaddleHub ServingPaddleHub Serving 可以将该图像分类模块一键部署为在线服务方便以 HTTP 接口形式对外提供分类能力。Step 1启动 PaddleHub Serving运行如下命令启动服务$ hub serving start -m se_resnet18_vd_imagenet服务启动后默认监听8866 端口该默认值在 serving.py 与 serving.py 中均有定义self.args_config.get(port, 8866)与--port参数默认值也支持通过-p/--port参数自定义端口。NOTE若使用 GPU 进行预测需在启动服务前设置CUDA_VISIBLE_DEVICES环境变量否则无需设置。Step 2发送预测请求服务启动后可通过 HTTP POST 请求完成图片分类import requests import json import cv2 import base64 def cv2_to_base64(image): data cv2.imencode(.jpg, image)[1] return base64.b64encode(data.tostring()).decode(utf8) # Send an HTTP request data {images:[cv2_to_base64(cv2.imread(/PATH/TO/IMAGE))]} headers {Content-type: application/json} url http://127.0.0.1:8866/predict/se_resnet18_vd_imagenet r requests.post(urlurl, headersheaders, datajson.dumps(data)) # print prediction results print(r.json()[results])请求流程说明客户端先将图片以 base64 字符串编码放入images字段并序列化为 JSONPOST 到/predict/se_resnet18_vd_imagenet端点服务端收到请求后由模块中的serving装饰方法serving_method处理module.py它调用 processor.py 中的base64_to_cv2将 base64 字符串解码还原为 cv2 图像cv2.imdecode再交由classification完成推理最后返回分类结果。版本发布说明版本说明1.0.0首次发布1.1.0移除 Fluid API若需要安装指定版本可通过带版本号的安装命令完成$ hub install se_resnet18_vd_imagenet1.1.0当前仓库中模块的moduleinfo声明的版本即为 1.1.0module.py与发布说明中的最新版本一致。在 PaddlePaddle 2.x 时代PaddleHub 模块普遍采用基于 Inference 的create_predictor推理方式本模块即如此不再依赖已废弃的 Fluid API。延伸阅读若要深入了解该模块的推理细节与测试方法可继续阅读仓库中的 module.py、processor.py、data_feed.py 与 test.pyPaddleHub 命令行工具的完整命令说明见 cmd_usage.rst如需在本地将模块导出为独立推理模型save_inference_model可参考 test.py 中test_save_inference_model的用法导出后生成model.pdmodel与model.pdiparams两个文件可直接供 PaddlePaddle Inference 加载使用。赞分享人工智能大模型微调模型推理服务【免费下载链接】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 EfficientNetB1 图像分类模块实战指南安装、预测 API 与 Serving 在线部署PaddleHub EfficientNetB1 图像分类模块实战指南安装、预测 API 与 Serving 在线部署 本指南围绕 PaddleFormers人工智能大模型微调模型推理服务PaddleHub resnet18_vd_imagenet 图像分类模块实战安装、预测 API 与 Serving 服务部署PaddleHub resnet18_vd_imagenet 图像分类模块实战安装、预测 API 与 Serving 服务部署 本指南以 PaddleForm人工智能大模型微调模型推理服务PaddleHub resnet50_vd_dishes 菜品图像分类模块安装、API 预测与 Serving 部署实战指南PaddleHub resnet50_vd_dishes 菜品图像分类模块安装、API 预测与 Serving 部署实战指南 resnet50_vd_dish人工智能大模型微调模型推理服务创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表