Python----目標檢測(使用YOLOV8網絡訓練人臉)

?一、Ultralytics安裝

網址:主頁 -Ultralytics YOLO 文檔

????????Ultralytics提供了各種安裝方法,包括pip、conda和Docker。通過 ultralytics pip包安裝最新穩定版本的YOLOv8,或克隆Ultralytics GitHub 存儲庫以獲取最新版本。可以使用Docker在隔離的容器中執行包,避免本 地安裝。

pip install ultralytics==8.2.28 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install git+https://github.com/ultralytics/ultralytics.git@main

注意:ultralytics需要PyTorch支持。

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

二、目錄

dataset├─train│  ├─images│  └─labels├─test│  ├─images│  └─labels└─mydata.yaml

?配置文件

# peach
train: /home/YoloV_/ultralytics-main/dataset/train
val: /home/YoloV_/ultralytics-main/dataset/valid# Classes
names:0: face

三、訓練模型?

指令訓練

yolo train model=yolov8n.pt data=./dataset/mydata.yaml epochs=50 batch=32 imgsz=640

訓練結果?

?

?

?

四、訓練參數??

論據默認值說明
modelNone指定用于訓練的模型文件。接受指向預訓練模型 .pt 文件或 .yaml 配置文件的路徑。對于定義模型結構或初始化權重至關重要。
dataNone數據集配置文件的路徑(例如 coco8.yaml)。該文件包含特定于數據集的參數,包括訓練數據和驗證數據的路徑、類名和類數。
epochs100訓練歷元總數。每個歷元代表對整個數據集進行一次完整的訓練。調整該值會影響訓練時間和模型性能。
timeNone最長訓練時間(小時)。如果設置了該值,則會覆蓋 epochs 參數,允許訓練在指定的持續時間后自動停止。對于時間有限的訓練場景非常有用。
patience0在驗證指標沒有改善的情況下,提前停止訓練所需的歷元數。當性能趨于平穩時停止訓練,有助于防止過擬合。
batch16Batch size, with three modes: set as an integer (e.g., batch=16), auto mode for 60% GPU memory utilization (batch=-1), or auto mode with specified utilization fraction (batch=0.70).
imgsz640用于訓練的目標圖像尺寸。所有圖像在輸入模型前都會被調整到這一尺寸。影響模型精度和計算復雜度。
saveTrue可保存訓練檢查點和最終模型權重。這對恢復訓練或模型部署非常有用。
save_period-1保存模型檢查點的頻率,以 epochs 為單位。值為 -1 時將禁用此功能。該功能適用于在長時間訓練過程中保存臨時模型。
cacheFalse在內存中緩存數據集圖像 (True/ram)、磁盤 (disk),或禁用它 (False)。通過減少磁盤 I/O 提高訓練速度,但代價是增加內存使用量。
deviceNone指定用于訓練的計算設備:單個 GPU (device=0)、多個 GPU (device=0,1)、CPU (device=cpu),或蘋果芯片的 MPS (device=mps).
workers8加載數據的工作線程數(每個 RANK 多 GPU 訓練)。影響數據預處理和輸入模型的速度,尤其適用于多 GPU 設置。
projectNone保存訓練結果的項目目錄名稱。允許有組織地存儲不同的實驗。
nameNone訓練運行的名稱。用于在項目文件夾內創建一個子目錄,用于存儲訓練日志和輸出結果。
exist_okFalse如果為 True,則允許覆蓋現有的項目/名稱目錄。這對迭代實驗非常有用,無需手動清除之前的輸出。
pretrainedTrue決定是否從預處理模型開始訓練。可以是布爾值,也可以是加載權重的特定模型的字符串路徑。提高訓練效率和模型性能。
optimizer'auto'為培訓選擇優化器。選項包括 SGD, Adam, AdamW, NAdam, RAdam, RMSProp 等, 或 auto 用于根據模型配置進行自動選擇。影響收斂速度和穩定性。
verboseFalse在訓練過程中啟用冗長輸出,提供詳細日志和進度更新。有助于調試和密切監控培訓過程。
seed0為訓練設置隨機種子,確保在相同配置下運行的結果具有可重復性。
deterministicTrue強制使用確定性算法,確保可重復性,但由于對非確定性算法的限制,可能會影響性能和速度。
single_clsFalse在訓練過程中將多類數據集中的所有類別視為單一類別。適用于二元分類任務,或側重于對象的存在而非分類。
rectFalse可進行矩形訓練,優化批次組成以減少填充。這可以提高效率和速度,但可能會影響模型的準確性。
cos_lrFalse利用余弦學習率調度器,根據歷時的余弦曲線調整學習率。這有助于管理學習率,實現更好的收斂。
close_mosaic10在訓練完成前禁用最后 N 個歷元的馬賽克數據增強以穩定訓練。設置為 0 則禁用此功能。
resumeFalse從上次保存的檢查點恢復訓練。自動加載模型權重、優化器狀態和歷時計數,無縫繼續訓練。
ampTrue啟用自動混合精度 (AMP) 訓練,可減少內存使用量并加快訓練速度,同時將對精度的影響降至最低。
fraction1.0指定用于訓練的數據集的部分。允許在完整數據集的子集上進行訓練, 這對實驗或資源有限的情況非常有用。
profileFalse在訓練過程中, 可對 ONNX 和 TensorRT 速度進行剖析, 有助于優化模型部署。
freezeNone凍結模型的前 N 層或按索引指定的層, 從而減少可訓練參數的數量。微調或遷移學習非常有用。
lr00.01初始學習率 (即 SGD=1E-2, Adam=1E-3). 調整這個值對優化過程至關重要, 會影響模型權重的更新速度。
lrf0.01最終學習率占初始學習率的百分比 = (lr0 * lrf), 與調度程序結合使用, 隨著時間的推移調整學習率。
momentum0.937用于 SGD 的動量因子, 或用于 Adam 優化器的 beta1, 用于將過去的梯度納入當前更新。
weight_decay0.0005L2 正則化項, 對大權重進行懲罰, 以防止過度擬合。
warmup_epochs3.0學習率預熱的歷元數, 學習率從低值逐漸增加到初始學習率, 以在早期穩定訓練。
warmup_momentum0.8熱身階段的初始動力, 在熱身期間逐漸調整到設定動力。
warmup_bias_lr0.1熱身階段的偏置參數學習率,有助于 穩定初始歷元的模型訓練。
box7.5損失函數中邊框損失部分的權重,影 響對準確預測邊框坐標的重視程度
cls0.5分類損失在總損失函數中的權重,影 響正確分類預測相對于其他部分的重 要性。
dfl1.5分布焦點損失權重,在某些YOLO 版 本中用于精細分類。
pose12.0姿態損失在姿態估計模型中的權重, 影響著準確預測姿態關鍵點的重點。
kobj2.0姿態估計模型中關鍵點對象性損失的 權重,平衡檢測可信度與姿態精度。
label_smoothing0.0應用標簽平滑,將硬標簽軟化為目標 標簽和標簽均勻分布的混合標簽,可 以提高泛化效果。
nbs64用于損耗正常化的標稱批量大小。
overlap_maskTrue決定在訓練過程中分割掩碼是否應該 重疊,適用于實例分割任務。
mask_ratio4分割掩碼的下采樣率,影響訓練時使用的掩碼分辨率。
dropout0.0分類任務中正則化的丟棄率,通過在 訓練過程中隨機省略單元來防止過擬 合。
valTrue可在訓練過程中進行驗證,以便在單 獨的數據集上對模型性能進行定期評 估。
plotsFalse生成并保存訓練和驗證指標圖以及預 測示例圖,以便直觀地了解模型性能 和學習進度。

