目录

基于Ubuntu22.04系统PaddleX和PaddleClas训练推理MMAFEDB人脸表情识别数据集(详细教程)

超实用的Paddle图像分类训练推理教程,助力深度学习研究!

1、环境准备(重要⭐⭐⭐)

构建虚拟环境

安装PaddlePaddle

安装PaddleX

安装PaddleClas插件

2、数据准备(重要⭐⭐⭐)

2.1 数据下载及制作

2.2 数据校验

3、开始训练(重要⭐⭐⭐)

训练启动参数详细说明

4、开始评估(重要⭐⭐⭐)

5、开始推理(重要⭐⭐⭐)

6、参考资源链接

7、交流学习


基于Ubuntu22.04系统PaddleX和PaddleClas训练推理MMAFEDB人脸表情识别数据集(详细教程)

超实用的Paddle图像分类训练推理教程,助力深度学习研究!

测试环境:
Ubuntu 22.04.4 LTS
cuda_11.8
Tesla P4显卡
磁盘空间500G

项目源码最终目录结构预览

1、环境准备(重要⭐⭐⭐)
构建虚拟环境
# 创建环境
conda create -n paddleclas python=3.10
# 激活环境进入
conda activate paddleclas
安装PaddlePaddle

参考地址:https://www.paddlepaddle.org.cn/install/quick?docurl=/documentation/docs/zh/develop/install/pip/linux-pip.html

# 安装指令
python -m pip install paddlepaddle-gpu==3.1.1 -i https://www.paddlepaddle.org.cn/packages/stable/cu118/
# 验证paddlepaddle是否可用GPU
python -c "import paddle;print(paddle.utils.run_check());print(paddle.__version__)"
# 输出如下信息,则安装成功,paddlepaddle-gpu可使用
'''
Running verify PaddlePaddle program ... 
I0821 11:21:45.437101  7032 pir_interpreter.cc:1524] New Executor is Running ...
W0821 11:21:45.437536  7032 gpu_resources.cc:114] Please NOTE: device: 0, GPU Compute Capability: 6.1, Driver API Version: 12.4, Runtime API Version: 11.8
I0821 11:21:45.686959  7032 pir_interpreter.cc:1547] pir interpreter is running by multi-thread mode ...
PaddlePaddle works well on 1 GPU.
PaddlePaddle is installed successfully! Let's start deep learning with PaddlePaddle now.
None
'''
安装PaddleX

参考地址:https://paddlepaddle.github.io/PaddleX/latest/installation/installation.html

pip install paddlex==3.1.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
# 额外依赖包
pip install pypdfium2 -i https://pypi.tuna.tsinghua.edu.cn/simple
安装PaddleClas插件

参考地址:https://paddlepaddle.github.io/PaddleX/latest/installation/installation.html

# 获取源码仓库(训练使用,与上述的推理库不冲突)
git clone -b release/3.1 https://github.com/PaddlePaddle/PaddleX.git 
cd PaddleX
# 源码编译
pip install -e .
# 安装插件
paddlex --install PaddleClas
# 输出如下信息,则安装成功,paddleclas可使用
'''
......
Successfully built paddleclas
Installing collected packages: paddleclas
Successfully installed paddleclas-2.6.0
All packages are installed.
'''
2、数据准备(重要⭐⭐⭐)
2.1 数据下载及制作

官方kaggle数据下载

可参考:https://www.kaggle.com/datasets/mahmoudima/mma-facial-expression

# 可参考下载方式
curl -L -o ./mma-facial-expression.zip\https://www.kaggle.com/api/v1/datasets/download/mahmoudima/mma-facial-expression

制作paddle格式数据(放于PaddleX源码目录下)

目录结构为:

datasets/
└── mmafedb/├── images/├── label.txt├── train.txt└── val.txt

label.txt文件内容如下(7个类别)

0 angry
1 disgust
2 fear
3 happy
4 neutral
5 sad
6 surprise

train.txt文件内容如下(92968条数据)

images/train_angry_10012Exp0fighting_people_350.jpg 0
images/train_angry_10018Exp0fighting_people_429.jpg 0
images/train_angry_10025Exp0fighting_people_5.jpg 0
images/train_angry_10037Exp0fighting_people_573.jpg 0
......

