Clock's K

やったことの備忘録

mnistデータを画像としてデータセット化

Deep Learningを始めて数か月,mnistを利用したサンプル実行の儀式はとっくに終わっているのだが,別の要件でmnistと出くわす事案が発生.

 
しかし,他のデータセットと併用するため,微妙に扱いづらかった.

そこで,MNISTのデータ全てを画像化することにした.
なんでそんな面倒なことするの?などと言ってはいけない

# coding:utf-8

import chainer
from PIL import Image
import os


def make_data(makedir):
    train, test = chainer.datasets.get_mnist(ndim=3)

    for dataset_dir in ["train", "test"]:
        # ディレクトリ作成
        for i in range(10):
            maked_dir = os.path.join(makedir, dataset_dir, str(i))
            if os.path.exists(maked_dir) is False:
                os.makedirs(maked_dir)

        # データの画像化
        data = train if dataset_dir == "train" else test
        for i, (x, t) in enumerate(data):
            img = Image.fromarray(x[0] * 255)
            img = img.convert("RGB")
            image_name = "{:>08}_{}.png".format(i, t)
            img.save(os.path.join(makedir, dataset_dir, str(t), image_name))


if __name__ == '__main__':
    make_data(makedir="./Data")

上記のコードによりデータを画像化しつつ,クラスごとにディレクトリに分けるようにした.


それにしてもDeep Learningは前処理が非常にめんどくさい.
学習のためのフレームワークは出てきても,データを整形・加工までやるフレームワークが出てこない.
流石にライブラリを組み合わせて自力でやりなさいということなのだろうか??