前提・実現したいこと
pythonで自分の画像を用いてデータセットを作成しようと思っています。
いろいろ調べたところ、同じような事をしている記事があったのでそれを参考に実行したのですが上手くできませんでした
発生している問題
下記ソースコードの
python
1for picture in list_pictures('./dataset1/'): 2 img = img_to_array(load_img(picture, target_size=(64,64))) 3 X.append(img) 4 Y.append(0)
の部分が実行されておらず、X、Yが空になっている。
そのため、
python
1 2X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.33, random_state=111)
でエラーになっている。
エラーコード
ValueError: With n_samples=0, test_size=0.2 and train_size=None, the resulting train set will be empty. Adjust any of the aforementioned parameters.
該当のソースコード
python
1import keras 2from keras.utils import np_utils 3from keras.layers.convolutional import Conv2D, MaxPooling2D 4from keras.models import Sequential 5from keras.layers.core import Dense, Dropout, Activation, Flatten 6from keras.preprocessing.image import array_to_img, img_to_array, load_img 7import numpy as np 8import pandas as pd 9from sklearn.model_selection import train_test_split 10import matplotlib.pyplot as plt 11 12import os 13import re 14 15 16def list_pictures(directory, ext='jpg|jpeg|bmp|png|ppm'): 17 return [os.path.join(root, f) 18 for root, _, files in os.walk(directory) for f in files 19 if re.match(r'([\w]+.(?:' + ext + '))', f.lower())] 20 21X = [] 22Y = [] 23 24for picture in list_pictures('./dataset1/'): 25 img = img_to_array(load_img(picture, target_size=(64,64))) 26 X.append(img) 27 Y.append(0) 28 29X = np.asarray(X) 30Y = np.asarray(Y) 31 32 33X = X.astype('float32') 34X = X / 255.0 35 36 37Y = np_utils.to_categorical(Y, 2) 38 39 40X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.33, random_state=111) 41
試したこと
上記のソースコードを実行してdateset1の中の画像でデータセットを作成しようとしたがうまくできませんでした。
おそらく
python
1def list_pictures(directory, ext='jpg|jpeg|bmp|png|ppm'): 2 return [os.path.join(root, f) 3 for root, _, files in os.walk(directory) for f in files 4 if re.match(r'([\w]+.(?:' + ext + '))', f.lower())]
この部分が原因だとは思うのですが、解決方法が分かりませんでした。
参考サイト
https://qiita.com/AlphaMikeNeko/items/9870533f3ab1e11e340f