YogaPoseAnalysis / model_generation.py
NeuSpaarX's picture
Upload 6 files
bc31a94 verified
Raw
History Blame Contribute Delete
1.96 kB
import tensorflow as tf
from tensorflow import keras
def create_default_model(img_shape=(224, 224, 3), num_classes=10):
"""
Create default yoga pose classification model using transfer learning
Args:
img_shape (tuple): Shape of input images
num_classes (int): Number of yoga pose classes to predict
Returns:
model: Compiled tensorflow model
"""
# Use MobileNetV2 as base model for transfer learning
base_model = tf.keras.applications.MobileNetV2(
input_shape=img_shape,
include_top=False,
weights='imagenet'
)
# Freeze the base model layers
base_model.trainable = False
model = tf.keras.Sequential([
# Base model
base_model,
# Global average pooling
tf.keras.layers.GlobalAveragePooling2D(),
# Dense layers for pose classification
tf.keras.layers.Dense(512, activation='relu'),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.Dropout(0.3),
tf.keras.layers.Dense(256, activation='relu'),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.Dropout(0.3),
# Output layer for pose classification
tf.keras.layers.Dense(num_classes, activation='softmax')
])
# Compile model
model.compile(
optimizer=tf.keras.optimizers.Adam(learning_rate=0.001),
loss='categorical_crossentropy',
metrics=['accuracy']
)
return model
def save_default_model():
"""
Create and save default yoga pose classification model
"""
model = create_default_model()
# Save model
model.save('yoga_pose_model.h5')
print("Default yoga pose classification model created and saved successfully!")
# Allow direct execution to create model
if __name__ == "__main__":
save_default_model()