| | |
| | r"""Create a list containing image names and their corresponding class indices |
| | for ImageNet validation data. |
| | |
| | The directory structure of the original ImageNet validation data set is |
| | expected to be: |
| | |
| | data_dir/ILSVRC2012_val_00000001.JPEG |
| | data_dir/ILSVRC2012_val_00000002.JPEG |
| | ... |
| | date_dir/ILSVRC2012_val_00050000.JPEG |
| | |
| | This script generate a list like: |
| | ILSVRC2012_val_00000001.JPEG 65 |
| | ILSVRC2012_val_00000002.JPEG 970 |
| | ... |
| | ILSVRC2012_val_00050000.JPEG 355 |
| | |
| | Usage: |
| | Download https://github.com/tensorflow/models/blob/master/research/slim/datasets/imagenet_2012_validation_synset_labels.txt and then, |
| | ./create_image_labels.py imagenet_2012_validation_synset_labels.txt |
| | """ |
| |
|
| | import sys |
| |
|
| | if __name__ == '__main__': |
| | if len(sys.argv) < 2: |
| | print('Usage: ./create_image_labels.py <labels file>') |
| | sys.exit(-1) |
| | labels_file = sys.argv[1] |
| |
|
| | labels = [l.strip() for l in open(labels_file).readlines()] |
| | sorted_labels = sorted(labels) |
| | class_idx = 0 |
| | label_to_class_idx = {} |
| | for label in sorted_labels: |
| | if label not in label_to_class_idx: |
| | label_to_class_idx[label] = class_idx |
| | class_idx += 1 |
| |
|
| | image_list_file = 'val.txt' |
| | with open(image_list_file, 'w') as f: |
| | for i, label in enumerate(labels): |
| | image_name = 'ILSVRC2012_val_000%.5d.JPEG' % (i + 1) |
| | f.write(f'{image_name} {label_to_class_idx[label]}\n') |
| | print(f'Output image list file: {image_list_file}') |
| |
|