基于千問2.5-VL-7B訓練識別人的表情

一、安裝LLaMA-Factory

? ? ? ? 我們使用LLaMA-Factory來進行微調,安裝LLaMA-Factory來參考文章:
大模型微調工具LLaMA-Factory的安裝流程-CSDN博客
?

二、下載千問2.5-VL-7B模型

我們使用千問2.5-VL-7B多模態模型來進行微調
通義千問2.5-VL-7B-Instruct

下載命令(需要先安裝modelscope的依賴,魔塔上有安裝教程):

modelscope download --model Qwen/Qwen2.5-VL-7B-Instruct

三、數據集

????????在微調之前準備數據集,我們使用Kaggle平臺上開放的數據集FER-2013,該數據集包含了大量的人臉表情圖片,并做了對應的表情標注。

????????數據地址:FER-2013 | Kaggle

? ? ? ? 數據下載后需要構建訓練集和驗證集的json格式文件,包括圖片的路徑和情感標簽。
下面是處理數據的腳本:

import json
import os
from pathlib import Path# 定義消息對象
class Message:def __init__(self, role, content):self.role = roleself.content = content# 定義對話組對象
class ConversationGroup:def __init__(self, messages, images):self.messages = messagesself.images = imagesdef to_dict(self):return {"messages": [msg.__dict__ for msg in self.messages],"images": self.images}def get_file_paths(directory):"""獲取指定目錄下所有文件夾中的文件路徑:param directory: 要掃描的根目錄:return: 包含所有文件路徑的列表"""file_paths = []# 檢查目錄是否存在if not os.path.exists(directory):print(f"錯誤:目錄 '{directory}' 不存在")return file_paths# 遍歷目錄下的所有項目for item in os.listdir(directory):item_path = os.path.join(directory, item)# 只處理文件夾(忽略文件)if os.path.isdir(item_path):# 遍歷文件夾中的所有文件for file in os.listdir(item_path):file_path = os.path.join(item_path, file)# 只添加文件(忽略子文件夾)if os.path.isfile(file_path):file_paths.append(file_path)return file_pathsdef get_path_dir_info(path_file):new_path = "archive" + path_file.split("archive")[1]path_n = Path(new_path)# 獲取上一級目錄名parent_dir_name = path_n.parent.namereturn new_path, parent_dir_nameemotion = {"angry":"生氣/憤怒","disgust":"厭惡","fear":"害怕/恐懼","happy":"開心/快樂","neutral":"平靜","sad":"悲傷/難過","surprise":"驚訝/驚奇"
}
if __name__ == '__main__':all_files = get_file_paths("/Users/youngwea/Downloads/archive/train")print(all_files)output_data = []for file in all_files:new_path , dir_name = get_path_dir_info(file)user_message = Message("user", "<image>是什么表情?")assistant_message = Message("assistant", emotion.get(dir_name))conversation = ConversationGroup(messages=[user_message, assistant_message],images=[new_path])output_data.append(conversation.to_dict())json_output = json.dumps(output_data, indent=2, ensure_ascii=False)with open('../data/qwen2.5-vl-train-data.json', 'w', encoding='utf-8') as file:file.write(json_output)

處理好的數據集需要復制到LLaMA-Factory的工程項目的/data目錄中去,再在dataset_info.json文件中添加數據文件。

三、訓練配置:

訓練輪數為3的時候,對識別表情不太準確。增大后準確率高點。


訓練腳本:

llamafactory-cli train \--stage sft \--do_train True \--model_name_or_path xxx/modelscope/hub/models/Qwen/Qwen2.5-VL-7B-Instruct \--preprocessing_num_workers 16 \--finetuning_type lora \--template qwen2_vl \--flash_attn auto \--dataset_dir data \--dataset qwen2.5-vl-train-data \--cutoff_len 2048 \--learning_rate 5e-05 \--num_train_epochs 5.0 \--max_samples 100000 \--per_device_train_batch_size 2 \--gradient_accumulation_steps 8 \--lr_scheduler_type cosine \--max_grad_norm 1.0 \--logging_steps 5 \--save_steps 100 \--warmup_steps 0 \--packing False \--enable_thinking True \--report_to none \--output_dir saves/Qwen2.5-VL-7B-Instruct/lora/train_qwen2.5-vl-_2025-07-31-14-02-45 \--bf16 True \--plot_loss True \--trust_remote_code True \--ddp_timeout 180000000 \--include_num_input_tokens_seen True \--optim adamw_torch \--lora_rank 8 \--lora_alpha 16 \--lora_dropout 0 \--lora_target all \--freeze_vision_tower True \--freeze_multi_modal_projector True \--freeze_language_model False \--image_max_pixels 589824 \--image_min_pixels 1024 \--video_max_pixels 65536 \--video_min_pixels 256

