Deep learning

An introduction to deep learning

Jeremy Fix

November 13, 2024

Slides made with slidemaker

Détection d’objets

Énoncé du problème

Étant donnés :

  • des images \(x_i\),
  • des cibles \(y_i\) qui contiennent les boîtes englobantes et les étiquettes des objets

Exemples d’ImageNet (voir ici)

ILSVRC2014_train_00005559 : quelques objets annotés.
ILSVRC2014_train_00029372 : 12 objets avec occlusions

Boîtes englobantes données, dans les ensembles de données (la paramétrisation du prédicteur peut différer), par : \([x, y, w, h]\), \([x_{min},y_{min},x_{max},y_{max}]\), …

Ensembles de données : Coco, ImageNet, Open Images Dataset

Revue récente : (Zou, Chen, Shi, Guo, & Ye, 2023) , (Terven, Córdova-Esparza, & Romero-González, 2023)

Les dimensions à explorer

Cette tâche étant définie, les questions à aborder sont :

  • quelles sont les métriques spécifiques utilisées pour mesurer les performances ? Précision de classification, qualité de régression des boîtes englobantes, vitesse
  • quelles sont les fonctions de perte pertinentes ? L2 ? Huber ? CE ? Focale ? Dice ?
  • quelles techniques d’augmentation de données peuvent être appliquées ? Retournement, mosaïque, masque de suppression
  • quelles sont les architectures de modèles adaptées à cette tâche ? Détecteurs à 1 étape et 2 étapes entraînables de bout en bout
  • comment résoudre la tâche en pratique avec pytorch ?

Détection d’objets : Métriques

Métriques pour mesurer les performances

Les métriques devraient idéalement capturer :

  • la qualité des boîtes englobantes
  • la qualité de l’étiquette trouvée dans la boîte englobante

Étant donné les boîtes englobantes “vraies” :

Pascal VOC 2012_000180.jpg

Quantifier la qualité de ces prédictions

Prédictions Yolo v4 tiny utilisant darknet

Un prédicteur devrait produire des boîtes englobantes étiquetées avec un score de confiance. Ils en produisent beaucoup.

Votre métrique devrait évaluer la fraction de boîtes englobantes que vous détectez correctement (TP) et la fraction de boîtes englobantes que vous détectez incorrectement (FP) ou manquez incorrectement (FN).

La métrique mAP Pascal/COCO

Pour chaque classe individuellement, chaque prédiction (qui a une confiance suffisamment élevée assignée par votre prédicteur) de chaque image est considérée comme :

  • un vrai positif (TP) si l’IoU avec la boîte englobante de vérité terrain de la même classe est supérieure à un seuil (disons \(IOU > 0.3\))
  • un faux positif (FP) sinon ou s’il y a un TP pour le même objet de vérité terrain avec une confiance plus élevée (“5 détections (TP) d’un seul objet sont comptées comme 1 détection correcte et 4 fausses détections”)
Exemple de 24 prédictions (rouge) avec 15 vérités terrain (vert) pour une classe arbitraire
Les 24 prédictions sont soit TP (bleu) soit FP (orange) avec IoU>0.3

Les boîtes de VT qui ne sont pas prédites sont des Faux Négatifs (FN).

Exemples du dépôt de métriques de détection d’objets.

La métrique mAP Pascal/COCO

\[ \mbox{précision} = \frac{TP}{TP+FP} \] Quelle fraction de vos détections sont réellement correctes.

