Ultralytics YOLO27:

객체 탐지 데이터셋 개요#

견고하고 정확한 객체 탐지 모델을 학습하려면 종합적인 데이터셋이 필요합니다. 이 가이드에서는 Ultralytics YOLO 모델과 호환되는 다양한 데이터셋 형식을 소개하고, 그 구조와 사용법 및 형식 간 변환 방법을 설명합니다.

지원되는 데이터셋 형식#

Ultralytics YOLO 형식#

Ultralytics YOLO 형식은 데이터셋 루트 디렉터리, 학습/검증/테스트 이미지 디렉터리 또는 이미지 경로가 포함된 *.txt 파일의 상대 경로, 그리고 클래스 이름 사전을 정의할 수 있는 데이터셋 구성 형식입니다. 다음은 예시입니다:

ultralytics/cfg/datasets/coco8.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# COCO8 dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/detect/coco8
# Example usage: yolo train data=coco8.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco8 ← downloads here (1 MB)

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: coco8 # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
test: # test images (optional)

# Classes
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

# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8.zip

train, val, test 각각에는 디렉터리, 디렉터리 목록 또는 한 줄에 하나의 이미지 경로가 나열된 *.txt 파일을 지정할 수 있습니다(경로가 ./로 시작하면 *.txt 파일을 기준으로 확인됩니다). *.txt 파일은 디렉터리의 하위 집합으로 학습하거나, 라벨이 없는 이미지를 건너뛰거나, 여러 소스의 이미지를 하나의 분할로 결합할 때 유용합니다.

`*.txt` 파일로 지정하는 이미지 경로
path: datasets/coco8 # dataset root
train: train.txt # a directory, a list e.g. [images/a, images/b], or a *.txt file
val: val.txt
names:
  0: person

이 형식의 라벨은 이미지당 하나의 *.txt 파일이 포함된 YOLO 형식으로 내보내야 합니다. 이미지에 객체가 없는 경우에는 *.txt 파일이 필요하지 않습니다. *.txt 파일은 class x_center y_center width height 형식으로 객체당 한 행이 포함되도록 작성해야 합니다. 박스 좌표는 정규화된 xywh 형식(0~1)이어야 합니다. 박스가 픽셀 단위로 지정된 경우 x_centerwidth는 이미지 너비로 나누고, y_centerheight은 이미지 높이로 나누어야 합니다. 클래스 번호는 0부터 시작하는 제로 인덱스여야 합니다.

YOLO labeled image with bounding boxes on persons and tie

위 이미지에 해당하는 라벨 파일에는 2명의 사람(클래스 0)과 넥타이 1개(클래스 27)가 포함되어 있습니다:

YOLO format label file with normalized coordinates

Ultralytics YOLO 형식을 사용할 때는 아래 COCO8 데이터셋 예시와 같이 학습 및 검증 이미지와 라벨을 구성합니다.

YOLO dataset directory structure with train and val folders

사용 예시#

YOLO 형식 데이터셋을 사용하여 모델을 학습하는 방법은 다음과 같습니다:

예시
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

Ultralytics NDJSON 형식#

NDJSON(줄바꿈으로 구분된 JSON) 형식은 Ultralytics YOLO 모델의 데이터셋을 정의하는 대안적인 방법을 제공합니다. 이 형식은 데이터셋 메타데이터와 어노테이션을 하나의 파일에 저장하며, 각 줄에는 별도의 JSON 객체가 포함됩니다.

NDJSON 데이터셋 파일에는 다음이 포함됩니다:

  1. 데이터셋 레코드(첫 번째 줄): 작업 유형, 클래스 이름 및 일반 정보를 포함한 데이터셋 메타데이터가 포함됩니다.
  2. 이미지 레코드(이후 줄): 크기, 어노테이션 및 파일 경로를 포함한 개별 이미지 데이터가 포함됩니다.
