Spaces:
No application file
No application file
File size: 1,098 Bytes
ddec2b7 | 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 | import tensorflow as tf
from tensorflow.keras import layers, Model
from tensorflow.keras.applications import MobileNetV3Small
def build_feature_extractor():
base_model = MobileNetV3Small(
weights='imagenet',
include_top=False,
input_shape=(224, 224, 3),
alpha=1.0
)
base_model.trainable = False
inputs = tf.keras.Input(shape=(224, 224, 3))
x = base_model(inputs, training=False)
x = layers.GlobalAveragePooling2D()(x)
x = layers.Dense(128, activation='relu')(x)
x = layers.Dropout(0.3)(x)
outputs = layers.Dense(64, activation='relu', name='features')(x)
model = Model(inputs, outputs, name='DrowsinessFeatureExtractor')
return model, base_model
def fine_tune_model(model, base_model, unfreeze_layers=20):
base_model.trainable = True
for layer in base_model.layers[:-unfreeze_layers]:
layer.trainable = False
model.compile(
optimizer=tf.keras.optimizers.Adam(learning_rate=1e-5),
loss='categorical_crossentropy',
metrics=['accuracy']
)
return model
|