PASCAL VOC③(Datasetの確認)|機械学習の有名データセットや評価指標を確認する #3

f:id:lib-arts:20190624163551p:plain
機械学習の研究を読み解いたり実際に取り組んだりする中でデータセットや評価指標について知っておくと良いので、それらについての整理を行うにあたって連載を行なっていきます。
#1、#2では2005年〜2012年頃の画像認識のデータセットとして有名なPASCAL VOCの概要と初期のデータセットとしてよく見かけるPASCAL VOCの2007、2010、2012について取り扱いました。

#1、#2で大体のコンペティションの概要がつかめたので、#3では2012のデータセットを実際に確認していければと思います。
以下目次になります。
1. ダウンロードしたdatasetのフォルダ構成について
2. datasetのドキュメントについて
3. まとめ


1. ダウンロードしたdatasetのフォルダ構成について
まず2012年のデータのダウンロードを行います。

f:id:lib-arts:20190624164532p:plain

The PASCAL Visual Object Classes Challenge 2012 (VOC2012)

ダウンロードは2012年のページの"Development Kit"から行うことができます。ファイルのサイズが2GBほどあるので注意が必要です。ダウンロードした"VOCtrainval_11-May-2012.tar"を解凍すると、"VOCdevkit"というフォルダが作成され、"VOCdevkit/VOC2012"の中に下記のようなフォルダ(ディレクトリ)が入っています。

f:id:lib-arts:20190624164602p:plain

1節ではこれらのディレクトリ構成を確認していきます。
まずはJPEGImagesディレクトリについて確認します。

f:id:lib-arts:20190624183246p:plain
上記のように、JPEGImagesの中に写真のデータが入っていることが確認できます。次にSegmentation関連のディレクトリを確認していきます。こちらについてはJPEGImages、SegmentationObject、SegmentationClassの順番で確認していくとわかりやすいのでそのようにします。まずJPEGImagesについては下記です。

f:id:lib-arts:20190624184206p:plain

上記は"2007_000042.jpg"の画像です。二両の電車が写っていますがこちらの例を元にすると分かりやすいと思われたためチョイスしました。次にSegmentationObjectについて見ていきます。

f:id:lib-arts:20190624184224p:plain
"2007_000042.jpg"に対応するIDを持つ"2007_000042.png"を確認すると、上記のように二両の電車にそれぞれ色付けされています。最後にSegmentationClassについて確認します。

f:id:lib-arts:20190624184240p:plain
ここでは二つのセグメンテーションの画像が両方とも電車のため同じクラスに分類されています。
次に"Annotations"について見ていきます

f:id:lib-arts:20190624184834p:plain
一度見た例の方が良いと思われるため、こちらも同様のIDを持つ"2007_000042.xml"について確認します。

f:id:lib-arts:20190624184849p:plain
上記のように画像のアノテーションがつけられています。こちらを解釈していくと、まず重要なのが<object>のタグの中身が物体の情報を表しているということです。こちらを確認すると、<object>と</object>の間に<name>タグや<bndbox>タグなどがあることが確認できます。まず<name>については<name>train</name>となっており、画像の中の物体(object)に電車というアノテーションがついているということがわかります。また、<bndbox>はbounding boxの略で、座標を表すための物体を囲む長方形のことです。ここで<xmin>、<ymin>、<xmax>、<ymax>の四つのタグがあり、(xmin,ymin)(xmax,ymax)の二つの点を対角に取った際の長方形をこちらでは表しています。
また、<size>タグでは画像のサイズを表しており、こちらのスコープは物体(object)にかかっていないことに注意です。このようにXMLファイル形式でアノテーションについての諸々が表現されています。

f:id:lib-arts:20190624190223p:plain
最後にImageSetsについては上記のようにいくつかフォルダが出てきたため、一旦後回しとします。
ここまでで、datasetの大体のディレクトリ構成については理解できたため、1節はここまでとします。


2. datasetのドキュメントについて
1節でdatasetの大体のディレクトリ構成や概要についてはわかったため、2節ではドキュメントの確認をしていければと思います。

f:id:lib-arts:20190624190539p:plain

The PASCAL Visual Object Classes Challenge 2012 (VOC2012) Development Kit

ドキュメントは上記で確認することができます。全部読むと長そうなので、重要そうなところを随時抜粋して要約していきます。

f:id:lib-arts:20190624191159p:plain
まず1のChallengeですがコンペティションの概要について書かれています。データセットの確認だけなら不要な項目ですが、問題定義の仕方として参考になるので少しだけ確認しておきます。『このコンペティションの目的は写真から数多くの物体の検出を行うことで、20クラスのデータがあり、Classifiaction、Detection、Segmentation、Action Classification、Large Scale Recognitionなどの五つのタスクがあります。』とされており、概ね#2で確認したことに一致しています。次に2のDataを見ていきます。

f:id:lib-arts:20190624191631p:plain
2.1ではClassification/Detectionのデータセットについて触れられています。train、val、trainval、testなどについての説明や、それぞれのクラスの総数についてTable 1でまとめられています。表を見る際の注意はobjは一つのimgに対し複数ある際もあるのでimg<objとなっていることと、trainvalがtrainとvalを足したものであるため、二つの合計になっているということです。同様に2.2のTable2ではSegmentationについて、2.3のTable3ではAction Classificationについてまとめられています。
・2.2 Segmentation

f:id:lib-arts:20190624192931p:plain
・2.3 Action Classification

f:id:lib-arts:20190624192956p:plain

また、2.5では正解データ(Ground Truth)のアノテーションについてまとめられています。

f:id:lib-arts:20190624193226p:plain
Section3以降は各コンペティションのタスクについて言及されています。

f:id:lib-arts:20190624193237p:plain
データセットに関する内容については一通り確認できたので、2節はここまでとします。


3. まとめ
#1~#3までで、ImageNetの一世代前のような位置付けの2005年〜2012年にかけて整備された画像のデータセットであるPASCAL VOCについて取り扱いました。
#4からは言語処理におけるデータセットとして2018年よりしばしば用いられているGLUE(GGeneral Language Understanding Evaluation)について取り扱います。