imagenet2012_multilabel

  • Descrição :

Este conjunto de dados contém imagens de validação ILSVRC-2012 (ImageNet) anotadas com rótulos multiclasse de "Evaluating Machine Accuracy on ImageNet" , ICML, 2020. Os rótulos multiclasse foram revisados ​​por um painel de especialistas extensivamente treinados nas complexidades da precisão. distinções granulares de classes na hierarquia de classes do ImageNet (consulte o artigo para obter mais detalhes). Em comparação com os rótulos originais, esses rótulos multiclasse revisados ​​por especialistas permitem uma avaliação de precisão mais coerente semanticamente.

A versão 3.0.0 deste conjunto de dados contém mais rótulos corrigidos de "Quando a massa se torna um bagel? Analisando os erros restantes no ImageNet, bem como a divisão de 68 exemplos do ImageNet-Major (ImageNet-M) em 'imagenet-m'.

Apenas 20.000 das 50.000 imagens de validação do ImageNet têm anotações de vários rótulos. O conjunto de rótulos múltiplos foi primeiro gerado por um testbed de 67 modelos ImageNet treinados e, em seguida, cada previsão de modelo individual foi anotada manualmente pelos especialistas como correct (o rótulo está correto para a imagem), wrong (o rótulo está incorreto para a imagem), ou unclear (não houve consenso entre os especialistas).

Além disso, durante a anotação, o painel de especialistas identificou um conjunto de imagens problemáticas . Uma imagem era problemática se atendia a algum dos critérios abaixo:

  • O rótulo original do ImageNet (rótulo superior 1) estava incorreto ou pouco claro
  • A imagem era um desenho, pintura, esboço, desenho animado ou renderizado por computador
  • A imagem foi excessivamente editada
  • A imagem tinha conteúdo impróprio

As imagens problemáticas estão incluídas neste conjunto de dados, mas devem ser ignoradas ao calcular a precisão de vários rótulos. Além disso, como o conjunto inicial de 20.000 anotações é balanceado por classe, mas o conjunto de imagens problemáticas não, recomendamos calcular as precisões por classe e, em seguida, tirar a média delas. Também recomendamos contar uma previsão como correta se estiver marcada como correta ou pouco clara (ou seja, ser tolerante com os rótulos pouco claros).

Uma maneira possível de fazer isso é com o seguinte 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

Dividir Exemplos
'imagenet_m' 68
'validation' 20.000
  • Estrutura de recursos :
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)),
})
  • Documentação do recurso :
Característica Classe Forma Tipo D Descrição
RecursosDict
correct_multi_labels Sequência(ClassLabel) (Nenhum,) int64
nome do arquivo Texto corda
imagem Imagem (Nenhuma, Nenhuma, 3) uint8
é_problemático tensor bool
original_label ClassLabel int64
claro_multi_rótulos Sequência(ClassLabel) (Nenhum,) int64
errado_multi_rótulos Sequência(ClassLabel) (Nenhum,) int64

Visualização

  • Citação :
@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}
}