ImageDataGeneratorジェネレーターのフロー、flow_from_directoryの使用法
Flow Imagedatagenerator Generator
小さなデータの学習は、次の記事を参照できます
https://blog.csdn.net/weiwei9363/article/details/78635674
https://zhuanlan.zhihu.com/p/30197320
https://zhuanlan.zhihu.com/p/38865142
https://zhuanlan.zhihu.com/p/30197320
フロー:
Flow(self、X、y、batch_size = 32、shuffle = True、seed = None、save_to_dir = None、save_prefix = ''、save_format = 'png'):numpy配列とラベルをパラメーターとして受け取り、データの昇格または標準化を生成した後バッチデータ、および無限ループで常にバッチデータを返します
-
x:サンプルデータ。ランクは4である必要があります。チャネル軸の値は、白黒画像の場合は1、カラー画像の場合は3です。
-
y:ラベル
-
Batch_size:整数、デフォルトは32
-
シャッフル:ブール値、データをランダムに台無しにするかどうか、デフォルトはTrueです
-
Save_to_dir:なしまたは文字列。このパラメーターを使用すると、プロモートされた画像を保存して視覚化できます。
-
Save_prefix:文字列、設定されている場合にのみ、プロモートされた画像を保存するために使用されるプレフィックス
save_to_dir
有効 -
Save_format:「png」または「jpeg」のいずれかで、画像を保存するためのデータ形式を指定します。デフォルトは「jpeg」です。
-
収量:(x、y)の形式のタプル、xは画像データを表すnumpy配列です。 yは、ラベルを表すnumpy配列です。イテレータは無期限にループします。
-
シード:整数、乱数シード
from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img import numpy as np datagen = ImageDataGenerator( rotation_range=40, width_shift_range=0.2, height_shift_range=0.2, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode='nearest') l=[] img = load_img(r'C:UsersFslDesktop 00015.jpg') # this is a PIL image img1 = load_img(r'C:UsersFslDesktop 00014.jpg') # this is a PIL image y=img_to_array(img1) x = img_to_array(img) # this is a Numpy array with shape (3, 150, 150) l.append(x) l.append(y) l=np.array(l) #l = l.reshape((1,) + l.shape) # this is a Numpy array with shape (1, 3, 150, 150) # the .flow() command below generates batches of randomly transformed images # and saves the results to the `preview/` directory i = 0 for batch in datagen.flow(l, batch_size=2, save_to_dir=r'C:UsersFslDesktoppic', save_format='jpg'): i += 1 if i > 2: break # otherwise the generator would loop indefinitely
Python
出力:
flow_from_directory:
Flow_from_directory(directory):フォルダーパスをパラメーターとしてデータの昇格/正規化後にデータを生成し、無限ループでバッチデータを無限に生成します。
- ディレクトリ:宛先フォルダのパス。クラスごとに、フォルダーにはサブフォルダーが含まれている必要があります。サブフォルダー内のJPG、PNG、BNP、PPM画像はすべてジェネレーターによって使用されます。詳細をご確認ください。 このスクリプト
- Target_size:整数タプル。デフォルトは(256、256)です。画像はこのサイズにサイズ変更されます
- Color_mode:「grayscale」、「rgb」のいずれかのカラーモード。デフォルトは「rgb」です。これらの画像をシングルチャンネル画像と3チャンネル画像のどちらに変換するかを示します。
- クラス:オプションのパラメーター、['dogs'、 'cats']などのサブフォルダーのリストのデフォルトはNoneです。指定しない場合、カテゴリリストは次のようになります
directory
下のサブフォルダ名/構造が自動的に推測されます。各サブフォルダーは新しいクラスと見なされます。 (カテゴリの順序は、アルファベット順にタグ値にマップされます)。属性別class_indices
フォルダ名とクラスのシリアル番号の辞書を取得できます。 - Class_mode: 'categorical'、 'binary'、 'sparse'またはNone。デフォルトは「カテゴリ」です。このパラメーターは、返されるタグ配列の形式を決定します。 'categorical'は2Dワンホットエンコーディングタグを返し、 'binary'は1Dバイナリタグを返します。 'sparse'は1D整数タグを返します。 Noneの場合、タグは返されません。ジェネレーターはバッチデータのみを生成します。これが当てはまります。
model.predict_generator()
withmodel.evaluate_generator()
関数が呼び出されたときに使用されます。 - Batch_size:バッチデータのサイズ。デフォルトは32です。
- シャッフル:データを台無しにするかどうか、デフォルトはTrueです
- シード:オプションのパラメーター、スクランブルされたデータ、および変換時の乱数シード
- Save_to_dir:なしまたは文字列。このパラメーターを使用すると、プロモートされた画像を保存して視覚化できます。
- Save_prefix:文字列、設定されている場合にのみ、プロモートされた画像を保存するために使用されるプレフィックス
save_to_dir
有効 - Save_format:「png」または「jpeg」のいずれかで、画像を保存するためのデータ形式を指定します。デフォルトは「jpeg」です。
- Flollow_links:サブフォルダー内のソフトリンクにアクセスするかどうか
from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img import numpy as np datagen = ImageDataGenerator( rotation_range=40, width_shift_range=0.2, height_shift_range=0.2, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode='nearest') Gener=datagen.flow_from_directory(r'E:C3D_Data rian', the upper level folder of the #category subfolder batch_size=2, shuffle=False, save_to_dir=r'E:C3D_Data rain_result', save_prefix='trans_', save_format='jpg') for i in range(3): gener.next()
Python
入力:trianフォルダーの下には1人のフォルダーしかありません:
出力:(番号と順序に注意してください)
Flow_from_directory擬似コード:(おそらくあなたはよりよく理解している)
Xm, y = getDataIndex () # get all the image index in all folders, and the folder name is also the label if shuffle==True: Shuffle(xm,y)#Disrupt the image index and its label while(True): for i in range(0,len(x),batch_size): Xm_batch=xm[i:i+batch_size]#file index y_batch=y[i:i+batch_size] X_batch=getImg(xm_batch)#Acquire image data based on file index ImagePro(x_batch)#Data Enhancement #Save the upgraded image #saveToFile() yield (x_batch,y_batch)