PaddleClas图像分类模型快速部署指南:使用Wheel包进行推理
前言
PaddleClas作为飞桨生态中的图像分类开发套件,提供了丰富的预训练模型和便捷的部署工具。本文将详细介绍如何使用PaddleClas提供的Python wheel包进行图像分类任务的快速推理部署,帮助开发者快速实现模型应用落地。
一、安装PaddleClas Wheel包
PaddleClas提供了两种安装方式:
- 推荐方式:通过PyPI安装稳定版本
pip3 install paddleclas
- 开发模式:如果需要使用最新开发特性或进行二次开发,可以从源码安装
pip install -v -e .
二、快速开始
2.1 使用ImageNet1k预训练模型
PaddleClas提供了多种ImageNet1k预训练模型,下面以ResNet50为例展示如何使用:
Python方式:
from paddleclas import PaddleClas
# 初始化模型
clas = PaddleClas(model_name='ResNet50')
# 进行预测
result = clas.predict('demo.jpg')
print(next(result))
命令行方式:
paddleclas --model_name=ResNet50 --infer_imgs="demo.jpg"
预测结果示例:
{
'class_ids': [8, 7, 86, 82, 80],
'scores': [0.97968, 0.02028, 3e-05, 1e-05, 0.0],
'label_names': ['hen', 'cock', 'partridge', ...],
'filename': 'demo.jpg'
}
2.2 使用PULC超轻量分类模型
PULC(Practical Ultra Lightweight Classification)是PaddleClas提供的超轻量分类模型系列,适用于多种实际场景:
import paddleclas
# 初始化人员存在检测模型
model = paddleclas.PaddleClas(model_name="person_exists")
result = model.predict("person_image.jpg")
print(next(result))
PULC支持的场景包括:
- 人员是否存在检测
- 行人属性识别
- 安全帽佩戴检测
- 交通标志识别
- 车辆属性识别
- 文本方向分类等
三、核心参数详解
PaddleClas提供了丰富的参数配置选项:
-
模型相关参数:
model_name
: 指定预训练模型名称inference_model_dir
: 本地模型路径(需包含.pdmodel和.pdiparams文件)
-
输入处理参数:
resize_short
: 图像短边缩放尺寸crop_size
: 中心裁剪尺寸batch_size
: 批处理大小
-
硬件加速参数:
use_gpu
: 是否使用GPUuse_tensorrt
: 是否启用TensorRT加速enable_mkldnn
: 是否启用MKLDNN加速
-
输出处理参数:
topk
: 返回前K个预测结果threshold
: 置信度阈值class_id_map_file
: 自定义类别映射文件save_dir
: 预测结果保存路径
特别提示:使用Transformer类模型(如ViT)时,需设置resize_short=384
和crop_size=384
。
四、进阶使用技巧
4.1 批量预测
通过设置batch_size
参数可实现批量预测,显著提升处理效率:
clas = PaddleClas(model_name='ResNet50', batch_size=4)
results = clas.predict('image_folder/')
for r in results:
print(r)
4.2 使用本地模型
当需要使用自定义训练的模型时:
clas = PaddleClas(inference_model_dir='./custom_model/')
4.3 处理网络图片
直接输入图片URL即可进行预测:
clas.predict('https://example.com/image.jpg')
4.4 处理NumPy数组
支持直接传入NumPy数组格式的图像数据:
import cv2
img = cv2.imread("image.jpg")[:, :, ::-1] # BGR转RGB
result = clas.predict(img)
4.5 保存预测结果
将预测结果保存为预标注文件:
clas = PaddleClas(save_dir='./output/')
4.6 自定义类别映射
通过class_id_map_file参数可指定自定义的类别映射关系:
0 类别A
1 类别B
2 类别C
...
五、最佳实践建议
-
模型选择:
- 通用场景推荐使用ResNet、MobileNet等经典模型
- 特定场景优先考虑PULC系列专用模型
- 高精度需求可选择Swin Transformer等模型
-
性能优化:
- GPU环境下开启TensorRT加速
- 批量预测时适当增大batch_size
- 对固定尺寸输入关闭resize操作
-
部署注意事项:
- 生产环境建议使用推理模型而非训练模型
- 注意图像预处理与训练时保持一致
- 考虑使用多线程处理提高吞吐量
通过本文介绍的方法,开发者可以快速将PaddleClas中的图像分类模型应用到实际项目中,实现高效的推理部署。PaddleClas提供的便捷接口大大降低了深度学习模型的应用门槛,让开发者能够更专注于业务逻辑的实现。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考