File size: 1,886 Bytes
80defca
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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)