基于Ubuntu22.04系統PaddleX和PaddleClas訓練推理MMAFEDB人臉表情識別數據集(詳細教程)

目錄

基于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信號。 …

深度解析游戲引擎中的相機:視圖矩陣

在現代游戲引擎中,相機系統是不可或缺的一部分。它決定了玩家在游戲中看到的視角和場景。而視圖矩陣作為相機系統的核心組件之一,起到了至關重要的作用。本文將深入探討視圖矩陣的原理、計算方法及其在游戲引擎中的應用。 視圖矩陣的基本概念 視圖矩陣…