🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

2200閲覧

pythonで自作データセットを作成したい

takesiiii

総合スコア0

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/12/07 11:19

編集2020/12/08 08:25

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jbpb0

2020/12/08 00:43

pythonのコードの一番最初の行のすぐ上に ```python だけの行を追加してください また、pythonのコードの一番最後の行のすぐ下に ``` だけの行を追加してください
jbpb0

2020/12/08 00:50

OSは何でしょうか?
takesiiii

2020/12/08 05:09

変更しました。ご指摘ありがとうございます。 OSはwindowsです。
jbpb0

2020/12/08 08:48

フォルダ名だけ変えて実行したら、正常に動きました こちらもWindowsです for picture in list_pictures(... のループ内のどこかに print(picture) を追加してみてください (行頭にはインデントを入れてください) 正常ならば、 ./dataset1/画像ファイル名 が、画像ファイルの数だけ表示されるはずですが、どうでしょうか?
jbpb0

2020/12/08 09:04 編集

画像ファイル名にスペースや「-」(ハイフン)や「.」(ピリオド)が入ってるとダメです ご確認ください (他にもダメな記号あるかもしれない) 「.」(ピリオド)は、拡張子(jpgとか)の前だけは、もちろん大丈夫です
jbpb0

2020/12/08 09:03 編集

「(」「)」もダメでした もし、dataset1フォルダに置いてある画像のファイル名に、何かひっかかりそうな文字を使っているなら、「a.jpg」みたいな絶対大丈夫なファイル名の画像ファイルを試しに置いてみて、プログラム実行してみてください
takesiiii

2020/12/08 10:15

画像のファイル名を変更したら実行出来ました。 ありがとうございます。
guest

回答1

0

画像ファイル名にスペースや「-」(ハイフン)や「.」(ピリオド)や「(」「)」が入ってるとダメです
ご確認ください (他にもダメな記号あるかもしれない)
もし、dataset1フォルダに置いてある画像のファイル名に、何かひっかかりそうな文字を使っているなら、「a.jpg」みたいな絶対大丈夫なファイル名の画像ファイルを試しに置いてみて、プログラム実行してみてください

なお、「.」(ピリオド)は、拡張子(jpgとか)の前だけは、もちろん大丈夫です

投稿2020/12/31 09:48

jbpb0

総合スコア7653

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問