原文鏈接:
https://docs.ultralytics.com/datasets/detect/
寫在前面
訓練一個魯棒且準確的目標檢測模型需要一個全面的數據集。本文介紹:與Ultralytics YOLO模型兼容的各種數據集格式,并深入解析了它們的結構、使用方法以及如何在不同的格式之間進行轉換。
支持的數據集格式
Ultralytics YOLO格式
Ultralytics YOLO格式是一種數據集配置格式,允許您定義數據集根目錄、訓練/驗證/測試圖像目錄的相對路徑(或包含圖像路徑的*.txt文件)以及類別名稱的字典。以下是一個示例:
# Ultralytics 🚀 AGPL-3.0許可證 - https://ultralytics.com/license# COCO8數據集(來自COCO train2017的前8張圖像)由Ultralytics提供
# 文檔:https://docs.ultralytics.com/datasets/detect/coco8/
# 示例用法:yolo train data=coco8.yaml
# 父目錄
# ├── ultralytics
# └── datasets
# └── coco8 ← 下載至此(1 MB) # 訓練/驗證/測試集可以是:1) 目錄:path/to/imgs,2) 文件:path/to/imgs.txt,或3) 列表:[path/to/imgs1, path/to/imgs2, ...]
path: coco8 # 數據集根目錄
train: images/train # 訓練圖像(相對于'path')4張圖像
val: images/val # 驗證圖像(相對于'path')4張圖像
test: # 測試圖像(可選) # 類別
names: 0: person 1: bicycle 2: car 3: motorcycle 4: airplane 5: bus 6: train 7: truck 8: boat 9: traffic light 10: fire hydrant 11: stop sign 12: parking meter 13: bench 14: bird 15: cat 16: dog 17: horse 18: sheep 19: cow 20: elephant 21: bear 22: zebra 23: giraffe 24: backpack 25: umbrella 26: handbag 27: tie 28: suitcase 29: frisbee 30: skis 31: snowboard 32: sports ball 33: kite 34: baseball bat 35: baseball glove 36: skateboard 37: surfboard 38: tennis racket 39: bottle 40: wine glass 41: cup 42: fork 43: knife 44: spoon 45: bowl 46: banana 47: apple 48: sandwich 49: orange 50: broccoli 51: carrot 52: hot dog 53: pizza 54: donut 55: cake 56: chair 57: couch 58: potted plant 59: bed 60: dining table 61: toilet 62: tv 63: laptop 64: mouse 65: remote 66: keyboard 67: cell phone 68: microwave 69: oven 70: toaster 71: sink 72: refrigerator 73: book 74: clock 75: vase 76: scissors 77: teddy bear 78: hair drier 79: toothbrush # 下載腳本/URL(可選)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8.zip
此格式的標簽應以YOLO格式導出,每張圖像對應一個*.txt文件。如果圖像中沒有目標,則不需要*.txt文件。*.txt文件的格式應為每行一個目標,格式為class x_center y_center width height
。框坐標必須為歸一化的xywh格式(0到1之間)。如果您的框坐標是像素值,應將x_center和寬度除以圖像寬度,y_center和高度除以圖像高度。類別編號應從0開始(即0為第一個類別)。
示例標注圖像
與上圖對應的標簽文件包含2個人(類別0)和1個領帶(類別27):
示例標簽文件
0 0.5 0.5 0.1 0.2
0 0.7 0.7 0.1 0.2
27 0.3 0.3 0.05 0.1
使用Ultralytics YOLO格式時,請按照以下COCO8數據集的示例組織您的訓練和驗證圖像及標簽。
示例數據集目錄結構
datasets/
└── coco8/ ├── images/ │ ├── train/ # 訓練圖像 │ └── val/ # 驗證圖像 └── labels/ ├── train/ # 訓練標簽 └── val/ # 驗證標簽
使用方法
以下是使用這些格式訓練模型的示例:
from ultralytics import YOLO # 加載模型
model = YOLO("yolo11n.pt") # 加載預訓練模型(推薦用于訓練) # 訓練模型
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
支持的數據集
以下是支持的數據集及其簡要描述:
- Argoverse:包含來自城市環境的3D跟蹤和運動預測數據,帶有豐富的標注。
- COCO:Common Objects in Context (COCO)是一個大規模的目標檢測、分割和字幕生成數據集,包含80個目標類別。
- LVIS:一個大規模的目標檢測、分割和字幕生成數據集,包含1203個目標類別。
- COCO8:從COCO train和COCO val中提取的前4張圖像的小型子集,適合快速測試。
- COCO8-Grayscale:通過將RGB轉換為灰度創建的COCO8灰度版本,適用于單通道模型評估。
- COCO8-Multispectral:通過插值RGB波長創建的10通道多光譜版本,適用于光譜感知模型評估。
- COCO128:從COCO train和COCO val中提取的前128張圖像的小型子集,適合測試。
- Global Wheat 2020:包含2020年全球小麥挑戰賽的小麥穗圖像的數據集。
- Objects365:一個高質量、大規模的目標檢測數據集,包含365個目標類別和超過60萬張標注圖像。
- OpenImagesV7:谷歌提供的全面數據集,包含170萬張訓練圖像和4.2萬張驗證圖像。
- SKU-110K:一個零售環境中的密集目標檢測數據集,包含超過1.1萬張圖像和170萬個邊界框。
- HomeObjects-3K New 🚀:包含室內家居物品(如床、椅子、電視等)的數據集,適用于智能家居自動化、機器人、增強現實和房間布局分析等應用。
- VisDrone:包含無人機捕獲圖像的目標檢測和多目標跟蹤數據,超過1萬張圖像和視頻序列。
- VOC:Pascal Visual Object Classes (VOC)數據集,用于目標檢測和分割,包含20個目標類別和超過1.1萬張圖像。
- xView:用于俯視圖像中目標檢測的數據集,包含60個目標類別和超過100萬個標注目標。
- Roboflow 100:一個多樣化的目標檢測基準,包含100個數據集,涵蓋7個圖像領域,用于全面模型評估。
- Brain-tumor:用于檢測腦腫瘤的數據集,包含MRI或CT掃描圖像,標注了腫瘤的存在、位置和特征。
- African-wildlife:包含非洲野生動物(如水牛、大象、犀牛和斑馬)圖像的數據集。
- Signature:包含各種文檔的簽名標注圖像,支持文檔驗證和欺詐檢測研究。
- Medical-pills:包含醫療藥丸圖像的數據集,適用于藥品質量保證、藥丸分類和法規遵從等應用。
添加您自己的數據集
如果您有自己的數據集并希望用于訓練Ultralytics YOLO模型,請確保其遵循上述“Ultralytics YOLO格式”中指定的格式。將您的標注轉換為所需格式,并在YAML配置文件中指定路徑、類別數量和類別名稱。
移植或轉換標簽格式
從COCO數據集格式轉換為YOLO格式
您可以使用以下代碼片段輕松將流行的COCO數據集格式的標簽轉換為YOLO格式:
from ultralytics.data.converter import convert_coco convert_coco(labels_dir="path/to/coco/annotations/")
此轉換工具可用于將COCO數據集或任何COCO格式的數據集轉換為Ultralytics YOLO格式。該過程將基于JSON的COCO標注轉換為更簡單的基于文本的YOLO格式,使其與Ultralytics YOLO模型兼容。
請務必檢查您要使用的數據集是否與您的模型兼容,并遵循必要的格式約定。正確格式化的數據集對于訓練成功的目標檢測模型至關重要。
常見問題
什么是Ultralytics YOLO數據集格式?如何構建它?
Ultralytics YOLO格式是一種用于定義訓練項目中數據集的結構化配置。它涉及設置訓練、驗證和測試圖像及其對應標簽的路徑。例如:
path: coco8 # 數據集根目錄
train: images/train # 訓練圖像(相對于'path')
val: images/val # 驗證圖像(相對于'path')
test: # 測試圖像(可選) # 類別
names: 0: person 1: bicycle ...
標簽保存在*.txt文件中,每張圖像對應一個文件,格式為class x_center y_center width height
,坐標已歸一化。詳細指南請參考COCO8數據集示例。
如何將COCO數據集轉換為YOLO格式?
您可以使用Ultralytics的轉換工具將COCO數據集轉換為YOLO格式。以下是一個快速方法:
from ultralytics.data.converter import convert_coco convert_coco(labels_dir="path/to/coco/annotations/")
此代碼將您的COCO標注轉換為YOLO格式,實現與Ultralytics YOLO模型的無縫集成。更多詳情請訪問“移植或轉換標簽格式”部分。
Ultralytics YOLO支持哪些目標檢測數據集?
Ultralytics YOLO支持多種數據集,包括:
- Argoverse
- COCO
- LVIS
- COCO8
- Global Wheat 2020
- Objects365
- OpenImagesV7
每個數據集頁面都提供了針對YOLO11訓練優化的詳細結構和用法信息。完整列表請參閱“支持的數據集”部分。
如何使用我的數據集開始訓練YOLO11模型?
要開始訓練YOLO11模型,請確保您的數據集格式正確,并在YAML文件中定義路徑。使用以下腳本開始訓練:
from ultralytics import YOLO model = YOLO("yolo11n.pt") # 加載預訓練模型
results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)
更多關于使用不同模式(包括CLI命令)的詳細信息,請參考“使用方法”部分。
在哪里可以找到使用Ultralytics YOLO進行目標檢測的實際示例?
Ultralytics提供了許多示例和實用指南,展示了YOLO11在多種應用中的使用。完整概述請訪問Ultralytics博客,您可以找到目標檢測、分割等的案例研究、詳細教程和社區故事。具體示例請查看文檔中的“使用方法”部分。