使用 coco 2017 dataset 做 yolo11 訓練

使用 COCO 2017 Dataset 訓練 YOLO11

專案流程總覽

github: yolo-with-coco-dataset

  1. 資料集準備

    • 從 COCO 官方網站下載 2017 年版的訓練集、驗證集圖片及標註檔案。
    • 將資料分別放在 coco2017/annotationscoco2017/train2017coco2017/val2017 目錄下。
  2. 資料格式轉換

    • 使用 1_convert_to_yolo11.py 進行 COCO → YOLO 格式轉換,並可過濾所需的類別(categories)。
    • COCO bbox 格式為 [x_min, y_min, width, height],需轉成 YOLO 格式 [class_id, x_center, y_center, width, height],且所有值需歸一化到 [0, 1]。
    • 需自行設計類別對應(category mapping)。
  3. 訓練流程

    • 執行 2_train.py 進行模型訓練。
  4. 推論預測

    • 執行 3_predict.py 進行圖片預測。

1. 準備資料集

這是最關鍵的步驟之一:

  • 收集圖片:收集包含您想要偵測物件的圖片
  • 標註資料:為每張圖片中的目標物件創建標註(邊界框和類別)
  • 資料集分割:將資料集分為訓練集、驗證集和測試集(通常比例為 70%/20%/10%)

YOLO 格式

1<class_id> <x_center> <y_center> <width> <height>

COCO 的邊界框格式 [x_min, y_min, width, height] 轉換為 YOLO 的 [x_center, y_center, width, height] 格式

 1# COCO 格式邊界框
 2x_min = 433.61
 3y_min = 213.88
 4width = 39.67
 5height = 112.56
 6category_id = 16
 7
 8# 圖片尺寸
 9image_width = 640
10image_height = 480
11
12# 計算 YOLO 格式的中心點座標
13x_center = (x_min + width/2) / image_width
14y_center = (y_min + height/2) / image_height
15
16# 計算 YOLO 格式的寬高(歸一化)
17yolo_width = width / image_width
18yolo_height = height / image_height
19
20# 假設我們將 COCO 類別 ID 16 映射到 YOLO 類別 ID 5
21yolo_class_id = 5  # 這取決於您的類別映射
22
23# 生成 YOLO 格式的字串
24yolo_format = f"{yolo_class_id} {x_center:.6f} {y_center:.6f} {yolo_width:.6f} {yolo_height:.6f}"
25print(yolo_format)
comments powered by Disqus