batch大小設置方案:?

????????固定 Batch Size:設置固定值 (例如: batch=16)。

????????自動模式 (60%的GPU顯存占用):使用 batch=-1 自動調整batch 大小,實現大約60%的CUDA內存占用。

????????帶有使用分數值的自動模式:通過設置一個分數值(例如, batch=0.70),來根據指定的GPU內存使用分數調整批處理大小

五、增強設置和超參數?

????????增強技術通過在訓練數據中引入可變性,幫助模型更好地泛化到未見數據 中,對提高YOLO 模型的穩健性和性能至關重要。下表概述了每種增強參 數的目的和效果:

論據默認值說明
hsv_h0.015圖像色調中的最大變化。
hsv_s0.7圖像飽和度的最大變化。
hsv_v0.4圖像值 (亮度) 的最大變化。
degrees0.0圖像旋轉的最大角度。
translate0.1圖像平移的最大比例 (按圖像尺寸)。
scale0.5圖像比例的最大變化。
shear0.0圖像剪切的最大量。
perspective0.0圖像透視變換的最大失真。
mosaic1.0啟用馬賽克數據增強,這是一種將多個訓練圖像組合成一個圖像以提高對象變化的方法。
mixup0.0啟用 mixup 數據增強,這是一種將圖像和標簽混合在一起以正則化模型的方法。
copy_paste0.0啟用復制粘貼數據增強,這是一種將對象從一個圖像隨機復制到另一個圖像的方法。

