commit 7671e45077b5f06c8c7f2da7706f5d36d5eaa2e6 Author: the_booth Date: Tue Aug 27 23:20:17 2024 +0200 Ajouter app.py diff --git a/app.py b/app.py new file mode 100644 index 0000000..bd2cf98 --- /dev/null +++ b/app.py @@ -0,0 +1,45 @@ +import os +import numpy as np +from PIL import Image + +# Étape 1 : Télécharger des données +data_dir = 'donnees' +emotion_classes = ['happy', 'sad', 'angry'] +num_images_per_class = 100 + +for emotion in emotion_classes: + for i in range(num_images_per_class): + filename = f'{emotion}_{i}.jpg' + image_path = os.path.join(data_dir, emotion, filename) + img = Image.open(image_path) + img_array = np.array(img) + # Prétraitement des données + img_array = img_array / 255.0 + # Stocker les images prêtes à être utilisées par le modèle + img_array = np.reshape(img_array, (1, 224, 224, 3)) + # Étape 2 : Prétraitement des données + img_array = np.concatenate((img_array, np.zeros((100, 224, 224, 3)))) + print(f'Données pour {emotion} téléchargées avec succès.') + +# Étape 3 : Formation du modèle +from tensorflow.keras.models import Sequential +from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense + +model = Sequential() +model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(224, 224, 3))) +model.add(MaxPooling2D((2, 2))) +model.add(Conv2D(64, (3, 3), activation='relu')) +model.add(MaxPooling2D((2, 2))) +model.add(Conv2D(128, (3, 3), activation='relu')) +model.add(MaxPooling2D((2, 2))) +model.add(Flatten()) +model.add(Dense(128, activation='relu')) +model.add(Dense(len(emotion_classes), activation='softmax')) + +# Compilation du modèle +model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) + +# Entraînement du modèle +from sklearn.model_selection import train_test_split +X_train, X_val, y_train, y_val = train_test_split(img_array, np.zeros((num_images_per_class * len(emotion_classes), 3)), test_size=0.2) +model.fit(X_train, y_train, epochs=10, batch_size=32, validation_data=(X_val, y_val)) \ No newline at end of file