val.txt文件内容如下(17356条数据)

......
images/val_surprise_Surprise.32265.jpg 6
images/val_surprise_Surprise.32266.jpg 6
images/val_surprise_Surprise.32283.jpg 6
images/val_surprise_Surprise.32284.jpg 6

images/目录中存放所有的图片,统计如下

JPG图像总数: 110324去重后的分辨率统计:
分辨率 (宽×高)  出现次数
---------------------------
48×48           110324共有 1 种不同的分辨率

PS: test.txt暂时不使用

文末回复对应关键词,可获取制作好的paddle格式训练数据集

2.2 数据校验

在源码PaddleX目录下操作

新建shell执行脚本check_data.sh,内容如下

python main.py -c paddlex/configs/modules/image_classification/PP-LCNet_x1_0.yaml \-o Global.mode=check_dataset \-o Global.dataset_dir=./datasets/mmafedb

执行校验脚本,输出成功信息

# 命令行运行
bash check_data.sh
# 输出如下信息,则校验成功,结果内容可见./output目录
'''
Connecting to https://paddle-model-ecology.bj.bcebos.com/paddlex/PaddleX3.0/fonts/PingFang-SC-Regular.ttf ...
Downloading PingFang-SC-Regular.ttf ...
[==================================================] 100.00%
Check dataset passed !
'''

数据分布直方图,见histogram.png

3、开始训练(重要⭐⭐⭐)

在源码PaddleX目录下操作

新建shell执行脚本run_train.sh,内容如下

python main.py -c paddlex/configs/modules/image_classification/PP-LCNet_x1_0.yaml  \-o Global.mode=train \-o Global.dataset_dir=./datasets/mmafedb \-o Global.device=gpu:0 \-o Train.num_classes=7 \-o Train.epochs_iters=300 \-o Train.batch_size=128 \-o Train.pretrain_weight_path=./pretrain_weight/PP-LCNet_x1_0_pretrained.pdparams \-o Train.log_interval=20 \-o Train.eval_interval=100 \-o Train.save_interval=100
训练启动参数详细说明
参数名数据类型描述示例值
modestr指定模式check_dataset/train/evaluate/export/predicttrain
dataset_dirstr数据集路径./datasets/mmafedb
devicestr指定使用的设备gpu:0
num_classesint数据集中的类别数7
epochs_itersint模型对训练数据的重复学习次数300
batch_sizeint训练批大小128
pretrain_weight_pathstr预训练权重路径./pretrain_weight/PP-LCNet_x1_0_pretrained.pdparams
log_intervalint训练日志打印间隔yaml文件中指定的训练日志打印间隔
eval_intervalint模型评估间隔yaml文件中指定的模型评估间隔
save_intervalint模型保存间隔yaml文件中指定的模型保存间隔

执行训练脚本,结果存储于./output目录

# 命令行运行
bash run_train.sh

训练结束后进入./output目录下操作

可视化指标输出,使用visualdl指令

# 命令行运行
visualdl --logdir ./ --port 8080
### 然后本地浏览器输入地址:http://localhost:8080/,即可访问

样例图如下,见指标趋势图.png

4、开始评估(重要⭐⭐⭐)

在源码PaddleX目录下操作

新建shell执行脚本run_eval.sh,内容如下

python main.py -c paddlex/configs/modules/image_classification/PP-LCNet_x1_0.yaml  \-o Global.mode=evaluate \-o Global.dataset_dir=./datasets/mmafedb \-o Evaluate.weight_path=./output/best_model/best_model.pdparams \-o Evaluate.log_interval=10

PS:在模型评估时,需要指定模型权重文件路径。

在完成模型评估后,(./output目录)会产出evaluate_result.json,其记录了评估的结果,具体来说,记录了评估任务是否正常完成,以及模型的评估指标,包含 val.top1、val.top5,如下内容

{"done_flag": true,"metrics": {"val.top1": 0.57093,"val.top5": 0.927}
}
5、开始推理(重要⭐⭐⭐)

在源码PaddleX目录下操作

新建shell执行脚本run_predict.sh,内容如下

