datasets/ImageNet_LT/select_ood_test_imagenet_1k.py (27 lines of code) (raw):
from genericpath import isdir
import os, argparse
parser = argparse.ArgumentParser(description='PyTorch CIFAR Example')
parser.add_argument('--data_root_path', '--drp', default='/ssd1/haotao/datasets', help='data root path')
args = parser.parse_args()
imagenet_train_dir = os.path.join(args.data_root_path, 'imagenet', 'train')
imagenet1k_wnid_list = os.listdir(imagenet_train_dir)
assert len(imagenet1k_wnid_list)==1000, "%d is not 1000" % len(imagenet1k_wnid_list)
with open("datasets/imagenet_extra_1k_wnid_list.txt", "r") as fp:
imagenet_extra_1k_wnid_list = fp.read().splitlines()
imagenet10k_dir = os.path.join(args.data_root_path, 'imagenet10k')
imagenet10k_wnid_list = []
for item in os.listdir(imagenet10k_dir):
if '.tar' in item:
imagenet10k_wnid_list.append(item.split('.')[0])
print(len(imagenet10k_wnid_list))
imagenet_ood_test_1k_wnid_list = []
for wnid in imagenet10k_wnid_list:
if wnid not in imagenet1k_wnid_list and wnid not in imagenet_extra_1k_wnid_list:
imagenet_ood_test_1k_wnid_list.append(wnid)
if len(imagenet_ood_test_1k_wnid_list) == 1000:
break
fp = open('./datasets/imagenet_ood_test_1k_wnid_list.txt', 'w+')
for wnid in imagenet_ood_test_1k_wnid_list:
fp.write(wnid)
fp.write('\n')
fp.flush()