Ajouter app.py
This commit is contained in:
commit
7671e45077
45
app.py
Normal file
45
app.py
Normal 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))
|
Loading…
Reference in New Issue
Block a user