python main.py -c paddlex/configs/modules/image_classification/PP-LCNet_x1_0.yaml \-o Global.mode=predict \-o Predict.model_dir="./output/best_model/inference" \-o Predict.input="./test_imgs/test_001.png"

PS:在模型推理时,需要指定模型权重文件夹路径,包含推理模式下的模型*.pdiparams。

在完成推理预测后,(./output目录)会产出test_001_res.json,其记录了预测的结果,具体来说,记录了预测任务是否正常完成,以及类别得分等,识别结果图如下所示

(额外)模型集成推理

新建代码文件fast_predict.py,内容如下

from paddlex import create_modelmodel_dir = "./output/best_model/inference"model = create_model(model_name="PP-LCNet_x1_0", model_dir=model_dir)output = model.predict("./test_imgs", batch_size=1)
for res in output:res.print(json_format=False)res.save_to_img("./fast_preict_output/")res.save_to_json("./fast_preict_output/res.json")

结果图像保存至./fast_preict_output目录

6、参考资源链接
  • • https://paddlepaddle.github.io/PaddleX/latest/module_usage/tutorials/cv_modules/image_classification.html
  • • https://paddlepaddle.github.io/PaddleX/latest/module_usage/instructions/config_parameters_common.html
7、交流学习

进一步交流学习,促进你我共同进步,可在下方回复联系!祝您前程似锦!

公众号:深瞳智检

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/920220.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/920220.shtml
英文地址,请注明出处:http://en.pswp.cn/news/920220.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mistral AI音频大模型Voxtral解读

1. 引言 传统的语音处理系统(如OpenAI的Whisper)在ASR任务上取得了巨大成功,能将语音高精度地转换为文本。但这只是第一步。真正的“语音理解”意味着: 内容推理:不仅知道说了什么,还能理解话语背后的含义、情感和意图。 长篇摘要:能够听完一段长达数十分钟的播客或会议…

使用Docker+WordPress部署个人博客

一、通过docker compose 自动一键部署WordPress 1. 准备工作 安装 Docker 和 Docker Compose确保服务器有公网 IP(如果需要外部访问)域名(可选,用于绑定网站) 2. 创建 Docker Compose 配置文件 创建一个docker-compose…

http与https配置

Web 服务详解:HTTP 与 HTTPS 配置 一、HTTP 服务概述 HTTP(Hypertext Transfer Protocol,超文本传输协议)是用于在网络上传输网页数据的基础协议,默认使用80 端口,以明文形式传输数据。常见的 HTTP 服务软件…

Python爬虫实战:研究amazon-scrapy,构建亚马逊电商数据采集和分析系统

1 引言 1.1 研究背景 电子商务的高速发展使电商平台成为数据价值的核心载体。亚马逊作为全球领先的电商生态,截至 2024 年第二季度,其平台商品总量突破 1.5 亿,日均活跃用户超 3 亿,每日产生 PB 级的交易数据与用户行为记录。这些数据包含商品特征(价格、规格、品牌)、…

基于ERNIE 4.5的多智能体协作的自动化视频舆情分析报告生成器

多智能体协作的自动化视频舆情分析报告生成器 1. 项目的意义与价值 从“非结构化视频”中挖掘“结构化洞察”的通用挑战 在当今的数字生态中,视频已成为信息传播、知识分享和消费者意见表达的核心媒介。从企业内部的会议录屏、技术培训,到外部的市场宣传…

Java全栈开发面试实录:从基础到实战的深度解析

Java全栈开发面试实录:从基础到实战的深度解析 面试官与应聘者的对话记录 第一轮:基础问题与项目背景 面试官(中年男性,穿着整洁): 你好,欢迎来到我们公司。我是今天的面试官,可以先…

如何清除webview138、139版本软键盘占用的区域

好的,这个问题非常具体且关键。在 Android System WebView 的 138 和 139 版本(基于 Chromium 113)的上下文中,“清除软键盘占用的区域”通常意味着:在软键盘收起后,WebView 的布局或视口没有正确恢复&…

深度学习:卷积神经网络(CNN)

文章目录一、CNN 基础认知1.1 图像在计算机中的存储形式1.2 图像识别的核心需求:画面不变性1.3 传统神经网络的局限二、CNN 核心原理:三大核心层与关键操作2.1 卷积层(1)什么是卷积操作?(2)卷积…

