データセット「SVHN」について説明。約10万枚(難易度が低いサンプルを含めると約63万枚)の「Googleストリートビューから切り抜いた家の番地における1文字分の数字」の「画像+ラベル」データが無料でダウンロードでき、画像認識などのディープラーニングに利用できる。TensorFlow、PyTorchにおける利用コードも紹介。
SVHN(Street View House Numbers)データセット(以下、SVHN)は、Googleストリートビュー画像から家の番地を示す「複数桁の数字列」から、「0」〜「9」の1文字が「中央」に来るように小さくトリミングされた画像データセットである(図1)。数字に合わせて、ラベル(=正解を示す教師データ)も0〜9となっている。
数字の画像データセットというとMNISTが有名だが、SVHNもそれを意識しており、「MNIST風(MNIST-likeやflavor to MNIST)」と表現されている。しかし、後述の画像フォーマットを見ると分かるように仕様は異なるので注意してほしい。
用途としては、MNISTと同じく、主に画像認識となるだろう。違いは、MNISTが手書き数字だったのに対し、SVHNは現実世界のカラフルで印字された番地表記部分の数字となっている点だ。SVHNの方が画像認識する場合の難易度は高いと想定される。MNISTでは精度が高くなりすぎて使いづらいというケースで、このSVHNが利用できるだろう。
番地の数字は、複数の桁で並んでいることが普通だ。つまり、1つの数字が中央に配置されるように加工されているとはいっても、その数字の両隣にある数字など気を散らすもの(distractors)が幾つか含まれる。例えば図1の4の左端にある画像の1枚は「814」という数字列で、中央にあるのは「4」という1文字だけなので、4が正解となる。こういった点でも、SVHNは難易度が高い。
SVHNデータセット全体は、
で構成される。
各画像のフォーマットは(MNIST風ではあるが若干仕様が異なり)、図2のように、
となっている(※「フィールド」=データを画像化する場合には「ピクセル」に対応する)。
このデータセットは、非営利目的にのみ使用できる(厳密には公式ページを確認してほしい)。公式ページによると「下記の論文を引用してください」と記載されている。
引用情報を以下にまとめておく。
実際にSVHNを使うには、TensorFlow/PyTorchといった各ライブラリが提供する機能を利用することをお勧めする。以下ではその利用方法を紹介する。
また、本稿で紹介したように32×32ピクセルの画像に加工される前の元の画像データが、SVHNの公式ページからダウンロードできる。画像内の数字部分には1文字1文字に対する境界ボックス(bounding boxes)の情報が別ファイル(具体的にはMATLABで読み込むことができるdigitStruct.matファイル)に格納されている。詳しくは公式サイトを参照してほしい。
# !pip install tensorflow-datasets # ライブラリ「TensorFlow Datasets」をインストール
import tensorflow_datasets as tfds
svhn_train = tfds.load(name='svhn_cropped', split='train')
TensorFlow/Kerasでは、TensorFlow Datasetsのsvhn_croppedデータセットを使えばよい。これは、tensorflow_datasetsモジュール(=tfds)のtfds.load()関数から利用できる。その関数のsplit引数で、3つのデータ種別(train/test/extra)を指定できる。
# !pip install torch torchvision # ライブラリ「PyTorch」をインストール
import torch
import torchvision
svhn_data = torchvision.datasets.SVHN(
'./SVHN',
split='train', download=True, transform=torchvision.transforms.ToTensor())
data_loader = torch.utils.data.DataLoader(svhn_data, batch_size=4, shuffle=True)
PyTorchでは、torchvision.datasets.SVHNクラスのコンストラクター(厳密には__init__関数)でデータセットのオブジェクトを生成してデータをダウンロードすればよい。そのコンストラクターの引数splitで、3つのデータ種別(train/test/extra)を指定できる。
Copyright© Digital Advantage Corp. All Rights Reserved.