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

基于 PaddleHub 的图像分类实战:使用 resnet50_vd_imagenet_ssld 完成微调、预测与服务化部署

发布时间:2026/9/23 1:54:09 来源:云帆数科 栏目:资讯中心
基于 PaddleHub 的图像分类实战:使用 resnet50_vd_imagenet_ssld 完成微调、预测与服务化部署
人工智能预训练微调模型推理服务【免费下载链接】PaddleFormersPaddleFormers is an easy-to-use library of pre-trained large language model zoo based on PaddlePaddle.项目地址https://gitcode.com/gh_mirrors/pa/PaddleFormers点击查看免费下载本指南以demo/image_classification为实战入口系统讲解如何在 PaddleHub 框架下使用预训练图像分类模型resnet50_vd_imagenet_ssld完成「命令行/脚本预测 → 数据集微调Fine-tune→ checkpoint 加载预测 → Serving 在线服务部署」的完整闭环。读者阅读完本文后将掌握 PaddleHub 图像分类模块的调用范式、Flowers 数据集的使用方式、Trainer训练与评估流程以及如何将微调产物一键发布为 HTTP 分类服务。环境与依赖运行本文示例前需要先安装以下依赖与仓库demo/image_classification/README.md及modules/image/classification/resnet50_vd_imagenet_ssld/README.md声明一致paddlepaddle 2.0.0rc模块侧要求 2.0.0paddlehub 2.0.0安装 PaddlePaddle 与 PaddleHub 后可先通过hub install显式安装分类模块$ hub install resnet50_vd_imagenet_ssldhub install会将模块下载到本地 hub 目录后续hub.Module与hub run均可直接按名称加载。命令行预测一条命令完成推理加载预训练模型的最快方式是使用hub run命令行工具$ hub run resnet50_vd_imagenet_ssld --input_path /PATH/TO/IMAGE --top_k 5--input_path待预测图片的路径--top_k返回概率最高的前 K 个类别示例为 5。命令执行后模型会输出每张图片 Top-K 的类别名称与对应置信度。该方式适合快速验证模块可用性或做单张图片的即席推理。脚本预测在 Python 中调用模块在代码中调用同样简洁核心就是hub.Module加model.predictimport paddle import paddlehub as hub if __name__ __main__: model hub.Module(nameresnet50_vd_imagenet_ssld,) result model.predict([PATH/TO/IMAGE])未指定label_list时模块会使用模型自带的 ImageNet-2012 类别作为输出标签见下文 Step3。predict返回每个输入图片的 Top-1默认top_k1分类结果字典列表。Fine-tune 全流程四步走在完成 PaddlePaddle 与 PaddleHub 安装后进入demo/image_classification目录直接执行python train.py即可开始使用resnet50_vd_imagenet_ssld对 Flowers 数据集 等数据进行微调。仓库中的 train.py 即为可直接运行的完整脚本其逻辑可拆分为 4 个步骤。Step1定义数据预处理方式import paddlehub.vision.transforms as T transforms T.Compose([T.Resize((256, 256)), T.CenterCrop(224), T.Normalize(mean[0.485, 0.456, 0.406], std [0.229, 0.224, 0.225])], to_rgbTrue)transforms是数据增强/预处理管线用户可按需替换。各算子定义位于 paddlehub/vision/transforms.pyT.Resize((256, 256))将图片缩放到目标尺寸。target_size支持 int 或 (h, w) 二元组interpolation默认LINEAR可选NEAREST / LINEAR / CUBIC / AREA / LANCZOS4 / RANDOM六种模式源码见transforms.py的Resize类T.CenterCrop(224)从图片中心裁剪出224 x 224区域与 ResNet 系列标准的输入尺寸保持一致T.Normalize(mean[0.485, 0.456, 0.406], std[0.229, 0.224, 0.225])使用 ImageNet 数据集的均值/方差做通道归一化to_rgbTrue统一转换为 RGB 通道顺序避免 BGR/RGB 混用导致预测异常。这里使用的预处理参数与模块内部module.py中transforms方法modules/image/classification/resnet50_vd_imagenet_ssld/module.py中Resize((256, 256)) CenterCrop(224) Normalize同一组配置完全一致保证训练与推理阶段输入分布对齐。Step2下载数据集并使用from paddlehub.datasets import Flowers flowers Flowers(transforms) flowers_validate Flowers(transforms, modeval)transforms数据预处理方式mode数据模式可选train、test、val默认为train。Flowers数据集的实现见 paddlehub/datasets/flowers.py类装饰器download_data(urlhttps://bj.bcebos.com/paddlehub-dataset/flower_photos.tar.gz)会在首次实例化时自动从网络下载数据并解压到hubenv.DATA_HOME即$HOME/.paddlehub/dataset目录下无需手动准备数据数据集包含 5 个类别num_classes 5对应train_list.txt / test_list.txt / validate_list.txt三个文件列表由mode决定加载哪个文件__getitem__中读取图片路径与标签并调用self.transforms(img_path)完成预处理返回(图像, 标签)二元组。Step3加载预训练模型model hub.Module(nameresnet50_vd_imagenet_ssld, label_list[roses, tulips, daisy, sunflowers, dandelion])name预训练模型名称label_list自定义输出分类类别不传时默认使用 ImageNet-2012 的 1000 类标签。从模块源码module.py可以看到label_list直接决定全连接分类头的输出维度传入时class_dim len(label_list)否则读取模块目录下的 label_list.txt 构建标签表。因此在微调阶段传入 5 个花类别后模型最后一层Linear的神经元数会相应变为 5配合冻结/微调预训练骨干即可适配新任务。PaddleHub 还提供大量图像分类预训练模型如xception、mobilenet、efficientnet等本仓库modules/image/classification/目录下即收录了对应模块。想切换模型时只需更换name参数# 更换name参数即可无缝切换efficientnet模型, 代码示例如下 model hub.Module(nameefficientnetb7_imagenet)NOTE目前部分模型尚未完全升级到 Paddle 2.0 动态图版本切换模型时请以对应模块 README 标注的版本状态为准。Step4选择优化策略和运行配置optimizer paddle.optimizer.Adam(learning_rate0.001, parametersmodel.parameters()) trainer Trainer(model, optimizer, checkpoint_dirimg_classification_ckpt) trainer.train(flowers, epochs100, batch_size32, eval_datasetflowers_validate, save_interval1)优化策略Paddle 2.0 提供了SGD、Adam、Adamax等多种优化器示例选用Adamlearning_rate全局学习率默认 1e-3parameters待优化的模型参数即model.parameters()。运行配置Trainer实现在 paddlehub/finetune/trainer.py负责整体训练流程可配置参数包括model被优化模型optimizer优化器use_gpu是否使用 GPU 训练use_vdl是否使用 VisualDL 可视化训练过程checkpoint_dir保存模型参数的目录compare_metrics保存最优模型时的衡量指标默认比较acc。trainer.train控制具体训练过程参数如下train_dataset训练数据集epochs训练轮数batch_size批大小使用 GPU 时请根据显存实际情况调整num_workers数据加载 worker 数量默认为 0eval_dataset验证集log_interval打印日志的间隔单位为执行批训练的次数save_interval保存模型的间隔频次单位为训练轮数。从trainer.py的train方法实现约第 255 行起可以确认训练循环的关键行为当current_epoch % save_interval 0且一个 epoch 结束时保存 checkpoint并会在每个保存节点对验证集执行评估若当前指标优于历史最优_compare_metrics则将模型保存到${checkpoint_dir}/best_model目录。这就是「验证集上表现最优的模型被自动保留」这一机制的源码依据。模型预测加载微调产物完成微调后验证集表现最优的模型保存在${CHECKPOINT_DIR}/best_model目录下其中${CHECKPOINT_DIR}即训练时设置的checkpoint_dir。使用该模型预测的 predict.py 脚本如下import paddle import paddlehub as hub if __name__ __main__: model hub.Module(nameresnet50_vd_imagenet_ssld, label_list[roses, tulips, daisy, sunflowers, dandelion], load_checkpoint/PATH/TO/CHECKPOINT) result model.predict([flower.jpg])关键点在于load_checkpoint/PATH/TO/CHECKPOINT指定微调产物的 checkpoint 路径后模块__init__见module.py会通过paddle.load(load_checkpoint)[0]加载自定义权重并覆盖预训练参数源码中打印load custom checkpoint success不传该参数时则加载模型自带的resnet50_vd_ssld.pdparams预训练权重。NOTE进行预测时所选择的module、checkpoint_dir、dataset必须与 Fine-tune 时保持一致否则类别映射与权重维度会对不上。model.predict的底层实现在 paddlehub/module/cv_module.pyImageClassifierModule.predict约第 82 行模型切换到eval()模式并关闭梯度对输入图片批量执行预处理 → 前向推理 →F.softmax得到概率分布 →np.argsort降序取 Top-K 索引最后结合self.labels映射为可读的类别名。服务部署Serving 在线分类服务PaddleHub Serving 可将微调好的模型部署为在线分类任务服务。Step1启动 PaddleHub Serving$ hub serving start -m resnet50_vd_imagenet_ssld执行后即完成分类任务服务化 API 的部署默认端口号为8866。NOTE如使用 GPU 预测需在启动服务前设置CUDA_VISIBLE_DEVICES环境变量纯 CPU 环境无需设置。Step2发送预测请求服务端就绪后用以下代码即可发送图片并获取分类结果import requests import json import cv2 import base64 import numpy as np def cv2_to_base64(image): data cv2.imencode(.jpg, image)[1] return base64.b64encode(data.tostring()).decode(utf8) def base64_to_cv2(b64str): data base64.b64decode(b64str.encode(utf8)) data np.fromstring(data, np.uint8) data cv2.imdecode(data, cv2.IMREAD_COLOR) return data # 发送HTTP请求 org_im cv2.imread(/PATH/TO/IMAGE) data {images:[cv2_to_base64(org_im)], top_k:2} headers {Content-type: application/json} url http://127.0.0.1:8866/predict/resnet50_vd_imagenet_ssld r requests.post(urlurl, headersheaders, datajson.dumps(data)) data r.json()[results][data]请求体采用 JSON 格式images字段为 base64 编码的图片列表top_k指定返回的候选类别数服务端响应中的results[data]即为每张图片的 Top-K 分类结果。这样便完成了一个可直接被业务系统调用的图像分类 HTTP API。延伸阅读与使用建议模型细节resnet50_vd_imagenet_ssld是 ResNet-D 结构变体模型元信息类别、网络、数据集、版本、是否支持微调等见 模块 README网络结构由ConvBNLayer、BottleneckBlock堆叠而成forward返回(logits, feature)二元组后者可作为图像特征向量用于检索、相似度等下游任务见 module.py自定义数据集参考 flowers.py 继承paddle.io.Dataset并实现__getitem__/__len__即可将Flowers替换为业务自己的图像分类数据训练可视化将Trainer的use_vdl置为True后可在 VisualDL 中实时观察 loss 与 acc 曲线便于调整learning_rate与epochsbatch_size 调整GPU 显存受限时可调小batch_size反之增大batch_size可提升训练吞吐需同步关注显存占用。赞分享人工智能预训练微调模型推理服务【免费下载链接】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 resnet50_vd_imagenet_ssld 图像分类模块预测、Fine-tune 与服务化部署实战指南PaddleHub resnet50_vd_imagenet_ssld 图像分类模块预测、Fine tune 与服务化部署实战指南 本指南以 PaddleHu人工智能预训练微调模型推理服务基于 PaddleHub 使用 PPLCNet_x1_5 进行图像分类安装、API 调用与服务化部署实战基于 PaddleHub 使用 PPLCNet_x1_5 进行图像分类安装、API 调用与服务化部署实战 本指南以开源仓库 PaddleFormers 中 p人工智能预训练微调模型推理服务PaddleHub 图像分类实战resnet50_vd_imagenet_ssld 模型安装、Fine-tune 与服务化部署全指南PaddleHub 图像分类实战resnet50_vd_imagenet_ssld 模型安装、Fine tune 与服务化部署全指南 导读 本文以 Paddl人工智能预训练微调模型推理服务创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