iOS 26 正式版即将发布,Flutter 完成全新 devicectl + lldb 的 Debug JIT 运行支持

在之前的 《Flutter 又双叒叕可以在 iOS 26 的真机上 hotload》 和 《Flutter 在 iOS 真机 Debug 运行出现 Timed out *** to update》 我们聊过,由于 iOS 26 开始,Apple 正式禁止了 Debug 时 mprotect 的 RX 权限,导致了 Flutter 在 Debug 运…

机器学习全流程拆解 _ 从数据到模型的科学之道

-—— 避开80%项目失败的隐形成本,掌握高效建模方法论*📌 一、明确目标:成败的起点 1. 问题定位 分类任务:区分二分类/多分类/多标签分类预测任务:标量预测(如房价)vs 向量预测(如股…

Android 广告轮播全实现:图片与视频混合展示的完整方案

广告轮播是移动应用中提升用户转化率的核心组件,尤其在电商、资讯类应用中应用广泛。传统轮播仅支持图片展示,而现代应用需要兼顾图片和视频内容以增强吸引力。本文将详细讲解如何实现一个支持图片与视频混合播放的高性能广告轮播,涵盖布局设…

AI大模型企业落地指南-笔记01

前言AI技术的发展趋势必然是越来越普及,越来越“技术平权”的。在未来10年内,AI将以各种方式“融入”人类世界,与人类乃至世界深度融合。一. 概念第1章 AI与大模型概述1.1 什么是AI人工智能(全称Artificial Intelligence&#xff…

Linux-孤儿进程和僵死进程

文章目录孤儿进程概述僵死进程概述孤儿进程 概述 父进程运行结束,子进程还在运行,此时,子进程就成了孤儿进程(Orphan Process)每当出现一个孤儿进程的时候,内核就把孤儿进程的父进程设置为 init &#xf…

【Redis 进阶】----主从复制(重点理解流程和原理)

在分布式系统中为了解决单点问题(某个服务器程序只有一个节点(只搞一个物理服务器来部署这个服务器程序)。可用性不高:如果这个机器挂了意味着服务就中断了;性能 / 支持的并发量比较有限)。通常会把数据复制…

【Redisson】redis最佳实践-RedissonUtils+Caffeine

RedissonUtils - 企业级 Redis 缓存工具库 - 二级缓存 项目地址: hhttps://gitee.com/chen934298133/redisson-utils问题反馈: Issues邮箱: chen934298133163.com 📖 项目简介 RedissonUtils 是一个基于 Redisson 的企业级 Redis 缓存工具库,提供了完…

QT(QTableWidget)

QT6QTableWidget QTableWidget是一种Item Widget组件,它以表格形式和管理数据,表格的每个单元格关联一个QTableWidgetItem对象,可以设置每个单元格的文字内容、字体、文字颜色、背景色、图标等,还可以有复选框。每个单元格还可以存…

Sentinel相关记录

系列文章目录 draft Sentinel 是阿里巴巴开源的 轻量级服务防护组件,主要用于实现以下功能:流量控制FlowRule(Rate Limiting):限制单位时间内的请求量,防止系统过载。 熔断降级DegradeRule(Ci…

2025年渗透测试面试题总结-29(题目+回答)

安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 二百四十一、XSS 设置Http-Only如何绕过 二百四十二、XSS攻击手段分类 二百四十三、高杀软覆盖工作组的渗…

如何用Wireshark捕获当前房间路由器和主机的数据包

一、前期工作 在我的这篇文章中: Wireshark USRP联合波形捕获(上)-CSDN博客 通过192.168.1.103这个主机ip筛选Wireshark捕获的数据包,认为Source和Direction中至少一个包含192.168.1.103才能代表路由器和主机之间的WiFi信号。 …

深度解析游戏引擎中的相机:视图矩阵

在现代游戏引擎中,相机系统是不可或缺的一部分。它决定了玩家在游戏中看到的视角和场景。而视图矩阵作为相机系统的核心组件之一,起到了至关重要的作用。本文将深入探讨视图矩阵的原理、计算方法及其在游戏引擎中的应用。 视图矩阵的基本概念 视图矩阵…