{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import os\nimport time\nimport random\n\ntrain_path = '/kaggle/input/imagenet-object-localization-challenge/ILSVRC/Data/CLS-LOC/train/'\nnew_train_path = '/kaggle/working/imagenet_subtrain/'\n\nos.system(f'rm -rf {new_train_path}')\nos.system(f'mkdir {new_train_path}')\n\nprint('get here111')\nfilenames = []\n\ndirs = [d for d in os.listdir(train_path) if os.path.isdir(os.path.join(train_path, d))]\nprint('len(dirs): ', len(dirs))\n\ndef get_all_files(directory):\n    filenames = []\n    class_name = directory.split('/')[-1]\n    for filename in os.listdir(directory):\n        if os.path.isfile(os.path.join(directory, filename)):\n            filenames.append(filename)\n            part_name = filename.split('_')[0]\n            assert part_name == class_name\n    return filenames\n\nprocess_start_t = time.time()\npart_start_t = time.time()\n\nnumber_per_class = 100\n\nfor i, directory in enumerate(dirs):\n    directory_path = train_path + '/' + directory\n    filenames = get_all_files(directory_path)\n    filenames = random.sample(filenames, number_per_class)\n    assert len(filenames)==number_per_class\n    \n    os.system(f\"mkdir {new_train_path + '/' + directory}\")\n    \n    for filename in filenames:\n        src_file_path = train_path + '/' + directory + '/' + filename\n        tgt_file_path = new_train_path + '/' + directory + '/' + filename\n        os.system(f'cp {src_file_path} {tgt_file_path}')\n    \n    if (i+1) % 100 == 0:\n        print(f'directory: {directory} filenames: {filenames[:3]}')\n        print(f'now i: {i+1}, cost time: {time.time()-part_start_t:.2f} sec')\n        part_start_t = time.time()\n        \n#     if i > 50:\n#         break\n        \nprint(f'finished, total cost time: {time.time()-process_start_t:.2f} sec')","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","scrolled":true,"execution":{"iopub.status.busy":"2023-01-22T17:25:33.049972Z","iopub.execute_input":"2023-01-22T17:25:33.050442Z","iopub.status.idle":"2023-01-22T17:26:44.853997Z","shell.execute_reply.started":"2023-01-22T17:25:33.050405Z","shell.execute_reply":"2023-01-22T17:26:44.852253Z"},"trusted":true},"execution_count":null,"outputs":[]}]}