- Descripción :
Este conjunto de datos contiene imágenes de validación ILSVRC-2012 (ImageNet) anotadas con etiquetas multiclase de "Evaluating Machine Accuracy on ImageNet" , ICML, 2020. Las etiquetas multiclase fueron revisadas por un panel de expertos ampliamente capacitados en las complejidades de distinciones de clase detalladas en la jerarquía de clases de ImageNet (consulte el documento para obtener más detalles). En comparación con las etiquetas originales, estas etiquetas multiclase revisadas por expertos permiten una evaluación de la precisión más semánticamente coherente.
La versión 3.0.0 de este conjunto de datos contiene más etiquetas corregidas de "¿Cuándo la masa se convierte en un bagel? Analizando los errores restantes en ImageNet, así como la división de 68 ejemplos de ImageNet-Major (ImageNet-M) en 'imagenet-m'.
Solo 20 000 de las 50 000 imágenes de validación de ImageNet tienen anotaciones de varias etiquetas. El conjunto de etiquetas múltiples fue generado primero por un banco de pruebas de 67 modelos de ImageNet capacitados, y luego los expertos anotaron manualmente cada predicción de modelo individual como correct
(la etiqueta es correcta para la imagen), wrong
(la etiqueta es incorrecta para la imagen), o unclear
(no se llegó a un consenso entre los expertos).
Además, durante la anotación, el panel de expertos identificó un conjunto de imágenes problemáticas . Una imagen era problemática si cumplía con alguno de los siguientes criterios:
- La etiqueta original de ImageNet (etiqueta top-1) era incorrecta o poco clara
- La imagen era un dibujo, una pintura, un boceto, una caricatura o una computadora.
- La imagen fue excesivamente editada
- La imagen tenía contenido inapropiado
Las imágenes problemáticas se incluyen en este conjunto de datos, pero deben ignorarse al calcular la precisión de múltiples etiquetas. Además, dado que el conjunto inicial de 20 000 anotaciones tiene un equilibrio de clase, pero el conjunto de imágenes problemáticas no lo tiene, recomendamos calcular las precisiones por clase y luego promediarlas. También recomendamos contar una predicción como correcta si está marcada como correcta o poco clara (es decir, ser indulgente con las etiquetas poco claras).
Una forma posible de hacerlo es con el siguiente código 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
Página de inicio : https://github.com/modestyachts/evaluating_machine_accuracy_on_imagenet
Código fuente :
tfds.datasets.imagenet2012_multilabel.Builder
Versiones :
-
1.0.0
: Versión inicial. -
2.0.0
: Se corrigió el archivo ILSVRC2012_img_val.tar. -
3.0.0
(predeterminado): etiquetas corregidas y división de ImageNet-M.
-
Tamaño de la descarga :
191.13 MiB
Tamaño del conjunto de datos :
2.50 GiB
Instrucciones de descarga manual : este conjunto de datos requiere que descargue los datos de origen manualmente en
download_config.manual_dir
(el valor predeterminado es~/tensorflow_datasets/downloads/manual/
):
manual_dir debe contener el archivoILSVRC2012_img_val.tar
. Debe registrarse en http://www.image-net.org/download-images para obtener el enlace para descargar el conjunto de datos.Almacenamiento automático en caché ( documentación ): No
Divisiones :
Separar | Ejemplos |
---|---|
'imagenet_m' | 68 |
'validation' | 20,000 |
- Estructura de características :
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)),
})
- Documentación de características :
Rasgo | Clase | Forma | Tipo D | Descripción |
---|---|---|---|---|
CaracterísticasDict | ||||
etiquetas_múltiples_correctas | Secuencia (Etiqueta de clase) | (Ninguna,) | int64 | |
Nombre del archivo | Texto | cuerda | ||
imagen | Imagen | (Ninguno, Ninguno, 3) | uint8 | |
es_problemático | Tensor | bool | ||
etiqueta_original | Etiqueta de clase | int64 | ||
unclear_multi_labels | Secuencia (Etiqueta de clase) | (Ninguna,) | int64 | |
etiquetas_múltiples_equivocadas | Secuencia (Etiqueta de clase) | (Ninguna,) | int64 |
Claves supervisadas (ver documento
as_supervised
):('image', 'correct_multi_labels')
Figura ( tfds.show_examples ):
- Ejemplos ( tfds.as_dataframe ):
- Cita :
@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}
}