[論文読み]COCOデータセット

こんにちは。論文読みのメモとして初めてQiitaに投稿します。ぺいぺいです。現在大学の工学部情報工学分野に在籍しています。
記事の内容に間違いなどがあればご指摘いただければ幸いです。また、個人的に省略部分も多々ありますのでよろしくお願いします。
# 簡単な概要
* COCOデータセットは日常に近い風景の画像が多く含まれている。よって、実用上高い精度を出すことのできるモデルを学習させやすい。
* インスタンスごとにセグメンテーションしてあるデータセットである。
* 1枚の画像に含まれている物体の数が多いため、VOC、ImageNetなどと比較してやや難しいデータセットである。
* カテゴリーは犬の品種などまでは分かれておらず、こどもが現実世界でしようするレベルのカテゴリーのみが含まれている。

# 導入
*　ImageNet、VOCなどのデータセットは、画像処理の発展に大きな影響を及ぼした。
*　位置情報を含むもの、3D情報を含むもの、体の関節の位置情報を含むものなど様々なデータセットが存在する。
*　「良いデータセット」とはどのようなデータセットなのか。

## COCOデータセットの思想
### 物体がメインになりすぎない画像
検索エンジンなどで検索する画像は、物体がメインとして写っている場合が多い。例えば「車」と検索すると以下のような画像が出てくる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2718862/b929108e-705b-8ac7-510b-e316a5c6c69b.png)

しかし、現実世界で物体検出を行いたい場面で自転車がこのような写り方をするケースは少ない。例えば自動運転に利用したい場合、車はもっと小さく複数写っているはずである。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2718862/2415ca46-e481-f713-08a8-19d10159335c.png)
COCOデータセットは既存のデータセットよりも日常的なシーンを反映するような画像を集めたものであり、日常的にモデルを使用する際に高い精度を出せることを狙いとしている。

### 画像に写っている物体の関係性理解
ただ、画像に写っているパターンを把握して機会的に推論を行うのではなく、画像の意味を考えられるモデルを作成できるようなデータセットになるようにしている。人間であれば犬が空を飛んでいる画像を見たときに異常を感じることができるが、機械学習モデルにその判断はできない。したがって、COCOデータセットは「現実的に意味のある画像」を多く含ませている。

### 様々な物体に対する正確なラベリング
厳密な物体の位置把握は、情景の分析には非常に重要である。例えば、自動運転において人の位置のずれは許されない。また、モデルを評価したいとき、様々な種類の物体とそのラベル、セグメンテーションが必要となり、COCOデータセットでは対象物体のインスタンスラベルおよび、位置情報がピクセル単位で記録されている。例えば、複数の羊が写っている下の例では、同一の羊クラスであるものの個体ごとに異なるラベルが付けられている。
![coco.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2718862/c9851aed-499d-b4d0-2cf7-4f734883bdd9.png)

### MSCOCOの詳細
MSCOCOは、The Microsoft Common Objects in COntext の略称であり、その特性は以下のようになっている。
* 91種類のクラス(犬、人、羊 etc)
* クラスのうち82クラスは、それぞれ5000以上のインスタンスが存在する。
* 総画像数328,000枚の中に合計2,500,000個のラベル付けされたインスタンスが含まれている。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2718862/4d85c999-0c7d-f435-f94f-e748e753a62a.png)

* (a) カテゴリーごとのインスタンス
* (b) 画像1枚に写っているカテゴリーの数。多いほど、モデルはカテゴリーごとの対応関係(context)を学習することができる。
* (c) 画像1枚に写っているインスタンスの数。多いほど、モデルはインスタンスごとの対応関係(context)を学習することができる。SUNは1画像あたりのインスタンスは非常に多いが、画像の全体量が少ない。
* (d) カテゴリーとインスタンスの関係。COCOはVOCやSUNよりもカテゴリー数は少ないものの、インスタンス数が多いため、物体の正確な位置情報を学習するのに適している。
* (e)インスタンスのサイズを表している。インスタンスが小さいほど認識が難しく、画像のインスタンス以外の情報も重要になってくる。

# 関連研究
物体認識におけるデータセットはImage classification, object detection, semantic scene labeling の3種類に分類される。

## Image classification(画像分類)
Image classificationのデータセットには、画像とその画像内に何が写っているかの2値情報が必要である。 最初に作成されたデータセットは黒い背景に1つのオブジェクトのみが写ったものだった。
* MNIST: 手書き文字の2値画像データセット
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2718862/8622b9dc-81fa-7366-6336-e67bfb49ba6b.png)

