Ajouter app.py

This commit is contained in:
the_booth 2024-08-27 23:20:17 +02:00
commit 7671e45077

45
app.py Normal file
View File

@ -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))