1

J'ai un problème de classification où la classe d'intérêt est seulement de 7% de l'ensemble de données, et la population entière est d'environ 1200 observations. Je comprends que ImageDataGenerator de Keras aide à augmenter les données pour augmenter le nombre d'observations avant d'entraîner le modèle, mais est-il possible d'augmenter une seule classe, comme ajouter du bruit, brouiller ou effectuer des transformations seulement sur la classe minoritaire ?Classes déséquilibrées dans les réseaux de neurones convolutionnels

Répondre

1

Vous pouvez soit essayer d'équilibrer avec l'argument class_weight dans la fonction d'ajustement() qui prend un cours de cartographie dictionnaire à une valeur de poids. Vous pouvez même utiliser sklearn pour calculer les poids de classe appropriés. Voir PSCS réponse ici: https://datascience.stackexchange.com/questions/13490/how-to-set-class-weights-for-imbalanced-classes-in-keras

Ou vous pouvez utiliser Keras ImageDateGenerator avec flow_from_directory() et enregistrer une image augmenter l'exécution dans un répertoire avec l'argument save_to_dir générant ainsi plus d'exemples de la classe sous-représentés: https://keras.io/preprocessing/image/#imagedatagenerator

Pour ce mannequin exécutez-vous seulement fournir des échantillons de la classe que vous voulez plus d'échantillons de. Ensuite, vous utilisez vos données équilibrées d'entraînement et de validation pour votre entraînement actuel.

0

Il existe une boîte à outils d'apprentissage automatique qui vous permet d'effectuer des augmentations sur les images, notamment les transformations, le zoom/strech, le bruit et le flou.

Le augmentateur d'image peuvent être trouvées ici: https://github.com/codebox/image_augmentor