Spaces:
Sleeping
Sleeping
from huggingface_hub import hf_hub_download | |
import gradio as gr | |
import tensorflow as tf | |
import numpy as np | |
from tensorflow.keras.preprocessing.image import img_to_array | |
from PIL import Image | |
# Télécharger le fichier du modèle | |
model_path = hf_hub_download( | |
repo_id="ghifariaulia/mobilenetv2-trashnet", filename="mobilenetv2-trashnet.h5") | |
# Charger le modèle | |
model = tf.keras.models.load_model(model_path) | |
class_names = ['cardboard', 'glass', 'metal', 'paper', 'plastic', 'trash'] | |
def preprocess_image(image): | |
# Redimensionner l'image à la taille attendue par le modèle | |
img = image.resize((224, 224)) | |
# Convertir l'image en tableau numpy | |
img_array = img_to_array(img) | |
# Normaliser les pixels | |
img_array = img_array / 255.0 | |
# Ajouter une dimension pour le batch | |
img_array = np.expand_dims(img_array, axis=0) | |
return img_array | |
def predict_image(image): | |
# Prétraiter l'image | |
img_array = preprocess_image(image) | |
# Faire la prédiction | |
predictions = model.predict(img_array)[0] | |
# Obtenir les probabilités pour chaque classe | |
confidences = {class_names[i]: float( | |
predictions[i]) for i in range(len(class_names))} | |
# Obtenir la classe prédite | |
predicted_class = np.argmax(predictions) | |
class_label = class_names[predicted_class] | |
# Obtenir le conseil de recyclage | |
tip = recycling_tips[class_label] | |
# Retourner les informations | |
return confidences, f"Catégorie prédite : {class_label}\nConseil : {tip}" | |
recycling_tips = { | |
'cardboard': 'Pliez le carton et évitez de le mouiller avant de le recycler.', | |
'glass': 'Retirez les bouchons et rincez les contenants en verre.', | |
'metal': 'Rincez les canettes et boîtes métalliques avant de les recycler.', | |
'paper': 'Évitez de recycler le papier sale ou gras.', | |
'plastic': 'Vérifiez le symbole de recyclage et triez en conséquence.', | |
'trash': 'Cet article n\'est pas recyclable, veuillez le jeter correctement.', | |
} | |
iface = gr.Interface( | |
fn=predict_image, | |
inputs=gr.Image(type="pil"), | |
outputs=[ | |
gr.Label(num_top_classes=3, label="Probabilités"), | |
gr.Textbox(label="Conseil de recyclage") | |
], | |
examples=[ | |
["examples/plastic.png"] | |
], | |
title="Classification de déchets avec MobileNetV2", | |
description="Téléchargez une image de déchet pour connaître sa catégorie et obtenir des conseils de recyclage.", | |
flagging_mode="never" | |
) | |
# Lancer l'application | |
iface.launch() | |