* COIL: 家具のデータセット
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2718862/7b6adb50-bbc8-0bb9-cb2a-9c79351c4623.png)


その後、インターネットから画像を集めることにより、リアルな画像を持つデータセットが作成された。
* Caltech 101:
101種類のカテゴリーを持つデータセット。
* Caltech 256:
256種類のカテゴリーを持つデータセット。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2718862/0415bb79-4f14-6bcc-c9a0-58976b038f23.png)

機械学習を行うにあたり、より大きなデータセットが必要になり、データセットの規模が大きくなってきた。
* CIFAR-10:
10種類のカテゴリーを持つ32x32の画像データセット。
* CIFAR-100:
100種類のカテゴリーを持つ32x32の画像データセット。 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2718862/359ccdb5-7c08-0543-830f-e4bcc1477017.png)


これらのデータセットは60,000以上の画像を有していたが、まだまだ現実世界への機械学習の十分な応用には足りなかった。そこでImageNetが登場した。
* ImageNet:
22,000ものカテゴリーがあり、それぞれ500-1000枚の画像を含んでいる。また、これまでのデータセットよりも細かいカテゴリー分けがなされていた。COCOデータセットが発表されたあたりでは、1400万ものラベル付けされた画像を有している。

## Object detection(物体検出)
Object detectionは物体の所属クラスとその位置(主にBounding Box)を示す必要がある。 顔の検出データセットや歩行者のデータセットなどが存在する。
* Caltech Pedestrian Dataset：
350,000ものbounding boxでラベル付された歩行者のデータセット。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2718862/32c8e2e8-81b6-78f6-7282-240737835c16.png)

2005年から2012年にかけて、物体検出のベンチマークとなるデータセットを作成した。それがPASCAL VOC datasetである。
* PASCAL VOC: 
20のカテゴリーを有している、11,000枚以上のデータセット。 27,000以上のインスタンスにbounding boxが付与され、そのうち7000以上にセグメンテーションが行われた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2718862/258c3ee5-db27-eeba-a281-638e9199c1c8.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2718862/b9c3b35c-ec3a-e347-ea50-817154caa38c.png)

また、COCOデータセットが出たころにはImageNetで350,000個のオブジェクトにbounding boxが付与されたりしていた。 
サングラス、スマホ、椅子などの物体は、「自然な環境」にある方が良い。COCOデータセットでは、サングラスやスマホが違和感なく画像にあるような画像を含むように作成された。

## Semantic scene labeling
物体のセグメントは、それぞれのピクセルがどのクラスに属しているかのピクセル単位の分類問題と考えることができる。草や空、水などの境界が曖昧なものに対しても評価することができる。屋内画像のデータセットや屋外画像のデータセット、深さの情報を含んだデータセットなど様々なものが存在する。COCOデータセットでは、同一のクラスであってもインスタンスごとにラベルを区別する。(人間A, 人間B, 犬A, 犬B, ... のように)
つまり、物体の境界をちゃんと理解していないと正しくセグメンテーションできないということである。
* SUNデータセット:
3,819のカテゴリーがあり、908種類のシーンカテゴリーを含んでいる。semantic scene labelingとobject detectionのアノテーションがされている。しかし、カテゴリーごとのオブジェクト数の偏りが激しい。例えば、wallは20,213個、windowは16,080のインスタンスが含まれているが、boatは349個しか含まれていないため、不均衡データになりがちである。

## その他の画像データセット
* Middlebury datasets:
ステレオビジョン、マルチビューステレオ、オプティカルフローのデータセット。
* Berkeley Segmentation Data Set(BSDS500):
画像のセグメンテーションとエッジ検出のデータセット。

# 画像収集
## 一般的なオブジェクトのカテゴリー
* "thing":
「人、椅子、車」といった境界がはっきりしており、簡単に場所のラベリングを行うことができる。
* "stuff":
海、空、道路といった境界が曖昧であり、位置のアノテーションが難しい。

日本語ではどちらも「モノ」と訳せるが、COCOデータセットでは、"thing"のみをアノテーションしている。"stuff"をアノテーションすれば、画像ないの情報量が増すので精度向上に有益だろうと述べられている。

