使用 AutoTrain 訓練目標檢測模型

社群文章 釋出於 2024 年 6 月 5 日

目標檢測是計算機視覺中的一項基本任務,它使模型能夠識別和分類影像中的物體。AutoTrain 透過讓使用者輕鬆訓練最先進的目標檢測模型,簡化了這一過程。在這篇博文中,我們將引導您完成準備資料、配置訓練引數以及使用命令列介面 (CLI) 和使用者介面 (UI) 在本地和 Hugging Face 雲上高效訓練目標檢測模型的步驟。

image/png

準備資料

在訓練模型之前,您需要整理影像並建立一個元資料檔案。請遵循以下指南

為 UI 準備資料

  1. 建立 Zip 壓縮包: 將您的影像和 metadata.jsonl 檔案收集到一個 zip 檔案中。您的檔案結構應如下所示

    Archive.zip
    ├── 0001.png
    ├── 0002.png
    ├── 0003.png
    ├── ...
    └── metadata.jsonl
    
  2. 準備元資料: metadata.jsonl 檔案包含每張影像的資訊,包括物體的邊界框和類別。這是一個例子

    {"file_name": "0001.png", "objects": {"bbox": [[302.0, 109.0, 73.0, 52.0]], "category": [0]}}
    {"file_name": "0002.png", "objects": {"bbox": [[810.0, 100.0, 57.0, 28.0]], "category": [1]}}
    {"file_name": "0003.png", "objects": {"bbox": [[160.0, 31.0, 248.0, 616.0], [741.0, 68.0, 202.0, 401.0]], "category": [2, 2]}}
    

    確保邊界框採用 COCO 格式 [x, y, width, height]

為 CLI 準備資料

或者,如果您不使用 UI,也可以將資料整理到資料夾中

  1. 建立訓練和驗證資料夾: 將您的影像和 metadata.jsonl 檔案分別整理到用於訓練和驗證的資料夾中。

    training/
    ├── 0001.png
    ├── 0002.png
    ├── 0003.png
    ├── ...
    └── metadata.jsonl
    
    validation/
    ├── 0004.png
    ├── 0005.png
    ├── ...
    └── metadata.jsonl
    
  2. 準備元資料: 與 UI 方法類似,metadata.jsonl 檔案應包含邊界框和類別資訊。

圖片要求

  • 格式: 所有圖片必須為 JPEG、JPG 或 PNG 格式。
  • 數量: 至少包含 5 張圖片,以提供足夠的學習樣本。
  • 專有性: zip 檔案應僅包含圖片和 metadata.jsonl 檔案。不應包含其他檔案或巢狀資料夾。

train.zip 解壓時,它不應建立任何資料夾,只應包含圖片和 metadata.jsonl 檔案。

注意:您也可以使用來自 Hugging Face Hub 的資料集。這將在本博文中進一步討論。

配置訓練引數

AutoTrain 提供多種引數來自定義您的訓練過程。以下是您可以配置的關鍵引數

基本引數

  • --image-square-size: 將輸入影像調整為指定大小的正方形 (預設為 600)。
  • --batch-size: 設定訓練批次大小。
  • --seed: 用於可復現性的隨機種子。
  • --epochs: 訓練輪數。
  • --gradient_accumulation: 梯度累積步數。
  • --disable_gradient_checkpointing: 停用梯度檢查點。
  • --lr: 學習率。
  • --log: 實驗跟蹤選項 (nonewandbtensorboard)。

