Vers le quatrième jour de construction d’une IA avec caméra de sonnette pour un hackathon, j’ai surpris mon propre système en train de me mentir. Pas par malveillance – c'était juste une supposition, comme nous le faisons tous lorsque nous ne voulons pas dire « je ne sais pas » à voix haute. Le correctif pour cela s'est avéré être plus intéressant que toute autre chose dans la version, donc cet article porte principalement sur cela, avec quelques histoires de bugs vraiment drôles/douloureuses en cours de route.
Chaque caméra de sonnette sur le marché répond à une question : y a-t-il eu du mouvement ? Ce n'est pas la bonne question. La bonne question – celle à laquelle un humain veut réellement répondre à 23 heures lorsque son téléphone sonne – est la suivante : dois-je m'en soucier ? Les caméras ne répondent pas à cette question, alors les gens s'entraînent à faire glisser la notification sans regarder. L'alerte devient du bruit. La seule fois où ce n’est pas du bruit, vous avez déjà cessé d’y prêter attention.
Ainsi, le projet — je l'ai appelé Kenbunshoku (見聞色, en gros « l'art de percevoir », un terme issu de certaines traditions martiales pour lire une situation avant qu'elle ne devienne évidente) — tente d'ajouter une couche manquante : le contexte. Pas « quelque chose a bougé ». Quelque chose de plus proche de « une personne en uniforme de livraison se tient à votre porte avec un colis » ou « quelqu'un s'attarde près de l'entrée à une heure inhabituelle sans raison claire d'être là ».
L'architecture, en un seul souffle : un détecteur YOLOv8n local surveille un flux de caméra et ne transmet que les images contenant réellement une personne. Ces images sont envoyées à un backend cloud qui appelle Qwen-VL (le modèle de langage de vision d'Alibaba Cloud) pour raisonner sur ce qui se passe réellement dans l'image. Une couche de mémoire légère vérifie s'il s'agit d'un modèle récurrent. Une notification push est envoyée sur le téléphone du propriétaire avec le raisonnement joint, en langage simple. C'est tout le système. Aucune partie de celui-ci n’agit en ...
[Courte citation de 8% de l'article original]