import numpy as np import seaborn as sns import matplotlib.pyplot as plt from PIL import Image import matplotlib.pyplot as plt def processImage(st,name,autoencoder): image = Image.open(name) image = image.resize((100, 100)).convert('L') image_array = np.array(image).astype('float32') / 255.0 # Normalisation image_array = np.expand_dims(image_array, axis=0) predicted_image = autoencoder.predict(image_array) plt.figure(figsize=(4, 2)) # Image originale plt.subplot(1, 2, 1) plt.imshow(image_array[0], cmap='gray') plt.title("Original") plt.axis('off') # Image reconstruite plt.subplot(1, 2, 2) plt.imshow(predicted_image[0], cmap='gray') plt.title("Reconstruite") plt.axis('off') plt.tight_layout() from tensorflow.keras.losses import MeanSquaredError mse = MeanSquaredError() loss_value = mse(image_array, predicted_image).numpy() st.write("MSE Loss:", loss_value) st.pyplot(plt) def plusloin(st,modele): st.write("""Une des pistes exploratoires etait d'entrainer un autoencoder a reconstruire les images d'une categorie unique, et d'utiliser le loss MSE comme discriminant pour les autres categories. Ci-dessous nous proposons un modele entraine sur la categorie 10, livres et revues, et regardons ce que donne la loss sur d'autres categories. Malheureusement, les pochettes de livres sont tres generiques, les revues sont illustrees de photos non specifiques, aussi le modele s'avere aussi bon, parfois meilleur, a reconstruire les autres categories. """) imgName = st.selectbox( "Choix de l'image a predire:", ('book.jpg','car.jpg', 'toy.jpg','joystick.jpg','chess.jpg')) st.write('Image choisie:', imgName) processImage(st,imgName,modele) st.image("autoencoder.png", use_column_width=True)