Une vidéo de 1,5 million de vues montre une IA peindre des aquarelles. Derrière ce chef-d'œuvre se cache un entraînement révolutionnaire, entièrement open source.
UNE VIDÉO QUI A FAIT LE TOUR DU MONDE
Le 23 août 2026, une vidéo postée par Surya Narreddi fait sensation sur internet. On y voit une intelligence artificielle peindre des fleurs à l'aquarelle, avec des traits lâches, des imperfections, comme si un humain avait posé son pinceau sur le papier. En quelques jours, la vidéo dépasse le million et demi de vues. Mais ce qui fascine, ce n'est pas seulement le résultat : c'est la façon dont cette IA a été entraînée.
Narreddi explique dans un article de blog que son modèle écrit du code JavaScript pour générer ces aquarelles. Le code utilise une bibliothèque appelée p5.brush, qui simule le comportement des pinceaux et de l'eau sur le papier. Chaque trait, chaque couleur, chaque effet de transparence est calculé par l'IA. Mais comment une machine a-t-elle appris à peindre comme un artiste ?
C'est là que réside l'innovation : l'IA n'a pas été entraînée à produire des images parfaites, comme le font la plupart des modèles d'images actuels. Elle a été guidée par des préférences esthétiques humaines, à travers un processus d'apprentissage par renforcement (RL).
LE SECRET : UNE IA QUI ÉCRIT DU CODE POUR PEINDRE
Pour comprendre cette prouesse, il faut revenir à la base : l'IA ne peint pas directement sur un canevas numérique. Elle génère du code JavaScript qui, une fois exécuté, produit l'image finale. Ce code est ensuite rendu dans un navigateur, comme si un artiste avait écrit un programme pour peindre.
Le modèle utilisé s'appelle Qwen/Qwen3.5-35B-A3B, une version optimisée pour le raisonnement et la Génération de code. Grâce à une technique appelée LoRA (Low-Rank Adaptation), l'IA a été fine-tunée pour produire des aquarelles réalistes. Mais le vrai défi était ailleurs : comment lui apprendre à peindre bien, selon des critères esthétiques ?
La réponse se trouve dans le pool de références, un ensemble de 178 aquarelles générées par d'autres modèles. Ces images ont été notées par un humain (l'auteur du projet) en fonction de ses préférences : certaines sont considérées comme « aimées », d'autres comme « acceptables ». C'est ce pool qui sert de référence pour évaluer la qualité des nouvelles productions de l'IA.
L'APPRENTISSAGE PAR RENFORCEMENT : UNE IA QUI DÉVELOPPE UN GOÛT ARTISTIQUE
L'apprentissage par renforcement (RL) est une méthode où l'IA apprend en recevant des récompenses ou des pénalités. Dans ce projet, la récompense n'est pas une note mathématique, mais une évaluation esthétique : l'IA est récompensée si ses aquarelles ressemblent à celles du pool de références.
Deux juges sont utilisés pour évaluer les productions de l'IA :
- HPSv3, un modèle de préférence ouvert de 7 milliards de paramètres, qui note si une image correspond à une description textuelle (par exemple, « une fleur de pêcher »).
- Qwen3-VL-30B-A3B-Instruct, un modèle de vision qui compare les aquarelles générées aux quatre références sélectionnées aléatoirement dans le pool. Il note si la nouvelle production est meilleure que ces références.
Le système est conçu pour que l'IA apprenne à imiter le style et les préférences humaines. Plus l'IA produit des aquarelles proches de celles du pool, plus elle est récompensée. Trois configurations d'entraînement ont été testées, différant par l'importance accordée à chaque juge :
- hps-only : l'IA est récompensée uniquement par HPSv3.
- judge-led : l'IA est récompensée principalement par le juge humain (Qwen3-VL).
- hps-led : un mélange des deux récompenses.
LA BIBLIOTHÈQUE P5.BRUSH : L'ART DANS LE CODE
Pour peindre, l'IA utilise p5.brush, une bibliothèque JavaScript qui simule le comportement de l'aquarelle. Contrairement à d'autres outils de dessin, p5.brush ne dessine pas des formes géométriques parfaites : elle simule les effets de l'eau, des pigments qui s'étalent, des textures de papier.
L'IA n'a accès qu'à 10 méthodes de cette bibliothèque :
scaleBrushes,noStroke,fill,noFill,fillBleed,fillTexture,beginShape,vertex,endShape,circle.
Ces méthodes permettent de créer des formes remplies, avec des effets de débordement contrôlés. Par exemple, la méthode fillBleed(0.25) décide de l'intensité avec laquelle la peinture s'étale au-delà des contours. C'est cette limitation qui donne aux aquarelles leur aspect organique et imparfait.
L'auteur de p5.brush, Alejandro Campos Uribe, a lui-même tenté d'enseigner à une machine à peindre bien avant ce projet. En 2022, il a créé une série d'art génératif où il documente ses échecs pour apprendre à p5.js à dessiner comme un enfant. Il écrit : « C'est à peine capable d'utiliser les crayons [.] Il ne peut pas suivre des commandes simples. Je suis à bout, très énervé. » Cette série devait compter trois pièces, il n'en a réalisé que deux. Quand la vidéo de Narreddi est devenue virale, il a partagé ce journal intime en disant que ce projet était la troisième pièce.
LA RECETTE POUR ENTRAÎNER L'IA : UNE COMMANDE, 48 HEURES D'ATTENTE
Pour reproduire cette expérience, il suffit d'une seule commande. Voici comment cela fonctionne :
hf jobs uv run train/watercolourgrpo.py --flavor h200 --timeout 48h --secrets HFTOKEN -- \
--env-url https://<votre-nom>-watercolour-env.hf.space \
--model Qwen/Qwen3.5-35B-A3B --lora --all-linear --bf16 --gradient-checkpointing \
--subject 'a peach hibiscus' --references 4 \
--top-p 0.95 --top-k 20 \
--lr 5e-5 --lr-scheduler constantwithwarmup --warmup-steps 5 \
--scale-rewards none \
--steps 110 --n-episodes 240 --num-generations 8 \
--per-device-batch-size 1 --gradient-accumulation-steps 8 \
--max-completion-length 8192 \
--run-tag my-run --out <votre-nom>/watercolour-grpo --push-to-hub
Cette commande lance l'entraînement sur Hugging Face, en utilisant un GPU H200. L'entraînement dure jusqu'à 48 heures, avec des paramètres optimisés pour éviter les erreurs et maximiser la qualité des résultats. Voici ce que signifient les principaux paramètres :
--lora: active l'adaptation LoRA pour fine-tuner le modèle.--all-linear: permet d'adapter toutes les couches linéaires du modèle.--bf16: utilise le format de nombres à virgule flottante 16 bits pour accélérer l'entraînement.--subject 'a peach hibiscus': précise le sujet des aquarelles (ici, une fleur de pêcher et un hibiscus).--references 4: indique que quatre références seront utilisées pour évaluer chaque production.--steps 110: le nombre d'étapes d'entraînement.--n-episodes 240: le nombre d'épisodes (ici, chaque épisode correspond à une génération d'aquarelle).
LES RÉSULTATS : L'IA APPREND À PEINDRE (ET À S'AMÉLIORER)
Les trois configurations d'entraînement ont produit des résultats différents. Voici ce que les chiffres révèlent :
Les aquarelles les moins bonnes (celles qui obtiennent un score inférieur à 0,3) disparaissent rapidement. Par exemple, dans la configuration judge-led, le nombre de rollouts sous 0,3 passe de 99 à 16 en quelques étapes. L'IA apprend à éviter les erreurs évidentes : canevas vides, traits flous, couleurs ternes.
Mais le vrai changement s'observe dans la qualité des meilleures productions. Dans la configuration hps-only, les peintures deviennent plus fiables, mais pas forcément plus belles. Le score moyen du groupe n'augmente que de +0,034, et HPSv3 s'arrête dès qu'il voit des pétales et une tige. En revanche, avec les configurations incluant le juge humain (judge-led et hps-led), les peintures s'améliorent vraiment :
- Le score des meilleures peintures augmente de +0,12 (judge-led) et +0,16 (hps-led).
- La couverture de peinture double (de 0,11 à 0,23 et de 0,13 à 0,30).
- Les aquarelles deviennent plus proches du style du pool de références.
Un autre résultat surprenant : l'IA ignore une instruction explicite. Le prompt demande de produire entre 15 et 30 formes remplies, mais l'IA en génère en réalité entre 7 et 9. Pourquoi ? Parce que cette instruction n'est pas récompensée. L'IA optimise ce qui est récompensé : la qualité esthétique, pas l'obéissance à une consigne.
LES LIMITES : UNE IA QUI PEINT CE QU'ON LUI A APPRIS
Les aquarelles produites par l'IA dans chaque entraînement se ressemblent de plus en plus à mesure que l'entraînement avance. C'est normal : le modèle apprend à reproduire le style du pool de références. Si le pool ne contient que des fleurs de pêcher et des hibiscus, l'IA ne peindra que cela.
Pour obtenir des résultats plus variés, il faudrait un pool de références plus diversifié. C'est ce que fait Surya Narreddi dans ses nouvelles compositions. D'autres artistes, comme Alex Yango, utilisent la même méthode avec des pools différents (par exemple, des animaux).
Cette limitation illustre une différence majeure entre un modèle entraîné sur des préférences esthétiques et un modèle entraîné sur des réponses mathématiques : derrière chaque nombre, il y a un travail humain de curation. Comme l'écrit Jason Liu dans un essai sur le goût : « L'IA a déplacé le goulot d'étranglement du faire vers le remarquer. »
LES DÉFAIS : QUAND L'INFRASTRUCTURE FAILLE
Derrière cette prouesse se cache un travail d'infrastructure colossal. Pour que l'entraînement fonctionne, il faut :
- Un environnement d'entraînement stable (ici, un Space Hugging Face).
- Un routeur d'inférence pour évaluer les aquarelles.
- Un websocket pour maintenir la connexion pendant des heures.
- Un système de récompense qui ne plante pas.
Les échecs d'infrastructure ont un coût : une aquarelle qui ne se rend pas ou un juge qui ne répond pas reçoit un score de 0,0. Cela représente environ 1,5 % des rollouts, et jusqu'à 5,2 % dans le pire des cas. Pour éviter cela, les rollouts défaillants sont désormais exclus du groupe.
Un autre problème a été découvert dans OpenEnv, l'outil utilisé pour gérer l'environnement d'entraînement. Un bug faisait en sorte que les connexions websocket échouaient systématiquement après la première déconnexion. La correction a été envoyée en amont.
CE QUE L'IA A APPRIS (ET CE QU'ELLE N'A PAS APPRIS)
Les trois entraînements ont produit des résultats distincts :
- hps-only : L'IA produit des aquarelles plus fiables, mais sans réelle amélioration esthétique. Les meilleures productions restent similaires.
- judge-led : L'IA développe une plus grande diversité et un style plus intéressant. Les peintures sont plus proches du goût humain.
- hps-led : L'IA produit des aquarelles convaincantes, avec un style « mouillé sur mouillé » très marqué. Les meilleures productions partagent une esthétique commune.
L'auteur du projet conclut que judge-led est la configuration la plus aboutie. Les peintures sont variées et artistiquement intéressantes, tandis que hps-led produit des aquarelles trop similaires. hps-only, lui, converge trop vite vers un style unique.
Pour juger par vous-même, une galerie en ligne regroupe toutes les aquarelles produites par les trois entraînements, triables par étape et par score. Vous pouvez ainsi comparer les résultats et choisir vos préférées.
POUR ALLER PLUS LOIN : UNE MÉTHODE OUVERTE À TOUS
Le plus impressionnant dans ce projet, c'est qu'il est entièrement open source. Tous les éléments sont disponibles :
- Le code d'entraînement (watercolour_grpo.py).
- Le pool de références (watercolour-reference-pool).
- Les modèles entraînés (watercolour-grpo-hps-only, watercolour-grpo-judge-led, watercolour-grpo-hps-led).
- Les rollouts (les aquarelles produites à chaque étape).
Chaque étape du processus est documentée, et le code est prêt à être réutilisé. Il suffit de dupliquer l'environnement, de régler deux variables d'environnement pour ajuster le mélange des récompenses, et de lancer l'entraînement.
Ce projet montre que l'IA peut non seulement générer des images, mais aussi apprendre à peindre selon des critères esthétiques humains. Et si demain, une IA pouvait peindre comme Monet, Van Gogh ou même un artiste contemporain ? La réponse est peut-être dans ce code.
- Hugging Face Blog
L'indépendance de CLODCO est votre garantie.
Pour que l'actualité de l'IA reste sans filtre et sans concession, votre soutien est indispensable. Votre contribution est le seul moteur de notre liberté éditoriale.
Soutenir CLODCO


