データセット「COCO」について説明。約33万枚のカラー写真(教師ラベル付きは20万枚以上)の画像データとアノテーション(=教師ラベル)が無料でダウンロードでき、物体検知/セグメンテーションや、キーポイント検出/姿勢推定、キャプション作成などに利用できる。
Microsoft COCO(Common Objects in Context)は、約33万枚(ただし教師ラベル付きは約20万枚以上、残りの約12万枚は教師ラベルなし)の大規模な「カラー写真」の画像データセットである(図1)。
主な用途(タスク)は、
となっている。タスクの参考として、例えば2020年に行われたCOCOを用いたコンペティションに以下のものがある。
COCOではさまざまな種類のセグメンテーションタスクでコンペティションが行われている。上記の2020年には、Instance SegmentationとPanoptic Segmentationの2種類が行われた。2019年には、「Stuff Segmentation」というタスクも行われている。
なお、スタッフ(Stuff)とは、窓ガラス、壁、床、空など無形の数えられないモノを指し、物体(Object、Thing:人、車、猫など物理的に形がある数えられるモノ)とは区別される。よってStuff Segmentationとは、スタッフに対するセマンティックセグメンテーション(semantic segmentation)のことであり、物体に対するセグメンテーションであるInstance Segmentationとは区別される。ちなみに上記のPanoptic Segmentationは、スタッフと物体の両方に対応するシーンセグメンテーション(scene segmentation)のことである。
データセットは、画像データと、それに対する教師ラベルであるアノテーションに分けられ、さらにそれらが訓練(Train)/検証(Val)/テスト(Test)にあらかじめ分割されている。COCOは毎年のようにアップデートされており、具体的には以下のように更新されている。
詳しくは「COCOの公式ダウンロードページ」を参照してほしい。
COCOの利用規約によると、COCOの画像を使用する場合は、Flickrの利用規約に従う必要があるとのこと。画像ファイルごとにCreative Commonsのいずれかのライセンスが割り当てられており、その情報がアノテーションに含まれている。
データセットに関する研究内容を参照する際に使える論文情報を以下にまとめておく。
実際にCOCOを使うには、TensorFlowやPyTorchといった各ライブラリが提供する機能を利用することをお勧めする。以下に、それぞれのライブラリで「どのようなコードを書くとCOCOが使えるか」の典型的なコードを簡単に示しておく(※コードの詳細は解説しない)。
# !pip install tensorflow-datasets # ライブラリ「TensorFlow Datasets」をインストール
import tensorflow_datasets as tfds
coco2017_train = tfds.load(name="coco/2017", split="train")
coco2014_captions_train = tfds.load(name="coco_captions/2014", split="train")
TensorFlow Datasetsで使用できるデータセットは、TensorFlow Datasetsにまとめられており、tensorflow_datasetsモジュール(=tfds)のload()関数から利用できる。COCOデータセットは、次の2種類が提供されている。
自動的にダウンロードできない仕様なので、事前に後述の「ダウンロード方法」に示す方法で、利用したい画像データとアノテーションの両方をダウンロードして、任意のフォルダー(例えば画像データを「./images/train2017/」に、アノテーションを「./annotations/」)に配置しておく必要がある。
# !pip install torch torchvision # ライブラリ「PyTorch」をインストール
import torch
import torchvision
coco_det_data = torchvision.datasets.CocoDetection(
'./images/train2017', annFile='./annotations/instances_train2017.json',
transform=torchvision.transforms.ToTensor())
coco_cap_data = torchvision.datasets.CocoCaptions(
'./images/train2017', annFile='./annotations/captions_train2017.json',
transform=torchvision.transforms.ToTensor())
data_loader_det = torch.utils.data.DataLoader(coco_det_data, batch_size=4, shuffle=True)
data_loader_cap = torch.utils.data.DataLoader(coco_cap_data, batch_size=4, shuffle=True)
torchvision.datasets名前空間の、
いずれかのクラスのコンストラクター(厳密には__init__関数)でデータセットのオブジェクトを生成してデータをダウンロードし、torch.utils.data.DataLoaderクラスのコンストラクターでデータローダーのオブジェクトを生成してデータをロードする。
COCOは、下記の公式ページからダウンロードできる。具体的なダウンロード方法は、リンク先のページにおける手順説明に従ってほしい。
Copyright© Digital Advantage Corp. All Rights Reserved.