Parcourir la source

Update of data augmentation

Jérôme BUISINE il y a 4 ans
Parent
commit
6415e68e47
3 fichiers modifiés avec 21 ajouts et 12 suppressions
  1. 17 8
      generate_reconstructed_data.py
  2. 1 1
      modules/utils/config.py
  3. 3 3
      run.sh

+ 17 - 8
generate_reconstructed_data.py

@@ -87,7 +87,7 @@ def generate_data(transformation):
                 os.makedirs(metric_path)
 
             # custom path for interval of reconstruction and metric
-            metric_interval_path = transformation.getTransformationPath()
+            metric_interval_path = os.path.join(zone_path, transformation.getTransformationPath())
             metrics_folder.append(metric_interval_path)
 
             if not os.path.exists(metric_interval_path):
@@ -139,17 +139,26 @@ def generate_data(transformation):
                 else:
                     label_path = os.path.join(label_path, cfg.noisy_folder)
 
+                # Data augmentation!
                 rotations = [0, 90, 180, 270]
+                img_flip_labels = ['original', 'horizontal', 'vertical', 'both']
 
-                # rotate image to increase dataset size
-                for rotation in rotations:
-                    rotated_output_img = output_block_img.rotate(rotation)
+                horizontal_img = output_block_img.transpose(Image.FLIP_LEFT_RIGHT)
+                vertical_img = output_block_img.transpose(Image.FLIP_TOP_BOTTOM)
+                both_img = output_block_img.transpose(Image.TRANSPOSE)
 
-                    output_reconstructed_filename = img_path.split('/')[-1].replace('.png', '') + '_' + zones_folder[id_block]
-                    output_reconstructed_filename = output_reconstructed_filename + '_' + str(rotation) + '.png'
-                    output_reconstructed_path = os.path.join(label_path, output_reconstructed_filename)
+                flip_images = [output_block_img, horizontal_img, vertical_img, both_img]
 
-                    rotated_output_img.save(output_reconstructed_path)
+                # rotate and flip image to increase dataset size
+                for id, flip in enumerate(flip_images):
+                    for rotation in rotations:
+                        rotated_output_img = flip.rotate(rotation)
+
+                        output_reconstructed_filename = img_path.split('/')[-1].replace('.png', '') + '_' + zones_folder[id_block]
+                        output_reconstructed_filename = output_reconstructed_filename + '_' + img_flip_labels[id] + '_' + str(rotation) + '.png'
+                        output_reconstructed_path = os.path.join(label_path, output_reconstructed_filename)
+
+                        rotated_output_img.save(output_reconstructed_path)
 
 
             start_index_image_int = int(start_index_image)

+ 1 - 1
modules/utils/config.py

@@ -40,6 +40,6 @@ zones_indices                   = np.arange(16)
 
 metric_choices_labels           = ['all', 'svd_reconstruction', 'fast_ica_reconstruction', 'ipca_reconstruction']
 
-keras_epochs                    = 1
+keras_epochs                    = 50
 keras_batch                     = 32
 val_dataset_size                = 0.2

+ 3 - 3
run.sh

@@ -42,7 +42,7 @@ for begin in {80,85,90,95,100,105,110}; do
 
         python generate_dataset.py --output data/${OUTPUT_DATA_FILE} --metric ${svd_metric} --renderer ${renderer} --scenes ${scenes} --param "${begin}, ${end}" --nb_zones ${zone} --random 1
         
-        python train_model_2D.py --data data/${OUTPUT_DATA_FILE} --output ${OUTPUT_DATA_FILE}
+        python train_model_2D.py --data data/${OUTPUT_DATA_FILE} --output ${OUTPUT_DATA_FILE} &
       fi
     done
   done
@@ -68,7 +68,7 @@ for component in {50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200}; d
 
       python generate_dataset.py --output data/${OUTPUT_DATA_FILE} --metric ${ipca_metric} --renderer ${renderer} --scenes ${scenes} --param "${component},${ipca_batch_size}" --nb_zones ${zone} --random 1
       
-      python train_model_2D.py --data data/${OUTPUT_DATA_FILE} --output ${OUTPUT_DATA_FILE}
+      python train_model_2D.py --data data/${OUTPUT_DATA_FILE} --output ${OUTPUT_DATA_FILE} &
     fi
   done
 done
@@ -92,7 +92,7 @@ for component in {50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200}; d
 
       python generate_dataset.py --output data/${OUTPUT_DATA_FILE} --metric ${fast_ica_metric} --renderer ${renderer} --scenes ${scenes} --param "${component}" --nb_zones ${zone} --random 1
       
-      python train_model_2D.py --data data/${OUTPUT_DATA_FILE} --output ${OUTPUT_DATA_FILE}
+      python train_model_2D.py --data data/${OUTPUT_DATA_FILE} --output ${OUTPUT_DATA_FILE} &
     fi
   done
 done