Skip to content

Instantly share code, notes, and snippets.

@Coderx7
Last active April 23, 2025 12:17
Show Gist options
  • Save Coderx7/7a3a46f4f5df2e6bf5bb6ed9b6d2a45e to your computer and use it in GitHub Desktop.
Save Coderx7/7a3a46f4f5df2e6bf5bb6ed9b6d2a45e to your computer and use it in GitHub Desktop.
creates tiny imagenet class names from imagenet classnames
import os
import json
import requests
def download_file(url, path):
if not os.path.exists(path):
response = requests.get(url)
# if download failed raise exception
response.raise_for_status()
with open(path, 'w', encoding='utf-8') as file:
file.write(response.text)
with open(path, 'r') as f:
data = f.read()
return data
def main():
imagenet_classes_json_url = 'https://gist.githubusercontent.com/Coderx7/f14bc4c754352f13f9196f64e961f964/raw/22392c8dc1cfa9f5007294d0af1bb8232d7206e7/imagenet_class_index.json'
imagenet_classes_json_path = './imagenet_class_index.json'
tinyimagenet_classes_url = 'https://gist.githubusercontent.com/Coderx7/d73fe551fec1bc8edba275c34d6ffb59/raw/211af8bc361682f1f263fe5997442db38788acdf/tinyimagenet_classIds.txt'
tinyimagenet_classes_path = './tinyimagenet_classIds.txt'
tinyimagenet_classnames_path = './tinyimagenet_classnames.txt'
json_data_string = download_file(imagenet_classes_json_url, imagenet_classes_json_path)
imagenet_data = json.loads(json_data_string)
imagenet_classname_dict = {}
for key, value_list in imagenet_data.items():
if len(value_list) == 2:
imagenet_classname_dict[value_list[0]] = value_list[1]
else:
print(f"skipping invalid entry in json data for key '{key}': {value_list}")
tinyimagenet_ids = download_file(tinyimagenet_classes_url, tinyimagenet_classes_path)
tinyimagenet_ids = [line.strip() for line in tinyimagenet_ids.strip().split('\n')]
tinyimagenet_classnames = []
missing_ids = []
for id in tinyimagenet_ids:
class_name = imagenet_classname_dict.get(id)
if class_name is not None:
tinyimagenet_classnames.append(class_name)
else:
print(f"target id '{id}' not found in the provided json data")
missing_ids.append(id)
tinyimagenet_classnames.append(f"MISSING_{id}")
print(f'{len(tinyimagenet_classnames)} labels processed!')
if input('Display all labels?(y/N)').lower() == 'y':
print(f'Tiny imagenet labels:\n{tinyimagenet_classnames}')
if missing_ids:
print("\nERROR: The following target IDs were not found in the JSON data:")
print(missing_ids)
else:
print(f"\nSuccessfully mapped all {len(tinyimagenet_ids)} target ids.")
assert len(tinyimagenet_classnames) == len(tinyimagenet_ids), "mismatch in list lengths!"
with open(tinyimagenet_classnames_path, 'w', encoding='utf-8') as f:
for item in tinyimagenet_classnames:
f.write(str(item) + '\n')
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment