Repository navigation
GenAI/Image : notebook CLIPasso — le sketching sémantique par CLIP (SIGGRAPH 2022) #16478
Description
Contexte
Demande user (2026-09-17) : enrichir la série GenAI/Image de deux références pré-Stable-Diffusion chères au user. CLIPasso : « un modèle également assez vieux, l'un des premiers usages de clip que j'ai trouvé fantastique » — la publication est retrouvée et rangée dans la biblio canonique :
G:\Mon Drive\MyIA\IA\Bibliographie IA\MachineLearning\2022 - Vinker et al - CLIPasso - Semantically-Aware Object Sketching.pdf
(arXiv 2202.05822v2, identité vérifiée page 1, SHA-256 contrôlé ; publication ACM TOG 41(4) — SIGGRAPH 2022, DOI 10.1145/3512508)
CLIPasso convertit une image d'objet en esquisse vectorielle de quelques traits (4 à 32 courbes de Bézier), en préservant la sémantique : même à 4 traits, l'objet reste reconnaissable — parce que l'optimisation (héritée de CLIPDraw) est guidée par CLIP (distance cosinus entre embeddings CLIP de l'esquisse augmentée et de l'image source), pas par un signal bas-niveau. C'est l'un des premiers usages spectaculaires de CLIP comme fonction de perte sémantique plutôt que comme classifieur.
Points pédagogiques à couvrir
- Abstraction contrôlée par le nombre de traits : 32 → 16 → 8 → 4 traits sur le même objet = spectrice abstraction, avec seuil où la sémantique tient encore ;
- Sémantique vs signal : contraster avec un edge-detector classique (Canny) — Canny garde les contours, perd le sens ; CLIPasso perd les contours, garde le sens. C'est LA démonstration du notebook ;
- Initialisation par saillance : les traits partent des zones saillantes (FCNS saliency map) — pourquoi ça compte pour la convergence ;
- Héritage CLIPDraw (Frans et al. 2021) et descendance (CLIPascenes, etc.) : CLIP comme loss est devenu un paradigme.
Livrable
Notebook MyIA.AI.Notebooks/GenAI/Image/05-History/05-2-CLIPasso-Semantic-Sketching.ipynb (même rayon 05-History — Racines pré-Stable-Diffusion que l'issue DiscoDiffusion ; placement à ajuster au delivery).
Contenu attendu :
- Publication étudiée (citer le chemin biblio complet ci-dessus, cf README biblio règle 4) ;
- Exécution réelle du repo officiel
github.com/yael-vinker/CLIPasso(MIT) en local GPU (RTX 3090) sur des images de la série (ex. la référence robot du 03-4, une image générée du 01/02) ; - Grille d'abstraction 32/16/8/4 traits sur un même objet + comparaison Canny même image ;
- ≥ 3 exercices stubbés (règle C.1 :
pass/return None, jamaisraise NotImplementedError) — ex. nombre de steps d'optimisation, changement d'image cible, mesure de « sémanticité résiduelle » (similarité CLIP esquisse/image en fonction du nombre de traits).
Critères d'acceptation
- Notebook FR-first, committé AVEC outputs (C.2), exécution complète kernel local (H.1 :
execution_count1..N, 0 erreur) ; - Vraies esquisses générées par le code officiel (verdict SOTA écrit dans le body PR, cf EPIC: axis-2 SOTA ledger -- every notebook PR-reviewed for proper SOTA-tool install/invocation (recoverable -> re-plug machine/env/user-hand) #3801 — SOTA-OK attendu : repo MIT, GPU local disponible) ;
- La comparaison sémantique vs Canny est générée, pas décrite ;
- Publication citée par son chemin biblio complet dans le notebook ;
- Entrées README série + niveau 05-History ;
- Figure README (grille d'abstraction) + QA visuelle sur lane vision (po-2023 est text-only).
Notes
- Dépendances : torch, CLIP ViT-B/32 (auto-téléchargé), FCNS saliency — tout local, pas de service externe ;
- Voir EPIC: axis-2 SOTA ledger -- every notebook PR-reviewed for proper SOTA-tool install/invocation (recoverable -> re-plug machine/env/user-hand) #3801 (registre SOTA GenAI) et GenAI GPU optimization: quantization + idle sleep for all services #1385 (Epic série GenAI).
Activity
jsboige commentedon Sep 17, 2026
[CLAIMED] #16478 — myia-po-2023:CoursIA 2026-09-17T05:02:00Z
MyIA.AI.Notebooks/GenAI/Image/05-History/05-2-CLIPasso-Semantic-Sketching.ipynb(nouveau),MyIA.AI.Notebooks/GenAI/Image/05-History/README.md(nouveau rayon),MyIA.AI.Notebooks/GenAI/Image/README.md(entrée série),MyIA.AI.Notebooks/GenAI/Image/05-History/assets/(figure README + MANIFEST).gh pr list --state all --search "16478"et--search "CLIPasso"vides, rayon 05-History absent d'origin/main (5215cbd), GPU RTX 3090 libre (733 Mo/24 Go).jsboige commentedon Sep 17, 2026
[CLAIMED-AMEND] myia-po-2023:CoursIA — 2026-09-17T07:5xZ
Grain inchangé (notebook 05-2 + exécution réelle de la grille 32/16/8/4). Traçabilité des adaptations d'exécution sur le code officiel local (outils hors repo,
D:/Dev/clipasso-run) — la liste monte à 5 :scipy.ndimage.filters→scipy.ndimage(models/painter_params.py) ;pyproject.tomlpoetry neutralisé (build = setup.py CMake/MSVC) ;F._pad→F.pad(CLIP_/clip/auxilary.py) — API privée retirée de torch 2.8 ;DIFFVG_CUDA=1, nvcc 12.6 via env conda dédié,CMAKE_CUDA_STANDARD11→17 exigé par thrust 2.3, arch sm_86) — le build CPU initial faisait échouerpydiffvg.set_use_gpu(True)(RuntimeError: diffvg not compiled with GPU), obligatoire pour tenir 2 001 iters × 12 runs (CLIP sur CPU non viable).Toutes documentées dans la cellule « Installation de l'outil officiel » du notebook. Livraison toujours visée c.9/c.10 comme annoncé.
jsboige commentedon Sep 17, 2026
Status du claim (réponse au rappel) — le grain n'est pas oublié, il est en cours et proche de livraison :
Avancement réel (worktree
feature/16478-clipasso-semantic-sketching) :Pourquoi le glissement c.9/c.10 → maintenant : les cycles de l'après-midi ont été consommés par 2 réparations P0 dispatcher HIGH du coordinateur (DM 13:08Z #16490 Parameters sans output — ré-exécution GPU contre ComfyUI en vol à l'instant ; DM 13:19Z #16448 oracle rang 3 — livrée à 14:35Z, head 73f0876).
Plan immédiat : dès la ré-exécution #16490 rendue, ré-exécution complète du présent notebook (le dur est déjà calculé) puis PR. Pas de changement de périmètre.
🤖 Generated with Claude Code
jsboige commentedon Sep 17, 2026
[DELIVERED] PR #16595 —
feature/16478-clipasso-semantic-sketching(base main0aa1847f43, commit1a2c466f00)Notebook 05-2-CLIPasso-Semantic-Sketching.ipynb livré avec outputs réels :
diffvgrecompilé CUDA (nvcc 12.6, sm_86), runs d'optimisation 1001 itérations/point._32/16/8/4strokes_seed0_best.svg, horodatés 17-18/09) — le notebook réutilise ces artefacts via garde idempotent avec lignes de provenance dans les outputs.execution_count1..10, 0 erreur, 0 cellule sans output, 0 leak de chemin machine (C.2/H.3 OK).print("Exercice N a completer")+result = None # TODO).Adaptations d'exécution du repo officiel documentées dans le notebook (scipy, F.pad, poetry neutralisé, build CUDA diffvg).
Closes via PR #16595.
feat(genai,#16478): 05-2 CLIPasso — seconde cible robot + A/B du cout…
feat(genai,#16478): notebook 05-2 CLIPasso — sketching semantique par…
feat(genai,#16477): 05-1 DiscoDiffusion — CLIP-guided diffusion pré-S…