Ultralytics YOLO27:

COCOデータセット#

COCO(文脈内の一般的な物体)データセットは、大規模な物体検出、セグメンテーション、キャプション生成用のデータセットです。幅広い物体カテゴリに関する研究を促進するために設計されており、コンピュータービジョンモデルのベンチマークによく使用されます。物体検出、セグメンテーション、ポーズ推定に取り組む研究者や開発者にとって重要なデータセットです。



視聴: Ultralytics COCO データセットの概要

COCO事前学習済みモデル#

モデルサイズ
(ピクセル)
mAPval
50-95
mAP検証
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には画像が33万枚含まれており、そのうち20万枚には物体検出、セグメンテーション、キャプション生成タスク用のアノテーションが付いています。
  • このデータセットは80の物体カテゴリで構成されており、車や自転車、動物などの一般的な物体に加えて、傘、ハンドバッグ、スポーツ用品などの具体的なカテゴリも含まれています。
  • アノテーションには、各画像の物体バウンディングボックス、セグメンテーションマスク、キャプションが含まれています。
  • COCOでは、物体検出とセグメンテーションの標準化された評価指標として、平均適合率(mAP)や平均再現率(AR)が提供されており、モデル性能の比較に適しています。

データセットの構成#

COCOデータセットは、次の3つのサブセットに分かれています。

  1. Train2017: オブジェクト検出、セグメンテーション、キャプション生成モデルのトレーニングに使用する118,287枚の画像です。
  2. Val2017: モデルのトレーニング中に検証に使用する5,000枚の画像です。
  3. Test2017: トレーニング済みモデルのベンチマークに使用する、test-dev用の20,288枚の画像です。このサブセットの正解アノテーションは公開されていません。性能評価のため、結果はCOCO評価サーバーに提出します。

用途#

COCOデータセットは、オブジェクト検出(Ultralytics YOLO、Faster R-CNN、SSDなど)、インスタンスセグメンテーション(Mask R-CNNなど)、キーポイント検出(OpenPoseなど)におけるディープラーニングモデルのトレーニングと評価に広く使用されています。多様なオブジェクトカテゴリ、豊富なアノテーション付き画像、標準化された評価指標により、コンピュータービジョンの研究者や実務者にとって不可欠なリソースとなっています。

ラベリングツールから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)は、トレーニングを初めて開始したときに自動でダウンロードされます。COCOでYOLO26nモデルを画像サイズ640、100エポックでトレーニングするには、次のコード例を使用できます。使用可能な引数の一覧については、モデルのトレーニングページをご覧ください。Ultralytics Platformを使って、クラウドでCOCOのトレーニングを実行することもできます。

トレーニング例
from ultralytics import YOLO

# モデルを読み込む
model = YOLO("yolo26n.pt")  # 事前トレーニング済みモデルを読み込みます(トレーニングにはこちらを推奨します)

# モデルをトレーニングする
results = model.train(data="coco.yaml", epochs=100, imgsz=640)

サンプル画像とアノテーション#

COCOデータセットには、多様なオブジェクトカテゴリと複雑なシーンを含む画像が収録されています。データセット内の画像と、それに対応するアノテーションの例を以下に示します。

オブジェクト検出用COCOデータセットのモザイクトレーニングバッチ

  • モザイク画像: モザイク化したデータセット画像で構成されるトレーニングバッチを示しています。モザイク化はトレーニング中に使用される手法で、複数の画像を1枚にまとめ、各トレーニングバッチ内のオブジェクトやシーンの多様性を高めます。これにより、さまざまなオブジェクトサイズ、アスペクト比、コンテキストに対するモデルの汎化性能が向上します。

この例は、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データセットのウェブサイトをご覧ください。

よくある質問#

  • COCOデータセット(文脈における一般物体)は、オブジェクト検出、セグメンテーション、キャプション生成に使用される大規模データセットです。80のオブジェクトカテゴリに関する詳細なアノテーション付き画像を33万枚収録しており、コンピュータービジョンモデルのベンチマークやトレーニングに不可欠です。研究者は、多様なカテゴリと、平均適合率(mAP)などの標準化された評価指標を備えていることからCOCOを使用しています。適合率についてもご覧ください。

  • 次のコード例を使用して、COCOデータセットでYOLO26モデルをトレーニングできます。

    トレーニング例
    from ultralytics import YOLO
    
    # モデルを読み込む
    model = YOLO("yolo26n.pt")  # 事前トレーニング済みモデルを読み込みます(トレーニングにはこちらを推奨します)
    
    # モデルをトレーニングする
    results = model.train(data="coco.yaml", epochs=100, imgsz=640)

    使用可能な引数の詳細については、トレーニングページをご覧ください。

  • COCOデータセットには、次のものが含まれています。

    • オブジェクト検出、セグメンテーション、キャプション生成用に20万枚のアノテーション付き画像を含む、33万枚の画像。
    • 自動車や動物などの一般的なものから、ハンドバッグやスポーツ用品などの特定のものまで、80種類のオブジェクトカテゴリ。
    • オブジェクト検出とセグメンテーション用に標準化された評価指標(mAPと平均再現率)。
    • さまざまなオブジェクトサイズやコンテキストに対するモデルの汎化性能を高める、トレーニングバッチでのモザイク化手法。
  • COCOデータセットで事前トレーニング済みのYOLO26モデルは、ドキュメントに記載されたリンクからダウンロードできます。例を以下に示します。

    これらのモデルはサイズ、mAP、推論速度が異なるため、性能やリソース要件に応じて選択できます。

  • COCOデータセットは、次の3つのサブセットに分かれています。

    1. Train2017: トレーニング用の118,287枚の画像です。
    2. Val2017: トレーニング中の検証用の5,000枚の画像です。
    3. Test2017: トレーニング済みモデルのベンチマーク用のtest-dev画像が20,288枚あります。性能評価のため、結果をCOCO評価サーバーに提出する必要があります。

    データセットのYAML設定ファイルはcoco.yamlで、パス、クラス、データセットの詳細を定義しています。

コメント