search
LoginSignup
11
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

はじめての Google Open Images Dataset V6

やりたいこと

image.png

各データの概要

image.png

(1)Images

学習用データとして用いる画像ファイル(.jpg)の実体をダウンロードできる。

image.png

image.png

(2)Boxes

oidv6-train-annotations-bbox.csv がダウンロードできる。ImageIDをキーとして、そのイメージに移りこんだ対象物のラベル名および、その対象物の位置を示す矩形領域(相対位置)が書かれている。

image.png

image.png

(3)Segmentations

train-masks-0.zip などをダウンロードできる。これは「Imagesでダウンロードしたjpg写真」に重ねることで「対象物以外をマスキングする」ことができる画像である。

image.png

たとえば、ImageIDが0000c4f95a9d5a54の場合。

0000c4f95a9d5a54.jpg

image.png

ここで、train-masks-0 フォルダに含まれる 0000c4f95a9d5a54_m01226z_6491f7bc.png は、サッカーボール以外の領域をマスクする画像である。

0000c4f95a9d5a54_m01226z_6491f7bc.png

image.png

重ね合わせると下記。

image.png

(4)Relationships

oidv6-train-annotations-vrd.csv をダウンロードできる。

image.png

ImageIDをキーとして、

ImageID,LabelName1,LabelName2,XMin1,XMax1,YMin1,YMax1,XMin2,XMax2,YMin2,YMax2,RelationshipLabel
000506542b3a9dd7,/m/03bt1vf,/m/019nj4,0.159326,0.407383,0.182617,0.999023,0.159326,0.407383,0.182617,0.999023,is
000506542b3a9dd7,/m/03bt1vf,/m/019nj4,0.709845,0.999352,0.234375,0.999023,0.709845,0.999352,0.234375,0.999023,is
000506542b3a9dd7,/m/03bt1vf,/m/02wzbmj,0.000000,0.150907,0.108398,0.999023,0.000000,0.150907,0.108398,0.999023,is
000506542b3a9dd7,/m/03bt1vf,/m/02wzbmj,0.159326,0.407383,0.182617,0.999023,0.159326,0.407383,0.182617,0.999023,is
000506542b3a9dd7,/m/03bt1vf,/m/02wzbmj,0.709845,0.999352,0.234375,0.999023,0.709845,0.999352,0.234375,0.999023,is
00083be471c81e1b,/m/03bt1vf,/m/083mg,0.149565,0.646087,0.075625,0.979375,0.149565,0.646087,0.075625,0.979375,is
00083be471c81e1b,/m/03bt1vf,/m/083mg,0.424348,0.847826,0.087500,0.923750,0.424348,0.847826,0.087500,0.923750,is
000ac95750ac7399,/m/04yx4,/m/019nj4,0.049375,0.560625,0.084270,0.999064,0.049375,0.560625,0.084270,0.999064,is
000ac95750ac7399,/m/04yx4,/m/019nj4,0.485625,0.658750,0.496255,0.999064,0.485625,0.658750,0.496255,0.999064,is
000ac95750ac7399,/m/04yx4,/m/02wzbmj,0.049375,0.560625,0.084270,0.999064,0.049375,0.560625,0.084270,0.999064,is
000ac95750ac7399,/m/04yx4,/m/02wzbmj,0.485625,0.658750,0.496255,0.999064,0.485625,0.658750,0.496255,0.999064,is
000d1d89a1939a18,/m/01bl7v,/m/015c4z,0.337500,0.417500,0.482109,0.838983,0.337500,0.417500,0.482109,0.838983,is
000d1d89a1939a18,/m/01bl7v,/m/019nj4,0.484375,0.591250,0.044256,0.387947,0.484375,0.591250,0.044256,0.387947,is

のようなデータが確認できる。

(5)Localized narratives

へリンクする。利用方法は未調査のため不明。

(6)Image labels

train-annotations-human-imagelabels-boxable.csv がダウンロードできる。

image.png

下記のようなデータが格納されている。

ImageID,Source,LabelName,Confidence
000002b66c9c498e,verification,/m/014j1m,0
000002b66c9c498e,verification,/m/014sv8,1
000002b66c9c498e,verification,/m/01599,0

たとえば、
000fe11025f2e246.jpg
の場合。

ImageID: 000fe11025f2e246

image.png

この写真に対する各ラベルの名称と信頼性

ImageID             Source                      LabelName    Name             Confidence
000fe11025f2e246    crowdsource-verification    /m/0199g     Bicycle          1
000fe11025f2e246    crowdsource-verification    /m/07jdr     Train            0
000fe11025f2e246    verification                /m/015qff    Traffic light    0
000fe11025f2e246    verification                /m/018p4k    Cart             0
000fe11025f2e246    verification                /m/01bjv     Bus              0
000fe11025f2e246    verification                /m/01g317    Person           1
000fe11025f2e246    verification                /m/01knjb    Billboard        0
000fe11025f2e246    verification                /m/01mqdt    Traffic sign     0
000fe11025f2e246    verification                /m/01prls    Land vehicle     1
000fe11025f2e246    verification                /m/04_sv     Motorcycle       1
000fe11025f2e246    verification                /m/07j7r     Tree             1
000fe11025f2e246    verification                /m/07yv9     Vehicle          1
000fe11025f2e246    verification                /m/083wq     Wheel            1
000fe11025f2e246    verification                /m/0cgh4     Building         0
000fe11025f2e246    verification                /m/0k4j      Car              1
000fe11025f2e246    verification                /m/0pcr      Alpaca           0
000fe11025f2e246    verification                /m/0pg52     Taxi             0
000fe11025f2e246    verification                /m/0zvk5     Helmet           0

