LoginSignup
0
1

More than 3 years have passed since last update.

kerasのデータセットからMNISTを読み込んでpng画像に出力する手順

Posted at

やりたいこと

  • pythonにてkerasのデータセットからMNISTをロードして、png形式の画像ファイルへ出力する。
  • その際、ラベルデータ(0から9までの、どの数値か?)をファイル名に含める。

MNISTとは?

実装

データセットのロード

import tensorflow as tf

mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()

ここで、

  • x_train : 学習用データ「画像」
  • y_train : 学習用データ「ラベル」
  • x_test : 検証用データ「画像」
  • y_test : 検証用データ「ラベル」

である。

中身を確認してみる

x_train : 学習用データ「画像」

print(x_train[0])

[[  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0    0   0   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0    0   0   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0    0   0   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0    0   0   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0    0   0   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0   0   0   0   3  18  18  18 126 136  175  26 166 255 247 127   0   0   0   0
 [  0   0   0   0   0   0   0   0  30  36  94 154 170 253 253 253 253 253  225 172 253 242 195  64   0   0   0   0
 [  0   0   0   0   0   0   0  49 238 253 253 253 253 253 253 253 253 251   93  82  82  56  39   0   0   0   0   0
 [  0   0   0   0   0   0   0  18 219 253 253 253 253 253 198 182 247 241    0   0   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0  80 156 107 253 253 205  11   0  43 154    0   0   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0  14   1 154 253  90   0   0   0   0    0   0   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0   0   0 139 253 190   2   0   0   0    0   0   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0   0   0  11 190 253  70   0   0   0    0   0   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0   0   0   0  35 241 225 160 108   1    0   0   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0   0   0   0   0  81 240 253 253 119   25   0   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0  45 186 253 253  150  27   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  16  93 252  253 187   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 249  253 249  64   0   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0  46 130 183 253  253 207   2   0   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0   0   0   0  39 148 229 253 253 253  250 182   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0   0  24 114 221 253 253 253 253 201   78   0   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0  23  66 213 253 253 253 253 198  81   2    0   0   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0  18 171 219 253 253 253 253 195  80   9   0   0    0   0   0   0   0   0   0   0   0   0
 [  0   0   0   0  55 172 226 253 253 253 253 244 133  11   0   0   0   0    0   0   0   0   0   0   0   0   0   0
 [  0   0   0   0 136 253 253 253 212 135 132  16   0   0   0   0   0   0    0   0   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0    0   0   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0    0   0   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0    0   0   0   0   0   0   0   0   0   0

image.png

print(x_train[1])

[[  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0    0   0   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0    0   0   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0    0   0   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0    0   0   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  51 159 253  159  50   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0  48 238 252 252  252 237   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0   0   0   0   0  54 227 253 252 239  233 252  57   6   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0   0   0  10  60 224 252 253 252 202   84 252 253 122   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0   0   0 163 252 252 252 253 252 252   96 189 253 167   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0   0  51 238 253 253 190 114 253 228   47  79 255 168   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0  48 238 252 252 179  12  75 121  21    0   0 253 243  50   0   0   0   0   0
 [  0   0   0   0   0   0   0   0  38 165 253 233 208  84   0   0   0   0    0   0 253 252 165   0   0   0   0   0
 [  0   0   0   0   0   0   0   7 178 252 240  71  19  28   0   0   0   0    0   0 253 252 195   0   0   0   0   0
 [  0   0   0   0   0   0   0  57 252 252  63   0   0   0   0   0   0   0    0   0 253 252 195   0   0   0   0   0
 [  0   0   0   0   0   0   0 198 253 190   0   0   0   0   0   0   0   0    0   0 255 253 196   0   0   0   0   0
 [  0   0   0   0   0   0  76 246 252 112   0   0   0   0   0   0   0   0    0   0 253 252 148   0   0   0   0   0
 [  0   0   0   0   0   0  85 252 230  25   0   0   0   0   0   0   0   0    7 135 253 186  12   0   0   0   0   0
 [  0   0   0   0   0   0  85 252 223   0   0   0   0   0   0   0   0   7  131 252 225  71   0   0   0   0   0   0
 [  0   0   0   0   0   0  85 252 145   0   0   0   0   0   0   0  48 165  252 173   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0  86 253 225   0   0   0   0   0   0 114 238 253  162   0   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0  85 252 249 146  48  29  85 178 225 253 223 167   56   0   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0  85 252 252 252 229 215 252 252 252 196 130   0    0   0   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0  28 199 252 252 253 252 252 233 145   0   0   0    0   0   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0   0  25 128 252 253 252 141  37   0   0   0   0    0   0   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0    0   0   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0    0   0   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0    0   0   0   0   0   0   0   0   0   0
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0    0   0   0   0   0   0   0   0   0   0


image.png

y_train : 学習用データ「ラベル」

print(y_train[0]) は 5
print(y_train[1]) は 0

である。つまり、その画像が「何の数字なのか?」のラベルであり、0から9までの数値である。

画像データをpngに出力して、ラベル値をファイル名に含める

実装

import tensorflow as tf
from PIL import Image

mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()

for num in range(10):
    label_num = y_train[num]
    np_ary = x_train[num]
    pil_img = Image.fromarray(np_ary)
    pil_img.save("output_" + str(num) + "_label_is_" + str(label_num)  + ".png")

出力

image.png

10枚のpngが出力され、ラベル値がファイル名に含まれている。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1