????????這些設置可根據數據集和手頭任務的具體要求進行調整。試驗不同的值有 助于找到最佳的增強策略,從而獲得最佳的模型性能。?

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

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

相關文章

Filament引擎(三) ——引擎渲染流程

通過Filament引擎(二) ——引擎的調用及接口層核心對象的介紹我們知道,要在項目中使用filament,首先我們需要構建出filament的Engine的對象,然后通過filament::Engine對象實例,來構建其他對象,組裝渲染場景&#xff0c…

Oracle存儲過程導出數據到Excel:全面實現方案詳解

技術背景與需求分析 數據導出是企業級應用的核心功能,Oracle存儲過程因其高性能執行(減少網絡傳輸)、代碼復用性(封裝業務邏輯)和事務安全性(ACID保障)成為理想載體。Excel作為使用率$ \geq 95% $的辦公工具,其兼容性需求尤為突出。典型場景包括: 財務報表自動生成物…

解決el-table右下角被擋住部分

一部分展示不全&#xff0c;被遮擋&#xff0c;因為 最右邊加了fixed"right"<el-table-column fixed"right" label"操作" width"120">解決&#xff1a;1、去除fixed"right"或2、設置樣式單頁面<style lang"sc…

Waiting for server response 和 Content Download

在瀏覽器網絡調試&#xff08;如 Chrome DevTools 的 Network 面板&#xff09;中&#xff0c;Timing 選項卡下的 Waiting for server response 和 Content Download 是兩個關鍵性能指標&#xff0c;它們分別代表了 HTTP 請求生命周期的不同階段。以下是詳細解釋和優化方案&…

《Java Web程序設計》實驗報告五 Java Script學習匯報

目 錄 一、實驗目的 二、實驗環境 三、實驗步驟和內容 1、小組成員分工&#xff08;共計4人&#xff09; 2、實驗方案 3、實驗結果與分析 Ⅰ、簡述JavaScript的產生過程與Java的關系 Ⅱ、簡述JavaScript的特點有哪些 Ⅲ、簡述ECMAScript的歷史 Ⅳ、簡述ECMAScript與J…

C#與FX5U進行Socket通信

實現效果實現步驟&#xff1a;注意&#xff1a;詳細的參數這里就不說明了&#xff0c;自己網上搜即可&#xff1b;打開GX Works3 創建FX5U項目系統參數設置PLC的具體型號&#xff08;我有實物PLC&#xff09;設置IP及組態參數添加通訊設備&#xff08;這里PLC做客戶端&#xff…

ubuntu20.04基于tensorRT和c++跑yolo11

設備 系統&#xff1a;Ubuntu 20.04 顯卡&#xff1a;NVIDIA GeForce RTX 3050 顯卡驅動&#xff1a; Driver Version: 535.183.01 CUDA Version: 12.2 關鍵軟件版本總結 Cmake: 3.28.6 Cuda&#xff1a; 12.2.2 Cudnn: 8.9.7 TensorRT: 10.8.0.43 Python&#xff1a;3.10.1…

玖玖NFT數字藏品源碼(源碼下載)

玖玖NFT數字藏品源碼 這套還是很不錯的&#xff0c;前端uniapp&#xff0c;后端FastAdmin&#xff0c;對接匯元支付&#xff0c;富友支付&#xff0c;對接avata鏈&#xff0c;感興趣的自行下載研究 源碼下載&#xff1a;https://download.csdn.net/download/m0_66047725/9133…

【Redis-05】高可用方案-主從哨兵

1 概述 高可用&#xff08;High Availability&#xff09;指系統在部分節點故障時仍能持續提供服務的能力。Redis 作為核心緩存組件&#xff0c;主流的高可用方案有主從復制、哨兵模式、集群模式三種。本文介紹主從復制、哨兵模式兩種高可用方案。 2 主從復制 通過 “一主多從”…

焊接機器人智能節氣裝置

