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

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

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

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Keras

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

Python 3.x

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

Q&A

1回答

915閲覧

ImageDataGeneratorで水増しした画像で学習させたい

snowshink

総合スコア138

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Keras

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

Python 3.x

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

0グッド

0クリップ

投稿2019/06/14 04:12

cifar10をCNNで学習させるときの手段と結果を比べたくて、今ImageDataGeneratorで画像を水増ししたらどうなるか検証したいのですが、今までに見たことがないようなエラー文で困惑してます。直し方を教えてください。

python

1from keras.models import Sequential 2from keras.layers import Dense, Dropout, Flatten 3from keras.layers import Conv2D, MaxPooling2D 4from keras.optimizers import RMSprop 5import numpy as np 6from keras.utils import np_utils 7from keras.optimizers import Adam 8import keras.callbacks 9import matplotlib.pyplot as pyplot 10from keras.datasets import cifar10 11from keras.preprocessing import image 12import cv2 13from matplotlib import pyplot 14 15(x_train,y_train),(x_test,y_test)=cifar10.load_data() 16print(type(x_train)) 17# grayscale 18x_train=np.array( \ 19 [cv2.cvtColor(x_train[i],cv2.COLOR_BGR2GRAY) for i in range(x_train.shape[0])] ) 20x_test=np.array( \ 21 [cv2.cvtColor(x_test[i],cv2.COLOR_BGR2GRAY) for i in range(x_test.shape[0])] ) 22#print(x_train.shape) 23#normalization 24x_train = x_train.astype('float32').reshape(x_train.shape[0],32,32,1) 25x_test = x_test.astype('float32').reshape(x_test.shape[0],32,32,1) 26x_train /= 255 27x_test /= 255 28#画像を水増しするメソッド(ImageDataGenerator)を定義) 29#今回は回転と明度を調整する 30datagen = image.ImageDataGenerator( 31 rotation_range=360, 32 brightness_range=[0.3,0.8] 33) 34gen = datagen.flow(x_train,y_train,batch_size=160) 35#transfrom into one-hot 36y_train = np_utils.to_categorical(y_train,10) 37y_test = np_utils.to_categorical(y_test,10) 38#print(x_train.shape,y_train.shape) 39# CNNモデル構造を定義 40model = Sequential() 41model.add(Conv2D(32, kernel_size=(3,3), activation='relu', input_shape=(32,32,1))) 42model.add(Conv2D(32,(3,3), activation='relu')) 43model.add(MaxPooling2D(pool_size=(2,2))) 44model.add(Dropout(0.2)) 45model.add(Conv2D(32,(3,3), activation='relu')) 46model.add(MaxPooling2D(pool_size=(2,2))) 47model.add(Dropout(0.2)) 48model.add(Flatten()) 49model.add(Dense(128, activation='relu')) 50model.add(Dropout(0.2)) 51model.add(Dense(10, activation='softmax')) 52 53model.compile( 54 loss="categorical_crossentropy", 55 optimizer=Adam(), 56 metrics=["accuracy"] 57) 58 59#Earlystopping - monitor 60# loss,acc = 学習データの損失率、正確度 61# val_loss,val_acc = 検証データの損失率、正確度 62es_cb = keras.callbacks.EarlyStopping(monitor='loss', min_delta=0.001, patience=0, verbose=1, mode='auto') 63tb_cb = keras.callbacks.TensorBoard(log_dir="./log_dir") 64#fit 65#validation_split ... 学習データの後ろ、割合validation_splitのデータを検証用データとする 66#学習データ + 検証データ = 入力データ 67#verbose ...学習状況の表示設定 68#0...非表示、1..プログレスバー(デフォルト)、2...結果のみ表示 69#hist = model.fit(x_train,epochs=20,verbose=2,callbacks=[es_cb,tb_cb]) 70#model.fit(gen,epochs=20,steps_per_epoch=len(x_train) / 32,verbose=2,callbacks=[es_cb,tb_cb],batch_size=160) 71model.fit_generator( 72 datagen.flow(x_train, y_train, batch_size=160), 73 samples_per_epoch=x_train.shape[0], 74 nb_epoch=20, 75 verbose=1, 76 validation_data=(x_test, y_test), 77 callbacks=[es_cb, tb_cb] 78) 79score = model.evaluate(x_test,y_test,verbose=1) 80 81print("loss=",score[0],", accuracy=",score[1]) 82

エラー文

error Traceback (most recent call last) <ipython-input-1-e1ba9a314668> in <module> 17 # grayscale 18 x_train=np.array( \ ---> 19 [cv2.cvtColor(x_train[i],cv2.COLOR_BGR2GRAY) for i in range(x_train.shape[0])] ) 20 x_test=np.array( \ 21 [cv2.cvtColor(x_test[i],cv2.COLOR_BGR2GRAY) for i in range(x_test.shape[0])] ) <ipython-input-1-e1ba9a314668> in <listcomp>(.0) 17 # grayscale 18 x_train=np.array( \ ---> 19 [cv2.cvtColor(x_train[i],cv2.COLOR_BGR2GRAY) for i in range(x_train.shape[0])] ) 20 x_test=np.array( \ 21 [cv2.cvtColor(x_test[i],cv2.COLOR_BGR2GRAY) for i in range(x_test.shape[0])] ) error: OpenCV(4.1.0) c:\projects\opencv-python\opencv\modules\imgproc\src\color.simd_helpers.hpp:92: error: (-2:Unspecified error) in function '__cdecl cv::impl::`anonymous-namespace'::CvtHelper<struct cv::impl::`anonymous namespace'::Set<3,4,-1>,struct cv::impl::A0xe227985e::Set<1,-1,-1>,struct cv::impl::A0xe227985e::Set<0,2,5>,2>::CvtHelper(const class cv::_InputArray &,const class cv::_OutputArray &,int)' > Invalid number of channels in input image: > 'VScn::contains(scn)' > where > 'scn' is 32

追記
最初に動かしたときは正常だったのですが、バッチサイズを変えようとJupyterでカーネルを中断させたら、このようなエラー文が出るようになりました。

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

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

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

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

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

guest

回答1

0

(x_train,y_train),(x_test,y_test)=cifar10.load_data()

python

1x_train=np.array( \ 2 [cv2.cvtColor(x_train[i],cv2.COLOR_BGR2GRAY) for i in range(x_train.shape[0])] ) 3x_test=np.array( \ 4 [cv2.cvtColor(x_test[i],cv2.COLOR_BGR2GRAY) for i in range(x_test.shape[0])] ) 5#print(x_train.shape) 6#normalization 7x_train = x_train.astype('float32').reshape(x_train.shape[0],32,32,1) 8x_test = x_test.astype('float32').reshape(x_test.shape[0],32,32,1) 9x_train /= 255 10x_test /= 255

が別のセルになっているのだとすると、x_train を変換したものを x_train に上書きしているので2回目以降は cv2.cvtColor() の処理でエラーになると思います。
変数名を別にするか、同じセルに統合してください。

投稿2019/06/14 04:40

tiitoi

総合スコア21956

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問