14
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Google Colaboratory で Keras 自作データセットを読み込み

Last updated at Posted at 2019-10-13

Google ColaboratoryでGoogle Driveにアクセスする方法

from google.colab import drive
drive.mount('/content/drive')
  • 上記記載のコードを実行するとドライブにアクセスできるようになります。
  • Go to this URL in a browser:との承認URLが表示されるので承認します。
!ls 'drive/My Drive'
  • 無事アクセスできれば、lsコマンドで中身が確認できます。

kerasで自作データセットを読み込むには

  • npzファイルをローカルで作成しておき、driveにアップロードし、Google Colaboratoryで読み込む。
  • ドライブのファイルに画像データを入れておき読み込む。(今回は省略)

ローカルで自前のデータセットを作成

  • まずnpzを作成します。
# データ作成 保存
import keras
from keras.utils import np_utils
from keras.layers.convolutional import Conv2D, MaxPooling2D
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation, Flatten
from keras.preprocessing.image import array_to_img, img_to_array, load_img
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt

import os
import re


def list_pictures(directory, ext='jpg|jpeg|bmp|png|ppm'):
    return [os.path.join(root, f)
            for root, _, files in os.walk(directory) for f in files
            if re.match(r'([\w]+\.(?:' + ext + '))', f.lower())]


# 画像一枚、確認
# temp_img = load_img('./dataset1/F0.jpg', target_size=(64,64))
# temp_img_array  = img_to_array(temp_img)
# print(temp_img_array.shape)

X = []
Y = []

for picture in list_pictures('./dataset1/'):
    img = img_to_array(load_img(picture, target_size=(64,64)))
    X.append(img)
    Y.append(0)

for picture in list_pictures('./dataset2/'):
    img = img_to_array(load_img(picture, target_size=(64,64)))
    X.append(img)
    Y.append(1)

# arrayに変換
X = np.asarray(X)
Y = np.asarray(Y)

# 中身確認
# print(type(X))
# print(type(Y))

# print(X.size)
# print(Y.size)
# print(len(X))
# print(len(Y))
# print(X)
# print(Y)


# 画素値を0から1の範囲に変換
X = X.astype('float32')
X = X / 255.0

# クラスの形式を変換
Y = np_utils.to_categorical(Y, 2)

# 学習用データとテストデータ
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.33, random_state=111)

# npz形式へ書き出し
np.savez("/Users/test/Desktop/dataset.npz",X_train=X_train,X_test=X_test,y_train=y_train,y_test=y_test)

  • ほぼこちらを参考にさせて頂きました。感謝です。
    https://qiita.com/haru1977/items/17833e508fe07c004119

  • list_picturesが私の環境のkerasのバージョンでは動かなかったため、これもググってコピペしています。

  • npzが出来上がるので、あとはGoogle Driveにアップロードします。

Google Colaboratoryでnpzを読み込む

  • 私はkerasフォルダを作成しそこにnpzをアップロードしました。
  • 以下、Google Colaboratoryで実行し読み込みます。
datasets = np.load("drive/My Drive/keras/datasets.npz")

X_train = datasets['X_train']
X_test = datasets['X_test']
y_train = datasets['y_train']
y_test = datasets['y_test']
# 中身確認
print(datasets['X_train'].shape)
print(datasets['X_test'].shape)
print(datasets['y_train'].shape)
print(datasets['y_test'].shape)

最後に

  • Google ColaboratoryはGPUが使用でき、そして無料なため、ありがたい限りです。
14
12
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
14
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?