Contexte pédagogique
Notre série Vision (ML/DataScienceWithAgents/04-Vision/) couvre :
- 4.1 Convolution (edge detection, Sobel/Prewitt, kernels gaussiens)
- 4.2 Réseaux convolutifs (LeNet-like, VGG-block, ResNet-block, transfer learning)
- 4.2b Convolution avancée (détection de contours Canny from scratch vs skimage, segmentation simple)
- 4.3 Architectures modernes (ResNet, DenseNet, EfficientNet en panorama + transfer)
Ce qui manque : la détection d'objets (localisation + classification), pas la classification seule. C'est un pilier historique et industriel :
- Two-stage : R-CNN → Fast R-CNN → Faster R-CNN (region proposal + classification)
- One-stage anchor-based : YOLO, SSD, RetinaNet (Focal Loss)
- One-stage anchor-free : CenterNet, FCOS (keypoints ou center-based)
Aucune de ces familles n'est couverte. Le 4.2b fait de la détection de contours (Canny), pas de la détection d'objets.
Acceptance
Bloc A — from scratch (le geste fondateur)
- Notebook Detection-Anchor-from-scratch : maillage d'anchor boxes sur feature map (taille, ratios, scales), calcul IoU, label assignment (seuils pos/neg), sampling (1:3 pos:neg), loss from scratch (localisation L1 sur (x, y, w, h) normalisé, classification cross-entropy bi-class), NMS (greedy, IoU threshold), mAP calculation (VOC07 11-point et VOC10 all-point) à la main. Sans
torchvision.models.detection, sans ultralytics.
- Notebook Detection-AnchorFree-from-scratch : CenterNet-like (heatmap + offset + size), keypoint loss (focal modifiée), gaussiennes autour des centres, decoding, NMS centroid-based. Démontre l'alternative anchor-free et ses avantages (pas de tuning d'anchors).
- Notebook Detection-FocalLoss-from-scratch : dérivation de la Focal Loss (γ, α), comparaison cross-entropy vs focal sur déséquilibre extrême (1000 neg : 1 pos), visualisation de l'effet sur les gradients. Démontre pourquoi la simple CE échoue dans ce régime.
Bloc B — geste SOTA / lib complémentaire (le pendant industriel)
- Notebook Detection-SOTA-torchvision :
torchvision.models.detection (Faster R-CNN, RetinaNet, FCOS) sur PASCAL VOC / COCO mini, comparatif précision mAP / vitesse inférence / taille modèle vs le modèle from scratch (Bloc A.1) sur le même dataset réduit. Justification : torchvision est l'implémentation SOTA de référence PyTorch, utilisée en production.
- Notebook Detection-SOTA-ultralytics :
ultralytics (YOLOv8/YOLO11) sur le même dataset réduit, comparaison mAP/vitesse/FLOPs. Justification : YOLO est le standard industriel pour l'inférence temps réel.
- Comparaison explicite Bloc A vs Bloc B : tableau récapitulatif — mAP, latence (FPS), taille mémoire, lignes de code, capacité multi-scale. Justifie le pourquoi du from scratch (compréhension de NMS/anchors/loss) et le quand du SOTA (production, COCO complet).
Branchement pédagogique
À rattacher à ML/DataScienceWithAgents/04-Vision/ : créer 4.4-Object-Detection-from-scratch/ (3 notebooks A) + 4.5-Object-Detection-SOTA/ (2 notebooks B). Le 4.2b (contours Canny) reste distinct (segmentation, pas détection).
Cohérence maison
- Notebooks en français, exécutables de bout en bout avec outputs, ≥3 exercices par notebook
- Dataset réduit : PASCAL VOC 2007 subset (5-10 classes, 500-1000 images) ou synthetic shapes (rectangles/cercles générés) pour rester CPU-compatible
- Stack Bloc A : PyTorch + numpy, pas de
torchvision.models.detection (seulement torchvision.ops.nms pour validation référence), pas d'ultralytics
- Stack Bloc B :
torchvision.models.detection + ultralytics
Scope disjoint
- Pas de segmentation sémantique (Mask R-CNN, U-Net) — autre issue, hors scope
- Pas de détection 3D / point cloud — hors scope ML/Vision 2D
- Pas de tracking (SORT, DeepSORT) — au-delà de la détection
- Pas d'élargissement silencieux du 4.2b (détection de contours ≠ détection d'objets)
Notes
- Le pattern "from scratch → SOTA" est exactement celui du 3.1 (Retropropagation from scratch) → 3.2 (Optimisateurs PyTorch), et du 4.2 (Conv from scratch) → 4.2b (Conv skimage comparatif). On continue la tradition.
- Si une ramification .NET s'avère pertinente (ML.NET n'a pas de détection mature), Python seul avec justification.
🤖 Generated with Claude Code
Contexte pédagogique
Notre série Vision (
ML/DataScienceWithAgents/04-Vision/) couvre :Ce qui manque : la détection d'objets (localisation + classification), pas la classification seule. C'est un pilier historique et industriel :
Aucune de ces familles n'est couverte. Le 4.2b fait de la détection de contours (Canny), pas de la détection d'objets.
Acceptance
Bloc A — from scratch (le geste fondateur)
torchvision.models.detection, sansultralytics.Bloc B — geste SOTA / lib complémentaire (le pendant industriel)
torchvision.models.detection(Faster R-CNN, RetinaNet, FCOS) sur PASCAL VOC / COCO mini, comparatif précision mAP / vitesse inférence / taille modèle vs le modèle from scratch (Bloc A.1) sur le même dataset réduit. Justification :torchvisionest l'implémentation SOTA de référence PyTorch, utilisée en production.ultralytics(YOLOv8/YOLO11) sur le même dataset réduit, comparaison mAP/vitesse/FLOPs. Justification : YOLO est le standard industriel pour l'inférence temps réel.Branchement pédagogique
À rattacher à
ML/DataScienceWithAgents/04-Vision/: créer4.4-Object-Detection-from-scratch/(3 notebooks A) +4.5-Object-Detection-SOTA/(2 notebooks B). Le 4.2b (contours Canny) reste distinct (segmentation, pas détection).Cohérence maison
torchvision.models.detection(seulementtorchvision.ops.nmspour validation référence), pas d'ultralyticstorchvision.models.detection+ultralyticsScope disjoint
Notes
🤖 Generated with Claude Code