?推薦一個非常好用的工具集合:在線工具集合 - 您的開發助手

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/93702.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/93702.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/93702.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android屏幕適配:從dp到px的轉換與今日頭條適配方案詳解

前言 在Android開發中&#xff0c;屏幕適配一直是一個重要且復雜的話題。不同設備有著不同的屏幕尺寸、分辨率和像素密度&#xff0c;如何讓應用在各種設備上都能良好顯示&#xff0c;是每個開發者都需要面對的問題。本文將深入探討Android系統中dp到px的轉換原理&#xff0c;并…

nvim 縮進4空格

要把 Neovim 配置為縮進 4 空格&#xff0c;并適用于所有語言&#xff08;或某些語言如 C/C&#xff09;&#xff0c;你只需要設置這三個核心選項即可&#xff1a;? 通用方式&#xff1a;在 init.lua 或 options.lua 中添加 vim.opt.tabstop 4 -- 一個 <Tab> 等…

pdw估計edw怎么估計

問題一、pdw估計edw怎么估計PDW&#xff08;Pulse Descriptor Word&#xff09;數據是雷達接收到的每一個脈沖的瞬時特征數據&#xff0c;EDW&#xff08;Emitter Descriptor Word&#xff09;是對某一輻射源&#xff08;發射機&#xff09;整體特性的估計。PDW 是每一個脈沖的…

TS語法最佳實踐

switch 的 case不能使用條件表達式JavaScript 允許在 switch 的 case 中使用條件表達式&#xff0c;但這種用法實際上是無效的&#xff0c;因為 case 的值會被隱式地轉換為布爾值。TypeScript 明確禁止這種用法&#xff0c;以避免隱式類型轉換導致的邏輯錯誤。建議使用 if-else…

行業熱點丨仿真歷史數據難以使用?如何利用幾何深度學習破局,加速汽車工程創新

01、AI 驅動研發升級&#xff1a;幾何深度學習創造行業新價值人工智能正加速推動各行業研發能力升級。麥肯錫最新報告顯示&#xff0c;該技術在制藥、化工和航空航天等領域的應用&#xff0c;有望為相關企業創造高達5600億美元的經濟價值。 AI 技術應用的先行者&#xff0c;全球…

JSBridge原理與實現全解析

JSBridge 是用于連接 JavaScript&#xff08;H5&#xff09; 和原生應用&#xff08;iOS/Android&#xff09;的橋梁&#xff0c;允許它們之間相互調用方法。 &#x1f309; 一、JSBridge 雙向通信流程圖 #mermaid-svg-AoDVdJL2VJBnTJ2Q {font-family:"trebuchet ms"…

Mockito:Java單元測試Mock框架

文章目錄一、寫在前面1、簡介2、依賴二、使用1、基本使用2、注解&#xff08;1&#xff09;開啟注解&#xff08;2&#xff09;Mock 注解&#xff08;3&#xff09;DoNotMock 注解&#xff08;4&#xff09;Spy 注解&#xff08;5&#xff09;Captor 注解&#xff08;6&#xf…

群暉Synology Drive:打造高效安全的私有云協作平臺

隨著企業與個人對數據協作、安全與自主性的需求不斷提升&#xff0c;群暉&#xff08;Synology&#xff09;推出的 Synology Drive 成為了私人云存儲與團隊協作的利器。下面將從功能亮點、使用方式、安全管理、適用場景等角度&#xff0c;為你全面解讀這款強大的私有云方案。Sy…

開發避坑短篇(11):Oracle DATE(7)到MySQL時間類型精度沖突解決方案

異常信息 [Err] [Dtf] 1426 - Too-big precision 7 specified for CREATE_TIME. Maximum is 6.異常背景 用Navicat的數據傳輸功能進行oracle的數據表遷移到到mysql時報錯。 異常分析 oracle的DATE類型的長度是7位&#xff0c;而mysql的datetime類型的長度最多6位&#xff0c;所…

怎么判斷一個DAPP是否真正去中心化