Return YouTube Dislike 技术全解:恢复 YouTube 点踩计数的扩展原理与开放 API 实战指南
Return YouTube Dislike 技术全解:恢复 YouTube 点踩计数的扩展原理与开放 API 实战指南

Return YouTube Dislike 技术全解:恢复 YouTube 点踩计数的扩展原理与开放 API 实战指南 【免费下载链接】return-youtube-dislike Chrome extension to return youtube dislikes 项目地址: https://gitcode.com/gh_mirrors/re/return-youtube-dislike Retur… · 2026/9/23 1:53:50

Scapy 中的 CRC 计算与检测:scapy.libs.crc 模块实战指南
Scapy 中的 CRC 计算与检测:scapy.libs.crc 模块实战指南

网络网络安全 【免费下载链接】scapy Scapy: the Python-based interactive packet manipulation program & library. 项目地址: https://gitcode.com/gh_mirrors/sc/scapy 点击查看 免费下载 Scapy 作为基于 Python 的交互式数据包操作程序与库,内… · 2026/9/23 1:53:43

AutoClip 存储架构优化实战:元数据与文件分离存储方案解析
AutoClip 存储架构优化实战:元数据与文件分离存储方案解析

AutoClip 存储架构优化实战:元数据与文件分离存储方案解析 【免费下载链接】autoclip AutoClip : AI-powered video clipping and highlight generation 一款智能高光提取与剪辑的二创工具 项目地址: https://gitcode.com/GitHub_Trending/autoc/autoclip 本… · 2026/9/23 1:53:37

