VGG19 ImageNet 图像分类 PaddleHub 模块:模型安装、命令行预测与 Python API 使用指南

发布时间:2026/9/24 2:29:43
VGG19 ImageNet 图像分类 PaddleHub 模块:模型安装、命令行预测与 Python 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 仓库中的vgg19_imagenet模块文档modules/image/classification/vgg19_imagenet/README.md为主线介绍如何通过 PaddleHub 安装 VGG19 图像分类模型并分别使用命令行与 Python 接口完成单图分类预测。读完本文你将掌握hub install/hub run的完整用法、classificationAPI 的参数约定与返回值格式并结合仓库源码理解 VGG 网络结构、输入预处理流程与预测器内部实现。一、模型基本信息vgg19_imagenet是 PaddleHub 的图像分类Image Classification模块核心信息如下表所示模型名称vgg19_imagenet类别图像-图像分类网络vgg19_imagenet数据集ImageNet-2012是否支持 Fine-tuning否模型大小549MB最新更新日期-数据指标-1.1 模型介绍VGG 是牛津大学计算机视觉组Visual Geometry Group与 DeepMind 于 2014 年提出的一系列图像分类模型对应论文Very Deep Convolutional Networks for Large-Scale Image RecognitionarXiv:1409.1556。该系列模型系统探索了卷积神经网络深度与性能之间的关系通过实验证明了在合理的结构设计下增加网络的深度能够在一定程度上提升网络最终的性能。时至今日VGG 仍然被大量图像任务作为特征提取的 Backbone 网络使用。本模块采用 VGG19 结构基于 ImageNet-2012 数据集训练接受输入图片大小为224 x 224 x 3支持直接通过命令行或者 Python 接口进行预测。1.2 网络结构源码级解读虽然vgg19_imagenet目录下仅包含 README 文档但同目录族的vgg16_imagenet模块提供了完整可读的源码实现其中 VGG 网络的通用定义位于 modules/image/classification/vgg16_imagenet/vgg.py。从该源码可以确认 VGG 系列模型的共用结构设计构造参数depth支持16与19两种取值assert depth in [16, 19]对应的各阶段卷积层数为depth_cfg {16: [2, 2, 3, 3, 3], 19: [2, 2, 4, 4, 4]}即 VGG19 的 5 个卷积阶段分别堆叠 2、2、4、4、4 个卷积层各阶段输出通道按vgg_base [64, 128, 256, 512, 512]逐级扩张卷积核尺寸统一为 3x3、padding 为 1、stride 为 1激活函数为 ReLU每个卷积阶段之后接max池化_pooling_block分类头为三层全连接fc6、fc7输出维度均为 4096fc8输出维度为class_dimImageNet 为 1000最终经softmax得到类别概率分布modules/image/classification/vgg16_imagenet/vgg.py#L72-L94。因此vgg19 与 vgg16 共享同一套 VGG 实现差异仅在于depth19时卷积层堆叠更多、参数量更大最终模型权重体积约为 549MB。二、安装2.1 环境依赖使用该模块前需要先安装以下运行环境paddlepaddle 1.4.0PaddlePaddle 深度学习框架paddlehub 1.0.0PaddleHub 模型管理与预测工具安装方式可参考 PaddleHub 安装文档。2.2 安装模块执行如下命令从 PaddleHub 服务器下载并安装vgg19_imagenet模块$ hub install vgg19_imagenet从 paddlehub/commands/install.py 的源码实现看hub install支持多种安装来源当参数为已存在的目录时按本地目录安装manager.install(directory_arg)为归档文件时按压缩包安装manager.install(archive_arg)否则视为 Hub 服务器上的模块名交由LocalModuleManager.install(namename, versionversion, ...)完成远程下载与安装。如需安装指定版本例如本文更新历史一节提到的 1.0.0可使用指定版本号install 命令会将其解析为(name, version)元组$ hub install vgg19_imagenet1.0.0如安装时遇到环境问题可参考以下平台快速入门文档零基础 Windows 安装零基础 Linux 安装零基础 MacOS 安装三、命令行预测3.1 基本用法安装完成后可直接通过 PaddleHub 命令行工具调用该模块进行图像分类$ hub run vgg19_imagenet --input_path /PATH/TO/IMAGE将/PATH/TO/IMAGE替换为本地待预测图片的绝对或相对路径即可。PaddleHub 命令行的完整指令说明可参考 PaddleHub 命令行指令。3.2 命令行参数的底层实现从 paddlehub/commands/run.py 可以看到hub run会先加载模块并检查其可运行性module.is_runnable随后把命令行参数透传给模块的_run_func。参考同族模块 modules/image/classification/vgg16_imagenet/module.py 中的run_cmd与add_module_input_arg实现hub run vgg19_imagenet实际支持的输入参数还包括--input_path单张图片路径默认None--input_file文本文件路径文件内每行一个图片路径默认None由txt_parser按行解析--use_gpu是否使用 GPU 推理取值为布尔字面量默认False--batch_size预测批大小默认1。当--input_path与--input_file均未提供时命令会打印帮助信息并退出。四、Python API 预测除了命令行也可以在 Python 脚本中以编程方式调用该模块import paddlehub as hub import cv2 classifier hub.Module(namevgg19_imagenet) test_img_path /PATH/TO/IMAGE input_dict {image: [test_img_path]} result classifier.classification(datainput_dict)代码说明hub.Module(namevgg19_imagenet)负责加载本地已安装的模块实例classification接受一个 dict 类型的参数data其中key为imagevalue为待预测图片路径组成的list返回结果result为list 类型每个元素对应一张输入图片的预测结果每个结果是 dictkey为预测得到的类别 labelvalue为该类别对应的概率。五、API 详解5.1 classification 接口模块对外暴露的核心分类接口签名如下def classification(data)功能图像分类接口输出每张图片在类别上的概率分布。参数datadict 类型key为imagestrvalue为待检测图片路径列表list。返回resultlist 类型每个元素为对应输入图片的预测结果预测结果为 dict 类型key为分类结果 labelvalue为该 label 对应的概率。5.2 底层执行流程源码佐证虽然vgg19_imagenet目录本身未携带源码但仓库内同族的vgg16_imagenet模块提供了完整实现可供对照二者共用同一套 hub.Module 框架模块类型均为cv/classification。在 modules/image/classification/vgg16_imagenet/module.py 中classification的实际签名更为丰富def classification(self, pathsNone, imagesNone, use_gpuFalse, batch_size1, top_k1)其内部执行步骤为首次调用时通过context(trainableFalse, pretrainedTrue, get_predictionTrue)构建推理 Program并clone(for_testTrue)生成推理图加载预训练权重通过test_reader逐张读取图片并完成预处理按batch_size分批构造PaddleTensor调用 CPU 或 GPU 的create_paddle_predictor执行推理对输出概率res执行np.argsort(res)[::-1][:top_k]取概率最高的 top-k 类别通过label_file.txt将类别索引映射为可读标签并保留对应概率值。其中top_k参数会被限制在[1, 1000]范围内对应 ImageNet 的 1000 个类别默认只返回概率最高的 1 个类别。此外模块还提供context(input_image, trainable, pretrained, param_prefix, get_prediction, extra_block_filters, normalizations)接口用于迁移学习场景可从模型中部蒸馏特征body_feats供下游任务复用由于本模块标注为不支持 Fine-tuning常规使用仅涉及预测分支get_predictionTrue。5.3 输入预处理细节预测时的数据预处理逻辑定义在 modules/image/classification/vgg16_imagenet/data_feed.py 中完整流程为resize_short(img, target_size256)将图片短边等比缩放到 256长边按同比例放大使用Image.LANCZOS插值crop_image(img, target_size224, centerTrue)从缩放后的图片中央裁剪 224x224 区域非 RGB 图片转换为 RGB像素值转为float32并归一化到[0, 1]除以 255维度由 HWC 转置为 CHW按 ImageNet 统计均值与标准差做标准化img_mean [0.485, 0.456, 0.406]、img_std [0.229, 0.224, 0.225]。上述均值/标准差与模块中get_pretrained_images_mean、get_pretrained_images_std返回的数值一致保证了与预训练权重训练时一致的输入分布。六、更新历史1.0.0初始发布。如需回滚到初始版本可执行$ hub install vgg19_imagenet1.0.0七、更多资源本模块的英文版说明见 modules/image/classification/vgg19_imagenet/README_en.md同族的 VGG16 完整源码网络定义、module 封装、数据预处理可参考 modules/image/classification/vgg16_imagenet/ 目录其中 vgg.py 中depth_cfg同时覆盖 16/19 两种深度的结构配置ImageNet 1000 类标签文件位于 modules/image/classification/vgg16_imagenet/label_file.txt仓库中图像分类的端到端训练/预测示例可参考 demo/image_classification/ 目录。赞分享人工智能大模型微调模型推理服务【免费下载链接】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 dpn131_imagenet 图像分类模型使用指南安装、命令行与 Python API 预测实战PaddleHub dpn131_imagenet 图像分类模型使用指南安装、命令行与 Python API 预测实战 本指南以 PaddleFormers人工智能大模型微调模型推理服务PaddleHub 图像分类实战resnext101_vd_64x4d_imagenet 模块安装、命令行与 Python API 预测指南PaddleHub 图像分类实战resnext101_vd_64x4d_imagenet 模块安装、命令行与 Python API 预测指南 本文围绕 Pad人工智能大模型微调模型推理服务使用 PaddleHub 的 googlenet_imagenet 模块进行图像分类安装、命令行预测与 Python API 全指南使用 PaddleHub 的 googlenet_imagenet 模块进行图像分类安装、命令行预测与 Python API 全指南 导读 本文围绕 Padd人工智能大模型微调模型推理服务创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考