目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
文章目录
- 一、演示多分类效果
- 二、PaddleClas介绍
- 三、代码获取
- 四、数据集获取
- 五、环境搭建
- 六、数据格式分析
- 七、模型训练
- 7.1 模型恢复训练
- 7.2 多卡训练
- 7.3 其他训练指标
- 八、模型预测
- 九、模型评估
- 十、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
五、环境搭建
- cuda、cudnn可根据这篇博客配置,我的是cuda10.1。
- python版本是3.7.11。
- 安装paddle-gpu:
python -m pip install paddlepaddle-gpu==2.3.2.post101 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html:官网链接


- 如果是CPU则通过这个命令安装
python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple - 剩下的环境就缺啥安装啥即可。
六、数据格式分析




七、模型训练
- 修改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 # 是否使用预训练模型


模型训练完之后会在主目录生成模型。

7.1 模型恢复训练
python tools/train.py \-c ppcls/configs/quick_start/professional/MobileNetV1_multilabel.yaml -o Global.checkpoints="./output/*********/epoch_5" \-o Global.device=gpu
其中配置文件不需要做任何修改,只需要在继续训练时设置 Global.checkpoints 参数即可,表示加载的断点权重文件路径,使用该参数会同时加载保存的断点权重和学习率、优化器等信息。
可配置的部分评估参数说明如下:
- Arch.name:模型名称
- Global.pretrained_model:待评估的模型的预训练模型文件路径,不同于Global.Backbone.pretrained,此处的预训练模型是整个模型的权重,而Global.Backbone.pretrained只是Backbone部分的权重。当需要做模型评估时,需要加载整个模型的权重。
- Metric.Eval:待评估的指标,默认评估recall@1、recall@5、mAP。当你不准备评测某一项指标时,可以将对应的试标从配置文件中删除;当你想增加某一项评测指标时,也可以参考Metric部分在配置文件Metric.Eval中添加相关的指标。
注意:
- 在加载待评估模型时,需要指定模型文件的路径,但无需包含文件后缀名,PaddleClas 会自动补齐 .pdparams 的后缀。
- Metric learning 任务一般不评测 Topk Acc。
7.2 多卡训练
# PaddleClas 通过 launch 方式启动多卡多进程训练
export CUDA_VISIBLE_DEVICES=0,1,2,3
python -m paddle.distributed.launch \--gpus="0,1,2,3" \tools/train.py \-c ppcls/configs/quick_start/professional/MobileNetV1_multilabel.yaml
7.3 其他训练指标

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

