人工智能大模型微调模型推理服务【免费下载链接】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 仓库中发布的 PaddleHub 图像分类模块spinalnet_res101_gemstone展开该模块以 ResNet101 为骨干网络、叠加 SpinalNet 分类头在 Gemstone 宝石数据集上预训练完成可用于猫眼石、萤石、紫锂辉石等数十种宝石的自动识别。读完本文你将掌握在 paddlepaddle/paddlehub 2.0 环境下的模块安装方法、命令行与 Python API 两种预测方式、predict接口的参数细节与返回值结构并能跟随源码级讲解理解 SpinalNet 分类头的工作原理最后通过五步流程在自定义宝石数据集上完成模型微调Fine-tune与再预测。一、模型基本信息模型名称spinalnet_res101_gemstone类别图像-图像分类网络resnet101数据集gemstone是否支持 Fine-tuning否模型大小246MB最新更新日期-数据指标-模型介绍spinalnet_res101_gemstone 是使用 PaddleHub 封装的SpinalNet 预训练图像分类模型其用途是进行宝石识别也可以在 PaddleHub Fine-tune API 的配合下针对自有宝石数据集进行微调最终完成宝石分类预测任务。模型与配套代码位于仓库的 SpinalNet_Gemstones 目录该目录同时提供了三个同系列变体spinalnet_res101_gemstoneResNet101 骨干246MB、spinalnet_res50_gemstoneResNet50 骨干137MB以及spinalnet_vgg16_gemstoneVGG16 骨干本文以 ResNet101 版本为主线讲解其余两个变体的使用方式完全一致仅需替换模块名。说明模型信息表中标注“是否支持 Fine-tuning否”指的是该预训练权重本身以识别推理为主要交付形态仓库内的 SpinalNet_Gemstones/README.md 同时提供了基于 PaddleHub Trainer 对模型进行 Fine-tune 的完整示例代码下文第五节将展开介绍。二、环境依赖与模块安装1. 环境依赖使用本模型前需要准备以下运行环境paddlepaddle 2.0.0飞桨深度学习框架提供张量计算与神经网络算子paddlehub 2.0.0PaddleHub 模型管理、预测与微调工具库安装方法见 PaddleHub 安装文档。在 Python 环境中可通过 pip 直接安装 PaddleHub 2.0 版本$ pip install -U paddlehub2.0.02. 安装模块通过hub install命令即可将 spinalnet_res101_gemstone 模块从 PaddleHub 模型库下载并安装到本地$ hub install spinalnet_res101_gemstone如需安装指定版本可显式指定版本号当前仓库内该模块的初始版本为 1.0.0$ hub install spinalnet_res101_gemstone1.0.0安装过程中如遇到环境问题可参考对应操作系统的零基础安装指南零基础 Windows 安装零基础 Linux 安装零基础 MacOS 安装三、模型 API 预测1. 命令行预测安装完成后通过hub run即可直接在命令行完成对单张图片的分类预测$ hub run spinalnet_res101_gemstone --input_path /PATH/TO/IMAGE其中--input_path为待预测图片的绝对或相对路径。命令行方式还支持--top_k参数控制输出前 K 个分类结果例如输出置信度最高的前 5 个类别$ hub run spinalnet_res101_gemstone --input_path /PATH/TO/IMAGE --top_k 5PaddleHub 命令行指令的完整用法参见 PaddleHub 命令行指令文档。从源码看命令行预测最终由ImageClassifierModule.run_cmd实现见 paddlehub/module/cv_module.py它通过argparse解析--input_path与--top_k默认值为 1两个参数然后调用self.predict(images[args.input_path], top_kargs.top_k)返回结果列表。2. 预测代码示例在 Python 脚本中加载模块并调用predict即可完成批量图片分类import paddlehub as hub import cv2 classifier hub.Module(namespinalnet_res101_gemstone) result classifier.predict([/PATH/TO/IMAGE]) print(result)hub.Module(namespinalnet_res101_gemstone)会从本地已安装的模块中加载模型。加载时若未显式传入label_list模块会从随模块分发的 label_list.txt 中读取 87 个宝石类别名称见 module.py并以类别数量初始化分类输出维度。predict的输入既可以是图片路径字符串也可以是np.ndarray形式的 BGR 图像数组。由于predict内部通过self.transforms(images[...])统一做预处理传入字符串路径时同样会被正常读取与转换。3. 分类接口 API模块对外暴露的核心接口为def predict(images)参数imageslist 类型待预测的图像列表元素为图片路径或 BGR 格式的np.ndarray。返回resultlist 类型每个元素对应输入列表中一张图片的预测结果。单个预测结果为 dictkey 为该图片的分类结果 label宝石类别名称value 为该 label 对应的预测概率。predict的完整签名还包括两个可选参数见 paddlehub/module/cv_module.pydef predict(images, batch_size1, top_k1)参数类型默认值说明imageslist必填待预测图像列表batch_sizeint1预测时的批大小控制每次前向计算处理的图片数量top_kint1每张图片输出置信度最高的 K 个类别在predict的实现中模型先对 batch 内的每张图片执行预处理再经一次前向计算得到 logits随后通过F.softmax(preds, axis1)将输出归一化为概率分布最后用np.argsort(preds)[:, ::-1][:, :top_k]按概率降序取出前top_k个类别映射回类别名称后组装成{label: probability}形式的字典返回。整个过程在self.eval()与paddle.no_grad()上下文中执行不会更新模型参数。四、源码级解析ResNet101 骨干与 SpinalNet 分类头spinalnet_res101_gemstone 的完整网络定义位于 modules/image/classification/SpinalNet_Gemstones/spinalnet_res101_gemstone/module.py模块通过moduleinfo装饰器声明元信息名称spinalnet_res101_gemstone、类型CV/classification、版本1.0.0并以metaImageClassifierModule绑定通用图像分类能力。1. ResNet101 骨干网络ResNet类module.py使用标准的 Bottleneck 残差块构建深度配置表为{101: [3, 4, 23, 3]}即四个阶段的残差块数量分别为 3、4、23、3。其结构包含7×7 卷积 BatchNorm ReLU 3×3 最大池化作为 stem四个_make_layer阶段通道数从 64 逐步扩张到 512Bottleneck 的expansion4因此输出通道为 2048AdaptiveAvgPool2D((1, 1))全局平均池化将特征图压缩为 2048 维向量。BottleneckBlockmodule.py实现了 1×1→3×3→1×1 的瓶颈结构并在downsample分支存在时通过残差相加完成恒等映射最后接 ReLU 激活。2. SpinalNet 分类头与传统分类头直接接一个全连接层不同SpinalNet_ResNet101module.py在 2048 维特征之上构建了四层“脊柱式”Spinal全连接结构half_in_size 2048 // 2 1024将骨干输出特征沿通道维对半切分layer_width 20每个脊柱层的隐藏宽度fc_spinal_layer1输入前半段特征y[:, 0:1024]结构为 Dropout(0.5) → Linear(1024, 20) → BatchNorm1D → ReLUfc_spinal_layer2拼接后半段特征与 layer1 输出即concat(y[:, 1024:2048], y1)输入维度为 102420fc_spinal_layer3拼接前半段特征与 layer2 输出fc_spinal_layer4拼接后半段特征与 layer3 输出fc_out将四个脊柱层的 20 维输出拼接成 80 维经 Dropout(0.5) 后由 Linear(80, class_dim) 映射到 87 个宝石类别。y1 self.fc_spinal_layer1(y[:, 0:self.half_in_size]) y2 self.fc_spinal_layer2(paddle.concat([y[:, self.half_in_size:2 * self.half_in_size], y1], axis1)) y3 self.fc_spinal_layer3(paddle.concat([y[:, 0:self.half_in_size], y2], axis1)) y4 self.fc_spinal_layer4(paddle.concat([y[:, self.half_in_size:2 * self.half_in_size], y3], axis1)) y paddle.concat([y1, y2, y3, y4], axis1) y self.fc_out(y) return y, featureforward同时返回分类输出y与骨干网络提取的feature后者可供特征复用与二次开发。权重加载时模块优先加载同目录下的spinalnet_res101.pdparams预训练权重若在构造时传入load_checkpoint则加载用户自定义 checkpoint见 module.py。3. 数据预处理模块内置的transformsmodule.py与 ImageNet 分类任务的通行做法一致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)即先将图片缩放到 256×256再中心裁剪为 224×224最后按 ImageNet 均值和标准差做归一化to_rgbTrue表示将 BGR 输入转换为 RGB。4. 类别标签模型支持的宝石类别见 label_list.txt共 87 类覆盖常见宝石品种例如 Alexandrite亚历山大变石、Amber琥珀、Amethyst紫水晶、Cats Eye猫眼石、Diamond钻石、Emerald祖母绿、Fluorite萤石、Jade玉、Kunzite紫锂辉石、Lapis Lazuli青金石、Malachite孔雀石、Ruby红宝石、Sapphire Blue/Pink/Purple/Yellow各色蓝宝石、Topaz托帕石、Tourmaline碧玺、Turquoise绿松石等。预测结果字典中的 key 即取自该标签表。五、Fine-tune 微调实战五步完成自定义宝石分类尽管模型信息表标注“不支持 Fine-tuning”仓库的 SpinalNet_Gemstones 示例 提供了基于 PaddleHub Fine-tune API 的完整微调流程可在自有宝石数据集上进一步训练。整个流程共五个步骤。Step 1加载必要的库from paddlehub.finetune.trainer import Trainer from gem_dataset import GemStones from paddlehub.vision import transforms as T import paddle其中Trainer是 PaddleHub 的微调训练器GemStones是示例提供的宝石数据集类源码见 gem_dataset.pytransforms用于数据预处理。Step 2定义数据预处理方式train_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) eval_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数据增强模块提供了丰富的数据预处理方式训练与评估分别使用独立的 transform 实例用户可按需替换如加入随机翻转、随机裁剪等增强手段。这里的预处理参数与第四节中模块内置的推理 transforms 保持一致。Step 3定义数据集gem_train GemStones(transformstrain_transforms, modetrain) gem_validate GemStones(transformseval_transforms, modeeval)GemStones继承自paddle.io.Dataset其数据目录通过config_parameters配置train_image_dir/eval_image_dir/test_image_dir内部使用paddle.vision.DatasetFolder按类别文件夹自动构建数据集与标签映射并根据modetrain/eval/test选择对应数据子集见 gem_dataset.py。__getitem__中先对图像执行 transforms 预处理再以 int64 返回标签。数据集目录的组织方式与paddle.vision.DatasetFolder一致根目录下每个子文件夹名称即一个类别名文件夹内为该类别的图片。Step 4开始训练微调optimizer paddle.optimizer.Momentum(learning_rate0.001, momentum0.9, parametersspinal_res50.parameters()) trainer Trainer(spinal_res50, optimizer, use_gpuTrue, checkpoint_dirfine_tuned_model) trainer.train(gem_train, epochs5, batch_size128, eval_datasetgem_validate, save_interval1, log_interval10)paddle.optimizer.Momentum使用学习率 0.001、动量 0.9 的动量优化器Trainer的use_gpuTrue表示在 GPU 上训练checkpoint_dirfine_tuned_model指定模型保存目录trainer.train的epochs5表示训练 5 轮batch_size128为批大小eval_dataset传入验证集save_interval1表示每 1 轮保存一次 checkpointlog_interval10表示每 10 个 batch 打印一次训练日志。ImageClassifierModule为微调提供了training_step与validation_step实现见 paddlehub/module/cv_module.py前向得到 logits 后使用softmax_with_cross_entropy计算交叉熵损失并通过paddle.metric.accuracy统计分类准确率训练与验证均返回{loss: ..., metrics: {acc: ...}}。Step 5微调后再预测spinal_res50 hub.Module(namespinalnet_res101_gemstone) result_res50 spinal_res50.predict([/PATH/TO/IMAGE]) print(result_res50)微调完成后重新加载模块或加载保存的 checkpoint对新的图片进行预测即可验证微调效果。预测接口、预处理与返回格式均与第三节中介绍的完全一致。六、更新历史1.0.0初始发布。可通过如下命令安装该版本$ hub install spinalnet_res101_gemstone1.0.0延伸阅读同系列模型spinalnet_res50_gemstone、spinalnet_vgg16_gemstone完整源码与数据集示例SpinalNet_Gemstones通用图像分类模块基类实现paddlehub/module/cv_module.pyPaddleHub 命令行指令docs/docs_ch/tutorial/cmd_usage.rstPaddleHub 安装docs/docs_ch/get_start/installation.rst赞分享人工智能大模型微调模型推理服务【免费下载链接】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 宝石图像分类实战SpinalNet-ResNet101 Gemstone 预训练模型的加载、预测与微调PaddleHub 宝石图像分类实战SpinalNet ResNet101 Gemstone 预训练模型的加载、预测与微调 导读 本文以 PaddleHub人工智能大模型微调模型推理服务PaddleHub 宝石图像分类实战spinalnet_vgg16_gemstone 模型的安装、命令行与 Python API 预测指南PaddleHub 宝石图像分类实战spinalnet_vgg16_gemstone 模型的安装、命令行与 Python API 预测指南 本篇技术指南围绕人工智能大模型微调模型推理服务PaddleHub 宝石图像分类实战spinalnet_vgg16_gemstone 模块安装、预测与源码原理解析PaddleHub 宝石图像分类实战spinalnet_vgg16_gemstone 模块安装、预测与源码原理解析 本文以 PaddleFormers 仓库中人工智能大模型微调模型推理服务创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考