🧠 AI / ML

ai-ml-computer-vision-guide

Guide computer vision (classification, détection, segmentation) avec PyTorch, TensorFlow, OpenCV — critères de choix de modèle, pipelines annotés, snippets copiables, optimisation pour le déploiement edge/cloud

⚡ Installation & lancement en 1 commande

Copiez-collez dans votre terminal : le skill s'installe dans ~/.claude/skills et Claude Code se lance directement dessus.

macOS / Linux
curl -fsSL https://raw.githubusercontent.com/khalilbenaz/claude-skills-collection/main/install.sh | sh -s -- ai-ml-computer-vision-guide --launch
Windows (PowerShell)
iex "& { $(iwr -useb https://raw.githubusercontent.com/khalilbenaz/claude-skills-collection/main/install.ps1) } ai-ml-computer-vision-guide -Launch"

🚀 Déjà installé ?

claude "/ai-ml-computer-vision-guide"

Ou tapez /ai-ml-computer-vision-guide dans une session Claude Code, ou décrivez simplement votre besoin — le skill se déclenche automatiquement via le skill-router.

📦 Installation manuelle

git clone https://github.com/khalilbenaz/claude-skills-collection.git cp -r claude-skills-collection/skills/ai-ml-computer-vision-guide ~/.claude/skills/

Payload du plugin : skills/ai-ml-computer-vision-guide · source éditable : ai-ml-skills/computer-vision-guide

📖 Manuel

Computer Vision Guide

Guide opérationnel pour concevoir, entraîner et déployer des solutions de vision par ordinateur : classification, détection d'objets, segmentation sémantique/d'instance.


1. Choisir la bonne tâche et le bon modèle

Critères de décision

BesoinTâcheModèles recommandés (2026)
« Qu'est-ce que c'est ? »ClassificationEfficientNetV2, ConvNeXt-v2, ViT-S/16
« Où est l'objet ? » (boîtes)DétectionYOLOv10/v11, RT-DETR, Co-DETR
« Pixel par pixel, quelle classe ? »Segmentation sémantiqueSegFormer-B4, OneFormer
« Chaque instance séparément ? »Segmentation d'instanceMask2Former, YOLOv8-seg
« N'importe quel objet à prompter »Segmentation zéro-shotSAM 2 (Meta)
Traitement bas-niveau (filtrage, calibration)Vision classiqueOpenCV (pas de DL)

Règle de décision rapide :


2. Préparer le dataset

Structure de dossiers (classification)

data/
  train/
    chien/ img001.jpg …
    chat/  img002.jpg …
  val/
  test/

Outils d'annotation recommandés

OutilDétectionSegmentationGratuit
CVAT (auto-annotate avec SAM)
Roboflowfreemium
LabelImg

Convertir vers YOLO format (depuis COCO)

pip install roboflow
# ou directement via la CLI Roboflow
roboflow convert -f yolov8 -i coco_annotations.json -o ./yolo_dataset

Vérifier la distribution des classes

from collections import Counter
import json

with open("annotations/instances_train.json") as f:
    coco = json.load(f)

cat_ids = {c["id"]: c["name"] for c in coco["categories"]}
counts = Counter(ann["category_id"] for ann in coco["annotations"])
for cid, n in counts.most_common():
    print(f"{cat_ids[cid]}: {n}")

Seuils pratiques :


3. Pipeline d'augmentation (Albumentations)

import albumentations as A
from albumentations.pytorch import ToTensorV2

train_transform = A.Compose([
    A.RandomResizedCrop(640, 640, scale=(0.5, 1.0)),
    A.HorizontalFlip(p=0.5),
    A.ColorJitter(brightness=0.3, contrast=0.3, saturation=0.2, hue=0.05, p=0.7),
    A.GaussNoise(var_limit=(10, 50), p=0.3),
    A.MotionBlur(blur_limit=7, p=0.2),
    A.Normalize(mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225)),
    ToTensorV2(),
], bbox_params=A.BboxParams(format="yolo", label_fields=["class_labels"]))

val_transform = A.Compose([
    A.Resize(640, 640),
    A.Normalize(mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225)),
    ToTensorV2(),
])

Augmentations avancées :


4. Entraîner avec YOLOv8/v10 (cas le plus courant)

pip install ultralytics
from ultralytics import YOLO

# Entraînement détection
model = YOLO("yolov8m.pt")  # n/s/m/l/x selon le compromis taille/perf
results = model.train(
    data="dataset.yaml",       # chemins train/val/test + noms de classes
    epochs=100,
    imgsz=640,
    batch=16,
    lr0=1e-3,
    lrf=0.01,
    optimizer="AdamW",
    amp=True,                  # mixed precision automatique
    patience=20,               # early stopping
    project="runs/detect",
    name="exp1",
)

# Évaluation
metrics = model.val()
print(f"mAP50: {metrics.box.map50:.3f}")
print(f"mAP50-95: {metrics.box.map:.3f}")

Fine-tuning PyTorch (classification)

import torch
import torchvision.models as models
import torch.nn as nn

model = models.efficientnet_v2_s(weights="IMAGENET1K_V1")
# Geler le backbone
for param in model.features.parameters():
    param.requires_grad = False
# Remplacer la tête
model.classifier[1] = nn.Linear(model.classifier[1].in_features, NUM_CLASSES)

optimizer = torch.optim.AdamW([
    {"params": model.features.parameters(), "lr": 1e-5},    # backbone dégelé au cycle 2
    {"params": model.classifier.parameters(), "lr": 1e-3},
], weight_decay=1e-4)

scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max=30)

5. Métriques et évaluation

TâcheMétrique principaleMétriques secondaires
ClassificationTop-1 AccuracyTop-5, F1 par classe
DétectionmAP@0.5:0.95mAP@0.5, precision, recall par classe
SegmentationmIoUDice, precision par classe
# Matrice de confusion (classification)
from sklearn.metrics import classification_report, ConfusionMatrixDisplay
import matplotlib.pyplot as plt

report = classification_report(y_true, y_pred, target_names=class_names)
print(report)

ConfusionMatrixDisplay.from_predictions(y_true, y_pred, display_labels=class_names)
plt.savefig("confusion_matrix.png", dpi=150)

6. Optimiser pour le déploiement

Exporter en ONNX

model.export(format="onnx", opset=17, simplify=True, dynamic=False, imgsz=640)

Inférence ONNX (sans GPU requis)

import onnxruntime as ort
import numpy as np

session = ort.InferenceSession("model.onnx", providers=["CUDAExecutionProvider", "CPUExecutionProvider"])
input_name = session.get_inputs()[0].name
outputs = session.run(None, {input_name: img_tensor.numpy()})

Quantification INT8 (TensorRT)

# Via trtexec
trtexec --onnx=model.onnx --int8 --saveEngine=model_int8.trt --minShapes=input:1x3x640x640 --maxShapes=input:8x3x640x640

Comparatif formats de déploiement

FormatLatenceTailleCompatibilité
PyTorch (FP32)baselinebaselineGPU/CPU Python
ONNX (FP32)−10 à −20 %=Multi-runtime, multi-OS
TensorRT INT8−50 à −80 %/4NVIDIA GPU uniquement
TFLite INT8−40 %/4Mobile Android/iOS
Core ML−30 %/2Apple silicon

7. Garde-fous, anti-patterns et pièges

Pièges classiques

Anti-patterns

Bonnes pratiques 2026