Last active
April 23, 2025 12:17
-
-
Save Coderx7/7a3a46f4f5df2e6bf5bb6ed9b6d2a45e to your computer and use it in GitHub Desktop.
creates tiny imagenet class names from imagenet classnames
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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