Google I/O — это обертка! Наверстать упущенное в сеансах TensorFlow Просмотреть сеансы

imagenet2012_multilabel

  • Описание :

Этот набор данных содержит проверочные изображения ILSVRC-2012 (ImageNet), аннотированные многоклассовыми метками из «Evaluating Machine Accuracy on ImageNet» , ICML, 2020. Многоклассовые метки были проверены группой экспертов, хорошо обученных тонкостям точной обработки. дифференцированные различия классов в иерархии классов ImageNet (дополнительную информацию см. в документе). По сравнению с исходными метками эти проверенные экспертами многоклассовые метки обеспечивают более семантически согласованную оценку точности.

Версия 3.0.0 этого набора данных содержит более исправленные метки из раздела «Когда тесто превращается в бублик? Анализ оставшихся ошибок в ImageNet , а также в примере ImageNet-Major (ImageNet-M) из 68, разделенном на «imagenet-m».

Только 20 000 из 50 000 проверочных изображений ImageNet имеют аннотации с несколькими метками. Набор мультиметок был сначала сгенерирован испытательным стендом из 67 обученных моделей ImageNet, а затем эксперты вручную аннотировали каждое предсказание модели как correct (метка верна для изображения), wrong (метка неверна для изображения). изображение), либо unclear (консенсус среди экспертов не достигнут).

Кроме того, во время аннотации экспертная группа выявила ряд проблемных изображений . Изображение считалось проблемным, если оно соответствовало любому из следующих критериев:

  • Исходная метка ImageNet (метка верхней части 1) была неправильной или нечеткой.
  • Изображение представляло собой рисунок, картину, набросок, карикатуру или компьютерную визуализацию.
  • Изображение было чрезмерно отредактировано
  • Изображение имело неприемлемый контент

Проблемные изображения включены в этот набор данных, но их следует игнорировать при расчете точности с несколькими метками. Кроме того, поскольку первоначальный набор из 20 000 аннотаций сбалансирован по классам, а набор проблемных изображений — нет, мы рекомендуем вычислить точность для каждого класса, а затем усреднить ее. Мы также рекомендуем считать прогноз правильным, если он помечен как правильный или неясный (т. е. проявлять снисходительность к неясным меткам).

Один из возможных способов сделать это — использовать следующий код 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

  • Домашняя страница : https://github.com/modestyachts/evaluating_machine_accuracy_on_imagenet

  • Исходный код : tfds.image_classification.imagenet2012_multilabel.Imagenet2012Multilabel

  • Версии :

    • 1.0.0 : Первоначальный выпуск.
    • 2.0.0 : исправлен файл ILSVRC2012_img_val.tar.
    • 3.0.0 (по умолчанию) : исправлены метки и разделение ImageNet-M.
  • Размер загрузки : 191.13 MiB

  • Размер набора данных : 2.50 GiB

  • Инструкции по ручной загрузке : этот набор данных требует, чтобы вы загружали исходные данные вручную в download_config.manual_dir (по умолчанию ~/tensorflow_datasets/downloads/manual/ ):
    manual_dir должен содержать файл ILSVRC2012_img_val.tar . Вам необходимо зарегистрироваться на http://www.image-net.org/download-images , чтобы получить ссылку для загрузки набора данных.

  • Автоматическое кэширование ( документация ): Нет

  • Сплиты :

Расколоть Примеры
'imagenet_m' 68
'validation' 20 000
  • Структура функции :
FeaturesDict({
    'correct_multi_labels': Sequence(ClassLabel(shape=(), dtype=tf.int64, num_classes=1000)),
    'file_name': Text(shape=(), dtype=tf.string),
    'image': Image(shape=(None, None, 3), dtype=tf.uint8),
    'is_problematic': tf.bool,
    'original_label': ClassLabel(shape=(), dtype=tf.int64, num_classes=1000),
    'unclear_multi_labels': Sequence(ClassLabel(shape=(), dtype=tf.int64, num_classes=1000)),
    'wrong_multi_labels': Sequence(ClassLabel(shape=(), dtype=tf.int64, num_classes=1000)),
})
  • Документация по функциям :
Характерная черта Класс Форма Dтип Описание
ОсобенностиDict
correct_multi_labels Последовательность (метка класса) (Никто,) tf.int64
имя файла Текст tf.string
изображение Изображение (Нет, Нет, 3) tf.uint8
is_problematic Тензор tf.bool
original_label Метка класса tf.int64
неясно_multi_labels Последовательность (метка класса) (Никто,) tf.int64
неправильно_multi_labels Последовательность (метка класса) (Никто,) tf.int64

Визуализация

  • Цитата :
@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}
}