現在、kerasのUNetなどのセグメンテーション用モデルを使って、セグメンテーションを実行しているのですが、予測精度が上がらないため、ImageDataGeneratorによる水増しを考えています。しかし、kerasのページを参考に作ってみたのですが、うまくいきませんでした。
データ構造は以下のようになっていて、imgディレクトリが入力用データセット、maskが教師用データセットとなっていて、img_1.pngはmask_1.pngと一対一で対応しています。
img--img_1.png
|-img_2.png
|-img_3.png
mask--mask_1.png
|-mask_2.png
|-mask_3.png
水増しでimg_1.pngとmask_1.pngを同条件で水増ししていきたいです。
アドバイスよろしくお願いします。
Python(途中)
1trnames = os.listdir(r"img") 2ytrnames = os.listdir(r"mask") 3 4xtrPath = "./img/" 5ytrPath = "./mask/" 6 7xtr_num_files = len(xtrnames) #画像数を把握し 8ytr_num_files = len(ytrnames) #画像数を把握し 9 10w = 1024 11h = 1180 12 13data_gen_args = dict(featurewise_center=True, 14 featurewise_std_normalization=True, 15 rotation_range=90., 16 width_shift_range=0.1, 17 height_shift_range=0.1, 18 zoom_range=0.2) 19 20#data_gen_argsの情報を辞書として受け取る 21image_datagen = ImageDataGenerator(**data_gen_args) 22mask_datagen = ImageDataGenerator(**data_gen_args) 23 24#x_train 25train = np.zeros((xtr_num_files, h, w, 3)) #画像データの箱を用意し 26for i,filename in zip(range(xtr_num_files),xtrnames): 27 train[i] = cv2.imread(xtrPath+filename) #cv2で画像を読み込んで 28x_train = train.reshape(-1, h, w, 3)/255 29del train 30 31#y_train 32train = np.zeros((ytr_num_files, h, w, 3)) #画像データの箱を用意し 33for i,filename in zip(range(ytr_num_files),ytrnames): 34 train[i] = cv2.imread(ytrPath+filename) #cv2で画像を読み込んで 35y_train = train.reshape(-1, h, w, 3)/255 36del train 37 38# Provide the same seed and keyword arguments to the fit and flow methods 39seed = 1 40image_datagen.fit(x_train, augment=True, seed=seed) 41mask_datagen.fit(y_train, augment=True, seed=seed) 42 43image_generator = image_datagen.flow_from_directory( 44 'data', 45 target_size =(1024, 1180), 46 class_mode="categorical", 47 seed=seed) 48 49mask_generator = mask_datagen.flow_from_directory( 50 'mask', 51 target_size = (256, 256), 52 class_mode="categorical", 53 seed=seed) 54 55# combine generators into one which yields image and masks 56train_generator = zip(image_generator, mask_generator) 57 58model.fit_generator( 59 train_generator, 60 steps_per_epoch=2000, 61 epochs=50)
回答1件
あなたの回答
tips
プレビュー