ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

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

使用 PaddleHub 部署 VGG19 图像分类模型:vgg19_imagenet 模块安装、命令行预测与 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点击查看免费下载导读本文围绕 PaddleHub 图像分类模块vgg19_imagenet展开该模块基于牛津大学视觉几何组VGG与 DeepMind 于 2014 年提出的 VGG19 网络结构在 ImageNet-2012 数据集上完成训练接收 224 × 224 × 3 的输入图片并输出 1000 类 ImageNet 类别的分类结果。读完本文你将掌握该模块的环境依赖与安装流程、通过hub run命令行进行预测、以及使用hub.Module(...).classification(...)Python 接口完成批量分类的完整实战方案同时结合仓库源码理解其输入预处理与网络结构细节。一、模块基本信息vgg19_imagenet是 PaddleHub 提供的图像分类image classification模块仓库内对应目录为 modules/image/classification/vgg19_imagenet。其 README英文版见 modules/image/classification/vgg19_imagenet/README_en.md中文版见 modules/image/classification/vgg19_imagenet/README.md记录的基本信息如下模块名称vgg19_imagenet类别图像分类image classification网络vgg19_imagenet数据集ImageNet-2012是否支持 Fine-tuning否模型大小549MB最新更新日期-数据指标-说明该表全部字段继承自仓库内 README 原始内容。其中最新更新日期数据指标在文档中标注为-本文不补充未经证实的数据。VGG 系列模型背景VGG 是牛津大学视觉几何组Visual Geometry Group与 DeepMind 联合提出的一系列图像分类模型论文为Very Deep Convolutional Networks for Large-Scale Image RecognitionarXiv:1409.1556仓库源码 modules/image/classification/vgg16_imagenet/vgg.py 的注释中亦标注了该论文。该系列模型系统探索了卷积神经网络深度与性能之间的关系用大量 3 × 3 小卷积核堆叠出更深的网络实验表明网络越深、性能越好的趋势。时至今日VGG 仍被大量图像任务用作特征提取的 Backbone 网络。vgg19_imagenet即采用 VGG 系列中深度为 19 的配置VGG19基于 ImageNet-2012 训练接受输入图片大小为 224 × 224 × 3支持直接通过命令行或 Python 接口进行预测。二、VGG19 网络结构剖析源码级虽然vgg19_imagenet目录内仅包含 README 文件但仓库中同属 VGG 系列的vgg16_imagenet模块提供了完整的 VGG 网络实现 modules/image/classification/vgg16_imagenet/vgg.py该实现同时支持 depth16 与 depth19 两种配置是理解 VGG19 结构的直接依据。从源码结构看其核心设计如下深度配置表self.depth_cfg {16: [2, 2, 3, 3, 3], 19: [2, 2, 4, 4, 4]}vgg.py。VGG19 在 5 个卷积阶段分别堆叠 2、2、4、4、4 个卷积层合计 16 个卷积层加上 3 个全连接层fc6/fc7/fc8共 19 层这正是VGG19名称的由来assert depth in [16, 19]保证只接受这两种合法深度。通道配置vgg_base [64, 128, 256, 512, 512]vgg.py五个阶段通道数依次翻倍并保持在 512。卷积单元每个阶段内部使用大量 3 × 3、stride1、padding1 的卷积层配合 ReLU 激活_conv_block与_conv_layer见 vgg.py这一小卷积核堆叠的设计在保持相同感受野的同时显著减少参数。下采样阶段之间通过 2 × 2、stride2 的 max pooling_pooling_block见 vgg.py逐级降低特征图分辨率。分类头class_dim1000vgg.py对应 ImageNet-2012 的 1000 个类别在非 extra-blocks 模式下卷积特征展平后依次经过两个 4096 维全连接层fc6、fc7ReLU 激活和 1000 维输出层 fc8最后接 softmax 得到类别概率vgg.py。在 modules/image/classification/vgg16_imagenet/module.py 中get_expected_image_width()与get_expected_image_height()均返回 224确认了该系列模型的标准输入尺寸为 224 × 224。三、环境依赖与模块安装1、环境依赖根据 README运行vgg19_imagenet模块需要满足paddlepaddle 1.4.0PaddlePaddle 深度学习框架paddlehub 1.0.0PaddleHub 模型管理库。PaddleHub 的详细安装指引可参考 安装文档英文与 安装文档中文。若在安装过程中遇到问题可按操作系统查阅对应快速入门文档Windows 零基础安装Linux 零基础安装MacOS 零基础安装2、安装模块在满足依赖后通过hub install命令即可安装该模块$ hub install vgg19_imagenet安装指定版本本文所记录模块的发布版本为 1.0.0$ hub install vgg19_imagenet1.0.0四、模块 API 预测1、命令行预测安装完成后可通过 PaddleHub 命令行直接对单张图片进行分类$ hub run vgg19_imagenet --input_path /PATH/TO/IMAGE其中--input_path为待分类图片的本地路径。关于 PaddleHub 命令行工具的完整指令说明可参考 PaddleHub 命令行指令文档中文或 PaddleHub Command Line Instruction英文。从仓库中同类分类模块的实现可以推断命令行模式除必填的输入参数外通常还支持若干可选的运行配置参数。以 VGG16 模块 modules/image/classification/vgg16_imagenet/module.py 为例其命令行参数包括参数类型默认值含义--input_pathstrNone待分类图片路径输入必填--input_filestrNone包含多张图片路径列表的文本文件与--input_path二选一--use_gpuboolFalse是否使用 GPU 推理--batch_sizeint1推理批大小其中--input_file支持通过 txt 解析器 读取多行图片路径实现批量命令行分类--use_gpu则决定推理时加载 CPU 预测器还是 GPU 预测器见 module.py 中的 predictor 配置逻辑。2、预测代码示例在 Python 中调用该模块先实例化 Module再调用分类接口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)负责加载模块并自动下载/加载预训练权重input_dict的 key 固定为imagevalue 为图片路径组成的 list支持一次传入多张图片路径实现批量分类result为每张输入图片的预测结果列表。3、classification API 详解def classification(data)功能图像分类预测接口。参数datadict 类型——key 为imagestrvalue 为待检测图片路径的 list。返回resultlist[dict] 类型——列表中的每个元素对应一张输入图片的分类结果每个结果为 dictkey 为标签名labelvalue 为该标签对应的概率。从仓库中同类模块ImageClassifierModule的实现paddlehub/module/cv_module.py可以进一步推断该接口的底层行为推理在paddle.no_grad()上下文与self.eval()模式下执行模型输出经F.softmax(preds, axis1)转为概率分布再通过np.argsort(preds)[:, ::-1][:, :top_k]取概率最高的前top_k个类别类别索引通过self.labels由 label 文件加载映射为类名最终以{类名: 概率}的形式组织每个样本的返回 dict。其中top_k控制返回的 Top-K 结果数。以 VGG16 的实现为例top_k会被限制在[1, 1000]区间内见 module.py1000 恰好对应 ImageNet 类别总数top_k为 1 时只返回概率最高的类别为 1000 时返回全部类别的概率。五、输入图片预处理细节源码佐证VGG 系列模块对输入图片有一套固定的预处理流程。以同族的 VGG16 实现 modules/image/classification/vgg16_imagenet/data_feed.py 为参考其process_image处理逻辑如下等比缩放resize_short(img, target_size256)——将图片短边缩放到 256长边按比例同步缩放使用Image.LANCZOS插值data_feed.py中心裁剪crop_image(img, target_sizeDATA_DIM, centerTrue)——从缩放后的图片中心裁剪出 224 × 224 区域其中DATA_DIM 224data_feed.py通道转换若非 RGB 模式则转换为 RGB数值归一化像素值除以 255 归一化到[0, 1]减去均值、除以标准差均值img_mean [0.485, 0.456, 0.406]标准差img_std [0.229, 0.224, 0.225]data_feed.py最终图片以CHW布局、float32 类型送入网络。这套缩放短边 256 中心裁剪 224 ImageNet 统计归一化的流程是 VGG 系列模型在推理时的标准输入约定与该模块接受 224 × 224 × 3 输入的规格完全一致。六、结果标签体系模块预测输出的 label 来自 ImageNet-2012 的 1000 个类别。以 VGG16 模块自带的 label_file.txt 为例每行一个类别格式为类名, 附属说明例如tench, Tinca tinca goldfish, Carassius auratus great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias标签文件共 1000 行恰好与class_dim1000的网络输出维度一一对应。classification返回结果中的 label 即取自该类名部分实现中通过self.label_names[int(k)].split(,)[0]截取逗号前的名称见 module.py。七、版本记录Release Note根据 README 的更新历史1.0.0首次发布First release。$ hub install vgg19_imagenet1.0.0八、总结与延伸vgg19_imagenet是 PaddleHub 图像分类模块体系中极具代表性的经典 CNN模块结构清晰、部署简单适合作为图像分类任务与特征提取的基线。本文覆盖了从环境依赖、模块安装、命令行预测到 Python API 调用的完整使用链路并借助仓库内 VGG 系列源码vgg.py、data_feed.py、cv_module.py还原了网络结构、预处理流程与推理逻辑。如果需要进一步深入可以继续查阅PaddleHub 命令行完整用法cmd_usage.rst中文 / cmd_usage.rst英文PaddleHub 安装与环境配置installation.rst仓库内 VGG 系列的完整实现VGG16含网络、数据与模块代码modules/image/classification/vgg16_imagenet图像分类模块的公共基类ImageClassifierModulepaddlehub/module/cv_module.py。同时该模块也展示了 PaddleHub 统一的安装-预测模式hub install完成模块获取hub run完成命令行推理hub.Module(name...).classification(data...)完成编程式推理。掌握这一模式后即可将同类图像分类模块如仓库 modules/image/classification 下的 ResNet、EfficientNet、MobileNet 等系列以完全相同的方式接入自己的业务代码。赞分享人工智能大模型微调模型推理服务【免费下载链接】PaddleFormersPaddleFormers is an easy-to-use library of pre-trained large language model zoo based on PaddlePaddle.项目地址https://gitcode.com/gh_mirrors/pa/PaddleFormers点击查看免费下载相关推荐VGG19 ImageNet 图像分类 PaddleHub 模块模型安装、命令行预测与 Python API 使用指南VGG19 ImageNet 图像分类 PaddleHub 模块模型安装、命令行预测与 Python API 使用指南 本文以 PaddleFormers 仓人工智能大模型微调模型推理服务PaddleHub dpn131_imagenet 图像分类模型使用指南安装、命令行与 Python API 预测实战PaddleHub dpn131_imagenet 图像分类模型使用指南安装、命令行与 Python API 预测实战 本指南以 PaddleFormers人工智能大模型微调模型推理服务PaddleHub 图像分类模块 resnet_v2_34_imagenet 实战指南安装、命令行与 Python API 预测PaddleHub 图像分类模块 resnet_v2_34_imagenet 实战指南安装、命令行与 Python API 预测 本指南以 PaddleFor人工智能大模型微调模型推理服务创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表