九、模型评估
- 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相关博客
- PaddleClas:自定义backbone
相关文章:
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
文章目录 一、演示多分类效果二、PaddleClas介绍三、代码获取四、数据集获取五、环境搭建六、数据格式分析七、模型训练7.1 模型恢复训练7.2 多卡训练7.3 其他训练指标 八、模型预测九、模型评估十、PaddleClas相关博客 一、演示多分类效果 二、PaddleClas介绍 PaddleClas主要…...
PageHelp插件在复杂sql下引起的Having无法识别错误及其解决方案
1: 问题出现的场景 系统中有一个复杂SQL内嵌套了多个子查询.在改动时需要将SQL的最后一行加上having来做额外的过滤处理. 添加完having语句后发现SQL能够正常执行就直接将代码提交到了测试环境.结果在测试环境报错Unknown column ‘xxx‘ in ‘having clause. 2: 分析问题 1…...
linux中的开发工具
在刚开始使用linux的时候,我们需要在系统上写一些简单的代码,来熟悉环境以及各种指令 并且熟悉属于linux的一套开发的环境,而这对于c来说需要三个软件就可以进行简单的编码 和使用,让我们来认识一下下列工具,以及工具的…...
2023 第十二届中国智能产业高峰论坛 - 文档大模型的未来展望
目录 前言文档图像分析识别与理解中的技术挑战 文档图像分析识别与理解的研究主题文档图像分析与预处理文档解析与识别版面分析与还原文档信息抽取与理解AI安全知识化&存储检索和管理 多模态大模型在文档图像处理中的应用多模态的GPT-4在文档图像上的表现多模态的Google Ba…...
【小沐学NLP】关联规则分析Apriori算法(Mlxtend库,Python)
文章目录 1、简介2、Mlxtend库2.1 安装2.2 功能2.2.1 User Guide2.2.2 User Guide - data2.2.3 User Guide - frequent_patterns 2.3 入门示例 3、Apriori算法3.1 基本概念3.2 apriori3.2.1 示例 1 -- 生成频繁项集3.2.2 示例 2 -- 选择和筛选结果3.2.3 示例 3 -- 使用稀疏表示…...
对话ChatGPT:AIGC时代下,分布式存储的应用与前景
随着科技的飞速发展,我们正步入一个被称为AIGC时代的全新阶段,人工智能、物联网、大数据、云计算成为这个信息爆炸时代的主要特征。自2022年11月以来,ChatGPT的知名度迅速攀升,引发了全球科技爱好者的极大关注,其高超的…...
java多线程学习笔记一
一、线程的概述 1.1 线程的相关概念 1.1.1 进程(Process) 进程(Process)是计算机的程序关于某数据集合上的一次运行活动,是操作系统进行资源分配与调度的基本单位。 可以把进程简单的理解为操作系统中正在有运行的一…...
BOM与DOM--记录
BOM基础(BOM简介、常见事件、定时器、this指向) BOM和DOM的区别和联系 JavaScript的DOM与BOM的区别与用法详解 DOM和BOM是什么?有什么作用? 图解BOM与DOM的区别与联系 BOM和DOM详解 JavaScript 中的 BOM(浏览器对…...
Docker安装MongoDB
一、docker安装mongodb MongoDB 是一个免费的开源跨平台面向文档的 NoSQL 数据库程序。 二、安装步骤 1.docker 拉取mysql镜像 docker pull mongo:latest 2.运行容器 docker run -itd --name mongo -p 27017:27017 mongo --auth参数说明: -p 27017:27017 &#…...
不要对正则表达式进行频繁重复预编译
背景 在频繁调用场景,如方法体内或者循环语句中,新定义Pattern会导致重复预编译正则表达式,降低程序执行效率。另外,在 JDK 中部分 入参为正则表达式格式的 API,如 String.replaceAll, String.split 等,也…...
vue入门及小项目小便签条
vue 框架:是一个半成品软件,是一套可重用的,通用的,软件基础代码模型。基于框架进行开发,更加快捷 ,更加高效 v-bind为HTML标签绑定属性值,如设置href,css样式等 v-model在表单元素上创建双向数…...
详解TCP/IP协议第四篇:数据在网络中传输方式的分类概述
文章目录 前言 一:面向有连接型与面向无连接型 1:大致概念 2:面向有连接型 3:面向无连接型 二:电路交换与分组交换 1:分组交换概念 2:分组交交换过程 三:根据接收端数量分…...
SpringMvc决战-【SpringMVC之自定义注解】
目录 一、前言 1.1.什么是注解 1.2.注解的用处 1.3.注解的原理 二.注解父类 1.注解包括那些 2.JDK基本注解 3. JDK元注解 4.自定义注解 5.如何使用自定义注解(包括:注解标记【没有任何东西】,元数据注解)? 三…...
【MySQL集群一】CentOS 7上搭建MySQL集群:一主一从、多主多从
CentOS 7上搭建MySQL集群 介绍一主一从步骤1:准备工作步骤2:安装MySQL步骤3:配置主服务器步骤4:创建复制用户步骤5:备份主服务器数据,如果没有数据则省略这一步步骤6:配置从服务器步骤7…...
RGB格式
Qt视频播放器实现(目录) RGB的使用场景 目前,数字信号源(直播现场的数字相机采集的原始画面)和显示设备(手机屏幕、笔记本屏幕、个人电脑显示器屏幕)使用的基本上都是RGB格式。 三原色 RGB是…...
认识面向对象-PHP8知识详解
面向对象编程,也叫面向对象程序设计,是在面向过程程序设计的基础上发展而来的,它比面向过程编程具有更强的灵活性和扩展性。 它用类、对象、关系、属性等一系列东西来提高编程的效率,其主要的特性是可封装性、可继承性和多态性。…...
毕业设计|基于51单片机的空气质量检测PM2.5粉尘检测温度设计
基于51单片机的空气质量检测PM2.5粉尘检测温度设计 1、项目简介1.1 系统构成1.2 系统功能 2、部分电路设计2.1 LED信号指示灯电路设计2.2 LCD1602显示电路2.3 PM2.5粉尘检测电路设计 3、部分代码展示3.1 串口初始化3.1 定时器初始化3.2 LCD1602显示函数 4 演示视频及代码资料获…...
星闪空口技术初探
星闪技术设计目标 在星闪技术的应用场景中,最低的时延要求达到了20us量级,比如智能座舱的主动降噪。最高的可靠性要求达到了99.9999%,比如智能制造的传感器与执行器的消息收发。除了低时延和高可靠之外,高精度同步、多并发和信息…...
如何在不失去理智的情况下调试 TensorFlow 训练程序
一、说明 关于tensorflow的调试,是一个难啃的骨头,除了要有耐力,还需要方法;本文假设您是一个很有耐力的开发者,为您提供一些方法;这些方法也许不容易驾驭,但是依然强调您只要有耐力,…...
24. 图论 - 图的表示种类
Hi,你好。我是茶桁。 之前的一节课中,我们了解了图的来由和构成,简单的理解了一下图的一些相关概念。那么这节课,我们要了解一下图的表示,种类。相应的,我们中间需要穿插一些新的知识点用于更好的去理解图…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...
