画像データセットの構築では,「メモリのパンク」に対する考慮が必要になる。
今回は,微小な画像が3つだけなので,all_image の構築を経由するつぎのやり方でも,image_ds をつくることができる。
しかし,画像サイズが標準的で枚数も多いときは,all_image の構築はメモリをパンクさせてしまう。
>>> def load_and_preprocess_image(path):
... image_raw = tf.io.read_file(path)
... image_tensor = tf.image.decode_image(image_raw, channels=3)
... image_final = tf.image.resize(image_tensor, [3, 3])
... image_final /= 255.0
... return image_final
...
>>> all_images = []
>>> for path in all_image_paths:
... image = def load_and_preprocess_image(path)
... all_images.append(image)
...
>>> all_images
[,
,
]
>>> image_ds = \
... tf.data.Dataset.from_tensor_slices(all_images)
>>> image_ds
データセットの画像は,画素数 3x3 で,全部で3枚。
ウィンドウのキャンバスを3行1列に等分し,画像3枚を上から下へ順に置いていく。
>>> import matplotlib.pyplot as plt
>>> for n,image in enumerate(image_ds):
... plt.subplot(3,1,n+1)
... plt.imshow(image)
... plt.grid(False)
... plt.xticks([])
... plt.yticks([])
... plt.show()
...
>>> for n,image in enumerate(image_ds.take(3)):
... plt.subplot(3,1,n+1)
... plt.imshow(image)
... plt.grid(False)
... plt.xticks([])
... plt.yticks([])
... plt.show()
...
([], [])
([], [])
(画像のウィンドウが開く)
ウィンドウを閉じる
([], [])
([], [])
(画像のウィンドウが開く)
ウィンドウを閉じる
([], [])
([], [])
(画像のウィンドウが開く)
ウィンドウを閉じる
>>>
画像表示におけるウィンドウサイズ
|