\[ \mbox{rappel} = \frac{TP}{TP+FN} = \frac{TP}{\#\mbox{boîtes englobantes vt}} \] Quelle fraction d’objets étiquetés détectez-vous (ne peut qu’augmenter avec la diminution de la confiance)

Si vous abaissez votre seuil de confiance, votre précision peut soit augmenter soit diminuer, votre rappel peut soit stagner soit augmenter.

Précision/rappel pour les prédictions ordonnées
Courbe précision-rappel

AP est la précision moyenne pour différents niveaux de rappel. mAP est la moyenne de AP pour toutes les classes/catégories. Dépend d’un IOU spécifique pour définir TP/FP. Pascal utilise mAP@0.5 tandis que COCO fait la moyenne de map@0.5-0.95.

Exemples du dépôt de métriques de détection d’objets.

Détection d’objets : Pertes, augmentations de données, post-traitement

Perte

Propositions précoces (2016) :

  • Multi-objectifs avec Entropie Croisée Multi-étiquettes pour la classification et L2 pour les coordonnées des boîtes englobantes. Par exemple, Yolo v1,2,3 :

\[\begin{align*} \mathcal{L} &= \lambda_{coord} \sum_{i=0}^{S^2}\sum_{j=0}^{B} \mathbb{1}_{ij}^{obj} [(t_x-t_x^*)^2+(t_y-t_y^*)^2+(t_w-t_w^*)^2+(t_h-t_h^*)^2] \\ & -\sum_{i=0}^{S^2} \sum_{j=0}^{B} BCE(\mathbb{1}_{ij}^{obj}, \mbox{has_obj}_{ij}) \\ & -\sum_{i=0}^{S^2} \sum_{j=0}^{B} \sum_{k=0}^{K} BCE(\mbox{has_class}_{ijk}, p_{ijk}) \end{align*}\]

Les prédicteurs denses (par exemple Yolo) prédisent beaucoup de boîtes englobantes, beaucoup de négatifs qui submergent les positifs

  • Perte focale (Lin, Goyal, Girshick, He, & Dollár, 2020)

\[\begin{align*} p\in[0,1], y \in \{0, 1\}, BCE(p, y) &= -y \log(p) -(1-y) \log(1-p)\\ FL(p, y) &= -y (1-p)^\gamma \log(p) - (1-y)p^\gamma \log(1-p) \end{align*}\]

De plus, la métrique des boîtes englobantes est généralement l’IOU mais la perte était L2.

  • Les pertes basées sur l’Intersection Over Union (IOU) ont commencé avec l’IOU Généralisé (Rezatofighi et al., 2019), l’IOU Distance (Zheng et al., 2020), (Zheng et al., 2021). L’IOU Généralisé est une perte IOU différentiable qui gère également le cas où les boîtes englobantes prédites et de vérité terrain ne se chevauchent pas.

Augmentations de données

L’augmentation de données aide à régulariser votre réseau : ce sont des transformations que vous appliquez sur les entrées pour lesquelles vous pouvez calculer l’effet sur la cible.

Des bibliothèques telles que albumentations/torchvision aident grandement à l’appliquer (voir aussi cette liste dans albumentations).

Avec albumentations :


import albumentations as A
import albumentations.pytorch

transform = A.Compose([
    A.HorizontalFlip(p=0.5),
    A.RandomRotate90(p=0.5),
    A.MaskDropout((1, 1), image_fill_value=255, p=1),
    A.Blur(),
    A.RandomBrightnessContrast(p=0.2),
    A.RandomBrightnessContrast(p=0.2),
    A.pytorch.ToTensorV2()
], bbox_params=A.BBoxParams(format='coco'))


transformed = transform(images=images, bboxes=bboxes)

Avec torchvision.transforms.v2 :


from torchvision.transforms import v2

transforms = v2.Compose(
    [
        v2.ToImage(),
        v2.RandomPhotometricDistort(p=1),
        v2.RandomZoomOut(fill={tv_tensors.Image: (123, 117, 104), "others": 0}),
        v2.RandomIoUCrop(),
        v2.RandomHorizontalFlip(p=1),
        v2.SanitizeBoundingBoxes(),
        v2.ToDtype(torch.float32, scale=True),
    ]
)

target = {
    "boxes": boxes,
    "labels": torch.arange(boxes.shape[0]),
    "this_is_ignored": ("arbitrary", {"structure": "!"})
}
out_img, out_target = transforms(images, targets)

Mosaic Augmentation, MixUp, ….

Post-traitement : Non Maximum Suppression

Votre prédicteur produira beaucoup de boîtes englobantes. Plusieurs pourraient se chevaucher.

La suppression des non-maximums (NMS) supprime les boîtes avec des scores plus bas qui se chevauchent (IOU) avec d’autres boîtes ayant des scores plus élevés.

Suppression des non-maximums (de (Terven et al., 2023))

Détection d’objets : Modèles

Une première étape : localisation d’objet

Supposons que vous ayez un seul objet à détecter, pouvez-vous le localiser dans l’image ?

Le domaine évolue à un rythme très rapide

Comme examiné dans [Zhou et al, 2023] :

Jalons dans la détection d’objets

Détection d’objets : Détecteurs en deux étapes

Réseau de Neurones Convolutifs Basé sur les Régions : R-CNN

Comment pouvons-nous procéder avec plusieurs objets ? (Ross Girshick, Donahue, Darrell, & Malik, 2014) a proposé de :

  • utiliser une recherche sélective pour proposer des boîtes englobantes
  • classifier avec un SVM à partir des caractéristiques extraites par un DNN pré-entraîné.
  • optimiser la localisation avec des adaptateurs linéaires de boîtes englobantes

Révolution dans la communauté de détection d’objets (vs caractéristiques “traditionnelles” de type HOG).

Inconvénient :

  • algorithme externe (pas dans le graphe de calcul, non entraînable)
  • une passe avant par proposition de boîte englobante (\(\sim 2K\) ou plus) \(\rightarrow\) l’entraînement et le test sont lents (\(47 s.\) par image avec VGG16)

Notes : pré-entraîné sur ImageNet, affiné sur les classes considérées avec des images déformées. Extraction de négatifs difficiles (boosting).

Fast R-CNN

Introduit dans (R. Girshick, 2015). Idée :

  • juste une passe avant
  • recadrage des cartes de caractéristiques convolutionnelles (par exemple, \((1, 512, H/16, W/16)\) conv5 de VGG16)
  • max-pooling du recadrage de taille variable en un vecteur de taille fixe (par exemple \(7 \times 7\)) avant les couches denses : ROI pooling

Inconvénients :

  • algorithme externe pour les propositions de ROI : non entraînable et lent
  • les ROI sont alignées sur la grille (voir ici) \(\rightarrow\) ROI align

Dépôt Github. Diapositives CVPR’15

Notes : VGG16 pré-entraîné sur ImageNet. Entraînement rapide avec plusieurs ROI par image pour construire le mini-lot de \(128\) à partir de \(N=2\) images, en utilisant \(64\) propositions : \(25\%\) avec IoU>0.5 et \(75\%\) avec \(IoU \in [0.1, 0.5[\). Augmentation des données : flip horizontal. Taux d’apprentissage par couche, SGD avec momentum, etc.

Perte multi-tâches : \[ L(p, u, t, v) = -\log(p_u) + \lambda \mbox{smooth L1}(t, v) \]

La boîte englobante est paramétrée comme dans (Ross Girshick et al., 2014). L’échelle unique est plus efficace que l’échelle multiple.

Faster R-CNN : 2 étapes entraînées de bout en bout

Introduit dans (Ren, He, Girshick, & Sun, 2016). Le premier réseau entraînable de bout en bout. Introduction du Réseau de Proposition de Régions (RPN). Un RPN est un réseau Conv(\(3\times3\)) - Conv(\(1\times1\), k + 4k) glissant (voir ici). Il introduit également des boîtes d’ancrage de ratios d’aspect prédéfinis appris par quantification vectorielle.

Architecture
Réseau de proposition de régions avec ancres à 3 échelles, 3 ratios d’aspect

Vérifiez le papier pour beaucoup de résultats quantitatifs. Les petits objets peuvent ne pas avoir beaucoup de caractéristiques.

Dépôt Github

Paramétrage de la boîte englobante identique à (Ross Girshick et al., 2014), avec perte L1 lisse. Perte multi-tâches pour le RPN. Momentum (0.9), décroissance des poids (0.0005), taux d’apprentissage (0.001) pour 60k mini-lots, 0.0001 pour 20k.

Entraînement en plusieurs étapes. Le gradient n’est pas trivial en raison de l’alignement des coordonnées des boîtes (voir ROI align pour une version plus continue)

Avec VGG-16, la couche conv5 est \(H/16,W/16\). Pour une image \(1000 \times 600\), il y a \(60 \times 40 = 2400\) centres de boîtes d’ancrage.

En pratique

En pratique, torchvision fournit des modèles pré-entraînés pour la détection d’objets, par exemple des modèles Faster RCNN.

En pratique


from torchvision.models.detection import fasterrcnn_resnet50_fpn

model = fasterrcnn_resnet50_fpn(num_classes=...)

# Entraînement
model.train()
model(images, targets)

# Inférence
model.eval()
predictions = model(images)

Pendant l’entraînement :


targets = [
    {
        'boxes': FloatTensor[N1, 4],
        'labels': IntTensor[N1]},
    },
    {
        'boxes': FloatTensor[N2, 4],
        'labels': IntTensor[N2]},
    },
    ... 
]

Pendant l’inférence :


predictions = [
    {
        'boxes': FloatTensor[N1, 4]
        'labels': IntTensor[N1],
        'scores' : FloatTensor[N1]
    },
    {
        'boxes': FloatTensor[N2, 4]
        'labels': IntTensor[N2],
        'scores' : FloatTensor[N2]
    },
    ....
]

Réseaux de pyramides de caractéristiques et augmentation du chemin ascendant

Caractéristiques multi-échelles avec sémantique et localisation

  • Dans les classificateurs profonds, les couches supérieures sont sémantiquement riches mais spatialement pauvres,
  • Les réseaux de pyramides de caractéristiques (FPN) (Lin et al., 2017) ont introduit un chemin descendant pour propager la sémantique jusqu’aux premières couches,

  • L’agrégation du chemin ascendant ajoute des raccourcis pour propager des frontières d’objets précises aux couches supérieures (Liu, Qi, Qin, Shi, & Jia, 2018)

Sémantique descendante, localisation ascendante
Pooling de caractéristiques adaptatif

(Liu et al., 2018) a également introduit le Pooling de Caractéristiques Adaptatif plutôt qu’une attribution arbitraire des propositions à un niveau de la pyramide comme dans (Lin et al., 2017).

Détection d’objets : Détecteurs en une étape

You Only Look Once (Yolo v1,v2,v3)

Le premier détecteur en une étape. Introduit dans (Redmon, Divvala, Girshick, & Farhadi, 2016). Il produit :

  • \(B\) boîtes englobantes \((x, y, w, h, conf)\) pour chaque cellule d’une grille \(S\times S\)
  • les probabilités sur les \(K\) classes
  • le volume de sortie est \((5\times B+K)\times(S\times S)\) dans YoloV1, puis \((5+K)\times B \times (S\times S)\) à partir de v2
YoLo v0 avec une boîte englobante par cellule B=1

Encodage de la boîte englobante :

De Yolo v2

Dans YoLo v3, le réseau est de type Réseau de Pyramide de Caractéristiques (FPN) avec un chemin de sous-échantillonnage et de sur-échantillonnage, avec des prédictions à 3 étapes.

You Only Look Once (Yolo v1,v2,v3)

La perte est multi-tâches avec :

  • un terme pour la régression de la transformation des boîtes d’ancrage
  • un terme pour détecter la présence d’un objet
  • un terme pour l’étiquetage (potentiellement multiple) des boîtes

\[\begin{align*} \mathcal{L} &= \lambda_{coord} \sum_{i=0}^{S^2}\sum_{j=0}^{B} \mathbb{1}_{ij}^{obj} [(t_x-t_x^*)^2+(t_y-t_y^*)^2+(t_w-t_w^*)^2+(t_h-t_h^*)^2] \\ & -\sum_{i=0}^{S^2} \sum_{j=0}^{B} BCE(\mathbb{1}_{ij}^{obj}, \mbox{has_obj}_{ij}) \\ & -\sum_{i=0}^{S^2} \sum_{j=0}^{B} \sum_{k=0}^{K} BCE(\mbox{has_class}_{ijk}, p_{ijk}) \end{align*}\]

Code Darknet

Dans v1 et v2, les pertes de prédiction étaient des pertes L2.

L’étiquetage multiple peut se produire dans coco (par exemple, femmes, personne), d’où le BCE pour les classes

Famille Yolo

À partir de Yolov4, plusieurs auteurs publient des versions de Yolo…, voir (Terven et al., 2023)

  • Yolov1 (2016), v2, v3 (2018) par J. Redmon et al. : principe + ancres + multi-échelle (FPN)
J. Redmon soulevant des questions éthiques sur l’utilisation de ces algorithmes de ML (Redmon2018?)
  • Yolov4 (2020), YoloR (2021), Yolov7 (2022) : CSPResNet (DenseNet économique), sac de freebies (Mosaïque, CutMix, Recuit Cosinus), sac de spécials

  • YoloX (2021) par Megvii basé sur Yolo v3 : Sans ancre, têtes découplées

  • Yolov5 (2020), Yolov8 (2023), Yolov11(2024) par Ultralytics

Yolov5 (2020)

  • Publié en 2020 par Ultralytics
  • Couche CSP (DarknetNet économique de Yolov3 (ResNet économique))
  • Têtes couplées, basé sur les ancres
  • FPN descendant
  • PAN ascendant

Voir aussi cette page

Architecture Yolov5, par mmyolo

Yolov8 (2023)

  • Publié début 2023 par Ultralytics
  • différentes versions à l’échelle disponibles (nano … extra-large)
  • Couche CSP mise à jour : module C2f
  • Têtes découplées, Sans ancre
Architecture Yolov8, par mmyolo

En pratique

  • Vous pourriez (éventuellement) implémenter vous-même Yolo 😖 ,

Exemple avec ultralytics Yolov11, sorti en 09/2024, soit en CLI soit en python/Pytorch :


from ultralytics import YOLO

# Charger un modèle
model = YOLO("yolo11n.pt")

# Entraîner le modèle
train_results = model.train(
    data="coco8.yaml",  # chemin vers le YAML du dataset
    epochs=100,  # nombre d'époques d'entraînement
    imgsz=640,  # taille de l'image d'entraînement
    device="cpu",  # appareil sur lequel exécuter, c'est-à-dire device=0 ou device=0,1,2,3 ou device=cpu
)

# Évaluer les performances du modèle sur l'ensemble de validation
metrics = model.val()

# Effectuer une détection d'objets sur une image
results = model("chemin/vers/image.jpg")
results[0].show()

# Exporter le modèle au format ONNX
path = model.export(format="onnx")  # renvoie le chemin vers le modèle exporté

avec coco.yaml (format coco \(x_{min}, y_{min}, largeur, hauteur\))

Les boîtes englobantes n’ont pas besoin d’être alignées sur les axes et peuvent être des boîtes englobantes orientées (OBB).

Ce modèle prend maintenant en charge également la segmentation, le suivi d’objets, l’estimation de pose.

En pratique avec Ultralytics et SAHI

Tâche : détecter des bactéries, dans un flux, adhérant aux parois (en collaboration avec L. Klopffer, N. Louvet, S. Becker)

Vérité terrain
Lot d’entraînement avec aug.
Prédiction

Utilisation d’ultralytics et de leurs callbacks wandb 😍 ; SAHI (pour l’inférence en tuiles). 😍

Code sur https://github.com/S1m0nB3ck3r/bacteria_tracker_yoloV8. Publication en cours d’examen.

En pratique avec Ultralytics et SAHI (suite)

Tâche : détecter des bactéries, dans un flux, adhérant aux parois (en collaboration avec L. Klopffer, N. Louvet, S. Becker)

Métriques pendant l’entraînement

Utilisation d’ultralytics et de leurs callbacks wandb 😍 ; SAHI (pour l’inférence en tuiles). 😍

Code sur https://github.com/S1m0nB3ck3r/bacteria_tracker_yoloV8. Publication en cours d’examen.

Segmentation sémantique, d’instance et panoptique

Énoncé du problème

Étant donné une image,

Segmentation sémantique : prédire la classe de chaque pixel individuel. On parle aussi de prédiction dense/étiquetage dense.

Image d’exemple de MS Coco

Image étiquetée avec des classes de matière

Segmentation d’instance : classifier tous les pixels appartenant aux mêmes objets dénombrables

Image d’exemple de MS Coco

Image étiquetée avec des classes d’objets

Plus récemment, la segmentation panoptique fait référence à la segmentation d’instance pour les objets dénombrables (par exemple, personnes, animaux, outils) et à la segmentation sémantique pour les régions amorphes (herbe, ciel, route).

Métriques : voir Évaluation panoptique Coco

Quelques exemples de réseaux : PSP-Net, U-Net, Dilated Net, ParseNet, DeepLab, Mask RCNN, …

Faire glisser un classificateur

Introduit dans (Ciresan, Giusti, Gambardella, & Schmidhuber, 2012).

Segmentation avec un classificateur de pixels à fenêtre glissante
Augmentation de données préservant la classe
  • La segmentation prédite est post-traitée avec un filtre médian
  • La probabilité de sortie est calibrée pour compenser les différentes probabilités a priori d’être une membrane / de ne pas être une membrane.

Inconvénients :

  • une passe avant par patch
  • les patches qui se chevauchent ne partagent pas les calculs

(sur la calibration des réseaux de neurones profonds, voir aussi (Guo, Pleiss, Sun, & Weinberger, 2017))

Segmentation sémantique

Réseau entièrement convolutif (FCN)

Introduit dans (Long, Shelhamer, & Darrell, 2015). Premier réseau convolutif de bout en bout pour l’étiquetage dense avec des réseaux pré-entraînés.

Architecture du réseau FCN avec un backbone sous-échantillonnant avec une taille de pool5 H/32,W/32 car le pas de pool5 est de 32. La prédiction de segmentation de chaque couche de pooling est calculée avec une Conv 1\times 1.
Segmentation affinée en incorporant les cartes de caractéristiques précoces

Le sur-échantillonnage peut être :

  • différenciable codé en dur : par exemple, plus proche voisin, bilinéaire, bicubique
  • appris comme une convolution à pas fractionnaire (déconvolution),

Sur-échantillonnage appris : convolution à pas fractionnaire

Les approches traditionnelles impliquent une interpolation bilinéaire, bicubique, etc…

Pour le sur-échantillonnage de manière apprenante, nous pouvons utiliser une convolution à pas fractionnaire. C’est l’un des ingrédients derrière la Super-Résolution (Shi, Caballero, Huszár, et al., 2016).

Sur-échantillonnage appris avec une convolution à pas fractionnaire

Vous pouvez initialiser les noyaux de sur-échantillonnage avec un noyau d’interpolation bilinéaire. Pour avoir d’autres équivalences, voir (Shi, Caballero, Theis, et al., 2016). Voir ConvTranspose2d.

Cela peut introduire des artefacts, vérifiez (Odena, Dumoulin, & Olah, 2016). Certains préfèrent un sur-échantillonnage bilinéaire, suivi de convolutions.

Architectures Encodeur/Décodeur

Plusieurs modèles suivant les mêmes architectures : SegNet (somme), U-Net (concaténation). Architecture Encodeur-Décodeur introduite dans (Ronneberger, Fischer, & Brox, 2015)

Il y a :

  • un chemin de contraction de l’image “vers le bas” vers des caractéristiques de haut niveau à une résolution spatiale grossière
  • un chemin d’expansion de sur-échantillonnage qui intègre des caractéristiques de bas niveau pour un étiquetage pixel par pixel
Architecture de convolution/déconvolution de contraction/expansion U-Net

DeepLab

Pour rassembler des informations contextuelles en élargissant les champs réceptifs, DeepLab emploie des convolutions “à trous” (dilatées) plutôt que du max pooling. DeepLabV1 (Chen, 2014), DeepLabV2 (Chen, Papandreou, Kokkinos, Murphy, & Yuille, 2017), DeepLabV3 (Chen, Papandreou, Schroff, & Adam, 2017), DeepLabV3+ (Chen, Zhu, Papandreou, Schroff, & Adam, 2018).

  • Le max-pooling dans les backbones de classification induit une invariance à la translation \(\rightarrow\) convolutions à trous
  • Comment gérer les objets à plusieurs échelles ? \(\rightarrow\) Pooling spatial à trous (ASPP)
  • Dans DeepLabV3+, combiné avec des couches de décodage de sur-échantillonnage
DeepLabV3+ combine ASPP avec un décodeur

En pratique

Avec torchvision


from torchvision.models.segmentation import deeplabv3_resnet50, DeepLabV3_ResNet50_Weights

model = deeplabv3_resnet50(
    DeepLabV3_ResNet50_Weights.DEFAULT,
    num_classes = 1
)

Avec segmentation models pytorch (smp)


import segmentation_models_pytorch as smp

cin = 1
num_classes = 1
model = smp.DeepLabV3Plus(
    in_channels = cin, 
    classes = num_classes,
    encoder_name = "resnet18",
    encoder_weights = "imagenet"
)

Torchvision (v2) et albumentations prennent tous deux en charge l’augmentation sur les masques. Voir albumentations pour un exemple.

En pratique

Tâche Segmenter les matières non vivantes vs les organismes vivants dans les images ZooScan.

  • Grandes images \(\approx 15000 \times 23000\) contenant des objets appartenant à \(89\) catégories. Non vivant (étiquette < 8) ou vivant.
  • Utilisant soit :
    • un UNet avec un backbone pré-entraîné + décodeur aléatoire (labo)
    • un DeepLabv3+ pré-entraîné sur ImageNet
  • Entraîné sur des patches chevauchants de \(512 \times 512\), perte focale, score F1 pour l’arrêt précoce
  • 76K pour l’entraînement, 19K pour la validation
  • Une époque en 10 minutes sur RTX 3090
  • Retournement, Rotation, MaskDropout, Flou
Métriques pendant l’entraînement

En pratique

Tâche Segmenter les matières non vivantes vs les organismes vivants dans les images ZooScan.

Inférence sur un nouvel échantillon avec une inférence en tuiles. Nous aurions pu utiliser une inférence moyennée avec des tuiles chevauchantes.

Masque produit avec un seuil@0.5 qui peut être sous-optimal.

Inférence sur un nouveau scan non vu avec une inférence glissée

Segmentation d’instance

Mask-RCNN

Introduit dans (He, Gkioxari, Dollár, & Girshick, 2018) comme une extension de Faster RCNN. Il produit un masque binaire en plus des étiquettes de classe + régressions de boîtes englobantes.

Il traite la segmentation d’instance en prédisant un masque pour des propositions d’objets individualisés.

Propose d’utiliser ROI-Align (avec interpolation bilinéaire) plutôt que ROI-Pool.

ROI Align empêche la quantification du ROI Pooling
Masque pour les 80 catégories d’objets de COCO

Il n’y a pas de compétition entre les classes dans les masques. Différents objets peuvent utiliser différents noyaux pour calculer leurs masques.

Peut être étendu à la détection de points-clés, produisant un masque de profondeur \(K\) pour prédire les \(K\) articulations.

Yolo

Ultralytics Yolo segment adopte la même stratégie de prédiction d’un masque pour chaque boîte englobante.


from ultralytics import YOLO

# Charger un modèle
model = YOLO("yolo11n-seg.pt")

# Entraîner le modèle
train_results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)

results = model("monimage.jpg")  # prédire sur une image

Démo en direct avec https://github.com/jeremyfix/deeplearning_demos et https://github.com/jeremyfix/onnx_models.

Les Transformers arrivent

Transformers

Introduits dans (Vaswani et al., 2017), du TAL à la Vision par ViT (Dosovitskiy et al., 2021).

Propositions récentes pour :

  • Détection d’objets : (Carion et al., 2020) a proposé un détecteur d’objets basé sur les transformers. Le décodeur produit un grand nombre prédéfini \(N\) de boîtes englobantes étiquetées.

En pratique, huggingface transformers implémente DETR. Regardez le papier, ce ne sont que quelques lignes de pytorch.

Architecture DETR

Références

Bibliographie

Carion, N., Massa, F., Synnaeve, G., Usunier, N., Kirillov, A., & Zagoruyko, S. (2020). End-to-end object detection with transformers. In Computer vision – ECCV 2020: 16th european conference, glasgow, UK, august 23–28, 2020, proceedings, part i (pp. 213–229). Berlin, Heidelberg: Springer-Verlag. https://doi.org/10.1007/978-3-030-58452-8_13
Chen, L.-C. (2014). Semantic image segmentation with deep convolutional nets and fully connected CRFs. arXiv Preprint arXiv:1412.7062.
Chen, L.-C., Papandreou, G., Kokkinos, I., Murphy, K., & Yuille, A. L. (2017). DeepLab: Semantic image segmentation with deep convolutional nets, atrous convolution, and fully connected CRFs. Retrieved from https://arxiv.org/abs/1606.00915
Chen, L.-C., Papandreou, G., Schroff, F., & Adam, H. (2017). Rethinking atrous convolution for semantic image segmentation. Retrieved from https://arxiv.org/abs/1706.05587
Chen, L.-C., Zhu, Y., Papandreou, G., Schroff, F., & Adam, H. (2018). Encoder-decoder with atrous separable convolution for semantic image segmentation. Retrieved from https://arxiv.org/abs/1802.02611
Ciresan, D., Giusti, A., Gambardella, L. M., & Schmidhuber, J. (2012). Deep Neural Networks Segment Neuronal Membranes in Electron Microscopy Images, 9.
Dosovitskiy, A., Beyer, L., Kolesnikov, A., Weissenborn, D., Zhai, X., Unterthiner, T., … Houlsby, N. (2021). An image is worth 16x16 words: Transformers for image recognition at scale. ICLR.
Girshick, R. (2015). Fast R-CNN. In 2015 IEEE International Conference on Computer Vision (ICCV) (pp. 1440–1448). https://doi.org/10.1109/ICCV.2015.169
Girshick, Ross, Donahue, J., Darrell, T., & Malik, J. (2014). Rich feature hierarchies for accurate object detection and semantic segmentation. arXiv:1311.2524 [Cs]. Retrieved from http://arxiv.org/abs/1311.2524
Guo, C., Pleiss, G., Sun, Y., & Weinberger, K. Q. (2017). On Calibration of Modern Neural Networks. arXiv:1706.04599 [Cs]. Retrieved from http://arxiv.org/abs/1706.04599
He, K., Gkioxari, G., Dollár, P., & Girshick, R. (2018). Mask R-CNN. arXiv:1703.06870 [Cs]. Retrieved from http://arxiv.org/abs/1703.06870
Lin, T.-Y., Dollár, P., Girshick, R., He, K., Hariharan, B., & Belongie, S. (2017). Feature pyramid networks for object detection. In 2017 IEEE conference on computer vision and pattern recognition (CVPR) (pp. 936–944). https://doi.org/10.1109/CVPR.2017.106
Lin, T.-Y., Goyal, P., Girshick, R., He, K., & Dollár, P. (2020). Focal loss for dense object detection. IEEE Transactions on Pattern Analysis and Machine Intelligence, 42(2), 318–327. https://doi.org/10.1109/TPAMI.2018.2858826
Liu, S., Qi, L., Qin, H., Shi, J., & Jia, J. (2018). Path aggregation network for instance segmentation. In 2018 IEEE/CVF conference on computer vision and pattern recognition (pp. 8759–8768). https://doi.org/10.1109/CVPR.2018.00913
Long, J., Shelhamer, E., & Darrell, T. (2015). Fully Convolutional Networks for Semantic Segmentation. arXiv:1411.4038 [Cs]. Retrieved from http://arxiv.org/abs/1411.4038
Odena, A., Dumoulin, V., & Olah, C. (2016). Deconvolution and Checkerboard Artifacts. Distill, 1(10), e3. https://doi.org/10.23915/distill.00003
Redmon, J., Divvala, S., Girshick, R., & Farhadi, A. (2016). You Only Look Once: Unified, Real-Time Object Detection. arXiv:1506.02640 [Cs]. Retrieved from http://arxiv.org/abs/1506.02640
Ren, S., He, K., Girshick, R., & Sun, J. (2016). Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks. arXiv:1506.01497 [Cs]. Retrieved from http://arxiv.org/abs/1506.01497
Rezatofighi, H., Tsoi, N., Gwak, J., Sadeghian, A., Reid, I., & Savarese, S. (2019). Generalized intersection over union: A metric and a loss for bounding box regression. In 2019 IEEE/CVF conference on computer vision and pattern recognition (CVPR) (pp. 658–666). Los Alamitos, CA, USA: IEEE Computer Society. https://doi.org/10.1109/CVPR.2019.00075
Ronneberger, O., Fischer, P., & Brox, T. (2015). U-Net: Convolutional Networks for Biomedical Image Segmentation. arXiv:1505.04597 [Cs]. Retrieved from http://arxiv.org/abs/1505.04597
Shi, W., Caballero, J., Huszár, F., Totz, J., Aitken, A. P., Bishop, R., … Wang, Z. (2016). Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network. arXiv:1609.05158 [Cs, Stat]. Retrieved from http://arxiv.org/abs/1609.05158
Shi, W., Caballero, J., Theis, L., Huszar, F., Aitken, A., Tejani, A., … Wang, Z. (2016). Is the deconvolution layer the same as a convolutional layer?, 7.
Terven, J., Córdova-Esparza, D.-M., & Romero-González, J.-A. (2023). A comprehensive review of YOLO architectures in computer vision: From YOLOv1 to YOLOv8 and YOLO-NAS. Machine Learning and Knowledge Extraction, 5(4), 1680–1716. https://doi.org/10.3390/make5040083
Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., … Polosukhin, I. (2017). Attention is all you need. In I. Guyon, U. V. Luxburg, S. Bengio, H. Wallach, R. Fergus, S. Vishwanathan, & R. Garnett (Eds.), Advances in neural information processing systems (Vol. 30). Curran Associates, Inc. Retrieved from https://proceedings.neurips.cc/paper_files/paper/2017/file/3f5ee243547dee91fbd053c1c4a845aa-Paper.pdf
Zheng, Z., Wang, P., Liu, W., Li, J., Ye, R., & Ren, D. (2020). Distance-IoU loss: Faster and better learning for bounding box regression. In The AAAI conference on artificial intelligence (AAAI) (pp. 12993–13000).
Zheng, Z., Wang, P., Ren, D., Liu, W., Ye, R., Hu, Q., & Zuo, W. (2021). Enhancing geometric factors in model learning and inference for object detection and instance segmentation. IEEE Transactions on Cybernetics, 52(8), 8574–8586.
Zou, Z., Chen, K., Shi, Z., Guo, Y., & Ye, J. (2023). Object detection in 20 years: A survey. Proceedings of the IEEE, 111(3), 257–276. https://doi.org/10.1109/JPROC.2023.3238524