File size: 1,473 Bytes
b9ee29a
2cc8d92
 
 
 
b9ee29a
 
 
 
 
aee66d8
b9ee29a
 
aee66d8
 
 
 
 
b9ee29a
 
 
977cc9d
 
aee66d8
977cc9d
 
 
26b08fd
 
 
 
 
 
 
 
 
 
 
 
 
977cc9d
5974209
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
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, Flatten, MaxPooling2D, Dense, Dropout, SpatialDropout2D
from tensorflow.keras.losses import sparse_categorical_crossentropy, binary_crossentropy
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.preprocessing.image import ImageDataGenerator
import numpy as np
from PIL import Image

def gen_labels():
    train = 'Dataset/Train'
    train_generator = ImageDataGenerator(rescale=1/255)

    train_generator = train_generator.flow_from_directory(train,
                                                          target_size=(256, 256),
                                                          batch_size=32,
                                                          class_mode='sparse')
    labels = train_generator.class_indices
    labels = dict((v, k) for k, v in labels.items())

    return labels

def preprocess(image):
    image = np.array(image.resize((256, 256), Image.LANCZOS))
    image = image.astype('float32') / 255.0
    return image

def model_arc():
    model = tf.keras.Sequential([
        data_augmentation,
        base_model,
        tf.keras.layers.GlobalAveragePooling2D(),
        tf.keras.layers.Dense(6, activation='softmax')
    ])

    learning_rate = 0.00001
    model.compile(
        loss='sparse_categorical_crossentropy',
        optimizer=tf.keras.optimizers.Adam(learning_rate),
        metrics=['accuracy']
    )

    return model