- Descrizione :
Questo set di dati contiene immagini di convalida ILSVRC-2012 (ImageNet) annotate con etichette multiclasse da "Evaluating Machine Accuracy on ImageNet" , ICML, 2020. Le etichette multiclasse sono state esaminate da un gruppo di esperti ampiamente formati nelle complessità della distinzioni di classi granulari nella gerarchia delle classi di ImageNet (vedere il documento per maggiori dettagli). Rispetto alle etichette originali, queste etichette multiclasse riviste da esperti consentono una valutazione dell'accuratezza più semanticamente coerente.
La versione 3.0.0 di questo set di dati contiene etichette più corrette da "Quando l'impasto diventa un bagel? Analizzando gli errori rimanenti su ImageNet e la suddivisione di 68 esempi di ImageNet-Major (ImageNet-M) in 'imagenet-m'.
Solo 20.000 delle 50.000 immagini di convalida ImageNet hanno annotazioni multi-etichetta. Il set di etichette multiple è stato inizialmente generato da un banco di prova di 67 modelli ImageNet addestrati, quindi ogni singola previsione del modello è stata annotata manualmente dagli esperti come correct
(l'etichetta è corretta per l'immagine), wrong
(l'etichetta non è corretta per l'immagine), o unclear
(nessun consenso è stato raggiunto tra gli esperti).
Inoltre, durante l'annotazione, il gruppo di esperti ha identificato una serie di immagini problematiche . Un'immagine era problematica se soddisfaceva uno dei seguenti criteri:
- L'etichetta ImageNet originale (etichetta top-1) era errata o poco chiara
- L'immagine era un disegno, un dipinto, uno schizzo, un cartone animato o un rendering al computer
- L'immagine è stata eccessivamente modificata
- L'immagine presentava contenuti inappropriati
Le immagini problematiche sono incluse in questo set di dati, ma devono essere ignorate quando si calcola l'accuratezza multi-etichetta. Inoltre, poiché il set iniziale di 20.000 annotazioni è bilanciato per classe, ma il set di immagini problematiche non lo è, si consiglia di calcolare le precisioni per classe e quindi calcolarne la media. Raccomandiamo inoltre di considerare corretta una previsione se è contrassegnata come corretta o poco chiara (ovvero, essere indulgenti con le etichette poco chiare).
Un modo possibile per farlo è con il seguente codice NumPy:
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
Homepage : https://github.com/modestyachts/evaluating_machine_accuracy_on_imagenet
Codice sorgente :
tfds.datasets.imagenet2012_multilabel.Builder
Versioni :
-
1.0.0
: Versione iniziale. -
2.0.0
: Corretto il file ILSVRC2012_img_val.tar. -
3.0.0
(impostazione predefinita): etichette corrette e divisione ImageNet-M.
-
Dimensione del download :
191.13 MiB
Dimensione del set di dati :
2.50 GiB
Istruzioni per il download manuale : questo set di dati richiede di scaricare manualmente i dati di origine in
download_config.manual_dir
(il valore predefinito è~/tensorflow_datasets/downloads/manual/
):
manual_dir dovrebbe contenere il fileILSVRC2012_img_val.tar
. È necessario registrarsi su http://www.image-net.org/download-images per ottenere il collegamento per scaricare il set di dati.Cache automatica ( documentazione ): No
Divisioni :
Diviso | Esempi |
---|---|
'imagenet_m' | 68 |
'validation' | 20.000 |
- Struttura delle caratteristiche :
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)),
})
- Documentazione delle funzionalità :
Caratteristica | Classe | Forma | Tipo D | Descrizione |
---|---|---|---|---|
CaratteristicheDict | ||||
correct_multi_labels | Sequenza(EtichettaClasse) | (Nessuno,) | int64 | |
nome del file | Testo | corda | ||
Immagine | Immagine | (Nessuno, Nessuno, 3) | uint8 | |
è_problematico | Tensore | bool | ||
etichetta_originale | ClassLabel | int64 | ||
unclear_multi_labels | Sequenza(EtichettaClasse) | (Nessuno,) | int64 | |
etichette_multi_errate | Sequenza(EtichettaClasse) | (Nessuno,) | int64 |
Chiavi supervisionate (vedi
as_supervised
doc ):('image', 'correct_multi_labels')
Figura ( tfds.show_examples ):
- Esempi ( tfds.as_dataframe ):
- Citazione :
@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}
}