← Retour aux projets en programmation

Tri de vêtements grâce à un algorithme de reconnaissance d'images

En mai, nous avons participé à un hackathon de 2 jours sur le thème du recyclage de vêtements. Nous avons choisi de créer une plateforme de tri composée d’un convoyeur, d’une caméra pour reconnaître les types de vêtements, de servomoteurs et de bacs de tri. Le convoyeur fait passer les vêtements sous la caméra ; une IA les reconnaît, et les servos s’activent pour diriger les vêtements vers le bon bac. Retrouvez le code sur mon GitHub : Tri_objet_ML

1. Outils utilisés

- Teachable Machine pour créer nos données d'entraînement. - Une caméra pour détecter les objets. - TensorFlow pour entraîner l’IA et faire les prédictions. - ThingsBoard pour visualiser les classes triées. - PyCharm et Arduino comme environnements de développement.

2. Classification des images

Image de la classification

3. Entraînement du modèle et détection des nouvelles images

# Chargement du modèle
model = load_model("keras_Model.h5", compile=False)

# Traitement image
image = Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))
image = ImageOps.fit(image, (224, 224), Image.Resampling.LANCZOS)
image_array = np.asarray(image)
normalized_image_array = (image_array.astype(np.float32) / 127.5) - 1
data = np.ndarray(shape=(1, 224, 224, 3), dtype=np.float32)
data[0] = normalized_image_array

# Prédiction
prediction = model.predict(data)
index = np.argmax(prediction)
class_name = class_names[index].strip()
confidence_score = prediction[0][index]

4. Envoi des données vers ThingsBoard et Arduino

# Compteurs de classes
count_class_1 = 0
count_class_2 = 0
count_class_3 = 0

# Configuration ThingsBoard
THINGSBOARD_TOKEN = "nmRl1OogQbYv9fERSJBw"
THINGSBOARD_URL = f"https://demo.thingsboard.io/api/v1/{THINGSBOARD_TOKEN}/telemetry"

def send_to_thingsboard(c1, c2, c3):
    payload = {
        "count_class_1": c1,
        "count_class_2": c2,
        "count_class_3": c3
    }
    try:
        response = requests.post(THINGSBOARD_URL, json=payload, timeout=5)
        if response.status_code == 200:
            print("[ThingsBoard] Données envoyées avec succès")
        else:
            print(f"[ThingsBoard] Erreur HTTP : {response.status_code}")
    except Exception as e:
        print(f"[ThingsBoard] Exception : {e}")
Visualisation ThingsBoard ← Partie Arduino