高階引數

  • --image-column: 指定要使用的影像列。
  • --target-column: 指定要使用的目標列。
  • --warmup-ratio: 用於線性預熱的訓練比例 (預設為 0.1)。
  • --optimizer: 選擇最佳化器演算法 (預設為 adamw_torch)。
  • --scheduler: 選擇學習率排程器 (預設為 linearcosine 是另一個選項)。
  • --weight-decay: 設定權重衰減率 (預設為 0.0)。
  • --max-grad-norm: 用於梯度裁剪的梯度最大範數 (預設為 1.0)。
  • --logging-steps: 確定記錄訓練進度的頻率 (預設為 -1,表示自動確定)。
  • --evaluation-strategy: 指定評估頻率 (nostepsepoch)。
  • --save-total-limit: 限制要儲存的模型檢查點數量。
  • --auto-find-batch-size: 根據硬體能力自動確定批次大小。
  • --mixed-precision: 選擇精度模式 (fp16bf16 或 None)。

使用 CLI 進行訓練

要使用 CLI 訓練目標檢測模型,您可以建立一個配置檔案並執行 autotrain 命令。以下是在 Hugging Face Hub 上的 CPPE-5 資料集上進行訓練的示例配置檔案。

image/png

示例配置檔案

task: object_detection
base_model: facebook/detr-resnet-50
project_name: autotrain-obj-det-cppe5-2
log: tensorboard
backend: local

data:
  path: cppe-5
  train_split: train
  valid_split: test
  column_mapping:
    image_column: image
    objects_column: objects

params:
  image_square_size: 600
  epochs: 100
  batch_size: 8
  lr: 5e-5
  weight_decay: 1e-4
  optimizer: adamw_torch
  scheduler: linear
  gradient_accumulation: 1
  mixed_precision: fp16
  early_stopping_patience: 50
  early_stopping_threshold: 0.001

hub:
  username: ${HF_USERNAME}
  token: ${HF_TOKEN}
  push_to_hub: true

執行訓練

要開始訓練,請使用以下命令

$ export HF_USERNAME=your_hugging_face_username
$ export HF_TOKEN=your_hugging_face_write_token

$ autotrain --config configfile.yml

此命令將使用 configfile.yml 中指定的配置來訓練您的目標檢測模型。

注意:僅當您將 push_to_hub 設定為 true 時,才需要匯出您的使用者名稱和令牌。

在某些 Hugging Face 資料集的情況下,資料集可能包含配置,此時您可以對 train_split 和 valid_split 使用 dataset_config:split_name。例如,這個資料集有配置:fullmini

image/png

為此,配置檔案的更改將是

data:
  path: keremberke/license-plate-object-detection
  train_split: full:train
  valid_split: full:validation
  column_mapping:
    image_column: image
    objects_column: objects

如果您的資料集儲存在本地,則需要在配置 yaml 中更新以下內容

data:
  path: /path/to/data/folder/
  train_split: train # this folder contains images and metadata.jsonl
  valid_split: val # this folder contains images and metadata.jsonl, optional, can be set to null
  column_mapping:
    image_column: image
    objects_column: objects

使用 UI 進行訓練

在本地,您可以透過執行以下命令啟動 AutoTrain UI

$ pip install -U autotrain-advanced

$ autotrain app --host 127.0.0.1 --port 8000

應用程式將在 http://127.0.0.1:8000 啟動

image/png

在 UI 中上傳的資料格式與上面描述的 zip 檔案相同。

如果您沒有合適的硬體,也可以透過點選這裡在 Hugging Face Spaces 上啟動 UI。更多資訊請閱讀文件

當使用來自 Hub 的資料集時,您必須正確對映列。使用本地資料集(資料夾或 zip)時,列對映應保持原樣。

總結

AutoTrain 簡化了訓練目標檢測模型這一複雜任務,使您能夠專注於微調模型以獲得最佳效能。透過遵循這些指南並利用可用的引數,您可以建立滿足您特定需求的有效目標檢測模型。無論使用 UI 還是 CLI,AutoTrain 都為構建強大的目標檢測模型提供了簡化的流程。

附言:所有使用 AutoTrain 訓練的模型都可以透過 API 推理和推理端點進行部署。

如有任何問題或功能請求,請檢視 GitHub 倉庫

訓練愉快! :)

社群

註冊登入 以發表評論

© . This site is unofficial and not affiliated with Hugging Face, Inc.