判斷一個DAPP&#xff08;去中心化應用&#xff09;是否真正去中心化&#xff0c;需要從多個維度進行考察。以下是關鍵評估標準&#xff1a;1. 區塊鏈依賴程度? 真正去中心化&#xff1a;核心邏輯和數據處理完全依賴智能合約&#xff0c;運行在區塊鏈上&#xff08;如以太坊、…

F12 開發者工具 使用指北

F12 開發者工具 使用指北元素 Elements控制臺 Console源代碼 Sources網絡 Network請求文件具體說明首先介紹Chrome開發者工具中&#xff0c;調試時使用最多的三個功能頁面是&#xff1a;元素&#xff08;ELements&#xff09;、控制臺&#xff08;Console&#xff09;、源代碼&…

AD域設計與管理-域策略-進階

AD域安全保密要求&#xff0c;也是最為常見的一些組策略配置需求 目錄 1.禁止U盤&#xff0c;DVD&#xff0c;軟盤等可移動存儲使用 2.禁止員工自行安裝軟件 3.硬盤全部采用bitlocker上鎖&#xff0c;密碼保存至AD域控 4.密碼復雜度要求 5.開啟windows防火墻且不允許員工…

Python設計模式詳解:策略模式(Strategy Pattern)實戰指南

Python設計模式詳解&#xff1a;策略模式實戰指南什么是策略模式&#xff1f;核心組件基礎實現利用Python特性的高級實現使用裝飾器的策略模式策略模式的優勢策略模式的適用場景實際應用案例&#xff1a;電商折扣系統注意事項總結在面向對象編程中&#xff0c;設計模式為常見問…

一次 web 請求響應中,通常那個部分最耗時?

文章目錄一次Web請求的完整旅程1. DNS解析2. TCP連接建立3. 發送HTTP請求4. 服務器處理5. 服務器響應6. 瀏覽器渲染哪個環節通常最耗時&#xff1f;1. 數據庫查詢2. 外部API調用3. 復雜的業務邏輯如何優化各個環節&#xff1f;1. 數據庫優化2. 緩存策略3. 異步處理總結一次Web請…

IO流-概述和體系

1.什么是I0流?存儲和讀取數據的解決方案|: input 0: output流:像水流一樣傳輸數據2.10流的作用?用于讀寫數據(本地文件&#xff0c;網絡)3. I0流按照流向可以分類哪兩種流?輸出流:程序-->文件輸入流:文件-->程序4. I0流按照操作文件的類型可以分類哪兩種流?…

提高建筑舒適度與能源效率,樓宇自控系統意義重大

隨著城市化進程的加速和人們對建筑環境要求的不斷提高&#xff0c;如何在保證建筑舒適度的同時提升能源效率&#xff0c;成為建筑行業面臨的重要課題。樓宇自控系統&#xff08;Building Automation System&#xff0c;簡稱BAS&#xff09;作為現代智能建筑的核心組成部分&…

學習筆記《區塊鏈技術與應用》第4天 比特幣腳本語言

輸入0.7 輸出0.5 23個確認 不太可能回滾了交易id hash值 版本 locktime 交易剩下時間&#xff1a;0立即生效 confirmation:確認信息 time&#xff1a;產生時間 blocktime&#xff1a;塊產生時間vout: 交易中第0個輸入 scriptSig&#xff1a;輸入腳本&#xff08;input script)n…

3.Linux 系統文件類型與文件權限

1.文件類型Linux 下所有的東西都可以看做文件&#xff0c;Linux 將文件分為以下幾種類型&#xff1a;普通文件 ‘-’目錄文件 ‘d’管道文件 ‘p’鏈接文件 ‘l’設備文件&#xff08;塊設備 ’b’ 、字符設備 ‘c’&#xff09;套接字文件 ‘s’Linux 上不以文件的擴展名區別文…

訂單識別技術原理及場景應用

訂單OCR&#xff08;光學字符識別&#xff09;技術通過圖像處理和深度學習算法&#xff0c;將紙質或電子版訂單中的文字信息轉化為結構化數據。以下是其技術原理和典型應用場景的詳細解析&#xff1a;一、技術原理剖析1. 核心處理流程圖像預處理去噪&#xff1a;消除陰影、折痕…

[優選算法]復寫零

題目鏈接 LeetCode復寫零 題目描述 題目解析 一、問題理解 題目要求&#xff1a;給定一個整數數組 arr&#xff0c;在不創建新數組的情況下&#xff0c;將每個出現的 0 復寫一遍&#xff08;即一個 0 變成兩個 0&#xff09;&#xff0c;同時保持其他元素的相對順序不變。復…