|
|
|
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}') |
|
|