* オブジェクトが属するカテゴリーは1つとは限らない。犬は「犬」クラス、「哺乳類クラス」、「シェパードクラス」など様々なカテゴリーに属する可能性がある。COCOデータセットでは、実用性を考慮して、インスタンスを深いカテゴリーには分類せず、「犬」、「椅子」などごく一般的なカテゴリーのみを使用している。

COCOデータセットでは"things"の一般的なカテゴリーを収集するのに多くの手段を用いている。
* PASCAL VOCデータセットのカテゴリーと頻繁に使用される単語からカテゴリーのリストを作成。
* 4歳から8歳のこどもが現実世界で使用するカテゴリーを付け足した。
* その他、出現頻度、現実での使用感などを考慮して、5,000以上のインスタンスを含むカテゴリーのみをさらに追加した。

## 物体が画像の主体となっていないデータを使用
物体や風景が主体となっている画像を論文中では"iconic"な画像と表現している。また、画像の種類を大きく3種に分類しており、"iconic"でない画像をデータセットに多く含むようにしている。以下の図では、(a)と(b)は日常生活の風景としてはやや不自然である。どちらかというと本やwebサイト等で使用されそうなため、現実世界に即していない。一方(c)の画像は、日常生活でもよく目に使用な光景であると言える。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2718862/98cdc2c1-ead8-ed68-ad3c-c87ad3d787a0.png)


画像の収集方法としては、以下の方法で行なった。
* Flickrという写真共有サービスのデータを使用。(VOCも使用している)アマチュアが撮影した画像が多く、日常的な写真が多いと言える。
* 画像を検索する際もdogのみで検索するのではなく、"dog + car"などと複数カテゴリーを指定して検索する。

結果として328,000もの自然なオブジェクト同士の関連性が深い画像を収集することができた。

# 画像のアノテーション
250万ものインスタンスのアノテーションは効率的に行う必要がある。COCOデータセットのアノテーションは、Amazon's Mechanical Turk(AMT)というクラウドソーシングを利用して段階的に行なった。アノテーションの手順は以下のようになっている。
1. 画像に対象のカテゴリーが含まれているかどうかを判断(Category labeling)
1. 画像内の全てのインスタンス上にマーカーを設置(Instance spotting)
1. セグメンテーション
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2718862/2977556d-ecec-8d01-3e07-05820db90ab3.png)

# データの分割
* 2014年版
train: 82,783, val: 40504, test: 40775 であり、比率は大体2:1:1である。カテゴリー数80。
* 2015年版
train: 165,482, val: 81,208, test: 81,434 である。カテゴリー数91。

trainとvalやtestに似たような画像が入らないように除去してある。

# アルゴリズムの分析
## データセットが難しいことの影響
COCOデータセットは他のデータセットと比較して難易度が高いと考えられるが、それがいつも良い影響を及ぼすとは限らない。モデルの表現力によっては、難しすぎるデータセットでは学習に悪影響を及ぼす可能性があるらしい。
## データセットの交差検証
VOCで学習したモデルDPMv5-PとCOCOで学習したモデルDPMv5-CをそれぞれVOCとCOCOのテストセットで評価した表が以下の表である。
![スクリーンショット 2022-07-02 21.01.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2718862/3f2fc334-b894-4b98-1943-844cf6be73a4.png)
* COCOで学習したモデルは本来不利であるにもかかわらず、VOCのテストセットで20カテゴリ中6カテゴリでVOCで学習したモデルよりも高い精度を出している。
* 学習するデータセットとテストするデータセットを変え、精度の減少幅によって、データセットの汎用性を評価する手法がある。VOCで学習したモデルはAPが12.7減少してしまったのに対し、COCOで学習したモデルは7.7しか減少しなかった。このことからCOCOデータセットで学習したモデルは汎用性を持つことがわかる。

## Bounding Box検出とセグメンテーション
セグメンテーションタスクはBounding Box検出よりも難しいタスクである。論文中では、両者の精度を正解データと予測領域のオーバーラップ部分を指標として比較している。
![スクリーンショット 2022-07-02 21.34.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2718862/d052c951-22e2-9246-beea-32a30dbee0d1.png)
* 人のBounding Boxは高い精度で検出されている一方、セグメンテーションの制度は高くない。(左図)
* 全体の精度もセグメンテーションの方が低く出ている傾向がある。(中図)
* バス、電車といった四角い物体はセグメンテーション精度が高い傾向にある。これは自然とBounding Box検出のタスクと似るからであろうか。

最後まで見ていただきありがとうございました。