- Descriptif :
Cet ensemble de données contient des images de validation ILSVRC-2012 (ImageNet) annotées avec des étiquettes multi-classes de "Evaluating Machine Accuracy on ImageNet" , ICML, 2020. Les étiquettes multi-classes ont été examinées par un panel d'experts largement formés aux subtilités de l'amende- distinctions de classes granuleuses dans la hiérarchie des classes ImageNet (voir l'article pour plus de détails). Par rapport aux étiquettes d'origine, ces étiquettes multi-classes révisées par des experts permettent une évaluation sémantiquement plus cohérente de la précision.
La version 3.0.0 de cet ensemble de données contient plus d'étiquettes corrigées de "Quand la pâte devient-elle un bagel ? Analyse des erreurs restantes sur ImageNet ainsi que la répartition de 68 exemples ImageNet-Major (ImageNet-M) sous 'imagenet-m'.
Seules 20 000 des 50 000 images de validation ImageNet ont des annotations multi-étiquettes. L'ensemble de multi-étiquettes a d'abord été généré par un banc d'essai de 67 modèles ImageNet entraînés, puis chaque prédiction de modèle individuel a été manuellement annotée par les experts comme étant correct
(l'étiquette est correcte pour l'image), wrong
(l'étiquette est incorrecte pour l'image), ou unclear
(aucun consensus n'a été atteint parmi les experts).
De plus, lors de l'annotation, le panel d'experts a identifié un ensemble d' images problématiques . Une image posait problème si elle répondait à l'un des critères ci-dessous :
- L'étiquette ImageNet d'origine (étiquette top-1) était incorrecte ou peu claire
- L'image était un dessin, une peinture, un croquis, un dessin animé ou un rendu informatique
- L'image a été excessivement modifiée
- L'image avait un contenu inapproprié
Les images problématiques sont incluses dans cet ensemble de données mais doivent être ignorées lors du calcul de la précision multi-étiquettes. De plus, étant donné que l'ensemble initial de 20 000 annotations est équilibré par classe, mais que l'ensemble d'images problématiques ne l'est pas, nous vous recommandons de calculer les précisions par classe, puis de les moyenner. Nous recommandons également de compter une prédiction comme correcte si elle est marquée comme correcte ou peu claire (c'est-à-dire, être indulgent avec les étiquettes peu claires).
Une façon possible de le faire est d'utiliser le code NumPy suivant :
import tensorflow_datasets as tfds
ds = tfds.load('imagenet2012_multilabel', split='validation')
# We assume that predictions is a dictionary from file_name to a class index between 0 and 999
num_correct_per_class = {}
num_images_per_class = {}
for example in ds:
# We ignore all problematic images
if example[‘is_problematic’].numpy():
continue
# The label of the image in ImageNet
cur_class = example['original_label'].numpy()
# If we haven't processed this class yet, set the counters to 0
if cur_class not in num_correct_per_class:
num_correct_per_class[cur_class] = 0
assert cur_class not in num_images_per_class
num_images_per_class[cur_class] = 0
num_images_per_class[cur_class] += 1
# Get the predictions for this image
cur_pred = predictions[example['file_name'].numpy()]
# We count a prediction as correct if it is marked as correct or unclear
# (i.e., we are lenient with the unclear labels)
if cur_pred is in example['correct_multi_labels'].numpy() or cur_pred is in example['unclear_multi_labels'].numpy():
num_correct_per_class[cur_class] += 1
# Check that we have collected accuracy data for each of the 1,000 classes
num_classes = 1000
assert len(num_correct_per_class) == num_classes
assert len(num_images_per_class) == num_classes
# Compute the per-class accuracies and then average them
final_avg = 0
for cid in range(num_classes):
assert cid in num_correct_per_class
assert cid in num_images_per_class
final_avg += num_correct_per_class[cid] / num_images_per_class[cid]
final_avg /= num_classes
Page d'accueil : https://github.com/modestyachts/evaluating_machine_accuracy_on_imagenet
Code source :
tfds.datasets.imagenet2012_multilabel.Builder
Versions :
-
1.0.0
: Version initiale. -
2.0.0
: Correction du fichier ILSVRC2012_img_val.tar. -
3.0.0
(par défaut) : libellés corrigés et division ImageNet-M.
-
Taille du téléchargement :
191.13 MiB
Taille du jeu de données :
2.50 GiB
Instructions de téléchargement manuel : cet ensemble de données nécessite que vous téléchargiez manuellement les données sources dans
download_config.manual_dir
(par défaut,~/tensorflow_datasets/downloads/manual/
) :
manual_dir doit contenir le fichierILSVRC2012_img_val.tar
. Vous devez vous inscrire sur http://www.image-net.org/download-images afin d'obtenir le lien pour télécharger l'ensemble de données.Mise en cache automatique ( documentation ): Non
Fractionnements :
Diviser | Exemples |
---|---|
'imagenet_m' | 68 |
'validation' | 20 000 |
- Structure des fonctionnalités :
FeaturesDict({
'correct_multi_labels': Sequence(ClassLabel(shape=(), dtype=int64, num_classes=1000)),
'file_name': Text(shape=(), dtype=string),
'image': Image(shape=(None, None, 3), dtype=uint8),
'is_problematic': bool,
'original_label': ClassLabel(shape=(), dtype=int64, num_classes=1000),
'unclear_multi_labels': Sequence(ClassLabel(shape=(), dtype=int64, num_classes=1000)),
'wrong_multi_labels': Sequence(ClassLabel(shape=(), dtype=int64, num_classes=1000)),
})
- Documentation des fonctionnalités :
Caractéristique | Classer | Forme | Dtype | La description |
---|---|---|---|---|
FonctionnalitésDict | ||||
correct_multi_labels | Séquence(ClassLabel) | (Aucun,) | int64 | |
nom de fichier | Texte | chaîne de caractères | ||
image | Image | (Aucun, Aucun, 3) | uint8 | |
est_problématique | Tenseur | bourdonner | ||
étiquette_d'origine | Étiquette de classe | int64 | ||
unclear_multi_labels | Séquence(ClassLabel) | (Aucun,) | int64 | |
mauvais_multi_étiquettes | Séquence(ClassLabel) | (Aucun,) | int64 |
Clés supervisées (Voir
as_supervised
doc ):('image', 'correct_multi_labels')
Figure ( tfds.show_examples ):
- Exemples ( tfds.as_dataframe ):
- Citation :
@article{shankar2019evaluating,
title={Evaluating Machine Accuracy on ImageNet},
author={Vaishaal Shankar* and Rebecca Roelofs* and Horia Mania and Alex Fang and Benjamin Recht and Ludwig Schmidt},
journal={ICML},
year={2020},
note={\url{http://proceedings.mlr.press/v119/shankar20c.html} }
}
@article{ImageNetChallenge,
title={ {ImageNet} large scale visual recognition challenge},
author={Olga Russakovsky and Jia Deng and Hao Su and Jonathan Krause
and Sanjeev Satheesh and Sean Ma and Zhiheng Huang and Andrej Karpathy and Aditya Khosla and Michael Bernstein and
Alexander C. Berg and Fei-Fei Li},
journal={International Journal of Computer Vision},
year={2015},
note={\url{https://arxiv.org/abs/1409.0575} }
}
@inproceedings{ImageNet,
author={Jia Deng and Wei Dong and Richard Socher and Li-Jia Li and Kai Li and Li Fei-Fei},
booktitle={Conference on Computer Vision and Pattern Recognition (CVPR)},
title={ {ImageNet}: A large-scale hierarchical image database},
year={2009},
note={\url{http://www.image-net.org/papers/imagenet_cvpr09.pdf} }
}
@article{vasudevan2022does,
title={When does dough become a bagel? Analyzing the remaining mistakes on ImageNet},
author={Vasudevan, Vijay and Caine, Benjamin and Gontijo-Lopes, Raphael and Fridovich-Keil, Sara and Roelofs, Rebecca},
journal={arXiv preprint arXiv:2205.04596},
year={2022}
}