Ultralytics YOLO27:

Bộ dữ liệu COCO#

Bộ dữ liệu COCO (Các đối tượng phổ biến trong ngữ cảnh) là bộ dữ liệu quy mô lớn phục vụ phát hiện đối tượng, phân đoạn và tạo chú thích ảnh. Bộ dữ liệu được thiết kế để thúc đẩy nghiên cứu trên nhiều loại đối tượng và thường được dùng làm benchmark cho các model thị giác máy tính. Đây là bộ dữ liệu thiết yếu đối với các nhà nghiên cứu và nhà phát triển thực hiện các tác vụ phát hiện đối tượng, phân đoạn và ước lượng tư thế.



Xem: Tổng quan về dataset COCO của Ultralytics

Các model COCO được huấn luyện trước#

Modelkích thước
(pixel)
mAPval
50-95
mAPval
50-95(e2e)
Tốc độ
CPU ONNX
(ms)
Tốc độ
T4 TensorRT10
(ms)
params
(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

Tính năng chính#

  • COCO có 330K hình ảnh, trong đó 200K hình ảnh có annotation cho các tác vụ phát hiện đối tượng, phân đoạn và tạo chú thích ảnh.
  • Bộ dữ liệu bao gồm 80 danh mục đối tượng, gồm các đối tượng phổ biến như ô tô, xe đạp và động vật, cũng như các danh mục cụ thể hơn như ô, túi xách và dụng cụ thể thao.
  • Annotation bao gồm BBox đối tượng, mask phân đoạn và chú thích cho từng hình ảnh.
  • COCO cung cấp các metric đánh giá được chuẩn hóa như Độ chính xác trung bình (mAP) và Độ bao phủ trung bình (AR) cho phát hiện đối tượng và phân đoạn, phù hợp để so sánh hiệu suất model.

Cấu trúc dataset#

Bộ dữ liệu COCO được chia thành ba tập con:

  1. Train2017: 118,287 hình ảnh dùng để huấn luyện các model phát hiện đối tượng, phân đoạn và tạo chú thích.
  2. Val2017: 5,000 hình ảnh được dùng để xác thực trong quá trình huấn luyện model.
  3. Test2017: 20,288 hình ảnh test-dev dùng để benchmark các model đã huấn luyện. Chú thích ground truth cho tập con này không được công khai; kết quả được gửi đến máy chủ đánh giá COCO để đánh giá hiệu năng.

Ứng dụng#

Bộ dữ liệu COCO được sử dụng rộng rãi để huấn luyện và đánh giá các model deep learning trong lĩnh vực phát hiện đối tượng (chẳng hạn như Ultralytics YOLO, Faster R-CNN và SSD), phân đoạn instance (chẳng hạn như Mask R-CNN) và phát hiện keypoint (chẳng hạn như OpenPose). Bộ danh mục đối tượng đa dạng, số lượng lớn hình ảnh được chú thích và các metric đánh giá tiêu chuẩn hóa khiến bộ dữ liệu này trở thành tài nguyên thiết yếu cho các nhà nghiên cứu và chuyên gia thực hành trong lĩnh vực thị giác máy tính.

Các chú thích được xuất từ công cụ gán nhãn ở định dạng COCO JSON tuân theo cùng cấu trúc này. Để huấn luyện bằng dữ liệu của riêng bạn theo định dạng COCO, hãy xem Chuyển đổi chú thích COCO sang YOLO.

YAML của dataset#

Tệp YAML được dùng để xác định cấu hình bộ dữ liệu. Tệp này chứa thông tin về các đường dẫn, lớp và thông tin liên quan khác của bộ dữ liệu. Với bộ dữ liệu COCO, tệp coco.yaml được duy trì tại 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)

Cách sử dụng#

Dữ liệu huấn luyện và xác thực COCO2017 (20.3 GB) sẽ tự động được tải xuống khi bạn bắt đầu huấn luyện lần đầu. Để huấn luyện model YOLO26n trên COCO trong 100 epoch với kích thước ảnh 640, bạn có thể sử dụng các đoạn code sau. Để xem danh sách đầy đủ các đối số hiện có, hãy tham khảo trang Huấn luyện model. Bạn cũng có thể huấn luyện COCO trên cloud bằng Ultralytics Platform.

Ví dụ huấn luyện
from ultralytics import YOLO

# Tải model
model = YOLO("yolo26n.pt")  # tải model đã huấn luyện trước (được khuyến nghị khi huấn luyện)

# Huấn luyện model
results = model.train(data="coco.yaml", epochs=100, imgsz=640)

Hình ảnh mẫu và annotation#

