質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.35%
Keras

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

0回答

2191閲覧

自作データセットの作り方

0afnjosa

総合スコア7

Keras

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2021/12/09 01:34

編集2021/12/09 04:46

#教えていただきたいこと
現在、自作のデータセットで画像認識を行いたいと考えています。
ですが、データセットを作る段階でエラーがでてしまいました。
そこで、本を参考にしながら行いたいのですが、おすすめの本をご存じの方いらっしゃいましたら教えていただけるとありがたいです。
よろしくお願い致します。

#補足
使っている言語はpython、Kerasを用いて畳み込みニューラルネットワークを構築しております。
ねじれの向きを判断する画像認識プログラムを作りたいと考えています。
データとしてPOV-ray(CGソフト)を使って左巻き、右巻きそれぞれ1000枚ずつ作り、そのうちテストデータとしてそれぞれ10枚ずつ抜き出しました。
右巻きには0、左巻きには1のようにラベル付けをしたいのですが、その段階で躓いてしまいました。

#表示されたエラーと該当するプログラム
エラーが表示された場所は「2割テストデータへ」とコメントしてあるところです。

python

1from PIL import Image 2import os, glob 3import numpy as np 4from keras.utils import np_utils 5from sklearn import model_selection 6from sklearn.model_selection import train_test_split 7 8classes = ["right","left"] 9num_classes = len(classes) 10image_size = 320 11 12 13#datesetのディレクトリ 14datadir='/content/drive/MyDrive/Colab Notebooks/spiral' 15 16#画像の読み込み 17X = [] 18Y = [] 19 20 21for index, classlabel in enumerate(classes): 22 photos_dir = datadir+ classlabel 23 files = glob.glob(photos_dir + "/*.jpg") 24 for i, file in enumerate(files): 25 26 image = Image.open(file) 27 image = image.convert("RGB") 28 image = image.resize((image_size, image_size)) 29 #image.save("./test/{}{}.jpg".format(classlabel,i)) 30 data = np.asarray(image) 31 32 for angle in range(-20, 20, 5):##5 33 # 回転 34 img_r = image.rotate(angle) 35 data = np.asarray(img_r) 36 X.append(data) 37 Y.append(index) 38 39 # 反転 40 img_trans = image.transpose(Image.FLIP_LEFT_RIGHT) 41 data = np.asarray(img_trans) 42 X.append(data) 43 Y.append(index) 44 45 46 47X = np.array(X) 48Y = np.array(Y) 49 50#2割テストデータへ 51(X_train, X_test, y_train, y_test) = train_test_split(X, Y,test_size=0.2) 52 53#正規化 54X_train = X_train.astype("float") / 255 55X_test = X_test.astype("float") / 255 56 57#教師データの型を変換 58y_train = np_utils.to_categorical(y_train,num_classes) 59y_test = np_utils.to_categorical(y_test, num_classes) 60 61#X_train, X_test, y_train, y_test = model_selection.train_test_split(X, Y) 62xy = (X_train, X_test, y_train, y_test) 63np.save("./dataset.npy", xy)

python

1ValueError: 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.

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

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

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

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

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

tiitoi

2021/12/09 03:35

なんのライブラリを使っているのか、どのようなデータセットを作りたいのかの情報を追記してください。
0afnjosa

2021/12/09 04:27

tiitoi様、アドバイスありがとうございます。 もう少し詳細に書きたいと思います。
jbpb0

2021/12/09 06:11 編集

> With n_samples=0 中身が空なのでは? エラーが出るところのすぐ上に下記を追加して実行したら、何て表示されますか? print(X.shape) print(Y.shape)
0afnjosa

2021/12/09 06:18

jbpb0様、ご返信ありがとうございます。 上記の通り入力したところ、(0,)(0,)と入力されてしまいました。確かに空のようです。 他のコードも試してみたところ、画像の配列表示はできているのでフォルダ内に画像は入っているのですが原因が分かりません。
jbpb0

2021/12/09 06:26

画像が置いてある場所は、下記のどちらですか? /content/drive/MyDrive/Colab Notebooks/spiralright /content/drive/MyDrive/Colab Notebooks/spiral/right
0afnjosa

2021/12/09 06:56

/content/drive/MyDrive/Colab Notebooks/spiral/rightにおいています。
jbpb0

2021/12/09 07:01

photos_dir = datadir+ classlabel のすぐ下に print(photos_dir) を(インデントを合わせて)追加して、実行してみてください
0afnjosa

2021/12/09 07:10

/content/drive/MyDrive/Colab Notebooks/spiral/right /content/drive/MyDrive/Colab Notebooks/spiral/left と出力されました。 コードでは拡張子がjpgとなっていますが、実際のフォルダにある画像の拡張子はpngなのでそこを変えてみたら動くようになりました。(とはいってもセッションがクラッシュしましたと表示されますが)
jbpb0

2021/12/09 07:25

> /content/drive/MyDrive/Colab Notebooks/spiral/right /content/drive/MyDrive/Colab Notebooks/spiral/left と出力されました。 そうはならないはず classes = ["right","left"] datadir='/content/drive/MyDrive/Colab Notebooks/spiral' for index, classlabel in enumerate(classes): photos_dir = datadir+ classlabel print(photos_dir) を(最後の二行はインデント付けて)実行したら、 /content/drive/MyDrive/Colab Notebooks/spiralright /content/drive/MyDrive/Colab Notebooks/spiralleft と表示されます 「spiral」と「right」の間に「/」が付くのなら、それは質問に掲載されてるコードとは違うはずです
0afnjosa

2021/12/09 07:30

申し訳ありません。 先ほどいただいた質問の後に datadir='/content/drive/MyDrive/Colab Notebooks/spiral' のspiralの後に/を付け加えました。
jbpb0

2021/12/09 07:38

そういう、こそっと直して、ちゃんとできてますみたいに言うのは、おかしいです 「/」を付ける前は、画像が置かれてる正しいディレクトリパスを指して無かったのだから、それで画像が読み込めるわけないですよね なので、それが > With n_samples=0 となっていた直接の原因のはずです それを(間接的に)指摘したのに、直したことを隠して、間違っていたことに触れずに大丈夫でしたみたいに答えるのはおかしい
0afnjosa

2021/12/09 07:51

おっしゃる通りです。 わざわざお時間を割いて答えていただいているのに、そのような気持ちにさせてしまい大変申し訳ありません。
jbpb0

2021/12/09 08:09

tiitoiさんの依頼も、ちゃんとやってくださいね そうすれば、たぶん元々の質問の「おすすめの本を紹介してください」に回答付くと思いますよ
0afnjosa

2021/12/09 09:14

かしこまりました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問