NDJSON 예시
{
    "type": "dataset",
    "task": "detect",
    "name": "Example",
    "description": "COCO NDJSON example dataset",
    "url": "https://platform.ultralytics.com/user/datasets/example",
    "class_names": { "0": "person", "1": "bicycle", "2": "car" },
    "bytes": 426342,
    "version": 0,
    "created_at": "2024-01-01T00:00:00Z",
    "updated_at": "2025-01-01T00:00:00Z"
}

사용자 지정 이미지 메타데이터#

각 이미지 레코드에는 캡처 조건, 장비 식별자 또는 검토 상태와 같은 애플리케이션별 컨텍스트를 위한 metadata JSON 객체를 포함할 수 있습니다. 중첩 값도 지원됩니다. Ultralytics Platform으로 가져오면 메타데이터가 해당 이미지와 함께 저장되며, 전체 화면 정보 패널에서 확인하거나 편집할 수 있습니다.

{
    "type": "image",
    "file": "airbus-wing.jpg",
    "url": "https://example.com/airbus-wing.jpg",
    "split": "train",
    "metadata": {
        "aircraft": { "family": "A350", "section": "wing" },
        "inspectionStatus": "reviewed"
    }
}

Platform은 최상위 메타데이터 키를 128자로, 각 이미지의 직렬화된 메타데이터 객체를 500,000자로, 하나의 NDJSON 가져오기에서 결합된 유효 메타데이터를 500,000자로 제한합니다.

사용 예시#

YOLO26에서 NDJSON 데이터셋을 사용하려면 .ndjson 파일의 경로를 지정하면 됩니다:

예시
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Train using NDJSON dataset
results = model.train(data="path/to/dataset.ndjson", epochs=100, imgsz=640)

NDJSON 형식의 장점#

  • 단일 파일: 모든 데이터셋 정보가 하나의 파일에 포함됩니다.
  • 스트리밍: 모든 데이터를 메모리에 로드하지 않고 대규모 데이터셋을 한 줄씩 처리할 수 있습니다.
  • 클라우드 통합: 클라우드 기반 학습을 위한 원격 이미지 URL을 지원합니다.
  • 확장 가능: 사용자 지정 메타데이터 필드를 쉽게 추가할 수 있습니다.
  • 버전 관리: 단일 파일 형식은 git 및 버전 관리 시스템과 함께 사용하기에 적합합니다.

지원되는 데이터셋#

