自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

YOLOv9 在自定義數(shù)據(jù)集上進行目標檢測 | 計算機視覺項目

開發(fā)
本文我們將深入了解 YOLOv9 的工作原理以及如何使用自定義數(shù)據(jù)集在你的項目中實現(xiàn)它。

在快速發(fā)展的計算機視覺領域,目標檢測是一個基石應用程序。在眾多的目標檢測算法中,YOLOv9已經(jīng)成為一個強大且多功能的解決方案,提供了實時檢測能力,并具有令人印象深刻的準確性。在這篇全面的指南中,我們將探索在自定義數(shù)據(jù)集上訓練YOLOv9的過程,并在測試數(shù)據(jù)上進行推理。

通過本教程的學習,你將深入了解YOLOv9的工作原理以及如何使用自定義數(shù)據(jù)集在你的項目中實現(xiàn)它。那么,讓我們開始一起探索YOLOv9的強大功能吧!

激活函數(shù)系列

  • Softmax激活函數(shù)
  • Sigmoid/Logistic激活函數(shù)
  • 雙曲正切(Tanh)激活函數(shù)
  • 修正線性單元(ReLU)激活函數(shù)

數(shù)據(jù)集:https://www.kaggle.com/datasets/snehilsanyal/construction-site-safety-image-dataset-roboflow

克隆YOLOv9倉庫

!git clone https://github.com/SkalskiP/yolov9.git

讓我們使用git clone命令從GitHub克隆YOLOv9倉庫,并開始探索使用YOLOv9進行實時目標檢測。Git是一個版本控制系統(tǒng),允許開發(fā)人員跟蹤他們的代碼庫的更改,與他人協(xié)作和管理項目歷史。

克隆過程完成后,我們將在機器上擁有YOLOv9倉庫的本地副本。這將使我們能夠探索代碼庫,進行修改,并使用YOLOv9算法進行我們自己的目標檢測任務。

dataDir = '/content/css-data/' # css-data is the unzip path of the dataset
workingDir = '/content/' # Working Dir in google colab

在這里,我們?yōu)轫椖吭O置目錄路徑。變量dataDir保存我們CSS(建筑工地安全)數(shù)據(jù)存儲的目錄路徑。我們將其設置為'/content/css-data/',表明我們的CSS數(shù)據(jù)集文件位于'/content/'目錄內(nèi)的名為'css-data'的目錄中。

接下來,我們有變量workingDir,它定義了我們工作目錄的路徑。

num_classes = 10
classes = ['Hardhat', 'Mask', 'NO-Hardhat', 'NO-Mask', 'NO-Safety Vest', 'Person', 'Safety Cone', 'Safety Vest', 'machinery', 'vehicle']

定義了兩個變量:

  • num_classes設置為整數(shù)值10,表示分類任務中的類別數(shù)。
  • classes是一個包含10個字符串元素的列表,代表不同的類別:'Hardhat'(安全帽)、'Mask'(口罩)、'NO-Hardhat'(無安全帽)、'NO-Mask'(無口罩)、'NO-Safety Vest'(無安全背心)、'Person'(人員)、'Safety Cone'(安全錐)、'Safety Vest'(安全背心)、'machinery'(機械)和'vehicle'(車輛)。

import yaml
import os

file_dict = {
    'train': os.path.join(dataDir, 'train'),
    'val': os.path.join(dataDir, 'valid'),
    'test': os.path.join(dataDir, 'test'),
    'nc': num_classes,
    'names': classes
}
with open(os.path.join(workingDir,'yolov9', 'data.yaml'), 'w+') as f:
  yaml.dump(file_dict, f)

定義了一個名為file_dict的字典,包含以下鍵值對:

  • ‘train’:訓練數(shù)據(jù)目錄的路徑,通過連接‘dataDir’變量和‘train’形成。
  • ‘val’:驗證數(shù)據(jù)目錄的路徑,通過連接‘dataDir’變量和‘valid’形成。
  • ‘test’:測試數(shù)據(jù)目錄的路徑,通過連接‘dataDir’變量和‘test’形成。
  • ‘nc’:類別數(shù),來源于‘num_classes’變量。
  • ‘names’:類別名稱列表,來源于‘classes’變量。

在‘workingDir/yolov9’目錄內(nèi)以寫入模式打開名為‘data.yaml’的文件。使用YAML格式將file_dict字典的內(nèi)容寫入'data.yaml'文件。如果文件不存在,則創(chuàng)建一個新文件。

下載YOLOv9權(quán)重

!wget  https://github.com/WongKinYiu/yolov9/releases/download/v0.1/yolov9-e.pt

我們現(xiàn)在正在獲取YOLOv9的預訓練權(quán)重文件。使用!wget,我們可以直接從網(wǎng)絡環(huán)境中檢索文件。

在這個命令中,我們正在下載名為yolov9-c.pt的文件,該文件來自托管在GitHub上的YOLOv9倉庫的v0.1版本。這些預訓練權(quán)重對于使用學習到的參數(shù)初始化我們的YOLOv9模型至關(guān)重要,使其能夠準確檢測對象。

下載完成后,我們將能夠使用這些權(quán)重來微調(diào)我們的自定義數(shù)據(jù)集進行目標檢測任務,節(jié)省了從頭開始訓練模型所需的時間和計算資源。

cd yolov9

現(xiàn)在,讓我們導航到‘yolov9’目錄?!畒olov9’是我們剛剛從GitHub克隆的倉庫。這樣做,我們將獲得‘yolov9’模型的代碼,我們將用于在自定義數(shù)據(jù)集上訓練yolov9模型。

