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:UsersFslDesktop00015.jpg') # this is a PIL image img1 = load_img(r'C:UsersFslDesktop00014.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() with model.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)