다음은 지원되는 데이터셋 목록과 각각에 대한 간략한 설명입니다. 이 데이터셋 중 대부분은 Ultralytics Platform에서도 호스팅되며, 여기에서 이미지와 주석을 탐색하고, 데이터셋 통계를 확인하며, 클라우드 학습용으로 복제할 수 있습니다.

  • African-wildlife: 버팔로, 코끼리, 코뿔소, 얼룩말 등 아프리카 야생동물 이미지로 구성된 데이터셋입니다.
  • Argoverse: 풍부한 어노테이션이 포함된 도시 환경의 3D 트래킹 및 모션 예측 데이터셋입니다.
  • Brain-tumor: 뇌종양의 존재 여부, 위치 및 특성에 대한 정보가 포함된 MRI 또는 CT 스캔 이미지로 뇌종양을 탐지하기 위한 데이터셋입니다.
  • COCO: Common Objects in Context(COCO)는 80개의 객체 카테고리를 포함하는 대규모 객체 탐지, 세그멘테이션 및 캡셔닝 데이터셋입니다.
  • COCO8: COCO train2017의 처음 8개 이미지 중 더 작은 서브셋으로, 4개는 학습용, 4개는 검증용이며 빠른 테스트에 적합합니다.
  • COCO8-Grayscale: RGB를 그레이스케일로 변환하여 생성한 COCO8의 그레이스케일 버전으로, 단일 채널 모델 평가에 유용합니다.
  • COCO8-Multispectral: RGB 파장을 보간하여 생성한 COCO8의 10채널 멀티스펙트럴 버전으로, 스펙트럼을 고려한 모델 평가에 유용합니다.
  • COCO12-Formats: 이미지 로딩 파이프라인을 검증하기 위해 12개의 지원 이미지 형식(AVIF, BMP, DNG, HEIC, JP2, JPEG, JPG, MPO, PNG, TIF, TIFF, WebP)을 다루는 12개 이미지의 테스트 데이터셋입니다.
  • COCO16: COCO train2017의 첫 16개 이미지(학습 8개 + 검증 8개)로 구성된 하위 집합으로, 빠른 테스트에 적합합니다.
  • COCO32: COCO train2017의 첫 32개 이미지(학습 16개 + 검증 16개)로 구성된 하위 집합으로, 빠른 테스트에 적합합니다.
  • COCO64: COCO train2017의 첫 64개 이미지(학습 32개 + 검증 32개)로 구성된 하위 집합으로, 빠른 테스트에 적합합니다.
  • COCO128: COCO train2017의 첫 128개 이미지로 구성된 소규모 서브셋으로, 테스트에 적합합니다.
  • Construction-PPE: 헬멧, 조끼, 장갑, 부츠, 고글 등 안전 장비를 착용한 건설 현장 작업자의 라벨링된 이미지와 실제 규정 준수 모니터링을 위한 no_helmet, no_goggle과 같은 장비 누락 어노테이션을 포함하는 데이터셋입니다.
  • Global Wheat 2020: Global Wheat Challenge 2020을 위한 밀 이삭 이미지 데이터셋입니다.
  • HomeObjects-3K: 침대, 의자, TV 등 실내 가정용품으로 구성된 데이터셋으로, 스마트 홈 자동화, 로보틱스, 증강 현실 및 실내 레이아웃 분석 애플리케이션에 적합합니다.
  • KITTI: 스테레오, LiDAR 및 GPS/IMU 데이터가 포함된 실제 주행 장면 데이터셋으로, 도시, 시골 및 고속도로 환경에서 자동차, 보행자, 자전거 이용자를 식별하는 2D 객체 탐지 작업에 사용됩니다.
  • LVIS: 1,203개 객체 카테고리를 포함하는 대규모 객체 탐지, 세그멘테이션 및 캡셔닝 데이터셋입니다.
  • Medical-pills: 제약 품질 보증, 알약 분류 및 규정 준수와 같은 애플리케이션을 위해 어노테이션된 의약품 알약 이미지 데이터셋입니다.
  • Objects365: 365개 객체 카테고리와 600K개 이상의 어노테이션된 이미지를 포함하는 고품질 대규모 객체 탐지 데이터셋입니다.
  • OpenImagesV7: Google이 제공하는 종합 데이터셋으로, 1.7M개의 학습 이미지와 42k개의 검증 이미지가 포함되어 있습니다.
  • Roboflow 100: 종합적인 모델 평가를 위해 7개의 이미지 도메인에 걸친 100개 데이터셋으로 구성된 다양한 객체 탐지 벤치마크입니다.
  • Signature: 어노테이션된 서명이 포함된 다양한 문서 이미지 데이터셋으로, 문서 검증 및 사기 탐지 연구를 지원합니다.
  • SKU-110K: 11K개 이상의 이미지와 170만 개의 바운딩 박스를 포함하며 소매 환경의 밀집 객체 탐지를 다루는 데이터셋입니다.
  • TT100K: 견고한 탐지 및 분류를 위해 221개 표지판 카테고리의 거리 뷰 이미지 16,817개로 구성된 Tsinghua-Tencent 100K(TT100K) 교통 표지판 데이터셋을 살펴보세요.
  • VisDrone: 드론으로 촬영한 이미지에서 얻은 객체 탐지 및 다중 객체 트래킹 데이터셋으로, 10K개 이상의 이미지와 비디오 시퀀스가 포함되어 있습니다.
  • VOC: 20개 객체 클래스와 11K개 이상의 이미지가 포함된 객체 탐지 및 세그멘테이션용 Pascal 시각 객체 클래스(VOC) 데이터셋입니다.
  • xView: 60개 객체 카테고리와 100만 개 이상의 어노테이션된 객체가 포함된 항공·위성 이미지 객체 탐지용 데이터셋입니다.

자체 데이터셋 추가#

자체 데이터셋이 있고 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 모델과 호환되도록 합니다. 클래스 ID 매핑, 디렉터리 구조, 세그멘테이션 또는 포즈 어노테이션을 포함한 전체 워크플로는 COCO 어노테이션을 YOLO로 변환을 참조하세요.

사용하려는 데이터셋이 모델과 호환되고 필요한 형식 규칙을 따르는지 다시 한번 확인하세요. 올바르게 형식이 지정된 데이터셋은 성공적인 객체 탐지 모델 학습에 매우 중요합니다.

다음 단계#

데이터셋 형식을 지정했다면 모델 학습을 시작하세요. 어떤 사전 학습 모델로 시작해야 할지 모르시겠나요? YOLO26 모델 제품군에서 옵션을 비교해 보세요.

FAQ#

  • Ultralytics YOLO 형식은 학습 프로젝트에서 데이터셋을 정의하기 위한 구조화된 구성입니다. 학습, 검증 및 테스트 이미지와 해당 라벨의 경로를 설정합니다. 예시는 다음과 같습니다:

    # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
    
    # COCO8 dataset (first 8 images from COCO train2017) by Ultralytics
    # Documentation: https://docs.ultralytics.com/datasets/detect/coco8
    # Example usage: yolo train data=coco8.yaml
    # parent
    # ├── ultralytics
    # └── datasets
    #     └── coco8 ← downloads here (1 MB)
    
    # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
    path: coco8 # dataset root dir
    train: images/train # train images (relative to 'path') 4 images
    val: images/val # val images (relative to 'path') 4 images
    test: # test images (optional)
    
    # Classes
    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
    
    # Download script/URL (optional)
    download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8.zip

    라벨은 이미지당 하나씩 *.txt 파일에 저장되며, 정규화된 좌표를 사용하는 class x_center y_center width height 형식으로 작성됩니다. 자세한 가이드는 COCO8 데이터셋 예시를 참조하세요.

  • Ultralytics 변환 도구를 사용하여 COCO 데이터셋을 YOLO 형식으로 변환할 수 있습니다. 간단한 방법은 다음과 같습니다:

    from ultralytics.data.converter import convert_coco
    
    convert_coco(labels_dir="path/to/coco/annotations/")

    이 코드는 COCO 어노테이션을 YOLO 형식으로 변환하여 Ultralytics YOLO 모델과 원활하게 통합할 수 있도록 합니다. 자세한 내용은 라벨 형식 포팅 또는 변환 섹션을 참조하세요.

  • Ultralytics YOLO는 다음을 포함한 다양한 데이터셋을 지원합니다:

    각 데이터셋 페이지에서는 효율적인 YOLO26 학습에 맞춘 구조 및 사용법에 대한 자세한 정보를 제공합니다. 전체 목록은 지원되는 데이터셋 섹션에서 확인하세요.

  • YOLO26 모델 학습을 시작하려면 데이터셋 형식이 올바르고 YAML 파일에 경로가 정의되어 있는지 확인합니다. 다음 스크립트를 사용하여 학습을 시작하세요:

    예시
    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")  # Load a pretrained model
    results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)

    CLI 명령을 포함하여 다양한 모드를 사용하는 방법에 대한 자세한 내용은 사용법 섹션을 참조하세요.

  • Ultralytics는 다양한 애플리케이션에서 YOLO26을 사용하는 수많은 예시와 실용적인 가이드를 제공합니다. 종합적인 개요는 Ultralytics 블로그를 방문하여 YOLO26을 활용한 객체 탐지, 세그멘테이션 등의 사례 연구, 상세한 튜토리얼 및 커뮤니티 스토리를 확인하세요. 특정 예시는 문서의 사용법 섹션을 참조하세요.

댓글