File size: 2,900 Bytes
2fe881c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import os
from PIL import Image
from keras.preprocessing import image
from keras.preprocessing.image import ImageDataGenerator

BRANDON_ORIGINAL_DATASET_DIR = "C:\Ryan\PP stuff\\try1\Classification Data-20240212T032009Z-001\Classification Data\\Brandon"
MANUEL_ORIGINAL_DATASET_DIR = "C:\\Ryan\\PP stuff\\try1\\Classification Data-20240212T032009Z-001\\Classification Data\\Manuel"
BASE_DIR = "C:\\Ryan\\PP stuff\\try1\\face_recog"

#create directories for train/validation/test sets
train_dir = os.path.join(BASE_DIR, 'train')
validation_dir = os.path.join(BASE_DIR, 'validation')
test_dir = os.path.join(BASE_DIR, 'test')

train_bran_dir = os.path.join(train_dir, 'brandon')
train_man_dir = os.path.join(train_dir, 'manuel')

validation_bran_dir = os.path.join(validation_dir, 'brandon')
validation_man_dir = os.path.join(validation_dir, 'manuel')

test_bran_dir = os.path.join(test_dir, 'brandon')
test_man_dir = os.path.join(test_dir, 'manuel')

def resize():
    target_size = (300, 350)

    input_dir = "C:\Ryan\PersonalProject\\FriendRecog\\bot\images"
    output_dir = "C:\\Ryan\\PersonalProject\\FriendRecog\\bot\\resized_images"

    try:
        for filename in os.listdir(input_dir):
            # Construct the full path to the image file
            input_path = os.path.join(input_dir, filename)

            # Open the image
            with Image.open(input_path) as img:
                # Resize the image
                resized_img = img.resize(target_size)

                # Construct the output path
                output_path = os.path.join(output_dir, filename)

                # Save the resized image
                resized_img.save(output_path)
    finally:
        pass

def data_augmentation():
    augmented_datagen = ImageDataGenerator(
        rescale = 1. / 255,
        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")
    augmented_generator = augmented_datagen.flow_from_directory(train_dir, target_size = (300, 350),
                                                                batch_size = 20,
                                                                class_mode = 'sparse')

    augmented_dir = os.path.join(BASE_DIR, "augmented")
    augmented_all = os.path.join(augmented_dir, "all")
    os.mkdir(augmented_dir)
    os.mkdir(augmented_all)

    for i, (images, labels) in enumerate(augmented_generator):
        if i >= 5:
            break
        for j in range(len(images)):
            augmented_image = image.array_to_img(images[j])
            filename = f"{i * len(images) + j}.png"
            augmented_image_path = os.path.join(augmented_all, filename)
            augmented_image.save(augmented_image_path)