Confidenceが1なのは

  • Bicycle
  • Person

など。

Confidenceが0なのは

  • Alpaca
  • Taxi

など。

すなわち
「この写真には、自転車や人が写っていることは信頼できるが、アルパカやタクシーが写っていることは信頼できない」となる。

(7)Image IDs

image.png

train-images-boxable-with-rotation.csv をダウンロードできる。

ImageIDをキーとして

ImageID,Subset,OriginalURL,OriginalLandingURL,License,AuthorProfileURL,Author,Title,OriginalSize,OriginalMD5,Thumbnail300KURL,Rotation

といったデータが保存されているが、用途の詳細は未調査のため不明。

(8)Metadata

image.png

Class Names

class-descriptions-boxable.csv がダウンロードできる。

/m/011k07,Tortoise
/m/011q46kg,Container
/m/012074,Magpie

.....以下省略

Relationship names

oidv6-relationships-description.csv がダウンロードできる。

at,at
holds,holds
wears,wears
surf,surf

.....以下省略

Attribute names

oidv6-attributes-description.csv がダウンロードできる。

/m/02gy9n,Transparent
/m/05z87,Plastic
/m/0dnr7,(made of)Textile
/m/04lbp,(made of)Leather
/m/083vt,Wooden
/m/02wzbmj,Stand
/m/083mg,Walk
/m/06h7j,Run
/m/0by3w,Jump
/m/015c4z,Sit
/m/051_dmw,Lay
/m/019nj4,Smile
/m/0463cq4,Cry
/m/015lz1,Sing
/m/01lhf,Talk

Relationship triplets

oidv6-relationship-triplets.csv がダウンロードできる。

LabelName1,LabelName2,RelationshipLabel
/m/03bt1vf,/m/02wzbmj,is
/m/01y9k5,/m/083vt,is
/m/04yx4,/m/0jyfg,wears
/m/02p5f1q,/m/02vqfm,contain

.....以下省略


Segmentation Classes

https://storage.googleapis.com/openimages/v5/classes-segmentation.txt へのリンク。

画像データをダウンロードする

image.png

下記に記載のとおり、AWSのCLIにてダウンロードできる。
https://github.com/cvdfoundation/open-images-dataset#download-images-with-bounding-boxes-annotations
事前にawscliをインストールしておく。

awscliのインストール手順

CentOSの場合: https://qiita.com/kenichiro-yamato/items/039ba9a9867e177e67f0
Windowsの場合: https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv2-windows.html

image.png

まずは下記コマンドにて、train_0.tar.gz をダウンロードする。

aws s3 --no-sign-request cp s3://open-images-dataset/tar/train_0.tar.gz .

画像データの構成

ダウンロードしたアーカイブを解凍すると、フォルダ内にjpgファイルが保存されている。

image.png

image.png

ここでは例として

0000e8b36676338b.jpg

に着目する。

ImageID: 0000e8b36676338b

ImageIDは、画像を一意に識別できるIDである。
ファイル名がImageIDになっている。

縦横ピクセル width: 1024px height: 685px

image.png

何の写真なのか?を調べる

image.png

Metadata の ClassNames からダウンロードできるファイル

class-descriptions-boxable.csv

を参照すると、

/m/01prls,Land vehicle

という記載がある。つまり「Land vehicle」(陸上車両)の写真である。
ここで、

/m/01prls

は、LabelName(ラベルネーム)と呼ばれる識別子である。

ImageIDに紐づくLabelName(ラベルネーム)を求める方法

ImageIDとLabelNameの対応は、

oidv6-train-annotations-bbox.csv

に記載されている。
BoxesのTrainからダウンロードできる。

image.png

このCSVをImageIDで検索すれば、LabelNameが求まる。

image.png

つまり

ImageID:0000e8b36676338b は LabelName:/m/01prls なので Land vehicle

となる。

oidv6-train-annotations-bbox.csv の詳細

さらに詳細を見ていくと、下記の記載がある。

ImageID: 0000e8b36676338b
Source: xclick
LabelName: /m/01prls
Confidence: 1
XMin: 0.07
XMax: 0.89375
YMin: 0.139122
YMax: 0.835668
IsOccluded: 0
IsTruncated: 0
IsGroupOf: 0
IsDepiction: 0
IsInside: 0
XClick1X: 0.431875
XClick2X: 0.07
XClick3X: 0.36875
XClick4X: 0.89375
XClick1Y: 0.139122
XClick2Y: 0.641457
XClick3Y: 0.835668
XClick4Y: 0.449113

各数値からピクセル位置を計算する。

