1 points par GN⁺ 2024-10-24 | 1 commentaires | Partager sur WhatsApp
  • PabloNet est un appareil qui transforme une image de webcam en diffusion en temps réel et l’affiche sur un LCD encadré, permettant d’expérimenter l’image générée non pas comme une démo sur ordinateur portable, mais comme un objet physique accroché au mur
  • L’implémentation combine un serveur basé sur StreamDiffusion, un client Raspberry Pi 5, un écran de 10,1 pouces, une caméra Pi NoIR, un éclairage infrarouge et un cadre ordinaire
  • La plus grande contrainte est le faible nombre d’images par seconde ; malgré des améliorations via TensorRT et la compression des images d’entrée/sortie, il reste encore de la marge pour améliorer la réactivité
  • Comme il est difficile d’obtenir le style visuel souhaité avec de simples prompts, des filtres de prétraitement ont aussi été testés ; le style Picasso bleu a été obtenu par une combinaison de Canny edge detection, d’une colorisation bleue et de flou
  • Dans la mise à jour de janvier 2025, après les réactions sur HN et l’arrivée de commandes, le projet a évolué vers une version plus propre et expédiable, avec Pi Zero, supports imprimés en 3D, panneau arrière découpé au laser et dongle WiFi

Cadre de diffusion en temps réel accroché au mur

  • PabloNet est un appareil qui prend une entrée webcam, effectue une transformation d’image en temps réel et affiche le résultat sur un LCD sous forme de cadre
  • Les premières expérimentations, qui faisaient tourner StreamDiffusion sur un ordinateur portable, étaient amusantes, mais le format laptop brisait l’illusion et donnait une impression provisoire et « geeky »
  • En le transformant en cadre LCD mural, l’écran se comporte non plus comme un simple afficheur, mais comme un objet doté de permanence
    • On peut le retrouver à différents moments de la journée, selon l’humeur, la lumière, les objets présents ou en compagnie d’amis
    • Des vidéos d’exemple montrant des visages, un éclairage infrarouge dans l’obscurité, des objets et des interactions entre amis sont incluses
  • La plus grande limite actuelle est le faible FPS
    • TensorRT a été utilisé et les images d’entrée/sortie ont été compressées pour augmenter la fréquence d’images
    • Malgré cela, il reste encore beaucoup de place pour l’amélioration

Configuration matérielle et création du style visuel

  • Le code client et serveur est publié dans pablonet afin que d’autres puissent le fabriquer eux-mêmes ou y contribuer
  • Configuration matérielle initiale :
  • Le trou pour la caméra a été percé dans le carton du cadre avec un emporte-pièce, qui permettait une découpe plus propre qu’une perceuse
  • Le rendu visuel n’a pas été créé uniquement par les prompts ; les filtres de prétraitement ont eu une importance comparable
    • Sans prétraitement, l’usage d’img2img donnait souvent des résultats trop réalistes
    • Le style Picasso bleu a été obtenu par une combinaison de Canny edge detection, d’une colorisation bleue et de flou

Deuxième version expédiable après la réaction de HN

  • Après le fil de discussion sur Hacker News, le projet a attiré de l’attention et des commandes inattendues sont arrivées, ce qui a conduit à créer une version plus propre et expédiable
  • La deuxième version a évolué pour réduire les aspects peu pratiques du dispositif d’origine
    • Avec l’appareil initial, il fallait maintenir les composants électroniques pour qu’ils ne tombent pas avant de l’accrocher au mur
    • Pour un simple usage consistant à appeler une API et afficher des images, un Pi classique semblait excessif et coûteux
    • L’état du câblage n’était pas satisfaisant non plus
  • Les pièces achetées ont été modélisées en CAD dans Fusion 360, puis après quatre itérations sur des pièces personnalisées, le design a convergé vers deux supports imprimés en 3D et un panneau arrière découpé au laser
  • Rôle des supports :
    • fixer l’écran contre le verre et le carton du cadre
    • fixer le Pi Zero et la caméra
    • faire office de keyhole slot pour l’accrochage mural
    • permettre de fixer l’ensemble au cadre avec des vis et des écrous
    • permettre de fixer le panneau arrière à l’aide de threaded inserts insérés dans la pièce imprimée en 3D avec un fer à souder, puis de vis

