Chainerのデータセットの作り方(ラベル付き画像編)
Chainerのデータセットとしてラベル付きの画像を設定する方法です。
目次
ラベル付き画像
ここでいうラベル付き画像というのは、画像データとそのラベル(教師データ)が対になったセットのデータです。ディープラーニングで画像を識別するようなタスクの学習をさせるときに使われる物です。
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 |
データセットオブジェクト。 |
画像とラベルがペアになったデータのデータセットです。このデータセットを利用するためには次のデータが必要になります。
画像データ
各画像データのパスとそのラベルを記述したテキストファイル
画像データの方は、まあわかりますよね。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カテゴリの投稿
- ChainerCVで使える画像のデータ拡張
- ChainerCVで画像を出力する方法
- ChainerCVのResNetを使う
- ChainerCVのSSDに学習させてみた
- ChainerCVのデモンストレーションプログラムを読んでみた
- ChainerCVのデモンストレーションプログラムを読んでみた(推論編)
- Chainerが出力するネットワーク構造図をGraphvizで見る
- Chainerで数字を分類してみた
- ChainerのSSDのデモで物体検出をしてみる
- Chainerのチュートリアルを試してみた
- Chainerのチュートリアルを試してみた(ChainerCVでデータ拡張編)
- Chainerのチュートリアルを試してみた(データ拡張編)
- Chainerのチュートリアルを試してみた(トレーナー編)
- Chainerのチュートリアルを試してみた(畳み込みを深くする編)
- Chainerのチュートリアルを試してみた(畳み込み編)
- Chainerのデータセットの作り方(ラベル付き画像編)
- VoTTのPascal VOC出力をChainerCVのデータセットとして読み込んでみた