こちらにアノテーションツールLabelmeを使ってデータセットを作る方法を記載しました。作ったデータセットの属性を了解することは、データ処理やモデル構築に有益です。この記事では、自作画像セグメンテーションデータセットの画像ごとにあるRGB値とそれぞれが占めるピクセル値を統計する方法と全データセットにあるRGB値を入手する方法を記載します。
1.画像ごとにあるRGB値とそれぞれが占めるピクセル数
使う画像はPascal VOC2012データセットのgt画像です。

from PIL import Image
import numpy as np
img = Image.open('pascal/nisgel.png').convert('RGB')
arr = np.array(img)
colours, counts = np.unique(arr.reshape(-1,3), axis=0, return_counts=1)
print(colours,counts)
このスクリプトで画像中にあるRGB値とそれぞれが占めるピクセル数を算出できます。 結果:
[[  0   0   0]
 [128   0   0]
 [224 224 192]] [223955  26602  12612]
2.全データセットのRGB値の統計
使う画像は以下の二つのPascal VOC2012データセットのgt画像です。


import os
from PIL import Image
import numpy as np
base = 'pascal'
all_image = os.listdir(base)
result = []
for img in all_image:
    image = Image.open(f'{base}/{img}').convert('RGB')
    arr = np.array(image)
    colors = arr.reshape(-1, 3)
    result.extend(colors)
    colors = np.unique(result, axis=0, return_counts=1)
    result = colors[0].tolist()
print(result)
これで、全データセットのRGB値は得られます。 結果:
[[0, 0, 0], [128, 0, 0], [128, 128, 0], [224, 224, 192]]