aminerrr's picture
Préparation pour le déploiement sur Hugging Face Spaces
f7b32f1
raw
history blame
2.5 kB
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()