Projet IAM

SimCLR + SGAN

Laurent Fainsin, Damien Guillotin, Pierre-Eliot Jourdan

Sujet

Images d'animaux \rightarrow 18 classes différentes

Sujet

Dataset

  • Données labellisées \rightarrow 20 images/classe \rightarrow 360 images
  • Données non labellisées \rightarrow 2000 images
  • Données de test \rightarrow 100 images/classe \rightarrow 1800 images

Model

  • Input \rightarrow 128x128px
  • Network \rightarrow MobileNetV1

Méthode contrastive
(SimCLR)

Augmentations

Méthode contrastive
(SimCLR)

Contrastive loss

li,j=logexp(sim(zi,zj)/τ)k=1i2Nexp(sim(zi,zj)/τ)l_{i,j} = -\log \frac{ \exp( \text{sim}(z_i, z_j) / \tau ) }{\sum^{2N}_{k=1\neq i} \exp( \text{sim}(z_i, z_j) / \tau) }

Résultats fully-supervised

Résultats semi-supervised

Résultats supervised fine-tuning

Comparaison des résultats

Méthode générative (SGAN)

Architecture du SGAN

Résultats générateur

5 epochs 100 epochs

!pretrain

pretrain

Résultats fully-supervised

Résultats semi-supervised

Résultats pre-training

Comparaison des résultats

Les consignes à respecter

augmentations: cf slide suivante CNN (le même dans les deux colonnes): mobilenetv1 representation: espace latent de taille `width` = 128 MLP: multi layer perceptron (projection head) -> taille sortie = `width` = 128 linear probe (non représenté) -> input: representation latente -> couche dense -> taille sortie = len(labels) = 18 pendant le training: on encode nos images dans l'espace latent (`representation`). Ensuite y'a deux trucs: 1. on projete notre espace latent via un MLP et on calcule la contrastive loss (qui va se charger de attract/repel). 2. on calcul un label via le linear probe sur l'espace latent (`representation`), et on calcul une loss via SparseCategoricalCrossentropy. Une fois qu'on a nos deux loss (et nos gradients lors du forward) on rétropropage tout (on update nos paramètres quoi), et on passe au batch suivant. À noter que lors de l'inférence on se sert pas du MLP, donc on peut le jeter.

Pleins d'augmentations possible, mais google trouve que les seules nécéssaires pour avoir au moins des bonnes perfs sont le cropping (spécial, cf figure droite) et le jittering

intuition derrière: en supervisé c'est super simple de trouver les frontière pour la classif, juste on calcule la loss, et avec le gradient ça fait bouger. Ici on a pas ce luxe, du coup on par du principe qu'une image, même augmenté est à peut près au même endroit dans la répartition de l'espace, d'où le fait qu'on va essayer de faire en sorte que ça soit le cas via le contrastive loss (next slide). Nous en plus on va venir parsement d'images supervisée pour "régulariser" un peu le tout

sim -> cosine distance + en gros un softmax + le tout dans un log tau -> température (hyper paramètre)

Générateur : 3,425,155 paramètres

Discriminateur : 710,930 paramètres (708,737)