Bộ dữ liệu COCO chứa nhiều hình ảnh đa dạng với các danh mục đối tượng khác nhau và bối cảnh phức tạp. Dưới đây là một số hình ảnh trong bộ dữ liệu cùng với chú thích tương ứng:

Lưới ảnh mosaic của batch huấn luyện bộ dữ liệu COCO với phát hiện đối tượng

  • Ảnh ghép Mosaic: Hình ảnh này minh họa một batch huấn luyện được tạo từ các ảnh mosaic của bộ dữ liệu. Mosaic là kỹ thuật được sử dụng trong quá trình huấn luyện, kết hợp nhiều hình ảnh thành một hình ảnh duy nhất để tăng sự đa dạng của đối tượng và bối cảnh trong mỗi batch huấn luyện. Kỹ thuật này giúp cải thiện khả năng tổng quát hóa của model đối với các kích thước đối tượng, tỷ lệ khung hình và ngữ cảnh khác nhau.

Ví dụ này cho thấy sự đa dạng và phức tạp của các hình ảnh trong bộ dữ liệu COCO, cũng như lợi ích của việc sử dụng mosaic trong quá trình huấn luyện.

Trích dẫn và lời cảm ơn#

Nếu sử dụng bộ dữ liệu COCO trong nghiên cứu hoặc phát triển, vui lòng trích dẫn bài báo sau:

Trích dẫn
@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}
}

Chúng tôi xin ghi nhận công lao của COCO Consortium trong việc tạo và duy trì tài nguyên giá trị này cho cộng đồng thị giác máy tính. Để biết thêm thông tin về bộ dữ liệu COCO và những người tạo ra bộ dữ liệu, hãy truy cập trang web bộ dữ liệu COCO.

Câu hỏi thường gặp#

  • Bộ dữ liệu COCO (Các đối tượng phổ biến trong ngữ cảnh) là bộ dữ liệu quy mô lớn được dùng cho phát hiện đối tượng, phân đoạn và tạo chú thích. Bộ dữ liệu này có 330K hình ảnh với chú thích chi tiết cho 80 danh mục đối tượng, đóng vai trò thiết yếu trong việc benchmark và huấn luyện các model thị giác máy tính. Các nhà nghiên cứu sử dụng COCO nhờ các danh mục đa dạng và metric đánh giá được chuẩn hóa như độ chính xác trung bình (mAP).

  • Để huấn luyện model YOLO26 bằng bộ dữ liệu COCO, bạn có thể sử dụng các đoạn code sau:

    Ví dụ huấn luyện
    from ultralytics import YOLO
    
    # Tải model
    model = YOLO("yolo26n.pt")  # tải model đã huấn luyện trước (được khuyến nghị khi huấn luyện)
    
    # Huấn luyện model
    results = model.train(data="coco.yaml", epochs=100, imgsz=640)

    Tham khảo trang Huấn luyện để biết thêm chi tiết về các đối số hiện có.

  • Bộ dữ liệu COCO bao gồm:

    • 330K hình ảnh, trong đó 200K hình ảnh được chú thích cho tác vụ phát hiện đối tượng, phân đoạn và tạo chú thích.
    • 80 danh mục đối tượng, từ những vật thể phổ biến như ô tô và động vật đến các vật thể cụ thể như túi xách và thiết bị thể thao.
    • Các metric đánh giá được chuẩn hóa (mAP và Average Recall) cho tác vụ phát hiện đối tượng và phân đoạn.
    • Kỹ thuật mosaic trong batch huấn luyện giúp tăng cường khả năng tổng quát hóa của model với nhiều kích thước đối tượng và ngữ cảnh khác nhau.
  • Bạn có thể tải các model YOLO26 được huấn luyện trước trên bộ dữ liệu COCO từ các liên kết trong tài liệu. Ví dụ:

    Các model này có kích thước, mAP và tốc độ suy luận khác nhau, cung cấp nhiều lựa chọn cho các yêu cầu về hiệu năng và tài nguyên.

  • Bộ dữ liệu COCO được chia thành ba tập con:

    1. Train2017: 118,287 hình ảnh dùng để huấn luyện.
    2. Val2017: 5,000 hình ảnh dùng để xác thực trong quá trình huấn luyện.
    3. Test2017: 20,288 hình ảnh test-dev dùng để benchmark các model đã huấn luyện. Kết quả cần được gửi đến máy chủ đánh giá COCO để đánh giá hiệu năng.

    Tệp cấu hình YAML của bộ dữ liệu có tại coco.yaml, xác định các đường dẫn, lớp và thông tin chi tiết của bộ dữ liệu.

Bình luận