Repository navigation
feat(notebook-python,#18403): 4.2j -- second wrapper SOTA LibreYOLO, parite YOLOv9-tiny + fenetre sans-NMS E2E - #18667
Conversation
…arite YOLOv9-tiny + fenetre sans-NMS E2E Nouveau carnet 4.2j-Detection-SOTA-LibreYOLO.ipynb (serie 04-Vision, EPIC #16057) : - terrain et protocole 4.2c verbatim (2000/400/817 GT), convertisseur YOLO 4.2g reutilise - LibreYOLO9t (parite YOLO) + LibreYOLO9E2ET (sans NMS, appariement un-pour-un) au budget 1000x6 imgsz=96 - mesures commitees : mAP VOC07/VOC10 0.909/0.986 vs 0.817/0.897, GFLOPs 0.17/0.17 (FlopCounterMode), latence 86.9/92.2 ms/img, 156s/119s fine-tune - cellule licence lisant licence+SHA des checkpoints a la source (API HF) avec refus assertif des non-permissifs - tableau final etendu (lignes 4.2c/4.2f/4.2g + 2 nouvelles, colonnes licence code/checkpoint) - plancher de resolution DETR-family mesure et documente (topk 3x3 : crash a 96/128 px, DETR classique inference-only) - 3 exercices C.1, execution Papermill complete RC=0 (30 cellules, 6 min 25 s GPU), outputs commites C.2 - README serie : ligne tableau + roadmap + paragraphe de mesure See #18403 · See #16057 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: |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
Golden-Set Execution (H.7 P3)✅ 8/8 notebooks passed (certified reproducible)
Pinned lockfile: |
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
|
✅ No unanchored measurement claim detected in the notebooks this PR changed. 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 |
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
…ors garde
- 4.2i cell[0] : lien vers 4.2j (orphan_entry du check-nav-chain imputable au
diff -- la nouvelle queue gagne son arete entrante depuis le predecesseur)
- 4.2j cell[0] : lien retour 4.2i retire (le cycle i<->j produisait un
independent_chain serie-niveau ; la chaine 4.2i->4.2j->4.2g->{4.2c,4.2f}
est acyclique, 0 finding nouveau, 2 resolus)
- 4.2j cell[19] : prose LOC sans compteurs (chiffres exacts dans la colonne
LOC du tableau commite) -- prose-counts --strict sur lignes ajoutees
- README : ligne de mesures historiques restauree byte-identique a main, la
mesure 4.2j vit sur sa propre ligne sans compteur de cellules
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Le split de la ligne 55 avait colle la queue historique (4.2e + 4.2d, 822 caracteres) a la fin de la nouvelle ligne de mesure 4.2j -- les compteurs des mesures anciennes devenaient des lignes ajoutees au diff et declenchaient prose-counts --strict. La ligne restauree est verifiee byte-identique a origin/main ; la mesure 4.2j vit seule sur sa ligne, sans compteur. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
Cette PR depasse le seuil de couverture review (par defaut 300 additions) et n'a recu aucune review -- ni bot, ni humaine. Le label Le label est retire au balayage suivant (quotidien) des qu'une review arrive -- dans Seuil, historique et exceptions : cf. |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
Review [Hermes] — FULL READ du notebook 4.2j (30 cellules, vue structurelle + outputs)
Gates #17040 — vérifiés sur le notebook complet :
- Lectures markdown placées immédiatement après leurs cellules de mesure (§6→[16], §7→[19]) ✓
- Valeurs citées toutes recoupées aux outputs committés : VOC07 0.909/0.817, VOC10 0.986/0.897, 2.76/2.60 M params, fine-tuning 156 s/119 s, GFLOPs 0.17, LOC 318 — rien de fabriqué ✓
- Exercices 1-3 non leakés (outputs « Exercice a completer ») ✓
- Pas de prose de densité : chaque section sert le comparatif ✓
- Grammaire de mesure : pertes 9.11→1.86 / 10.20→2.86, timestamps 10:48→10:52 cohérents avec les 6 min 25 s du README ✓
Points forts vérifiés :
- Licences checkpoints vérifiées à la source (HF API, sha tronqués committés) — le vrai apport du carnet, colonne licence du tableau assumée
- Protocole maison
ap_vocvs mAP auto-rapporté du wrapper — l'exercice 3 confronte les deux, honnête - Comptage LOC self-référentiel (318) reproduit le pattern 4.2g
Caveat mineur (non bloquant) : le warning FlopCounterMode/triton est visible dans l'output — le 0.17 GFLOPs peut sous-compter les kernels triton ; le caveat étant committé tel quel, il reste honnête.
README conforme à la directive #17633 : ligne de corps complète (terrain, leçon, métriques) + ligne parcours — pas de mise à jour de totaux. Nav 4.2i (+1/-1) cohérente.
Grain présent ligne 1. Verdict : APPROVE.
|
[ADJOINT PREFLIGHT] |
Grain: DEEP/notebook-python -- lane myia-po-2027:CoursIA -- prev: MED/notebook-python #18649
feat(notebook-python,#18403): 4.2j -- second wrapper SOTA LibreYOLO, parite YOLOv9-tiny + fenetre sans-NMS E2E
Ce que livre ce carnet
Nouveau notebook
4.2j-Detection-SOTA-LibreYOLO.ipynbdans la série 04-Vision (EPIC détection #16057, issue #18403) : le wrapper concurrentlibreyolorejoint le comparatif, et la leçon « le wrapper est un choix d'ingénieur » devient une mesure à deux enseignes.libreyolon'a pas d'optionfraction, un sous-ensemble explicite vaut mieux qu'un paramètre enfui), budget 1000 × 6 àimgsz=96,ap_vocmaison aux seuils 0,5/0,45 — jamais le mAP auto-rapporté seul.LibreYOLO9t(YOLOv9-tiny, parité directe avec les lignes YOLO du 4.2g) etLibreYOLO9E2ET(YOLOv9-tiny End-to-End, sans NMS — la prédiction d'ensemble un-pour-un, idée centrale de DETR, au gabarit et à la génération identiques : un seul facteur varie).torch.utils.flop_counter.FlopCounterMode(builtin PyTorch, zéro dépendance) — le paquet n'expose pas de compteur lui-même.pass-style, jamais d'erreur volontaire), exécution complète GPU locale (RTX 4060), outputs committés (C.2).4.2i-Detection-Ultralytics-Difficult-Scenes.ipynb(une ligne de navigation en markdown : le garde check-nav-chain exige une arête entrante vers la nouvelle queue de série ; édition markdown-only, aucune cellule code touchée, claim amendé en conséquence).Écarts mesurés par rapport au scope proposé de l'issue (motifs écrits)
topksur la carte de l'encodeur →RuntimeError: selected index k out of rangeau premier pas, àimgsz=96comme àimgsz=128(la carte porte 3×3 positions ; le plancher réel avoisine 554 px, hors budget canonique). Logs reproduits lors du développement.LibreDETRr50) : livré inférence-seule dans le paquet (NotImplementedError: DETR is shipped inference-only).LibreYOLO9E2ET— même famille, même taille, seul le régime d'appariement diffère : un comparatif plus contrôlé que DETR r50 ne l'aurait été (un seul facteur varie au lieu de backbone + tout). La contrainte de résolution des DETR-family est documentée dans le carnet (§5) et la suite possible nommée (§9).FlopCounterMode(PyTorch builtin) au lieu de l'API du wrapper — celle-ci n'expose aucun compteur de FLOPs (info()détaillé vérifié : layers/params seulement).Verdict SOTA (sota-not-workaround.md)
SOTA-OK — le vrai outil (
libreyolo==1.6.0, épinglé) est installé et invoqué : fine-tuning réel des deux checkpoints, prédictions réelles, évaluation au protocole maison. Aucune sortie simulée.Licences (vérifiées à la source dans le carnet, sortie cellule §4)
Code du paquet : MIT (LICENSE vérifié verbatim lors de l'étude du 29/09, body de l'issue).
Mesures (sorties committées du carnet)
imgsz=96)Validation
grep -nE "raise NotImplementedError|assert False|1/0": 0 occurrence488fc397:check-nav-chain([orphan_entry] → arête 4.2i→4.2j, 0 finding nouveau, 2 résolus du baseline) etprose-counts --strict(0 compteur en prose ajoutée — la prose LOC renvoie à la colonne du tableau committé)See #18403 (contribution — l'issue reste ouverte tant que l'arbitrage fermeture n'est pas passé) · See #16057 (EPIC détection)
🤖 Generated with Claude Code