!pip install -r requirements.txt -q

接下來,我們使用pip包管理器安裝項目所需的Python包和依賴項。!pip install命令允許我們從Python包索引(PyPI)或指定的要求文件安裝Python包。

在這里,-r requirements.txt告訴pip安裝'requirements.txt'文件中列出的所有包。該文件包含訓練yolov9模型所必需的Python庫列表。

-q標志代表'quiet'模式,這意味著pip將在沒有錯誤的情況下靜默執(zhí)行安裝過程,不會顯示詳細輸出。這有助于保持安裝過程的簡潔明了,特別是在腳本或自動化任務中。

!python train_dual.py --workers 8 --batch 4  --img 640 --epochs 50 --data /content/yolov9/data.yaml --weights /content/yolov9-e.pt --device 0 --cfg /content/yolov9/models/detect/yolov9.yaml --hyp /content/yolov9/data/hyps/hyp.scratch-high.yaml

這個命令啟動了YOLOv9模型的訓練過程。但在執(zhí)行單元格之前,我們需要修改兩個參數(shù),第一個參數(shù)是—data,我們將在—data參數(shù)中傳遞上面創(chuàng)建的data.yaml文件路徑,第二個參數(shù)是—cfg,我們需要對yolov9.yaml文件進行一些更改,因為這個原始的yolov9.yaml文件是為COCO數(shù)據(jù)集配置的,COCO數(shù)據(jù)集包含80個類別,而我們的自定義數(shù)據(jù)集有10個類別,所以我們需要在yolov9.yaml中調(diào)整nc參數(shù)并傳遞nc=10,因為我們有10個類別,而不是80,我希望你明白我的意思—hyp包含模型的超參數(shù),我們不需要修改它,所以保持原樣。

現(xiàn)在讓我們使用!python train_dual.py微調(diào)我們的自定義數(shù)據(jù)集上的yolov9模型:

  • --workers 8:這個參數(shù)指定了訓練期間數(shù)據(jù)預處理的數(shù)據(jù)加載工作器的數(shù)量。更高的數(shù)字可以加快數(shù)據(jù)加載和預處理的速度。
  • --batch 4:這個參數(shù)設置了訓練的批次大小。批次大小決定了每次訓練迭代中使用的樣本數(shù)量。
  • --img 640:這個參數(shù)指定了訓練的輸入圖像大小。在這種情況下,圖像將在訓練期間調(diào)整為640像素的高度和寬度。
  • --epochs 5:這個參數(shù)設置了訓練的周期數(shù)。一個周期是完整地遍歷整個訓練數(shù)據(jù)集一次。
  • --data /content/yolov9/data.yaml:這個參數(shù)指定了包含數(shù)據(jù)集配置信息的YAML文件的路徑。
  • --weights /content/yolov9-c.pt:這個參數(shù)指定了用于在訓練前初始化模型的預訓練權(quán)重文件(yolov9-c.pt)的路徑。
  • --device 0:這個參數(shù)指定了用于訓練的設備。這里,0可能表示第一個可用于訓練的GPU設備。
  • --cfg /content/yolov9/models/detect/yolov9.yaml:這個參數(shù)指定了模型配置文件(yolov9.yaml)的路徑,該文件定義了YOLOv9模型的架構(gòu)和參數(shù)。
  • --hyp /content/yolov9/data/hyps/hyp.scratch-high.yaml:這個參數(shù)指定了超參數(shù)文件(hyp.scratch-high.yaml)的路徑,該文件包含訓練期間模型的調(diào)整參數(shù)。

推理

!python detect.py --img 640 --conf 0.1 --device 0 --weights /content/yolov9/runs/train/exp2/weights/best.pt --source /content/css-data/test/images/004763_jpg.rf.46484e6ca73caeaa9de45822cf1085a9.jpg

from IPython.display import Image
Image(filename="/content/yolov9/runs/detect/exp2/004763_jpg.rf.46484e6ca73caeaa9de45822cf1085a9.jpg", width=600)

責任編輯:趙寧寧 來源: 小白玩轉(zhuǎn)Python
相關(guān)推薦

2024-07-09 08:50:23

2023-11-22 13:45:37

計算機視覺數(shù)據(jù)預處理

2024-10-07 11:12:55

2024-09-12 17:19:43

YOLO目標檢測深度學習

2024-02-23 11:10:00

AI訓練

2025-01-22 11:10:34

2020-01-09 11:30:40

AI 數(shù)據(jù)人工智能

2024-09-09 16:35:10

YOLO模型

2024-10-25 08:30:57

計算機視覺神經(jīng)網(wǎng)絡YOLOv8模型

2021-07-15 08:00:00

人工智能深度學習技術(shù)

2024-10-16 16:49:44

定向邊界框目標檢測YOLOv8

2023-09-12 13:59:41

OpenAI數(shù)據(jù)集

2023-06-26 10:44:42

2020-10-28 11:26:58

計算機數(shù)據(jù) 視覺

2021-01-14 21:40:40

機器學習計算機視覺圖像數(shù)據(jù)集

2025-02-07 14:52:11

2024-11-27 16:06:12

2021-08-30 09:00:00

人工智能計算機視覺機器學習

2025-01-24 07:37:19

計算機視覺熱力圖YOLOv8

2024-01-05 15:28:06

鴻蒙數(shù)據(jù)同步GlobalThis
點贊
收藏

51CTO技術(shù)棧公眾號