SpiralSense / augment.py
cycool29's picture
Update
97dcf92
import os
import Augmentor
import shutil
from configs import *
import uuid
tasks = ["1", "2", "3", "4", "5", "6"]
num_of_images = 100
shutil.rmtree(TEMP_DATA_DIR + "1/", ignore_errors=True)
for task in ["1"]:
shutil.rmtree(AUG_DATA_DIR + task, ignore_errors=True)
# Loop through all folders in Task 1 and generate augmented images for each class
for class_label in [
"Alzheimer Disease",
"Cerebral Palsy",
"Dystonia",
"Essential Tremor",
"Healthy",
"Huntington Disease",
"Parkinson Disease",
]:
if class_label != ".DS_Store":
print("Augmenting images in class: ", class_label, " in Task ", task)
# Create a temp folder to combine the raw data and the external data
if not os.path.exists(f"{TEMP_DATA_DIR}{task}/{class_label}/"):
os.makedirs(f"{TEMP_DATA_DIR}{task}/{class_label}/")
if os.path.exists(f"{RAW_DATA_DIR}{task}/{class_label}"):
for file in os.listdir(f"{RAW_DATA_DIR}{task}/{class_label}"):
shutil.copy(
f"{RAW_DATA_DIR}{task}/{class_label}/{file}",
f"{TEMP_DATA_DIR}{task}/{class_label}/{str(uuid.uuid4())}.png",
)
if os.path.exists(f"{EXTERNAL_DATA_DIR}{task}/{class_label}"):
for file in os.listdir(f"{EXTERNAL_DATA_DIR}{task}/{class_label}"):
shutil.copy(
f"{EXTERNAL_DATA_DIR}{task}/{class_label}/{file}",
f"{TEMP_DATA_DIR}{task}/{class_label}/{str(uuid.uuid4())}.png",
)
p = Augmentor.Pipeline(
f"{TEMP_DATA_DIR}{task}/{class_label}",
output_directory=f"{class_label}/",
save_format="png",
)
p.flip_left_right(probability=0.8)
p.zoom_random(probability=0.8, percentage_area=0.8)
p.flip_top_bottom(probability=0.8)
p.random_brightness(probability=0.8, min_factor=0.5, max_factor=1.5)
p.random_contrast(probability=0.8, min_factor=0.5, max_factor=1.5)
p.random_color(probability=0.8, min_factor=0.5, max_factor=1.5)
p.rotate_random_90(probability=0.8)
p.sample(num_of_images - len(p.augmentor_images))
# Move the folder to data/train/Task 1/augmented
# Create the folder if it does not exist
if not os.path.exists(f"{AUG_DATA_DIR}{task}/"):
os.makedirs(f"{AUG_DATA_DIR}{task}/")
# Move all images in the data/train/Task 1/i folder to data/train/Task 1/augmented/i
os.rename(
f"{TEMP_DATA_DIR}{task}/{class_label}/{class_label}",
f"{AUG_DATA_DIR}{task}/{class_label}",
)
# Rename all the augmented images to [01, 02, 03]
number = 0
for file in os.listdir(f"{AUG_DATA_DIR}{task}/{class_label}"):
number = int(number) + 1
if len(str(number)) == 1:
number = "0" + str(number)
os.rename(
f"{AUG_DATA_DIR}{task}/{class_label}/{file}",
f"{AUG_DATA_DIR}{task}/{class_label}/{number}.png",
)
shutil.rmtree(TEMP_DATA_DIR + task, ignore_errors=True)