Une méthode de configuration pensée pour que l’utilisateur puisse la gérer lui-même

  • Pour améliorer l’expédiabilité, il fallait résoudre les affordances utilisateur
    • La première version utilisait une souris et un clavier Bluetooth préconfigurés via les ports USB du Pi
    • Il a été jugé peu satisfaisant d’obliger l’utilisateur à ouvrir le panneau arrière et à configurer lui-même un hub USB, une souris et un clavier filaires, puis l’appairage Bluetooth
    • Pour éviter cela, un dongle WiFi a été ajouté afin que le Pi fonctionne comme point d’accès pour les connexions SSH tout en restant connecté à Internet via son interface réseau existante
  • Les détails de fabrication sont disponibles dans le dépôt pablonet, et les demandes de réalisation peuvent être faites par e-mail

1 commentaires

 
GN⁺ 2024-10-24
Avis sur Hacker News
  • Cool. En parcourant le code, je vois quelques pistes pour améliorer le faible framerate
    Encoder les octets JPEG en Base64 augmente la charge utile jusqu’à environ 30 % et consomme du CPU côté client comme côté serveur. WebSocket peut envoyer des payloads binaires, donc pas besoin de les transformer en texte
    On peut aussi envisager de supprimer la compression JPEG avec perte et d’envoyer simplement les octets RGB bruts sur le réseau. Côté serveur, il suffit d’appeler Image.frombuffer(…)
    StreamDiffusion peut atteindre un framerate élevé parce qu’il fait beaucoup de traitement par lots dans le pipeline, mais ici le client n’envoie qu’une frame à la fois et attend la réponse, donc il n’en tire pas parti. Pour mettre les frames d’entrée en file d’attente et les consommer par lots, on peut s’inspirer de cet exemple https://github.com/cumulo-autumn/StreamDiffusion/blob/main/e...
    On peut aussi regarder SDXL Turbo et les modèles Lightning. En img2img, ils sont très rapides, mais leur résolution est limitée à 512² ou 1024² pixels respectivement. Cela semble un peu en dessous de l’objectif, mais l’exécution locale en temps réel est possible sur un GPU grand public haut de gamme. Il y a du code de référence ici https://github.com/GradientSurfer/Draw2Img/tree/main

    • Mais je me demande si ça doit vraiment être en temps réel à ce point. Ne serait-il pas plus naturel d’avoir un bouton ou quelque chose du genre : la personne prend la pose, la photo est prise, elle passe par la transformation et revient sous forme d’image, puis cette image reste affichée jusqu’à la photo suivante ? Cela renforcerait probablement l’illusion artistique. Évidemment, ce ne serait plus vraiment un « miroir »
    • Une fois tout ça fait, il serait aussi intéressant de regarder l’interpolation 2D qui n’a pas besoin d’IA pour les frames intermédiaires. Il existe des maths de noyaux rapides pour interpoler linéairement à très grande vitesse d’un amas à un autre
  • À propos de l’idée selon laquelle « faire de l’art est difficile. Mais l’art consiste surtout à révéler son monde intérieur, la technique n’en est qu’une partie. C’est dommage que l’art filtre si fortement par la technique », sans vouloir passer pour un luddite, je doute que le fossé technique ne soit qu’un simple désagrément
    Je pense que le processus d’apprentissage du dessin ou de création musicale transforme quelque chose en soi et enseigne des leçons de vie plus profondes
    J’ai entendu un jour que « les grandes œuvres d’art ne sont pas créées par le génie ; c’est le génie qui arrive à l’improviste, comme une bourrasque ». Le mieux qu’un artiste puisse faire est de cultiver ces occasions, et supprimer le fossé technique me semble revenir à supprimer ce processus de culture, l’essence même de la transformation de soi
    Il semble y avoir quelques principes profonds qui reviennent sans cesse, dont nous ne savons pas vraiment ce qu’ils sont ni comment en parler. Le projet est amusant et semble utile à beaucoup de gens, mais ce genre de réflexion me vient parfois

    • Je pense que la direction « révéler son monde intérieur » est juste, mais c’est justement pour cela que ceci me semble plus proche du papier peint que de l’art. Ce n’est pas un travail qui consiste à plonger profondément dans sa psyché pour en remonter une perle, et ces images n’ont pas cette qualité
      Que le projet dans son ensemble ait cette qualité est plus ambigu, mais personnellement je ne le pense pas. Cela me paraît davantage guidé par la technique que par la psychologie. Bien sûr, le miroir est très chargé symboliquement, donc on pourrait écrire une note d’artiste affirmant qu’il s’agit d’un travail psychologique
      Cela dit, j’aime bien, et si je l’avais fait, j’en serais fier. Mais c’est plus proche de la virtuosité technique que de l’art
      À ma place, je baisserais le framerate au lieu de l’augmenter. Il s’agirait d’exploiter la limite technique plutôt que de la combattre. Je ferais en sorte que le système n’affiche que les « bonnes » images et ne rafraîchisse pas l’écran avant qu’une autre « bonne » image soit générée. Le code qui décide si une image est « bonne » deviendrait la partie la plus intéressante du système, et on pourrait dire qu’il porte l’intention de l’artiste, ce qui le rapprocherait de l’Art avec un grand A selon mes critères personnels
      J’essaierais aussi de mettre en mémoire tampon le flux d’images, comme dans Light of Other Days de Bob Shaw
      Et comme Halloween approche, la tentation serait immense d’inpeindre de temps à autre une silhouette debout derrière le spectateur
      Pour obtenir de la stabilité visuelle, au lieu de générer des images aléatoires, pourrait-on demander à un LLM de produire du code de filtre vidéo aléatoire ? Du genre : « écris un filtre vidéo qui donne à la vidéo d’entrée un aspect cubiste », « comme une peinture à l’huile », « dans une esthétique Flash ». Si le filtre a été généré et ne plante pas réellement, on bascule dessus. Je ne sais pas si c’est possible
    • Des phrases comme « révéler quelque chose d’intérieur » peuvent impressionner le public un très court instant, mais le bon art demande davantage. Tout art possède un langage et des critères, que l’artiste acquiert en apprenant les techniques nécessaires et en mûrissant
      La Joconde n’est pas simplement un portrait bien peint. Elle est pleine de détails et de significations que seules les personnes ayant étudié la peinture peuvent comprendre. L’IA peut générer des images correctes ou intéressantes, mais elle ne parle pas le langage de la peinture. Cela demande un véritable effort pour l’apprendre et l’apprécier. Injecter une technique de coup de pinceau dans le cerveau d’une personne ou dans un outil d’IA ne fait pas de quelqu’un un artiste
    • Je soutiens fortement l’idée que « le processus d’apprentissage du dessin ou de la musique transforme quelque chose en soi et enseigne des leçons de vie plus profondes ». Un exemple plus simple que le dessin est l’écriture. Tout le monde a quelque chose à raconter et peut écrire, mais pour produire un texte qui mérite le temps des autres, il faut polir son art pendant des années, pas quelques jours, et ce processus vous apprend inévitablement qui vous êtes et cristallise votre vision du monde
    • C’est l’inverse de l’adage : « les experts disent que c’est impossible, les amateurs le font tous les jours »
      Parfois, il est bon que quelqu’un porte sur quelque chose un regard neuf, qui n’a pas été façonné par des décennies d’histoire existante
    • Donc le plus grand art ne peut être créé que par des gens qui cultivent des plantes pour fabriquer eux-mêmes leurs pigments, c’est ça
  • À noter : le lien vers le cadre utilisé pour fixer l’écran bloque l’accès
    https://www.leroymerlin.fr/produits/decoration-eclairage/dec...
    Pour ceux que ça intéresse, c’est le cadre noir MILO 21 x 29,7 cm. Le lien ci-dessous s’ouvre chez moi
    https://www.leroymerlin.pt/produtos/decoracao-e-tapetes/mold...
    L’écran utilisé, le HMTECH Raspberry Pi Screen 10.1, est aussi assez difficile à trouver. Quelqu’un aurait-il un écran de qualité et de caractéristiques similaires à recommander ?
    Je me demande aussi pourquoi utiliser un éclairage infrarouge et une caméra infrarouge

    • Chaque fois que je calcule le coût pour fabriquer ce genre de chose, il finit par être beaucoup moins cher de prendre une vieille tablette Android en mode kiosque et d’en faire une appli web
    • L’éclairage infrarouge et la caméra infrarouge servent probablement à ce que ça fonctionne aussi dans l’obscurité
    • On ne peut pas acheter l’écran sur Amazon ? Cela dit, comme c’est un écran tactile, ça semble excessif ; en réalité, n’importe quel écran devrait faire l’affaire. Le cadre autour peut être fabriqué soi-même
  • À propos de « l’art consiste surtout à révéler un monde intérieur, la technique n’en est qu’une partie », j’ai toujours pensé que l’art consistait à préserver et à créer des émotions. C’est pour ça que la banane scotchée au mur est de l’art, et que la musique populaire reste aussi de l’art
    C’est peut-être l’influence de l’école, mais moi aussi je me demande souvent « pourquoi ? »
    Cette invention est clairement une œuvre d’art en elle-même, mais ses sorties ne le sont pas à mes yeux. C’est comme des nuages. Ils forment toutes sortes de shapes, certains sont drôles, d’autres peuvent faire penser à un proche, mais cela reste une randomisation moyennée
    En revanche, l’idée de refléter la réalité dans cette randomisation numérique est sans aucun doute de l’art, selon moi. Et même sans être visuels ou sonores, le logiciel, le matériel, le code et le design sont aussi de l’art. Le fait que ce soit difficile à créer constitue d’ailleurs un contre-exemple à l’argument du premier paragraphe

    • Si l’on dit que « l’art consiste à préserver et à créer des émotions », le rôle de l’intention devient flou. Si je suis en colère, imbu de mes privilèges, et que je gare ma BMW en double file à cheval sur deux places handicapées, est-ce de l’art ? Cela suscite clairement des émotions, et c’est aussi un résultat produit par des émotions
    • L’art doit captiver et présenter un sujet d’une manière singulière. Il doit aussi faire intervenir une certaine technique. Sinon, dès que cela paraît bon marché ou superficiel, tout s’effondre
      La banane scotchée au mur n’est pas de l’art. Ce n’est qu’un objet ordinaire placé dans une configuration ordinaire
      On peut le ressentir comme de l’art, mais dans ce cas, c’est peut-être qu’on n’a pas été suffisamment exposé à du vrai art pour disposer d’un réservoir d’expériences, ou qu’on n’a vu jusque-là que des exemples superficiels
    • N’est-ce pas justement ce que signifie « révéler un monde intérieur » ?
  • Ce serait plus cool si la caméra était placée ailleurs que dans le cadre. Regarder dans un miroir artistique a l’air un peu ennuyeux
    Et si on en fabriquait un deuxième, qu’on le mettait chez quelqu’un, puis qu’on envoyait le flux de la caméra de l’un vers l’autre ? On verrait le « reflet » de quelqu’un d’autre, et cela créerait de petits moments où les deux personnes regardent la même image en même temps. On pourrait aussi en fabriquer plusieurs et faire en sorte qu’on ne sache jamais qui on regarde. Ce serait une sorte d’Omegle en version cadre photo

    • Bonne idée, mais c’est un objet complètement différent de ce que l’auteur voulait réaliser
      Il me semble que ce genre de chose a déjà été fait sous forme d’installation artistique dans des lieux publics, permettant de voir des personnes ailleurs dans le monde et d’interagir avec elles
      Par exemple ceci https://www.inavateonthenet.net/news/article/vc-art-installa...
  • En achetant quelques supports basse tension pour rénovation et plaques murales à brosse (https://www.homedepot.com/p/Carlon-1-Gang-Non-Metallic-Low-V..., https://www.homedepot.com/p/Commercial-Electric-1-Gang-Brush...) pour faire passer le câble d’alimentation dans le mur, ce serait beaucoup plus propre

  • C’est une idée vraiment géniale, et j’aimerais en avoir un sur ma bibliothèque
    Il est dit que « le principal problème de la configuration actuelle est le faible framerate », mais j’aurais envie d’appeler ça une fonctionnalité plutôt qu’une limite. Ce n’est pas forcément une mauvaise chose d’avoir un peu de temps pour traiter mentalement l’image et l’absorber
    J’aurais même plutôt envie d’allonger l’intervalle de rafraîchissement à 5–15 minutes, et de capturer puis générer une nouvelle image à chaque fois qu’un changement ou un mouvement est détecté

  • Avez-vous envisagé d’ajouter un effet de morphing à haut framerate entre les images ? Ça pourrait augmenter le framerate perçu et rendre le résultat assez cool

    • C’est la technique que j’ai utilisée dans une œuvre qui inpaintait l’image entière à environ une image toutes les 8 secondes. Je faisais « fondre » le résultat en attendant que le patch suivant soit prêt
      https://hardwork.party/aws-epoch-optimizer/
    • Si les changements de style entre les frames ne diminuent pas, un framerate élevé risque au contraire de donner un moins bon rendu. Si chaque frame change beaucoup, comme dans les images de la vidéo actuelle, cela risque d’être distrayant et de provoquer énormément de popping. Peut-être que l’auteur cherche justement un effet chaotique
    • Un simple fondu enchaîné suffirait déjà
  • J’aime beaucoup l’orientation qui consiste à dire : « l’art filtre trop fortement la technique. Peut-on décorréler les deux ? »
    Je comprends les raisons de s’opposer aux approches d’IA générative, mais dans les faits, il m’arrive d’avoir de belles idées sans avoir les compétences pour les réaliser moi-même. Je ne peux pas investir des mois ou des années pour chacune de ces idées, et elles ne sont pas assez importantes pour payer des centaines de dollars à un artiste chevronné.
    Désormais, il existe un moyen pour les gens de générer ce qu’ils veulent et d’en profiter, et c’est une bonne chose. Du moins pour un usage personnel ; pour des objectifs commerciaux, c’est un peu plus compliqué.

    • Cela suppose qu’une idée non réalisée a de la valeur. En réalité, je pense que la valeur que nous attribuons à une idée vient de sa diffusion auprès des autres. Une idée suffisamment radicale est souvent difficile à comprendre pour autrui, si bien que la personne qui l’a eue doit en créer elle-même un exemple.
      Donc quand quelqu’un dit « c’est une bonne idée », le vrai sens est plutôt « c’est un bon travail ».
      Le temps dira si les gens considéreront comme précieuses les idées étayées par un travail réalisé avec l’IA. Pourra-t-on seulement faire la distinction ? Personne ne le sait.
    • Mais malheureusement, ils n’ont pas réussi à séparer les deux.
      Tout le monde ne peut pas fabriquer ce qui est présenté ici, et cela valide involontairement le fait qu’il faut de la technique pour construire une machine qui déforme la réalité. Les photos générées ne sont pas de l’art.
  • Si le principal problème de la configuration actuelle est la faible fréquence d’images, il vaudrait peut-être mieux la réduire encore, autour de 0,3 à 1 fps !