Je cherche à faire analyser à l’IA une image (celle de mon manomètre plancher chauffant, si vous avez suivi cette discussion ), mais je me rends compte que la réponse de l’IA est assez aléatoire, et je pense que cela peut venir de la qualité de l’image qui lui est fournie dans l’action « Demander à l’IA ».
Je fais l’hypothèse (à confirmer par @pierre-gilles) que l’image fournie à l’IA est la même que celle qu’on obtient avec l’action « Envoyer une image de caméra »
Avec cette action « Envoyer une image… », je reçois par exemple cette image :
Or quand je suis sur mon dashboard qui affiche la même image, j’obtiens la même qualité d’image, mais une image bien meilleure si je clique sur l’icône pour afficher le flux en direct.
Est-ce qu’il faudrait que je fasse quelque chose de particulier pour améliorer la qualité de l’image envoyée à l’IA dans uns scène ?
Pour préciser, il s’agit d’une caméra Tapo C200, et le flux configuré dans l’intégration Caméra est au format rtsp://identifiant:mdp@IP:port/stream1, stream1 correspondant chez Tapo à l’image HD
Je viens de tester tes différentes qualités photos avec perplexity et chaque réponse est identique (et fausse) : environ 1.4 bar.
Et en lui tirant les vers du nez je suis arrivé à 1.55 bar mais il a fallu que j’ajuste avec plusieurs questions en lui disant que c’était entre 1.4 et 1.6 bar et qu’il devait interpoler.
Bref pas terrible ces IA …
avec un peu plus de travail (et surtout j’ai demandé à perplexity que demander exactement), ça donnerait un prompt de ce type :
Analyse l'image du manomètre. Le manomètre a une échelle de 0 à 4 bar. Entre chaque chiffre (0, 1, 2, 3, 4 bar), il y a 4 graduations. Chaque graduation représente 0.2 bar.
: Détermine entre quels chiffres principaux (0, 1, 2, 3, 4) se trouve l'aiguille.
: Compte le nombre de graduations complètes (0.2 bar chacune) après le dernier chiffre principal que l'aiguille a dépassé. Si l'aiguille est entre deux graduations, estime sa position relative entre ces deux graduations (par exemple, « légèrement après », « à mi-chemin », « juste avant », etc.).
: Calcule la pression en additionnant la valeur du dernier chiffre principal dépassé et la valeur des graduations comptées. Si l'aiguille est entre deux graduations, ajoute une estimation de la fraction de la graduation.
: Indique la pression estimée en bar (par exemple, « La pression est estimée à X.XX bar »).
Sois précis dans ton analyse et justifie chaque étape de ton raisonnement.
Merci @mutmut d’avoir fait ces tests. Je n’avais pas pensé effectivement à tester dans l’outil d’IA directement pour voir si la qualité d’image changeait quelque chose. Je viens de faire un test similaire au tien dans chatGPT (puisque c’est l’IA qu’utilise Gladys) avec le prompt suivant:
Analyse l’image du manomètre qui a une échelle allant de 0 à 4 bars. Entre chaque graduation principale avec un chiffre (0, 1, 2, 3, 4 bar), il y a des graduations intermédiaires représentant 0.2 bar. Détermine où se trouve l’aiguille, et déduis-en la pression. Enfin, indique-moi la pression estimée en bar, avec une phrase au format suivant : « La pression est estimée à X.X bar ».
Avec l’image de faible qualité, j’ai eu une première réponse au top : « L’aiguille du manomètre semble être positionnée légèrement en dessous de la graduation 2 bar, plus précisément sur la graduation correspondant à environ 1.8 bar. La pression est estimée à 1.8 bar. »
Puis j’ai relancé une deuxième demande identique, et là j’ai eu comme réponse « L’aiguille du manomètre pointe entre 1.0 et 1.2 bar, légèrement avant la graduation de 1.2 bar. La pression est estimée à 1.1 bar. »
Enfin dans une troisième demande mais avec l’image de bonne qualité, j’ai eu la réponse « D’après l’image, l’aiguille du manomètre pointe légèrement en dessous de la graduation de 1.0 bar, vers environ 0.9 bar. La pression est estimée à 0.9 bar. »
En gros, aucune fiabilité . Je pense qu’il faut que j’en reste au fait que Gladys m’envoie l’image, et que mon intelligence à moi, qui n’est pas artificielle, fasse l’effort de lire la pression
Mais ceci dit, j’aimerais quand même que Gladys m’envoie l’image de qualité plutôt qu’une image dégradée… Je ne sais pas si je dois faire quelques chose, ou si c’est plutôt un devt à ajuster dans Gladys…
L’image affichée sur le tableau de bord et envoyée aux utilisateurs via Telegram est limitée à une largeur maximale de 640px.
C’est étrange, l’image que tu partages semble plus grande, mais cela peut être un traitement appliqué par Telegram. Si tu télécharges directement l’image depuis ton tableau de bord, elle devrait être en 640px de large max !
Le flux vidéo, lui, est en 1080p, donc plus large.
Ce n’est pas figé, on pourrait augmenter la qualité, mais il faudrait tester l’impact sur la fluidité de l’application et s’assurer que ça passe bien dans le message WebSocket diffusé aux frontends.
Concernant l’IA
Gladys utilise le modèle ChatGPT-4o mini, avec une qualité d’image définie sur “low” (512px de large max). Plus l’image est grande, plus le traitement par ChatGPT est long et coûteux.
Mais ici, le problème ne semble pas être la qualité de l’image. Comme tu l’as constaté dans tes tests, l’IA a plutôt tendance à “halluciner” que de ne pas voir l’aiguille. Tant que l’aiguille est bien visible, l’IA devrait pouvoir l’analyser correctement.
Je pense qu’il faut plutôt affiner ton prompt, être plus concis et précis. Tester directement sur ChatGPT en dehors de Gladys est une excellente idée
Merci pour ces précisions. Je vais faire plus de tests dans chatGPT avant de revenir dans Gladys si j’obtiens quelque chose de satisfaisant.
J’en profite : idéalement, si j’arrive à obtenir une bonne interprétation par l’IA, j’aimerais que l’IA pousse la valeur dans un appareil Mqtt, pour pouvoir ensuite m’en servir dans la suite de la scène ou pour conserver un historique des valeurs.
Est-ce que c’est déjà faisable, et si oui comment faut-il rédiger cela dans le prompt à l’IA ? Ce que j’ai compris c’est que pour l’instant on peut demander à l’IA de lancer une scène, ou d’allumer/éteindre une lumière, ou d’allumer/éteindre une prise, maisje veux bien confirmation
Ce n’est pas faisable ! La seule chose que tu peux éventuellement, c’est lui demander d’allumer une lumière (virtuel) si il y a quelque chose à faire.
Exemple:
Si le manomètre est en dessous de 1.8, allume la lumière du bureau virtuel
Ensuite, tu créé une pièce « bureau virtuel », ou tu mets une fausse lumière dedans, et tu créé une scène qui réagit à l’allumage de la fausse lumière.
C’est tiré par les cheveux, mais c’est la seule possibilité actuellement