LoginSignup
21
18

More than 5 years have passed since last update.

PASCAL VOC 2012のセグメンテーションで使用されているカラーマップ

Last updated at Posted at 2018-08-03

はじめに

セマンティックセグメンテーションの学習モデルとして使用されている「PASCAL VOC 2012」では、色とクラスが以下のようにマッピングされています。
image.png

これらがどのように決められているのかを書かせていただきます。

インデックス値とクラスの紐付け

現在の「PASCAL VOC 2012」では20のクラスと1つの背景、および、1つの未設定の合計22クラスが設定されています。
これらはカラーマップのインデックス値と紐づいています。

インデックス値 クラス
0 背景
1 飛行機
2 自転車
3
4 ボート
5 ビン
6 バス
7 自動車
8
9 椅子
10
11 テーブル
12
13
14 バイク
15
16 鉢植え
17
18 ソファー
19 電車
20 テレビ
21 未設定

これらは固定となっています。

インデックス値と色の紐付け

学習データでは、各ピクセルが上記の値になっているわけではなく、人が見て区別できるような色が設定されています。
image.png

これらの色とインデックス値は、以下の法則で決まっています。
1. 黒(0,0,0)は0(背景)
2. それ以外は、赤・緑・青のそれぞれの上位ビットから順番に、インデックス値の下位ビットに割り当てる
3. 上記から、255(未設定)は明るいグレーっぽい色(224,224,192)

図で書くとこんな感じです。
image.png

具体的には、以下の値が紐づいています。

インデックス値
0x00 0x00 0x00 0(背景)
0x80 0x00 0x00 1
0x00 0x80 0x00 2
0x80 0x80 0x00 3
0x00 0x00 0x80 4
0x80 0x00 0x80 5
0x00 0x80 0x80 6
0x80 0x80 0x80 7
0x40 0x00 0x00 8

(以下省略、(224,224,192):255(未設定)まで設定可能)

こちらで取得できるデータでは、インデックスカラーで指定されているため、いちいちRGBのビットを見て変換とかしなくても、インデックスの値そのまま使えます

おまけ

PILでインデックスカラーの画像ファイルを読み込むと、そのままインデックス値が取得できる。
OpenCVでインデックスカラーの画像ファイルを読み込むと、RGBに変換されたものしか取得できないので注意。

まとめ

色とインデックス値の紐付けが分かったので、これで独自データを学習させてセグメンテーションできますね。
(学習データを用意するのがめんどくさいのですが...)

21
18
5

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
  3. You can use dark theme
What you can do with signing up
21
18