ARTICLE DETAIL

资讯详情

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

PaddleHub 图像分类实战:resnext152_32x4d_imagenet 模型安装、推理调用与 ResNeXt 网络结构解析

PaddleHub 图像分类实战:resnext152_32x4d_imagenet 模型安装、推理调用与 ResNeXt 网络结构解析 人工智能大模型微调模型推理服务【免费下载链接】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 的resnext152_32x4d_imagenet预训练图像分类模型为对象完整讲解该模块在 PaddlePaddle 生态中的安装方式、命令行与 Python 接口的推理用法并结合仓库源码深入剖析 ResNeXt-152 网络的分组卷积结构与预测调用链。读完本文你将能够独立完成该模型的环境搭建、图片分类推理并理解split-transform-merge设计在 Paddle 动态图实现中的落地方式。一、模型基本信息模型介绍resnext152_32x4d_imagenet是 PaddleHub 提供的图像分类预训练模块底层网络为 ResNeXt。ResNeXt 由 UC San Diego 与 Facebook AI Research 于 2017 年提出模型沿袭了 VGG/ResNets 的堆叠思想并采用split-transform-merge分割-变换-合并策略来增加网络的分支数。名称中的数字有明确含义152网络的层数layers为 15232分支数cardinality为 32即每个残差块内部有 32 条并行的变换路径4d每个分支的输入输出通道数为 4。该模块在包含数十亿张社交媒体图片的数据集上进行弱监督训练随后使用 ImageNet-2012 数据集进行微调finetune可接受输入图片大小为224 x 224 x 3支持直接通过命令行或 Python 接口进行预测。在仓库中其完整实现位于 modules/image/classification/resnext152_32x4d_imagenet/module.py文档对应的英文版本见 README_en.md。模型名称resnext152_32x4d_imagenet类别图像-图像分类网络ResNeXt数据集ImageNet-2012是否支持 Fine-tuning否模型大小233MB最新更新日期-数据指标-注意该模型定位为开箱即用的分类推理模型文档与模块元信息均标注为不支持 Fine-tuningmoduleinfo中的metaImageClassifierModule仅提供训练/验证钩子与预测能力。如需在自定义数据集上微调图像分类模型可参考 docs/docs_ch/finetune/image_classification.md。从源码看 ResNeXt-152 网络结构在 module.py 中ResNeXt152_32x4d类的初始化代码直接揭示了网络的拓扑参数self.layers 152 self.cardinality 32 depth [3, 8, 36, 3] num_channels [64, 256, 512, 1024] num_filters [128, 256, 512, 1024]depth [3, 8, 36, 3]四个残差阶段stage的 Bottleneck 块数量合计 38363 50 个块网络先经过ConvBNLayer(num_channels3, num_filters64, filter_size7, stride2)的 7x7 卷积与MaxPool2d(kernel_size3, stride2, padding1)下采样再接 4 个阶段的 Bottleneck 堆叠最后通过AdaptiveAvgPool2d(1)全局池化并由Linear全连接层输出class_dim默认 1000 类的 logits。每个 Bottleneck 块的核心是分组卷积。在 BottleneckBlock 中3x3 卷积层通过groupscardinality参数把输入通道拆成 32 组独立卷积再在 1x1 卷积处汇合这正是 ResNeXt 的 split-transform-merge 策略在 Paddle 动态图 APIpaddle.nn.Conv2d(groups...)上的直接映射self.conv0 ConvBNLayer(..., filter_size1, actrelu, ...) # 1x1 降维split 前的变换 self.conv1 ConvBNLayer(..., filter_size3, groupscardinality, stridestride, actrelu, ...) # 分组 3x3split-transform self.conv2 ConvBNLayer(..., filter_size1, actNone, ...) # 1x1 升维merge同时每个阶段的第一个块会通过shortcutFalse走 1x1 卷积投影分支以匹配维度其余块使用恒等短路short inputs最终以paddle.elementwise_add(xshort, yconv2, actrelu)完成残差相加。此外num_filters * 2 if cardinality 32表明当 cardinality 为 32 时块输出通道数翻倍以容纳 32 组 × 4 通道的分支宽度即 32x4d 的由来。二、安装1、环境依赖在安装模块前需要先准备以下运行环境paddlepaddle 1.4.0PaddlePaddle 深度学习框架提供模型计算所需的算子与动态图 APIpaddlehub 1.0.0PaddleHub 模型管理与推理工具库负责模块的下载、加载与统一调用。PaddleHub 的完整安装步骤请参阅 docs/docs_ch/get_start/installation.rst。2、安装模块使用hub install命令即可一键安装该模型模块$ hub install resnext152_32x4d_imagenet如需安装指定版本可在模块名后追加版本号本模块仓库内版本信息见moduleinfo的version1.1.0历史发布记录含 1.0.0$ hub install resnext152_32x4d_imagenet1.0.0若安装过程中遇到环境问题可参考以下零基础安装文档零基础 Windows 安装零基础 Linux 安装零基础 MacOS 安装3、加载机制与权重下载从源码看hub install/hub.Module(name...)最终会走 paddlehub/module/module.py 的init_with_name流程先查询本地模块管理器LocalModuleManager若本地不存在或版本不满足则自动从服务器安装。模块加载后ResNeXt152_32x4d.__init__会从模块目录读取resnext152_32x4d_imagenet.pdparams权重文件并set_dict载入module.py若本地缓存缺失初始化逻辑会尝试自动下载该权重。三、模型 API 预测1、命令行预测安装完成后可直接通过hub run命令对单张图片进行分类$ hub run resnext152_32x4d_imagenet --input_path /PATH/TO/IMAGE命令行入口的实现位于 paddlehub/module/cv_module.py 的run_cmd它通过runnable装饰器被注册为命令行可调用方法解析--input_path参数后调用self.predict(images[args.input_path], top_kargs.top_k)完成推理。命令行还支持可选的--top_k参数默认 1用于控制返回 Top-K 个分类结果。更多命令行用法见 docs/docs_ch/tutorial/cmd_usage.rst。2、预测代码示例在 Python 中通过hub.Module(name...)加载模块后即可进行推理。文档给出的经典调用方式如下import paddlehub as hub import cv2 classifier hub.Module(nameresnext152_32x4d_imagenet) test_img_path /PATH/TO/IMAGE input_dict {image: [test_img_path]} result classifier.classification(datainput_dict)该示例展示了 PaddleHub 早期版本的classification(data)接口data为 dict 类型key 为imagevalue 为图片路径列表。同时结合当前仓库的基类实现 paddlehub/module/cv_module.py该模块实际继承自ImageClassifierModule其底层预测方法是predict签名更丰富支持批量与 Top-K 输出import paddlehub as hub classifier hub.Module(nameresnext152_32x4d_imagenet) # images: BGR 格式的 np.ndarray 列表batch_size: 批大小top_k: 每张图返回概率最高的 K 个类别 result classifier.predict(images[cv2.imread(/PATH/TO/IMAGE)], batch_size1, top_k1)predict的内部流程cv_module.py为进入self.eval()评估模式并在paddle.no_grad()下执行前向按batch_size切分输入图片依次经过self.transforms预处理将批数据转为paddle.to_tensor送入forward得到 logits对 logits 执行F.softmax(preds, axis1)得到概率分布再用np.argsort(preds)[:, ::-1][:, :top_k]取概率最高的 K 个类别索引通过self.labels[int(k)]将索引映射为类别名输出形如[{类别A: 0.95, 类别B: 0.03}, ...]的列表列表中每个元素对应一张输入图片。3、API 说明classification(data)分类接口 API 定义如下def classification(data)参数datadict 类型key 为imagestr 类型value 为待检测的图片路径list 类型。返回resultlist 类型每个元素为对应输入图片的预测结果。预测结果为 dict 类型key 为该图片的分类结果 labelvalue 为该 label 对应的概率。关于图片预处理ImageClassifierModule通过self.transforms对输入执行标准化流水线Resize/CenterCrop/Normalize/ToTensor 等具体算子在 paddlehub/vision/transforms.py 中定义将任意尺寸图片统一到 224x224 并归一化后送入网络因此传入不同分辨率的图片均可获得正常推理结果。四、更新历史1.0.0初始发布。安装指定历史版本可使用$ hub install resnext152_32x4d_imagenet1.0.0五、延伸阅读与resnext152_32x4d_imagenet同属 ResNeXt 系列的仓库模块还包括 resnext50_32x4d_imagenet、resnext101_32x4d_imagenet、resnext152_64x4d_imagenet 以及带vd变体的 resnext152_vd_64x4d_imagenet 等可通过更换模块名复用相同的安装与调用方式图像分类模块的统一基类与命令行实现paddlehub/module/cv_module.py模块加载、注册与装饰器机制paddlehub/module/module.py图像分类微调Fine-tuning示例demo/image_classification/train.py 与 demo/image_classification/predict.py。赞分享人工智能大模型微调模型推理服务【免费下载链接】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 图像分类模块实战resnext101_64x4d_imagenet 的安装、推理调用与网络源码解析PaddleHub 图像分类模块实战resnext101_64x4d_imagenet 的安装、推理调用与网络源码解析 本指南以 PaddlePaddle 生人工智能大模型微调模型推理服务PaddleHub resnext152_64x4d_imagenet 图像分类模块实战指南安装、预测与网络结构解析PaddleHub resnext152_64x4d_imagenet 图像分类模块实战指南安装、预测与网络结构解析 本指南以 PaddleHub 官方图像分人工智能大模型微调模型推理服务使用 PaddleHub resnext101_32x8d_wsl 进行图像分类弱监督 ResNeXt 模型的安装与推理实践使用 PaddleHub resnext101_32x8d_wsl 进行图像分类弱监督 ResNeXt 模型的安装与推理实践 导读 本文以 PaddleHub人工智能大模型微调模型推理服务创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表