- 설명 :
이 데이터 세트 에는 "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
버전 :
-
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 |
감독 키 (
as_supervised
문서 참조):('image', 'correct_multi_labels')
그림 ( tfds.show_examples ):
- 예 ( tfds.as_dataframe ):
- 인용 :
@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}
}