Image preprocessing pour un CNN

Le problème exposé dans ce sujet a été résolu.

Bonjour à tous !

J’essaye de faire de la reconnaissance d’images sur un dataset personnel. Je l’ai donc converti en un tableau numpy de taille (n_images, height, width) et je compte utiliser Keras par la suite.

Je souhaiterai réaliser un preprocessing sur mes images. J’ai deux options que j’aimerais tester :

  1. Centrer chaque image autour de zéro et leur mettre un écart-type de 1 ;
  2. Utiliser PCA

Dans le cours CS231n de Stanford, il est écrit :

Common pitfall. An important point to make about the preprocessing is that any preprocessing statistics (e.g. the data mean) must only be computed on the training data, and then applied to the validation / test data. E.g. computing the mean and subtracting it from every image across the entire dataset and then splitting the data into train/val/test splits would be a mistake. Instead, the mean must be computed only over the training data and then subtracted equally from all splits (train/val/test).

Je comprends bien l’utilité de cet avertissement, mais je ne vois pas comment il peut s’appliquer aux techniques de preprocessing décrites plus haut dans le cours. En particulier, si on retire de chaque images la moyenne de ses pixels, le réaliser sur l’entièreté du dataset ou sur le dataset d’entraînement puis sur le dataset de validation n’a aucune différence. Je comprends en revanche cette distinction dans le cas où l’on retire de chaque image la moyenne de tout le dataset d’entraînement.

La même question s’applique au PCA d’ailleurs, comment séparer les deux ?

Merci d’avance !

Ce que dit cet avertissement, c’est qu’il ne faut pas regarder le test set avant d’en avoir terminé avec le train set.

Dans l’exemple qui est prit, si on enlève la moyenne et l’écart-type à l’ensemble des données, comme la moyenne dépend en particulier du test set, on le "regarde" et donc on utilise des informations sur le test set avant de faire l’entraînement, ce qui biaise le résultat.

Ça s’applique aussi bien à la PCA : il faut faire séparément une PCA sur l’ensemble de test et d’entraînement.

Si l’on récupère une dimension qui est pertinente dans le test set et pas dans le train set en faisant une PCA sur les 2 à la fois, on triche.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte