2022年6月26日 星期日

 取得MNIST手寫數字圖檔

MINST手寫數字是機器學習入門最常使用的資料集之一,但通常是使用Keras直接讀取使用。若是想要將其中圖片取出自行運用,該如何操作呢?

建立 Tensorflow 1.x 環境

由於Tensorflow 1.x可以直接讀取MINST資料集,而2.x版已移除此功能,所以我們要在Tensorflow 1.x環境中執行。這種情況可在虛擬環境中操作,但發現在COLAB中更方便,因此本篇在COLAB中操作。

首先在COLAB新增一個筆記本(名稱自訂),掛載雲端硬碟,COLAB的Tensorflow版本為2.4.1,執行下列命令更改為1.14.0:

!pip install tensorflow==1.14.0 --force-reinstall

截取圖形程式

下面程式可將MINST圖片逐一取出並置於名稱為「0」至「9」資料夾中:

from tensorflow.examples.tutorials.mnist import input_data

from PIL import Image

import numpy

import os


data_sets = input_data.read_data_sets('input_data') #MNIST數據所在路徑,不存在時會自動下載

images = data_sets.train.images

labels = data_sets.train.labels

total = images.shape[0]

save_path = 'mnist-image' #導出圖片保存路徑


count = []

for i in range(10):

    count.append(0)


for i in range(0, total):

    label = labels[i]

    path = os.path.join(save_path, str(label))

    if not os.path.exists(path):

        os.makedirs(path)

    count[label] += 1

    name = str(label) + '_' + str(count[label]) + '.bmp'

    filename = os.path.join(path, name)

    if os.path.exists(filename):

        print(filename, 'exists')

        continue

    image = images[i]

    image = image.reshape(28, 28)

    image = numpy.multiply(image, 255)

    image = image.astype(numpy.uint8)

    im = Image.fromarray(image)

    im.save(filename)

執行後產生的<input_data>資料夾存放MINST原始的壓縮檔,<mnist-image>資料夾存放取得的55000張圖片。「0」資料夾中為0的圖片,圖片名稱為<0_1.bmp>、<0_2.bmp>、……;「1」資料夾中為1的圖片,圖片名稱為<1_1.bmp>、<1_2.bmp>、……;依此類推。

下載圖形到本機

因為圖形數量太龐大,無法逐一下載到本機,最佳方式是將其壓縮後並下載。執行下列命令可將圖片資料夾壓縮為<mnistimg.zip>:

!zip -r mnistimg.zip /content/mnist-image

點選<mnistimg.zip>右方功能鈕,按「下載」項目即可下載此壓縮檔。

下載到本機後解壓縮就可得到所有圖片。



沒有留言:

張貼留言