• ホーム
  • Chainer
  • Chainerのデータセットの作り方(ラベル付き画像編)

Chainerのデータセットの作り方(ラベル付き画像編)

Chainerのデータセットとしてラベル付きの画像を設定する方法です。

目次

  1. ラベル付き画像
  2. LabeledImageDataset
  3. 試してみた

ラベル付き画像

ここでいうラベル付き画像というのは、画像データとそのラベル(教師データ)が対になったセットのデータです。ディープラーニングで画像を識別するようなタスクの学習をさせるときに使われる物です。

Chainerでラベル付き画像をデータセットとして扱う方法として、LabeledImageDatasetというクラスがあります。

LabeledImageDataset

ret = chainer.datasets.LabeledImageDataset(pairs, [root], [dtype], [label_dtype])
変数 内容
pairs str, list テキストファイルのファイルパス、または画像ファイルのパスとラベルをペアにしたタプルのリスト。
root str 省略可。既定値は"."。画像ファイルの基準のディレクトリへの相対パス。
dtype data type 省略可。既定値はNone。画像をndarrayにしたときの型。
label_dtype data type 省略可。既定値はint32。ラベルの型。
ret   データセットオブジェクト。

画像とラベルがペアになったデータのデータセットです。このデータセットを利用するためには次のデータが必要になります。

  1. 画像データ
  2. 各画像データのパスとそのラベルを記述したテキストファイル

画像データの方は、まあわかりますよね。PNGなどの形式での画像データです。

テキストファイルの方は、一つ一つの画像データとそのラベルのインデックスを1行ずつに記述したファイルです。

ファイルのパス(相対パスでもOK) ラベルのインデックスの数字

ファイルのパスとラベルのインデックスの間は、いわゆる半角スペースで区切ります。タブや全角スペースで区切るとエラーになります。また、ファイルパスにスペースが含まれるとエラーになります。(Windows10、Chainer 6.1の場合)

試してみた

画像をデータセットとして読み込んで、表示してみます。

まず画像データですが、下記のように配置しました。

.
│  dataset_trial.py

└─data
    │  sample_list.txt

    ├─foobar
    │      hoshi.png

    └─hogehoge
            maru.png
            sankaku.png
            shikaku.png

dataset_trial.pyというのが実行ファイルです。

sample_list.txtには、画像ファイルのファイルパスとその画像のラベルのインデックスを記述します。

./hogehoge/maru.png 0
./hogehoge/sankaku.png 1
./hogehoge/shikaku.png 2
./foobar/hoshi.png 3

sample_list.txtというファイルからの相対パスになってますね。

読み取るコードはこうなります。

from chainer.datasets import LabeledImageDataset
from chainercv.visualizations import vis_image
from matplotlib import pyplot as plt

my_data = LabeledImageDataset('./data/sample_list.txt', root='./data')

# 画像表示
im, l = my_data[1]
vis_image(im)
plt.show()

実行すると、sankaku.pngが表示されます。

表示結果

広告

Chainerカテゴリの投稿