Skip to content

GenAI/Image : notebook CLIPasso — le sketching sémantique par CLIP (SIGGRAPH 2022) #16478

Closed

Description

@jsboige

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

  1. 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 ;
  2. 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 ;
  3. Initialisation par saillance : les traits partent des zones saillantes (FCNS saliency map) — pourquoi ça compte pour la convergence ;
  4. 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 :

  1. Publication étudiée (citer le chemin biblio complet ci-dessus, cf README biblio règle 4) ;
  2. 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) ;
  3. Grille d'abstraction 32/16/8/4 traits sur un même objet + comparaison Canny même image ;
  4. ≥ 3 exercices stubbés (règle C.1 : pass / return None, jamais raise 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

Notes

Activity

  1. jsboige commented on Sep 17, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED] #16478 — myia-po-2023:CoursIA 2026-09-17T05:02:00Z

    • paths: 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).
    • Preflight : 0 commentaire sur l'issue, 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).
    • Grain DEEP multi-cycles assumé (exécution réelle du repo officiel + grille 32/16/8/4 + Canny) — livraison attendue c.9/c.10.
    • Issue soeur GenAI/Image : notebook rétrospectif DiscoDiffusion — la CLIP-guided diffusion pré-Stable-Diffusion #16477 (DiscoDiffusion, même rayon 05-History) NON claimée par ce grain.
  2. jsboige commented on Sep 17, 2026

    @jsboige
    OwnerAuthor

    [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 :

    1. scipy : scipy.ndimage.filters → scipy.ndimage (models/painter_params.py) ;
    2. diffvg : pyproject.toml poetry neutralisé (build = setup.py CMake/MSVC) ;
    3. épingles 2022 ignorées (torch 1.7 → env du cours) ;
    4. F._pad → F.pad (CLIP_/clip/auxilary.py) — API privée retirée de torch 2.8 ;
    5. diffvg recompilé avec CUDA (DIFFVG_CUDA=1, nvcc 12.6 via env conda dédié, CMAKE_CUDA_STANDARD 11→17 exigé par thrust 2.3, arch sm_86) — le build CPU initial faisait échouer pydiffvg.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é.

  3. jsboige commented on Sep 17, 2026

    @jsboige
    OwnerAuthor

    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) :

    • Outil officiel exécuté : clone CLIPasso + diffvg recompilé CUDA (nvcc 12.6, sm_86) — les 5 adaptations documentées dans la cellule « Installation » ;
    • Grille camel 32/16/8/4 traits exécutée (1001 iters/run, bests SVG sur disque) ;
    • Notebook 21 cellules rédigé (principe, installation, grille, Canny, courbe CLIP de sémanticité, 3 exercices), README du rayon 05-History + assets ;
    • Une passe d'exécution partielle (12:59Z) a validé install + cibles puis s'est interrompue avant le rendu final — pas de défaut bloquant identifié.

    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

  4. jsboige commented on Sep 17, 2026

    @jsboige
    OwnerAuthor

    [DELIVERED] PR #16595 — feature/16478-clipasso-semantic-sketching (base main 0aa1847f43, commit 1a2c466f00)

    Notebook 05-2-CLIPasso-Semantic-Sketching.ipynb livré avec outputs réels :

    • SOTA-OK (EPIC: axis-2 SOTA ledger -- every notebook PR-reviewed for proper SOTA-tool install/invocation (recoverable -> re-plug machine/env/user-hand) #3801) : code officiel CLIPasso (MIT) exécuté sur GPU local — diffvg recompilé CUDA (nvcc 12.6, sm_86), runs d'optimisation 1001 itérations/point.
    • Grille d'abstraction 32/16/8/4 : 4 runs officiels sur la cible chameau du papier (bests _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.
    • Exécution complète : 10/10 cellules code, execution_count 1..10, 0 erreur, 0 cellule sans output, 0 leak de chemin machine (C.2/H.3 OK).
    • 3 exercices stubbés conformes C.1 (print("Exercice N a completer") + result = None # TODO).
    • Rayon 05-History créé (README + figure grille extraite de l'exécution + MANIFEST de provenance des assets).
    • QA visuelle des figures déléguée au merge-gate (lane GLM text-only).

    Adaptations d'exécution du repo officiel documentées dans le notebook (scipy, F.pad, poetry neutralisé, build CUDA diffvg).

    Closes via PR #16595.

  5. added a commit that references this issue on Sep 17, 2026
  6. added a commit that references this issue on Sep 18, 2026
  7. added a commit that references this issue on Sep 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions