pechaut's picture
Upload plusloin.py
80defca
raw
history blame
1.89 kB
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)