W:1024
H:685
column    rate       w, h    px
--------------------------------
XMin      0.07       1024    72
XMax      0.89375    1024    915
YMin      0.139122    685    95
YMax      0.835668    685    572
XClick1X  0.431875   1024    442
XClick2X  0.07       1024    72
XClick3X  0.36875    1024    378
XClick4X  0.89375    1024    915
XClick1Y  0.139122    685    95
XClick2Y  0.641457    685    439
XClick3Y  0.835668    685    572
XClick4Y  0.449113    685    308

image.png

算出したピクセル位置を画像にプロットすると下記のようになる。

image.png

これらの数値は「写真全体における、陸上車両が占める相対位置(領域)」を示す。
陸上車両を学習させるためのデータとして利用するには、背景の芝生や樹木と車両を区別する必要があるため。

画像領域識別プログラムの実装例

例として「ある画像データと共に、4点の座標をピクセル値で与えた場合に、その領域をマークする(あるいは切り抜く)」というプログラムの実装を考える。
その場合、関数に与えるべき4点の座標は下記の値になる。

image.png

つまり、下記の4つの値

top: 95px
left: 72px
bottom: 572px
right: 915px

を渡すことで、画像内の特定矩形領域を認識できる。
ブラウザ上で表現する場合の実装(HTML, CSS, JavaScript)は、たとえば下記のようになる。

変数boxに各値が入っているならば、

                $('#' + id).css('top', box.top);
                $('#' + id).css('left', box.left);
                $('#' + id).css('width', box.width);
                $('#' + id).css('height', box.height);

ここで、

$('#' + id)

は、

position: absolute;

などで重ねる「領域特定用のdivタグ」などを示す。
width = right - left;
height = bottom - top;
で求める。

この実装にて、元画像のimgタグに対して、div領域を重ねることで、
「写真全体において、陸上車両の部分のみを囲む(陸上車両の部分にのみdivを重ねてborderをつける)」
などの処理を実現できる。

一枚の写真に複数の車両が存在する場合

つぎに、
ImageID:000c10e0af86b52d
に着目する。

width: 1024px
height: 768px

image.png

この写真のように、複数の車両が写っている画像において、
各車両を識別する矩形データがどのように格納されているかを見る。

下記ファイルから該当データを抽出する。

oidv6-train-annotations-bbox.csv
class-descriptions-boxable.csv

ClassNamesは下記。

/m/01g317,Person
/m/04_sv,Motorcycle
/m/083wq,Wheel
/m/0h9mv,Tire

Person

000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person
000c10e0af86b52d    /m/01g317    Person

Motorcycle

000c10e0af86b52d    /m/04_sv    Motorcycle
000c10e0af86b52d    /m/04_sv    Motorcycle

Wheel

000c10e0af86b52d    /m/083wq    Wheel
000c10e0af86b52d    /m/083wq    Wheel
000c10e0af86b52d    /m/083wq    Wheel
000c10e0af86b52d    /m/083wq    Wheel
000c10e0af86b52d    /m/083wq    Wheel

Tire

000c10e0af86b52d    /m/0h9mv    Tire
000c10e0af86b52d    /m/0h9mv    Tire
000c10e0af86b52d    /m/0h9mv    Tire
000c10e0af86b52d    /m/0h9mv    Tire
000c10e0af86b52d    /m/0h9mv    Tire

今回は
Motorcycle
に着目し
2台の位置を特定できているか?
を確かめる。

1台目

column    rate    w, h    px
-------------------------------
XMin    0.2375    1024    243 
XMax    0.486875  1024    499 
YMin    0.445      768    342 
YMax    0.639167   768    491 

image.png

以上のとおり、白いMotorcycleの領域を特定できている。

2台目

column    rate        w, h    px
-----------------------------------
XMin      0.456875    1024    468 
XMax      0.83875     1024    859 
YMin      0.445        768    342 
YMax      0.789167     768    606 

image.png

以上のとおり、灰色のMotorcycleの領域を特定できている。

まとめ

グーグルは
Open Images Dataset V6
https://storage.googleapis.com/openimages/web/index.html
にてデータセットを公開している(2020年11月時点)。
今後も公開データは増えて内容も充実していくだろう。

しかし、それを使いこなすためのノウハウ、すなわち
「そのデータをダウンロードして、具体的に、どのように使うのか? 何に役立つのか?」
については、各人での試行錯誤が必要となる。

特に、LAMPでのWebサービス実装をメインとしている(私のような)サーバサイドエンジニアは、
「機械学習の世界で前提とされている知識」が乏しいため、
教師データを構成する各値が「何を表すのか?」が分からなかった。
今回、各値を手作業で調べながら関連性を確かめていくことで、その全容が少しずつ見えてきた。
今後はダウンロードしたデータをDBに突っ込んで(それはサーバサイドエンジニアがもっとも得意とする領域)、
CSVやTSVをRDBにすることでより扱いやすくしたり、Web画面を実装してAPIでデータを呼び出せるようにしたり、
などの作業を進めながら、本来の目的である「機械学習モデルの実装(python, Tensorflow, Keras)にも着手していく予定。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
11
Help us understand the problem. What are the problem?