imagenet2012_multilabel

  • 설명 :

이 데이터 세트 에는 "Evaluating Machine Accuracy on ImageNet" , ICML, 2020의 다중 클래스 레이블로 주석이 달린 ILSVRC-2012(ImageNet) 검증 이미지가 포함되어 있습니다. ImageNet 클래스 계층 구조의 세분화된 클래스 구분(자세한 내용은 문서 참조). 원래 레이블과 비교하여 전문가가 검토한 이러한 다중 클래스 레이블을 사용하면 보다 의미론적으로 일관성 있는 정확도 평가가 가능합니다.

이 데이터 세트의 버전 3.0.0 에는 "도우가 베이글이 되는 경우" 에서 더 수정된 레이블이 포함되어 있습니다.

50,000개의 ImageNet 검증 이미지 중 20,000개에만 다중 레이블 주석이 있습니다. 다중 레이블 세트는 먼저 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.datasets.imagenet2012_multilabel.Builder

  • 버전 :

    • 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=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)),
})
  • 기능 문서 :
특징 수업 모양 D타입 설명
풍모Dict
올바른_다중_라벨 시퀀스(클래스 레이블) (없음,) int64
파일 이름 텍스트
영상 영상 (없음, 없음, 3) uint8
is_problematic 텐서 부울
original_label 클래스 레이블 int64
불확실한_다중_라벨 시퀀스(클래스 레이블) (없음,) int64
wrong_multi_labels 시퀀스(클래스 레이블) (없음,) 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}
}