工業焊接作為現代制造業的重要組成部分&#xff0c;廣泛應用于汽車、航空航天、建筑、船舶等多個領域。隨著自動化技術的快速發展&#xff0c;焊接機器人已成為提升焊接效率和質量的關鍵裝備。在傳統焊接及部分自動化焊接過程中&#xff0c;氣體流失問題仍然普遍存在&#xff0…

【6.1.0 漫畫數據庫技術選型】

漫畫數據庫技術選型 &#x1f3af; 學習目標&#xff1a;掌握架構師核心技能——數據庫技術選型&#xff0c;針對不同業務場景選擇最合適的數據庫方案 &#x1f3db;? 第一章&#xff1a;關系型數據庫對比選型 &#x1f914; MySQL vs PostgreSQL vs TiDB 想象數據庫就像不同…

CVE-2022-4262/CVE-2022-3038

CVE-2022-4262&#xff08;Linux內核UAF漏洞&#xff09;漏洞原理CVE-2022-4262是Linux內核中RDS&#xff08;Reliable Datagram Sockets&#xff09;協議實現的一個UAF&#xff08;Use-After-Free&#xff0c;釋放后使用&#xff09;漏洞。具體來說&#xff1a;在rds_rdma_ext…

[Token]Token merging for Vision Generation

Token Compression for Vision Domain_Generation 文章目錄Image GenerationToken Merging for Fast Stable Diffusion, CVPRW 2023.Token Fusion: Bridging the Gap between Token Pruning and Token Merging, WACV 2024ToDo: Token Downsampling for Efficient Generation of…

React封裝過哪些組件-下拉選擇器和彈窗表單

背景&#xff08;S - Situation&#xff09;&#xff1a;在某活動管理系統中&#xff0c;前端頁面需要支持用戶選擇“要配置的當前活動”&#xff0c;并提供「新增」「編輯」功能&#xff0c;操作內容包括填寫活動名稱、ID、版本號等字段。原始實現邏輯分散、復用性差&#xff…

多租戶架構下的多線程處理實踐指南

在現代 SaaS 系統中&#xff0c;多租戶架構&#xff08;Multi-Tenant Architecture&#xff09;已成為主流。然而&#xff0c;隨著系統性能要求的提升和業務復雜度的增加&#xff0c;多線程成為不可避免的技術手段。但在多租戶環境下使用多線程&#xff0c;容易引發數據錯亂、租…

MyBatis插件機制揭秘:從攔截器開發到分頁插件實戰

一、攔截器體系架構解析 1.1 責任鏈模式在MyBatis中的實現 MyBatis通過動態代理技術構建攔截器鏈&#xff0c;每個插件相當于一個切面&#xff1a; // 攔截器鏈構建過程 public class InterceptorChain {private final List<Interceptor> interceptors new ArrayList<…

百度文心一言開源ERNIE-4.5深度測評報告:技術架構解讀與性能對比

目錄一、技術架構解讀1.1、ERNIE 4.5 系列模型概覽1.2、模型架構解讀1.2.1、異構MoE&#xff08;Heterogeneous MoE&#xff09;1.2.2、視覺編碼器&#xff08;Vision Encoder&#xff09;1.2.3、適配器&#xff08;Adapter&#xff09;1.2.4、多模態位置嵌入&#xff08;Multi…

Matplotlib 模塊入門

Python 中有個非常實用的可視化庫 ——Matplotlib。數據可視化是數據分析中不可或缺的環節&#xff0c;而 Matplotlib 作為 Python 的 2D 繪圖庫&#xff0c;能幫助我們生成高質量的圖表&#xff0c;讓數據更直觀、更有說服力。接下來&#xff0c;我們將從 Matplotlib 的概述、…

LeetCode 3169.無需開會的工作日:排序+一次遍歷——不需要正難則反,因為正著根本不難

【LetMeFly】3169.無需開會的工作日&#xff1a;排序一次遍歷——不需要正難則反&#xff0c;因為正著根本不難 力扣題目鏈接&#xff1a;https://leetcode.cn/problems/count-days-without-meetings/ 給你一個正整數 days&#xff0c;表示員工可工作的總天數&#xff08;從第…

VUE3 el-table 主子表 顯示

在Vue 3中&#xff0c;實現主子表&#xff08;主從表&#xff09;的顯示通常涉及到兩個組件&#xff1a;一個是主表&#xff08;Master Table&#xff09;&#xff0c;另一個是子表&#xff08;Detail Table&#xff09;。我們可以使用el-table組件來實現這一功能。這里&#x…