1. COCOデータセット(COCOdataset)とは [概要]
COCO データセット (COCO dataset, Common Objects in COntext) は,コンテキストあり(In Context)の状況で画像から物体中心の(Object-centric)の画像認識タスク各種をおこなう目的で用いる,大規模画像データセットである [Lin et al.,2014].
この記事では,まずデフォルトのCOCOデータセットの内容・構成・データ形式の詳細を紹介する(2節).そして,3節では,デフォルトCOCOにおける各アノテーション(3.1節)と,代表的な「COCO画像に拡張アノテーションを付加したデータセット」について(3.2節),それぞれ概要・HPリンク(paper with codeも含む)を紹介する(3節).
1.1 COCOデータセットの中身

COCOデータセットの中身は,GoogleやFlickerなどで収集した約33万枚の画像と,各種タスク向けの(特に)物体単位のアノテーションから構成されいいる.各画像のアノテーションとしては,画像認識のタスクの正解として,物体検出,インスタンスセグメンテーション,人物キーポイント検出,画像キャプション生成 などのタスク向けのアノテーションが提供されている.
COCOデータセットは,当初はインスタンスセグメンテーション(+ 物体検出 )のベンチマーク用に作成・公開された (図1)[Lin et al.,2014].それが,のちに,画像キャプション生成(2015)と,人物キーポイント(2016)が,新たな正解データとして追加された.その後も追加アノテーションが続出し,KITTIデータセットのように,COCOデータセットに物体認識・人物認識タスクが過集中することとなった.
Flickerなど画像収集元の規約に従う必要がある点には注意であるが,COCO自体はCreative Common Licenseでライセンスされたこともあって,コンピュータビジョンの画像認識モデルを研究する上で,拡張アノテーションがたくさん追加されたこともあり(2.2節),人気の画像認識向け研究開発データセットとなっている.
2. デフォルトのCOCOデータセットの詳細
2.1 大まかなデータセット構成
リンク先HPのExplorerアプリで各サンプル画像を閲覧すると分かるように,COCOデータセットの画像群では,様々な一般物体 (Common Objects)が,コンテキストを加味した(In Context)状態で,複数の物体が,様々な配置・大小・姿勢の違いを含むよう構成されている.それまでの画像認識で主役のベンチマークであったPascal VOC 2012や,ImageNetなどは「単一物体のみ映った画像」データセットで,物体間のコンテキストは加味しないものであった.
COCOの,各画像では,各物体インスタンスにおいて,(1) 物体検出用のGround Truthに加えて, (2)前景マスク, (3) 人物キーポイントが,基本的なアノテーションとして付与されている.これらインスタンスセグメンテーションの定番手法となるMask R-CNNが,(1)~(3)を同時に学習するマルチタスク手法として登場したこともあり,COCOデータセットは一気に人気ベンチマーク化した.
また,更なる「他の問題設定」へもCOCOを拡張してデータセットを作成したいがために,(画像は加工しないまま) 追加の別タスク向けのラベルも多く提供されていくことになった.これにより,COCO-Captions(2015), さきほどの人物Keypoint (2016),パノプティックセグメンテーション(COCO2018)や,DensePose(2020)が登場していった.
更に,その中でも,Vision-Languageの初期のデータセットの多くが,「COCOデータセット画像への,文アノテーションの付加(COCO-captions, VQAなど)」により作成されていったので,これもCOCOデータセットの特色となっている.
2.2 データセットスプリットと,API
2014から,各年で順に画像が追加されつつ,各年のtrain/val/testスプリットの違いは,以下のdownloadから確認できる.
以下に,train/val/testスプリットの各年度の変化を以下にまとめておく:
- COCO2014: [Lin et al.,2014]
- train(83K), validation (41K), test (41K) の比率.
- COCO2015 :
- test画像が40K枚新たに追加.
- COCO2017 :
- 「validationが大き過ぎる」との声を受け, train (118K)/ validation (5k)に変更.
- また,アノテーション無しの123K画像も追加.
また,以下のAPIがMatlab, Python, Luaで用意されており,データ中のクラスラベルや,マスク領域などをこれらのAPI関数で楽に取り出せる.
- COCO API:JSON形式アノテーション(2.3)のロード・各値取得・可視化など.
- Mask API: アノテーションマスクへのアクセス編集用.
※ Lua言語版も用意されているのは,当時まだPyTorch以前のTorchがLua言語を用いたフレームワークであったため.
2.3 COCO データセットの形式
T.B.D (自分の文でも少し解説を記述する予定)
上の,公式ページ中の説明ページで,3.1 節で紹介する,COCO本家から提供されている各タスク(3.1節)の,アノテーションのJSON形式が解説されている.
COCO式のアノテーションフォーマットについて,紹介されているチュートリアルのYoutube動画が参考になる,以下に埋込んでおく:
3. 各タスクのアノテーション構成
3.1 主要タスク向けアノテーション(本家から提供)
概要の1節でも述べたように,COCOの同一の画像群に対して,以下のような各タスクむけに,正解アノテーションが個別に提供されている.3.1節では,COCOが主催する各ベンチマークで使用されたものを使用する.一方で,次の3.2節では,公式タスク以外の,独自拡張データセット(およびタスク)を紹介する.
2.3節で既に示した「データ形式」のページでは,3.1.1~3.1.5節の各タスクむけアノテーションファイルのJSONの定義が,一覧で確認できる.
3.1.1 物体検出と実例分割
1節冒頭で既に述べたように,COCOデータセット画像への一番基本のアノテーションは,物体検出・インスタンスセグメンテーション(実例分割)向けの,画像中の物体インスタンスへのアノテーションである (図1).
各物体インスタンスごとにそれぞれ, 物体検出の(1) 80種の物体カテゴリのラベル,(2) バウンディングボックス と(3) 前景マスク の3つがアノテーションされている.
3.1.2 COCO Captions (2015より)
CVPR2015のLSUN (Large Scale Understanding)ワークショップで,COCOむけの画像キャプション生成用の正解アノテーションが登場した.各画像には,それぞれ5個の異なるキャプション文がアノテーションされている.
3.2節の「拡張データセット」で,VQAを始めとした「Vision-Language系タスクの追加アノテーション」がぞくぞく発表される最初のきっかけとなった意味で,COCO-captionsの登場は重要な出来事であった.しかし,COCO自体では,その後コンペティションは行われなかった.
3.1.3 人物 Keypoint (2016より)
ECCV2016のワークショップでは,人物キーポイントの検出(=人物姿勢推定タスク)むけのアノテーションが追加された.
COCOに,人物キーポイントも追加されたことで,その翌年には,各検出人物のキーポイント推定も同時に可能な「Mask R-CNN」が提案される展開にもつながった.
3.1.4 背景のモノ(stuff)へのアノテーション (2017より)
2017からは,「モノ(stuff)」への画素単位のクラスラベルが追加された.これまでの「前景」である「物体」のセグメンテーションだけでなく,Stuff Segmentationむけの意味的分割も実行可能となった.
80種の物体(object,things)カテゴリと,91種のモノ(stuff)のカテゴリが,各画素でアノテーションされている.ここで言う,「モノ(stuff)」とは,背景の「sky」「tree」「road」などの各クラス領域のことである.これは,別途 COCO-stuff データセットと呼ばれたが,すぐ次節の「パノプティック」のアノテーションにCOCO 2018で吸収されることになる.
3.1.5 パノプティックセグメンテーション (2018より)
COCO2018のコンテストでは,前年のStuffラベルを統合したものとして,パノプティックセグメンテーション(Panoptic Segmenattion)向けのアノテーションが,追加された(図5).
3.1.6 DensePose (COCO2020)
FAIRのメンバーは,DensePoseとよばれる3Dメッシュ人体モデルの「人物表面点グリッドの交点群」をCOCO画像の各人物インスタンスに対して推定するタスクを提案した(図6).
COCOの画像は「カメラ未校正」であり,シーンの3D情報も取得していないので,各人物インスタンスに三次元メッシュモデルをあてはめることはできない.よって,各画像のグリッド交点の正解は,作業者が手動でアノテーションした点群である.
COCO2020では,新たなベンチマークとして,このDensePoseタスクが採用された.
この路線は,当時は2019年時点では先進的であったが,3D人体モデルである「SMPLモデル」を画像にあてはめる「Human Mesh Estimation」路線が主流になり,(COCO公式タスクのわりには)Denseposeはそれほど人気ではない.
3.2 外部アノテーションの代表例
COCOデータセットの人気増加(使用頻度増)に伴い,データセット提供母体が開催している毎回のチャレンジとは関係なく,個々の研究用に必要な外部アノテーション(External Annotation)が,後から追加されていった.Visionタスク向けだと「COCO-xxx」と命名されるが,Vision-Languageむけだと「タスク名データセット」と命名されている傾向にある(例:VQAや,Visual Genomeなど).
3.2節では,そういった「外部アノーテーションによるタスク and データセット」について,代表例を列挙していく.以下リンク先の,「公式ページでのまとめ」等も参照のこと.
External Annotations on COCO and Related Datasets
※ KITTIデータセットでも起こった現象であるが,「1つのデータセットへの一極集中」は,モデルの評価の偏りをまねくゆえ,あまり歓迎できることではない.V-L系タスク向けに追加されていった「テキスト文」も,COCOの画像分布の範囲までしか多様性を表現できていない.とはいえ,Mask R-CNNのように,「容易にマルチタスク学習できる」メリットも生まれているので,「1極集中のトレードオフ性」を管理人としては感じる.
3.2.1 COCO-Text v2
画像中のテキスト文(text)の検出のベンチマークとして,COCOの画像を元にしたCOCO-textが作成された.その後,version2が公開され,以降はそのCOCO-Text v2が使用されている.
3.2.2 VQA
VQA(Visual Question Answering)は,自然言語処理の質問応答タスクのVisual版として提案されたタスクである.VQAタスクの提案研究では,COCOデータセットの画像をもとに,質問(question)と解答(answer)がアノテーションとして追加されて,VQAデータセットとして公開された
3.2.3 Visual Dialog データセット
前節の「VQA」に,「画像内容についての2者間の対話」をQAの前に付加したものが,Visual Dialogである.同チームから提案されたVQAの,発展・拡張タスクとして設定されているとも言える.
Visual Dialogタスクでは,画像に関する情報を含んだ「2者間での対話」が数ターン行われたのち,それらの対話文章も加味して「質問文」が来て,それに「解答」するという.
3.2.4 RefCOCO
Referring Expression Grounding (Image Grounding, もう少し一般化してVisual Groundingともよぶ) 向けの,COCO拡張データセットである.
Image Groundingでは,画像中の,特定領域や,特定物体についての記述文をクエリーとして入力し,その文が示す領域を特定してバウンディングボックスを出力する.つまり,このデータでは,COCOの各物体インスタンスに対して,その物体領域の様子を指し示す記述(Referring Expression)が正解として追加されており,そのReferring Expression文を,画像中の領域にGround(意味が同じところを対応付ける)ことを行う.
3.2.5 Visual Genome
COCO画像中で,各物体インスタンス間の関係を,「シーングラフ(Scene Graph)」として関係があるもの同士を結んだグラフを画像にアノテーションしてあるデータセットである.画像から,移っている物体領域同士のシーングラフを推定するのに使用する.
4. まとめ
この記事では,COCOデータセットの基本的なデータ構成(1節)をまず紹介したのち,各タスクおよび拡張アノテーションが登場したタスクの短い解説集を紹介した.
簡潔にまとめた記事ではあるが,COCOデータセットは,近年の画像認識およびVision-Language研究の双方の中心をなしてきた,(研究者の目線からは)非常に重要な役割を果たしたデータセットである.
4.1 COCOの意義・悪影響の議論
2022年ごろのCLIP登場以降のVision-Language学習モデルのブレイクも,元はといえば,COCOの登場でVision-Languageの各タスクをよく研究できるようになり,クロスモーダル学習の発展を助けていった結果生じた話とも見れる.
また,2.2節で述べたように,KITTI同様に,COCOにだけ研究リソースが過集中してきた問題がある.COCOでばかり,みんな画像認識やV-L系の研究成果を出してきすぎていて,他のデータセットでの実験が十分ではない.それだと「いつ通用しないか」や,「どのくらいCOCOで過学習しているか」が不明な研究・技術も多いので,注意が必要である.
関連書籍
- Pythonで学ぶ画像認識 (機械学習実践シリーズ) 【📖紹介記事】, 田村 雅人, 中村 克行, インプレス, 2023.
- 5章 物体検出 2節 > COCOデータセットの準備,データセットクラスの実装 (p182,183)
- 6章 画像キャプショニング > 2節COCO データセットの準備 (p296)
References
- [Lin et al.,2014] Tsung-Yi Lin, Michael Maire, Serge J. Belongie, James Hays, Pietro Perona, Deva Ramanan, Piotr Dolla ́r, and C. Lawrence Zitnick. Microsoft COCO: common objects in context. In ECCV, pages 740–755, 2014.