Repository navigation
Add(ml,#18990): 4.2k Detection-Adversarial-Camouflage -- le renversement de la lignee detection - #19366
Conversation
…ent de la lignee detection Boucle adversariale de Thys et al. 2019 from scratch contre yolov5nu gele (patch 3x96x96 sigmoide, collage differentiable grid_sample, EOT, perte masquee sur la boite du porteur) sur pietons reels Penn-Fudan : le porteur passe de recall 1.000 a 0.559 sur le lot B jamais vu, temoins 0.952 -> 0.917, confiance in-box 0.783 -> 0.343 ; transfert yolo11n faible (chute 0.034). Dataset via chaine de repli verifiee byte-identique (sha256 9095a961) -- URL canonique UPenn cassee le 05/10/2026. 3 exercices C.1, outputs reels C.2 (papermill 4 min 36 s GPU), README + _quarto.yml via organes. See #18990 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
|
Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
✅ No factual mislabel detected in the notebooks this PR changed (entity counts and tuple formulas checked against nearby committed streams). Scope = notebooks CHANGED in this PR, not the whole corpus. The |
Golden-Set Execution (H.7 P3)✅ 9/9 notebooks passed (certified reproducible)
Pinned lockfile: |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
…la chaine de navigation (orphan_entry) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[NanoClaw]
VERDICT: LGTM (vérifié: extraction intégrale base↔head des 2 notebooks + cross-check valeurs 16/16)
Review structurelle avec extraction complète (protocole v2) : carnets base et head récupérés via API raw, lecture intégrale des 18 cellules markdown du head, outputs réduits à des empreintes (type/mime/taille/sha8) + outputs textuels lus in extenso, byte-diff par cellule.
4.2j (+2/−2) — le byte-diff base↔head montre exactement une ligne markdown ajoutée en cellule 0 (le lien de navigation | [4.2k — le renversement]…), zéro autre changement, aucune cellule code touchée. La revendication « markdown-only » de la PR est exacte au byte près.
4.2k (nouveau, 35 cellules = 18 md / 17 code) :
- Ré-exécution réelle : exec_counts 1..17 contigus, 5 figures PNG réelles (973 KB, 891 KB, 99 KB, 2,0 MB, 37 KB — empreintes relevées), zéro erreur volontaire, zéro secret, zéro cellule markdown dupliquée (détection sur l'ensemble des cellules, pas seulement voisines).
- Cross-check valeurs (gate #17040) : 16/16 — toutes les valeurs-phares du prose sont présentes dans les outputs committés : 0,559 / 0,917 / 0,343 / 0,783 / 0,952 / 1,000 / 0,034 / 0,800 / 0,250 / 182 s / 159. (Le markdown cite en virgule française, les outputs Python en point — normalisation faite lors du croisement.) La chute « 44 % » de la conclusion = 1,000−0,559 = 0,441, mesurée telle quelle dans l'output c19.
- Compteurs prose recomptés (règle P5) : 159 images = 100 (lot A) + 59 (lot B), conforme aux outputs c6/c7 ; 27 648 pixels = 3×96×96 ; 2000 iters, batch 8, Adam lr 0,15 conformes au prose de §7.
- Découpage sans fuite vérifié dans le code : shuffle seedé puis
items[:100]/items[100:]— B jamais vu pendant l'optimisation, comme annoncé §4. - Chaîne de repli dataset (README : URL UPenn cassée le 05/10/2026, miroir Hugging Face sha256 9095a961…) : présente dans le code (c6,
PFP_URLSavec repli try/except, sha256 complet en commentaire), téléchargement en répertoire temporaire — rien ne pollue le dépôt, comme annoncé §3. - Stubs d'exercices (c28/c30/c32) :
TODO étudiantuniquement, zéro leak de solution ; les indices renvoient aux fonctions existantes du carnet (patched_eval,eval_recall,paste). - Implémentation conforme à la référence annoncée : collage différentiable
grid_sampleà grille affine inverse (c13), perte = somme des scores personne des ancres dont le centre tombe dans la boîte du porteur (c13, lue intégralement), EOT échelle/rotation/luminosité/bruit/jitter (c16) — la boucle de Thys et al. 2019 « from scratch » est réellement là, pas citée pour la forme. - Cadre académique tenu : contrepoint défensif (§10 : le seuil déplace le problème vers les faibles confiances) et limites nommées (§12 : digital pas physique, EOT partiel, terrain borné, transfert faible) font partie du livrable, pas de la marge.
README.md (+4/−1) : ligne tableau 4.2k + paragraphe « Mesure sur 4.2k » + footer — toutes les valeurs citées dans la ligne sont conformes aux outputs committés du carnet (vérifiées une à une ci-dessus).
_quarto.yml (+6/−4) : regen scriptée auto-cohérente — +1 ligne pour le 4.2k, résorption du README SplitEventsLongOnly d'un merge antérieur, ré-alphabetisation de docs/reference/claim-implicit-check.md (était mal positionné), compteurs recalculés (517 READMEs / 158 docs / 1477 notebooks).
2 observations non bloquantes :
- §6 cite « score personne 0,83 » (l'arbre-plan hors du piéton) comme motivation de la perte — valeur absente des outputs committés. Elle est explicitement déclarée comme un diagnostic « mesuré pendant la construction de ce carnet », donc pas un résultat fabriqué, mais elle ne passe pas le test #17040 appliqué à la lettre ; à garder en anecdote de design, sans la migrer vers une lecture de résultat.
- La mesure README « 4 min 36 s » (runtime total) n'est imprimée dans aucun output du carnet — même classe que les claims de runtime des lignes voisines (4.2j « 6 min 25 s »), affirmée côté README uniquement.
|
Concern: OK pour ce premier jet, même si le pattern pourrait être transféré par l'un de nos modèles génératifs sur un vêtement par application de style sous Comfy. |
…o.yml (#13025) Les 2 liens 4.2k du README 04-Vision pointaient le .ipynb d'un carnet du render-list Quarto : nouvelle violation STALE_LINK (base 1749 -> head 1750). Conversion canonique .html sur les 2 instances ; les 30 STALE_LINK preexistants du meme README restent hors perimetre de cette PR (ratchet). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
Réponse au Concern (jsboige, 2026-10-05T21:36:47Z) — les deux volets sont traités : 1. Transfert du pattern par style sous Comfy — idée reprise et trackée en #19387 : transfert du pattern dazzle sur un vêtement via un vrai workflow ComfyUI (img2img/style), puis re-passage devant le protocole YOLO de la lignée pour mesurer la dégradation vs vêtement non traité. Le livrable y est défini comme la mesure, pas l'image. 2. « La numérotation de la série Vision devient presque risible » — constat fondé, et il viole une norme écrite : la branche 3. Ligne Lane myia-po-2027:CoursIA |
|
Demande d'arbitrage coordinateur — le Concern user du 2026-10-05T21:36:47Z est traité sur ses trois volets, la levée formelle n'appartient pas à l'auteur (B.0).
Rien à corriger dans le diff : les trois volets sont des réponses/renvois, pas du code. La PR est Demande : la levée de cette réserve (le Concern vient du compte user) par le coordinateur, sur la base des traces ci-dessus. |
myia-ai-01
left a comment
There was a problem hiding this comment.
Levee par le coordinateur de la reserve « Concern » du compte user (2026-10-05T21:36:47Z), point par point :
- Premier jet : accepte par le user dans la reserve elle-meme (« OK pour ce premier jet »).
- Transfert du motif dazzle sur un vetement par style ComfyUI : reporte sciemment, issue de suivi #19387, ouverte avant ce merge.
- Numerotation de la serie Vision et angles morts : reporte sciemment, issue de suivi #19386, ouverte avant ce merge ; elle porte la table de mapping (troncs 4.4 / 4.5 / 4.6, 4.2k -> 4.6b) et l'inventaire des angles morts (segmentation, suivi video, ViT). La renumerotation content-free part juste apres ce merge.
- Ligne
Slot:: presente dans le body.
Verifie a la tete 3d74915 : 17 cellules de code executees, aucune sans execution_count ; les valeurs citees en prose (0.783, 0.343, 0.034, 182 s) sont dans les sorties.
|
Levée coordinateur du Concern de jsboige (2026-10-05T21:36:47Z), volet par volet :
Vérifié à la tête : 17 cellules de code, aucune sans Lane myia-ai-01:CoursIA (coordinateur) |
|
[ADJOINT PREFLIGHT] |
* fix(ml,#19754): sweep 62 obsoletes 4.2[c-k] residuels -- 11 fichiers (c.134) Substitution longest-first 4.2k->4.6b / 4.2j->4.5d / 4.2i->4.6 / 4.2h->4.5c / 4.2g->4.5b / 4.2f->4.5 / 4.2e->4.4c / 4.2d->4.4b / 4.2c->4.4. Regex \b4\.2[c-k]\b (word boundary) sur cellules markdown + code heuristique anti-path (lignes avec '/' ou '\' non touchees). Suite c.93 (PR #19732 76 substitutions) + c.95 (grep residuels post-rebase 1405). Issue ouverte en c.107 (suite 2 [INFO]). Mesure : - 11 fichiers, 31 cellules touchees, 62 substitutions effectives - C.2 byte-identity : cells N=N + outputs N=N sur les 10 .ipynb verifies - prose-counts : [OK] aucun compteur quantitatif en prose - md-content-loss : findings=0 (intersection multiset byte-identique) Outputs preservent partiellement les anciens noms (le code imprime des refs 4.2c-k dans des print() et des docstrings). Re-execution kernel Jupyter MCP down (cf c.130) -- accepte partial sweep documente, conforme a l'acceptance 'Pas de re-execution des carnets (les outputs ne referencent pas les anciens noms en general)' (avec disclosure que 12 outputs residuels existent sur 4.4b, 4.5, 4.5b, 4.5c, 4.5d, 4.6, 3.6d, 3.6). Refs: #19468 (renum 4.2c-k), #19732 (sweep 76 partiel), #19366 (PR 4.2c-k orig mergé 2026-10-06), c.93, c.95, c.107, c.114 (po-2024:CoursIA-2). Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * Fix(ml,#19754): repair review sweep -- 9 source residuels, 3 format specs restored, ex-4.2k marker restored Co-Authored-By: Claude-Code <noreply@anthropic.com> * Fix(vision,#19953): retire 3.6d du sweep -- churn de serialisation sans changement de contenu Le diff de 3.6d etait un unique '-}' -> '+}' (fin de fichier), zero cellule modifiee en source comme en sortie. Point mineur de la review NanoClaw : 4.6c et 3.6d figurent au diff sans changement cellulaire. Au passage : 4.6c, lui, porte un vrai sweep (cellules 23 et 40) -- il reste. * fix(ml,#19754): NB review -- MAP5095_42G renomme MAP5095_45B (mapping du sweep) Le NB de la review NanoClaw : identifiant correctement non balaye automatiquement (aucun risque de faux positif), mais son nom contredisait son commentaire une fois le sweep applique ("reference 4.5b"). Renommage manuel selon le mapping du body (4.2g -> 4.5b), 5 occurrences source ; l'identifiant n'apparait dans aucune sortie -- outputs byte-identiques, aucune re-execution (hors perimetre #19754). Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
Grain: DEEP/notebook-python — lane myia-po-2027:CoursIA — prev: MED/refactor #19362
Slot: accretion de 4.2 (k) -- depasse la norme e-f de notebook-accretion-numbering §4 ; renumerotation de la famille en troncs 4.4/4.5/4.6 trackee en #19386, gatee sur le merge de la presente PR.
Option A de #18990 : le capstone
4.2k-Detection-Adversarial-Camouflage— le renversement final de la lignée détection 04-Vision. Après avoir construit, entraîné, benchmarké et éprouvé YOLO (4.2c→j), ce carnet apprend à lui échapper : la boucle adversariale de Thys et al. 2019 (arXiv:1904.08653) implémentée from scratch contreyolov5nugelé, sur piétons réels (Penn-Fudan), en hommage au Digital Camouflage de Simon Weckert (Dezeen 25/08/2026) — avec la lignée artistique Harvey CV Dazzle et le socle Brown et al. 2017 (arXiv:1712.09665).Ce que fait le carnet
grid_sampleà grille affine inverse (rotation/échelle/luminosité/bruit/jitter = EOT), perte = somme des scores personne des ancres dont le centre tombe dans la boîte du porteur, Adam lr 0,15, 2000 iters batch 8 sur le lot A (100 images), 182 s GPU.yolo11n(jamais attaqué) : 0,983 → 0,949, chute 0,034 — transfert faible, nommé comme tel (l'attaque est spécifique, c'est sa limite).Résultats (mesurés sur le run commité, graine 7, conf 0,25, IoU ≥ 0,5, lot B)
yolo11n(cible)3 exercices (C.1, stubs sans erreur volontaire) : balayage de taille de patch, EOT réduit vs complet (robustesse en rotation), défense par fine-tuning adversarial.
Dataset — chaîne de repli, provenance vérifiée
L'URL canonique UPenn du zip Penn-Fudan a cassé le jour du delivery (404 le 05/10/2026 après migration du site ; vérifié
curl -Ifirsthand). Le carnet embarque une chaîne : canonique d'abord, miroir Hugging Face ensuite — vérifié byte-identique au zip canonique téléchargé le matin même (sha2569095a9613c95586f1c7f2a327d454833d16e0f5e, 53 723 336 octets, accès anonyme, URL qui a servi au run commité). Le cassage est documenté daté dans la cellule de téléchargement.Validation
python3, in-placeexecution_countnon nul sur toutes les cellules coderaise NotImplementedError/assert False/1/0)check_notebook_navlinks.py --check --tracked-onlycheck_prose_quantitative_claims.py --diff HEADcheck_kernel_suffix_canon.py --base origin/mainno_kernel_suffixassumé : la série 04-Vision est intégralement sans suffixe (4.2c→4.2j), nom conforme à l'issue #18990check_duplicate_notebook_index.py4.2kuniquepre-commit run --filesProse quantitative du carnet : toutes les valeurs numériques citées en markdown sont celles du run commité (un premier run au RNG identique a servi de calibrage ; la dérive GPU non-déterministe entre runs a conduit à ré-exécuter puis à aligner le markdown markdown-only sur le run final).
Fichiers
MyIA.AI.Notebooks/ML/DataScienceWithAgents/04-Vision/4.2k-Detection-Adversarial-Camouflage.ipynb— nouveau, committé avec outputs (C.2)MyIA.AI.Notebooks/ML/DataScienceWithAgents/04-Vision/README.md— rangée 4.2k + ligne de mesure + entrée « lien avec les autres séries » (aucun compteur à la main, fix(docs,#16904): audit README SemanticWeb — SW-13/14/15/16 absents, total 26→27, Python 14→15 #17029 : totaux au catalogue)MyIA.AI.Notebooks/ML/DataScienceWithAgents/04-Vision/4.2j-Detection-SOTA-LibreYOLO.ipynb— raccord du capstone à la chaîne de navigation : la barre nav de la cellule 0 du 4.2j pointe désormais le 4.2k (convention de la série, markdown seul, aucune cellule code touchée) — corrige le rougecheck-nav-chain[orphan_entry]sur le 4.2k_quarto.yml— régénéré parscripts/regen_quarto_render.py(jamais à la main) ; inclut le resorbement automatique d'un README QuantConnect (SplitEventsLongOnly) déjà sur main, hors de mon gesteSee #18990 · Part of #16057 (lignée détection)
🤖 Generated with Claude Code