Ultralytics YOLO27:

COCO 데이터셋#

COCO (문맥 속 일반 객체) 데이터셋은 대규모 객체 감지, 분할 및 캡셔닝 데이터셋입니다. 다양한 객체 카테고리에 대한 연구를 장려하도록 설계되었으며, 컴퓨터 비전 모델의 벤치마킹에 일반적으로 사용됩니다. 객체 감지, 분할 및 포즈 추정 작업을 수행하는 연구자와 개발자에게 필수적인 데이터셋입니다.



Watch: Ultralytics COCO Dataset Overview

COCO 사전 학습 모델#

모델크기
(픽셀)
mAPval
50-95
mAPval
50-95(e2e)
속도
CPU ONNX
(ms)
속도
T4 TensorRT10
(ms)
파라미터
(M)
FLOPs
(B)
YOLO26n64040.940.138.9 ± 0.71.7 ± 0.02.45.5
YOLO26s64048.647.887.2 ± 0.92.5 ± 0.09.520.9
YOLO26m64053.152.5220.0 ± 1.44.7 ± 0.120.468.4
YOLO26l64055.054.4286.2 ± 2.06.2 ± 0.224.886.8
YOLO26x64057.556.9525.8 ± 4.011.8 ± 0.255.7194.4

주요 기능#

  • COCO에는 330K개의 이미지가 포함되어 있으며, 이 중 200K개의 이미지에는 객체 감지, 분할 및 캡셔닝 작업을 위한 주석이 있습니다.
  • 이 데이터셋은 80개의 객체 카테고리로 구성되며, 자동차, 자전거, 동물과 같은 일반적인 객체뿐만 아니라 우산, 핸드백, 스포츠 장비와 같은 보다 구체적인 카테고리도 포함합니다.
  • 주석에는 각 이미지의 객체 바운딩 박스, 분할 마스크 및 캡션이 포함됩니다.
  • COCO는 객체 감지를 위한 평균 정밀도 (mAP)와 분할 작업을 위한 평균 재현율 (mAR)과 같은 표준화된 평가 지표를 제공하므로, 모델 성능을 비교하는 데 적합합니다.

데이터셋 구조#

COCO 데이터셋은 다음 세 가지 하위 집합으로 분할됩니다:

  1. Train2017: 객체 감지, 분할 및 캡셔닝 모델 학습에 사용되는 118,287개의 이미지입니다.
  2. Val2017: 모델 학습 중 검증에 사용되는 5,000개의 이미지입니다.
  3. Test2017: 학습된 모델의 벤치마킹에 사용되는 20,288개의 test-dev 이미지입니다. 이 하위 집합의 정답 주석은 공개되지 않으며, 성능 평가를 위해 결과를 COCO 평가 서버에 제출합니다.

응용 분야#

COCO 데이터셋은 객체 감지(예: Ultralytics YOLO, Faster R-CNN, SSD), 인스턴스 분할(예: Mask R-CNN), 키포인트 감지(예: OpenPose를 위한 딥러닝 모델의 학습 및 평가에 널리 사용됩니다. 다양한 객체 카테고리, 많은 수의 주석 이미지, 표준화된 평가 지표를 제공하므로 컴퓨터 비전 연구자와 실무자에게 필수적인 리소스입니다.

COCO의 라벨링 도구에서 내보낸 주석은 COCO JSON에서 동일한 구조를 따릅니다. 자체 COCO 형식 데이터로 학습하려면 COCO 주석을 YOLO로 변환을 참조하세요.

데이터셋 YAML#

YAML 파일은 데이터셋 구성을 정의하는 데 사용됩니다. 여기에는 데이터셋의 경로, 클래스 및 기타 관련 정보가 포함됩니다. COCO 데이터셋의 경우 coco.yaml 파일이 https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/coco.yaml에 유지 관리됩니다.

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

# COCO 2017 dataset https://cocodataset.org by Microsoft
# Documentation: https://docs.ultralytics.com/datasets/detect/coco
# Example usage: yolo train data=coco.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco ← downloads here (20.3 GB)

# 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: coco # dataset root dir
train: train2017.txt # train images (relative to 'path') 118287 images
val: val2017.txt # val images (relative to 'path') 5000 images
test: test-dev2017.txt # 20288 of 40670 images, submit via https://cocodataset.org/#detection-eval

# 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: |
  from pathlib import Path

  from ultralytics.utils import ASSETS_URL
  from ultralytics.utils.downloads import download

  # Download labels
  segments = True  # segment or box labels
  dir = Path(yaml["path"])  # dataset root dir
  urls = [ASSETS_URL + ("/coco2017labels-segments.zip" if segments else "/coco2017labels.zip")]  # labels
  download(urls, dir=dir.parent)

  # Download data (test2017.zip excluded: ground truth is withheld, only used for the eval-server test-dev split)
  urls = [
      "http://images.cocodataset.org/zips/train2017.zip",  # 19G, 118k images
      "http://images.cocodataset.org/zips/val2017.zip",  # 1G, 5k images
  ]
  download(urls, dir=dir / "images", threads=3)

사용법#

COCO2017 학습 및 검증 데이터(20.3 GB)는 처음 학습을 시작할 때 자동으로 다운로드됩니다. 이미지 크기 640으로 COCO에서 YOLO26n 모델을 100개 에포크 동안 학습하려면 다음 코드 스니펫을 사용할 수 있습니다. 사용 가능한 인자 전체 목록은 모델 학습 페이지를 참조하세요. Ultralytics Platform을 사용하여 클라우드에서 COCO 학습을 실행할 수도 있습니다.

학습 예제
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="coco.yaml", epochs=100, imgsz=640)

샘플 이미지 및 주석#

COCO 데이터셋에는 다양한 객체 카테고리와 복잡한 장면을 포함하는 이미지가 다양하게 포함되어 있습니다. 다음은 해당 데이터셋의 이미지와 이에 대응하는 주석의 몇 가지 예입니다:

객체 감지 기능이 포함된 COCO 데이터셋 모자이크 학습 배치

  • 모자이크 처리된 이미지: 이 이미지는 모자이크 처리된 데이터셋 이미지로 구성된 학습 배치를 보여줍니다. 모자이크 처리는 학습 중 여러 이미지를 하나의 이미지로 결합하여 각 학습 배치에 포함되는 객체와 장면의 다양성을 높이는 기법입니다. 이를 통해 다양한 객체 크기, 종횡비 및 컨텍스트에 대한 모델의 일반화 성능을 향상할 수 있습니다.

이 예시는 COCO 데이터셋 이미지의 다양성과 복잡성, 그리고 학습 과정에서 모자이크 처리를 사용할 때의 이점을 보여줍니다.

인용 및 감사의 글#

연구 또는 개발 작업에서 COCO 데이터셋을 사용하는 경우 다음 논문을 인용해 주세요:

인용문
@misc{lin2015microsoft,
      title={Microsoft COCO: Common Objects in Context},
      author={Tsung-Yi Lin and Michael Maire and Serge Belongie and Lubomir Bourdev and Ross Girshick and James Hays and Pietro Perona and Deva Ramanan and C. Lawrence Zitnick and Piotr Dollár},
      year={2015},
      eprint={1405.0312},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

컴퓨터 비전 커뮤니티를 위해 이 귀중한 리소스를 만들고 유지 관리한 COCO Consortium에 감사의 뜻을 전합니다. COCO 데이터셋과 제작자에 대한 자세한 내용은 COCO 데이터셋 웹사이트를 참조하세요.

FAQ#

  • COCO 데이터셋 (문맥 속 일반 객체)은 객체 감지, 분할 및 캡셔닝에 사용되는 대규모 데이터셋입니다. 80개 객체 카테고리에 대한 상세한 주석이 포함된 330K개의 이미지를 제공하므로 컴퓨터 비전 모델의 벤치마킹과 학습에 필수적입니다. 연구자들은 다양한 카테고리와 평균 정밀도 (mAP)와 같은 표준화된 평가 지표를 제공하는 COCO를 사용합니다.

  • COCO 데이터셋을 사용하여 YOLO26 모델을 학습하려면 다음 코드 스니펫을 사용할 수 있습니다:

    학습 예제
    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="coco.yaml", epochs=100, imgsz=640)

    사용 가능한 인자에 대한 자세한 내용은 학습 페이지를 참조하세요.

  • COCO 데이터셋에는 다음이 포함됩니다:

    • 330K개의 이미지 중 200K개에는 객체 감지, 분할 및 캡셔닝을 위한 주석이 있습니다.
    • 자동차와 동물 같은 일반적인 항목부터 핸드백과 스포츠 장비 같은 구체적인 항목까지 아우르는 80개의 객체 카테고리입니다.
    • 객체 감지(mAP) 및 분할(평균 재현율, mAR)을 위한 표준화된 평가 지표입니다.
    • 다양한 객체 크기와 컨텍스트에 대한 모델의 일반화 성능을 향상하는 학습 배치의 모자이크 처리 기법입니다.
  • COCO 데이터셋으로 사전 학습된 YOLO26 모델은 문서에 제공된 링크에서 다운로드할 수 있습니다. 예시는 다음과 같습니다:

    이러한 모델은 크기, mAP 및 추론 속도가 서로 다르므로 다양한 성능 및 리소스 요구 사항에 맞는 옵션을 제공합니다.

  • COCO 데이터셋은 다음 세 가지 하위 집합으로 분할됩니다:

    1. Train2017: 학습에 사용되는 118,287개의 이미지입니다.
    2. Val2017: 학습 중 검증에 사용되는 5,000개의 이미지입니다.
    3. Test2017: 학습된 모델의 벤치마킹에 사용되는 20,288개의 test-dev 이미지입니다. 성능 평가를 위해 결과를 COCO 평가 서버에 제출해야 합니다.

    데이터셋의 YAML 구성 파일은 coco.yaml에서 확인할 수 있으며, 이 파일은 경로, 클래스 및 데이터셋 세부 정보를 정의합니다.

댓글