目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)

文章目录

  • 一、演示多分类效果
  • 二、PaddleClas介绍
  • 三、代码获取
  • 四、数据集获取
  • 五、环境搭建
  • 六、数据格式分析
  • 七、模型训练
    • 7.1 其他训练指标
  • 八、模型预测
  • 九、模型评估
  • 十、PaddleClas相关博客

一、演示多分类效果

二、PaddleClas介绍

PaddleClas主要构件

  • PP-ShiTu: 图像识别(包含图像检测与图像搜索)
  • PULC:超轻量图像分类

PaddleClas是飞桨(PaddlePaddle)深度学习平台提供的一个开源项目,用于图像分类任务。它基于飞桨框架开发,致力于为用户提供一个简单、高效、灵活的图像分类工具。PaddleClas集成了许多常用的图像分类模型和数据增强方法,使得用户可以轻松地进行图像分类任务的训练和推理。

PaddleClas提供了丰富的图像分类模型,包括经典的卷积神经网络(CNN)架构,如ResNet、VGG和MobileNet等,以及最新的一些优化模型,如GhostNet、EfficientNet和RegNet等。用户可以选择适合自己任务需求的模型进行训练和推理。

此外,PaddleClas还提供了一些常用的数据增强方法,如随机裁剪、随机旋转和随机亮度调整等,可以有效提升模型的泛化能力和鲁棒性。

总之,飞桨图像识别套件PaddleClas是飞桨为工业界和学术界所准备的一个图像识别和图像分类任务的工具集,助力使用者训练出更好的视觉模型和应用落地。

三、代码获取

https://gitee.com/paddlepaddle/PaddleClas
PaddleClas 主要代码和目录结构如下

  • benchmark: 文件夹下存放了一些 shell 脚本,主要是为了测试 PaddleClas 中不同模型的速度指标,如单卡训练速度指标、多卡训练速度指标等。
  • dataset:文件夹下存放数据集和用于处理数据集的脚本。脚本负责将数据集处理为适合 Dataloader 处理的格式。
  • deploy:部署核心代码,文件夹存放的是部署工具,支持 python/cpp inference、Hub Serveing、Paddle Lite、Slim 离线量化等多种部署方式。
  • ppcls:训练核心代码,文件夹下存放 PaddleClas 框架主体。配置文件、模型训练、评估、预测、动转静导出等具体代码实现均在这里。
  • tools:训练、评估、预测、模型动转静导出的入口函数和脚本均在该文件下。
  • requirements.txt 文件用于安装 PaddleClas 的依赖项。使用 pip 进行升级安装使用。
  • tests:PaddleClas 模型从训练到预测的全链路测试,验证各功能是否能够正常使用。

四、数据集获取

链接:https://pan.baidu.com/s/1_GuRwxUmf42rVlmCL8ErlQ?pwd=8vet
提取码:8vet

五、环境搭建

  1. cuda、cudnn可根据这篇博客配置,我的是cuda10.1。
  2. python版本是3.7.11。
  3. 安装paddle-gpu:python -m pip install paddlepaddle-gpu==2.3.2.post101 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html:官网链接
    目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)_第1张图片
    目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)_第2张图片
  4. 如果是CPU则通过这个命令安装python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
  5. 剩下的环境就缺啥安装啥即可。

六、数据格式分析

目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)_第3张图片
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)_第4张图片
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)_第5张图片
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)_第6张图片

七、模型训练

  • 修改config文件对应属性
    • –config 配置文件路径
    • –override 使用其他的参数
  • 修改yaml文件对应位置属性
    • class_num
    • epochs
    • device
    • image_root(train和eval)
    • cls_label_path(train和eval)
python tools/train.py 
-c ppcls/configs/quick_start/professional/MobileNetV1_multilabel.yaml    
-o Arch.pretrained=True                            # 是否使用预训练模型

目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)_第7张图片
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)_第8张图片

模型训练完之后会在主目录生成模型。
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)_第9张图片

7.1 其他训练指标

目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)_第10张图片
Metric可以修改为下面属性。

Metric:
  Train:
    - TopkAcc:
        topk: [1, 5]
  Eval:
    - TopkAcc:
        topk: [1, 5]

八、模型预测

-c:配置文件路径
-o Infer.infer_imgs:预测图片路径
-o Global.pretrained_model:训练输出模型路径
-o save_txt:是否在文件夹下将图片的预测结果保存到文本文件中
由于默认 class_id_map_file 是 ImageNet 数据集的映射文件,所以此处需要置 None

python tools/infer.py -c ppcls/configs/quick_start/professional/MobileNetV1_multilabel.yaml -o Infer.infer_imgs=dataset/1.jpg -o Global.pretrained_model=output/MobileNetV1/best_model -o Infer.PostProcess.class_id_map_file=ppcls/utils/PULC_label_list/label_list.txt

目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)_第11张图片

九、模型评估

  • python tools/eval.py
    • -c ppcls/configs/quick_start/professional/MobileNetV1_multilabel.yaml
    • -o Global.device=gpu
    • -o DataLoader.Eval.dataset.image_root=E:\dataset\classify\NUS-SCENE-dataset/images/
    • -o DataLoader.Eval.dataset.cls_label_path=E:\dataset\classify\NUS-SCENE-dataset/multilabel_test_list.txt
    • -o Global.pretrained_model=output/MobileNetV1/best_model
    • -o Arch.class_num=33
    • -o Global.use_visualdl=True # 过程可视化
python tools/eval.py -c ppcls/configs/quick_start/professional/MobileNetV1_multilabel.yaml -o Global.device=gpu -o DataLoader.Eval.dataset.image_root=E:\dataset\classify\NUS-SCENE-dataset/images/ -o DataLoader.Eval.dataset.cls_label_path=E:\dataset\classify\NUS-SCENE-dataset/multilabel_test_list.txt -o Global.pretrained_model=output/MobileNetV1/best_model -o Arch.class_num=33

目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)_第12张图片

十、PaddleClas相关博客

  • PaddleClas:自定义backbone

你可能感兴趣的:(#,目标分类,分类,笔记,数据挖掘)