AI辅助论文写作工具评测与职称论文撰写指南
AI辅助论文写作工具评测与职称论文撰写指南

1. 为什么我们需要AI辅助论文写作?作为一名在科研领域摸爬滚打多年的从业者,我深知撰写职称论文的痛苦。记得第一次准备职称评审时,光是文献综述就熬了三个通宵,最后交上去的论文还是被评审专家批得体无完肤。直到去年&#xff0c… · 2026/9/23 7:18:36

数字IC后仿实战:$sdf_annotate参数详解与避坑指南
数字IC后仿实战:$sdf_annotate参数详解与避坑指南

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

局部特征尺度分解(LCD)技术原理与MATLAB实现
局部特征尺度分解(LCD)技术原理与MATLAB实现

1. 局部特征尺度分解(LCD)技术概述局部特征尺度分解(Local Characteristic-scale Decomposition, LCD)是一种新兴的非线性、非平稳信号处理方法。它通过自适应地将复杂信号分解为若干具有物理意义的固有尺度分量(Intri… · 2026/9/23 7:18:30

使用 Apache Arrow C 编写 Flight 客户端:连接、上传、查询与下载完整实战
使用 Apache Arrow C 编写 Flight 客户端:连接、上传、查询与下载完整实战

数据工程大数据序列化数据分析 【免费下载链接】arrow Apache Arrow is a multi-language toolbox for accelerated data interchange and in-memory processing 项目地址: https://gitcode.com/gh_mirrors/arrow13/arrow 点击查看 免费下载 本文以 Apache Arrow 仓… · 2026/9/23 7:18:30

3天搞定深刻近义词工具,从入门到精通避坑指南
3天搞定深刻近义词工具,从入门到精通避坑指南

3天搞定深刻近义词工具,从入门到精通避坑指南 官方文档太长抓不住重点?别急,咱们直接上干货。很多刚接触NLP的学员,一看到“语义相似度”或者“近义词匹配”就头大,感觉离“入门到精通”还很远。其实,核心逻辑就那几行代码,剩下的全是工程化细节。… · 2026/9/23 7:18:30

中国社会安全感构建:从数字支付到公共安全
中国社会安全感构建:从数字支付到公共安全

1. 文化差异下的生活安全感解读在全球化交流日益频繁的今天,不同文化背景的人群对"自由"和"安全"的理解存在显著差异。作为在中国生活多年的外籍人士,我发现这里的安全感体现在许多生活细节中:深夜独自回家的从容、孩子独… · 2026/9/23 7:18:30

3招搞定手机怎么下载微信面试难题实战项目解析
3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧
Win7无线热点配置工具源码解析:解决API失效的3个实战技巧

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧 Win7无线热点配置工具在Win10/11上跑不动?不是你的问题,是版本升级后 API 全变了。很多老项目里的 netsh wlan… · 2026/9/23 0:00:36

了解更多?预约专属演示

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

企业微信二维码