SVHN(Street View House Numbers)データセットデータ構造

 SVHN(Street View House Numbers)データセット(以下、SVHN)は、Googleストリートビュー画像から家の番地を示す「複数桁の数字列」から、「0」~「9」の1文字が「中央」に来るように小さくトリミングされた画像データセットである。数字に合わせて、ラベル(=正解を示す教師データ)も09となっている。
(出典:https://atmarkit.itmedia.co.jp/ait/articles/2112/15/news017.html)


直接サイトに行くことで、Bounding boxを得ることができる。
「digitStruct.mat」がそれにあたる。
サイトからダウンロードできるデータを解凍すると同データが入っている。

Pythonで読み込む場合はなぜか古い形式のファイルの様で、
import mat73
ができる環境が必要。

['bbox']内のデータは画像内に複数の数字が含まれている可能性があることから、複数のデータが入っている可能性がある。
下の['height']の次の0は、複数のBBoxのKeyに相当する。

path = "digitStruct_test.mat"
data_dict = mat73.loadmat(path)

datalist = data_dict['digitStruct']
max_num = len(data_dict['digitStruct']['name'])

for i in range(0, 10):
   
   print(datalist['name'][i])
   if isinstance(data_dict['digitStruct']['bbox'][i]['height'], (np.ndarray, np.generic)):
       print("label")
       print(datalist['bbox'][i]['label'].item())
       print("height")
       print(datalist['bbox'][i]['height'].item())
       print("width")
       print(datalist['bbox'][i]['width'].item())
       print("top")
       print(datalist['bbox'][i]['top'].item())
       print("left")
       print(datalist['bbox'][i]['left'].item())

   else:
       bbox_cnt = len(datalist['bbox'][i]['height'])
       for j in range(0,bbox_cnt):

           print("label")
           print(datalist['bbox'][i]['label'][j].item())
           print("height")
           print(datalist['bbox'][i]['height'][j].item())
           print("width")
           print(datalist['bbox'][i]['width'][j].item())
           print("top")
           print(datalist['bbox'][i]['top'][j].item())
           print("left")
           print(datalist['bbox'][i]['left'][j].item())
   print("----------------------")
   

これを処理した結果は以下の通りになる。

ちなみに画像はこちら

画像2


1.png
label
5.0
height
30.0
width
19.0
top
7.0
left
43.0
----------------------
2.png
label
2.0
height
23.0
width
14.0
top
5.0
left
99.0
label
1.0
height
23.0
width
8.0
top
8.0
left
114.0
label
10.0
height
23.0
width
12.0
top
6.0
left
121.0
----------------------
3.png
label
6.0
height
16.0
width
11.0
top
6.0
left
61.0
----------------------
4.png
label
1.0
height
17.0
width
14.0
top
6.0
left
32.0
----------------------
5.png
label
9.0
height
28.0
width
19.0
top
28.0
left
97.0
----------------------
6.png
label
1.0
height
23.0
width
7.0
top
11.0
left
40.0
----------------------
7.png
label
1.0
height
21.0
width
9.0
top
7.0
left
44.0
label
8.0
height
21.0
width
11.0
top
6.0
left
51.0
label
3.0
height
21.0
width
10.0
top
6.0
left
62.0
----------------------
8.png
label
6.0
height
23.0
width
14.0
top
16.0
left
62.0
label
5.0
height
23.0
width
14.0
top
17.0
left
80.0
----------------------
9.png
label
1.0
height
18.0
width
12.0
top
8.0
left
27.0
label
4.0
height
18.0
width
13.0
top
5.0
left
40.0
label
4.0
height
18.0
width
15.0
top
7.0
left
52.0
----------------------
10.png
label
1.0
height
21.0
width
7.0
top
19.0
left
16.0
label
6.0
height
21.0
width
12.0
top
19.0
left
26.0

ここから先は

3字

¥ 100

この記事が気に入ったらサポートをしてみませんか?