def handle_characters(alphabet_folder, character_folder, rotate): for root, _, character_images in os.walk(character_folder): character_name = root.split('/')[-1] mkdir(f'{alphabet_folder}.{rotate}/{character_name}') for img_path in character_images: # print(root+'/'+img_path) img = io.imread(root+'/'+img_path) img = transform.rotate(img, angle=rotate) img = transform.resize(img, output_shape, anti_aliasing=True) img = (img - img.min()) / (img.max() - img.min()) # print(img.min(), img.max()) # print(f'{alphabet_folder}.{rotate}/{character_name}/{img_path}') io.imsave(f'{alphabet_folder}.{rotate}/{character_name}/{img_path}', img)
def handle_alphabet(folder): print('{}...'.format(folder.split('/')[-1])) for rotate in [0, 90, 180, 270]: # Create new folders for each augmented alphabet mkdir(f'{folder}.{rotate}') for root, character_folders, _ in os.walk(folder): for character_folder in character_folders: # For each character folder in an alphabet rotate and resize all of the images and save # to the new folder handle_characters(folder, root + '/' + character_folder, rotate) # return # Delete original alphabet rmdir(folder)
def handle_characters(alphabet_folder, character_folder, rotate=0, n_variations=None): global id_img for root, _, character_images in os.walk(character_folder): character_name = root.split('/')[-1] mkdir( str(alphabet_folder) + '.' + str(rotate) + '/' + str(character_name)) for img_path in character_images: # print(root+'/'+img_path) img = io.imread(root + '/' + img_path) img = transform.rotate(img, angle=rotate) img = transform.resize(img, output_shape, anti_aliasing=True) img = (img - img.min()) / (img.max() - img.min()) img = 1 - img if n_variations is not None: for _ in range(n_variations): basename_img = img_path.split(".")[0] trans = transform.AffineTransform( shear=uniform(-pi / 6, pi / 6), rotation=uniform(-pi / 6, pi / 6)) shift_y, shift_x = np.array(img.shape[:2]) / 2. tf_shift = transform.SimilarityTransform( translation=[-shift_x, -shift_y]) tf_shift_inv = transform.SimilarityTransform( translation=[shift_x, shift_y]) img_trans = transform.warp( img, (tf_shift + (trans + tf_shift_inv)).inverse) io.imsave(str(alphabet_folder) + '.' + str(rotate) + '/' + str(character_name) + '/' + \ str(basename_img) + '.' + str(id_img) + '.png', img_trans) id_img += 1 else: io.imsave(str(alphabet_folder) + '.' + str(rotate) + '/' + str(character_name) + '/' + \ str(img_path), img)
def handle_alphabet(folder): print('{}...'.format(folder.split('/')[-1])) n_variations_character = 10 transforms = torchvision.transforms.Compose([ torchvision.transforms.ToPILImage(), torchvision.transforms.RandomAffine(20, scale=(0.9, 1.1), shear=20), # torchvision.transforms.ToTensor(), ]) for rotate in [0]: # Create new folders for each augmented alphabet mkdir(str(folder) + '.' + str(rotate)) for root, character_folders, _ in os.walk(folder): for character_folder in character_folders: # For each character folder in an alphabet rotate and resize all of the images and save # to the new folder handle_characters(folder, root + '/' + character_folder, n_variations=n_variations_character, rotate=rotate) # return # Delete original alphabet rmdir(folder)
# Create new folders for each augmented alphabet mkdir(f'{folder}.{rotate}') for root, character_folders, _ in os.walk(folder): for character_folder in character_folders: # For each character folder in an alphabet rotate and resize all of the images and save # to the new folder handle_characters(folder, root + '/' + character_folder, rotate) # return # Delete original alphabet rmdir(folder) # Clean up previous extraction rmdir(prepared_omniglot_location) mkdir(prepared_omniglot_location) # Unzip dataset for root, _, files in os.walk(raw_omniglot_location): for f in files: if f in dataset_zip_files: print('Unzipping {}...'.format(f)) zip_ref = zipfile.ZipFile(root + f, 'r') zip_ref.extractall(prepared_omniglot_location) zip_ref.close() print('Processing background set...') for root, alphabets, _ in os.walk(prepared_omniglot_location + 'images_background/'): for alphabet in sorted(alphabets): handle_alphabet(root + alphabet)
Tracksuits, Clutches, Socks, Innerwear Vests, Night suits, Salwar, Stoles, Face\ Moisturisers, Perfume and Body Mist, Lounge Shorts, Scarves, Briefs, Jumpsuit, Wallets,\ Foundation and Primer, Sports Shoes, Highlighter and Blush, Sunscreen, Shoe\ Accessories, Track Pants, Fragrance Gift Set, Shirts, Sweatshirts, Mask and Peel,\ Jewellery Set, Face Wash and Cleanser, Messenger Bag, Free Gifts, Kurtas, Mascara,\ Lounge Pants, Caps, Lip Care, Trunk, Tunics, Kurta Sets, Sunglasses, Lipstick, Churidar,\ Travel Accessory\ ".split(','))) # Clean up folders rmdir(DATA_PATH + '/fashion_small/images_background') rmdir(DATA_PATH + '/fashion_small/images_evaluation') # Create class folders for c in background_classes: mkdir(DATA_PATH + f'/fashion_small/images_background/{c}/') for c in evaluation_classes: mkdir(DATA_PATH + f'/fashion_small/images_evaluation/{c}/') root = path_to_fashion + '/images' with open(path_to_fashion + '/styles.csv') as f: for line in tqdm(f.readlines()[1:]): line = line.split(',') class_name = line[4] if class_name in evaluation_classes: subset_folder = 'images_evaluation' elif class_name in background_classes: subset_folder = 'images_background' else:
1. Download files from https://drive.google.com/file/d/0B3Irx3uQNoBMQ1FlNXJsZUdYWEE/view and place in data/miniImageNet/images 2. Run the script """ from tqdm import tqdm as tqdm import numpy as np import shutil import os from config import DATA_PATH from few_shot.utils import mkdir, rmdir # Clean up folders rmdir(DATA_PATH + '/miniImageNet/images_background') rmdir(DATA_PATH + '/miniImageNet/images_evaluation') mkdir(DATA_PATH + '/miniImageNet/images_background') mkdir(DATA_PATH + '/miniImageNet/images_evaluation') # Find class identities classes = [] for root, _, files in os.walk(DATA_PATH + '/miniImageNet/images/'): for f in files: if f.endswith('.jpg'): classes.append(f[:-12]) classes = list(set(classes)) # Train/test split np.random.seed(0) np.random.shuffle(classes) background_classes, evaluation_classes = classes[:80], classes[80:]
data/miniImageNet/images 2. Run the script """ from tqdm import tqdm as tqdm import numpy as np import shutil import os from config import DATA_PATH from few_shot.utils import mkdir, rmdir import pdb; pdb.set_trace() # Clean up folders rmdir(DATA_PATH + '/miniImageNet/images_background') rmdir(DATA_PATH + '/miniImageNet/images_evaluation') mkdir(DATA_PATH + '/miniImageNet/images_background') mkdir(DATA_PATH + '/miniImageNet/images_evaluation') # Find class identities classes = [] for root, _, files in os.walk(DATA_PATH + '/miniImageNet/images/'): for f in files: if f.endswith('.jpg'): classes.append(f[:-12]) classes = list(set(classes)) # Train/test split np.random.seed(0) np.random.shuffle(classes) background_classes, evaluation_classes = classes[:80], classes[80:]
1. Download files from https://drive.google.com/file/d/0B3Irx3uQNoBMQ1FlNXJsZUdYWEE/view and place in data/miniImageNet/images 2. Run the script """ from tqdm import tqdm as tqdm import numpy as np import shutil import os from config import DATA_PATH from few_shot.utils import mkdir, rmdir # Clean up folders rmdir(DATA_PATH + '/few-shot/images_background') rmdir(DATA_PATH + '/few-shot/images_evaluation') mkdir(DATA_PATH + '/few-shot/images_background') mkdir(DATA_PATH + '/few-shot/images_evaluation') # Find class identities classes = [] for root, _, files in os.walk(DATA_PATH + '/few-shot/images/'): for f in files: if f.endswith('.jpg'): classes.append(f[:-12]) classes = list(set(classes)) # Train/test split np.random.seed(0) np.random.shuffle(classes) background_classes, evaluation_classes = classes[:80], classes[80:]
from distutils.dir_util import copy_tree from tqdm import tqdm as tqdm from os import walk import numpy as np import shutil from config import DATA_PATH from few_shot.utils import mkdir, rmdir # Clean up folders rmdir(DATA_PATH + '/kaggle/images_background') rmdir(DATA_PATH + '/kaggle/images_evaluation') rmdir(DATA_PATH + '/kaggle/images_test') mkdir(DATA_PATH + '/kaggle/images_background') mkdir(DATA_PATH + '/kaggle/images_evaluation') mkdir(DATA_PATH + '/kaggle/images_test') classes = [] for _, folders, _ in walk(DATA_PATH + '/kaggle/images'): for f in folders: classes.append(f) np.random.seed(0) np.random.shuffle(classes) background_classes, evaluation_classes, test_classes = classes[:80], classes[ 80:100], classes[100:] print('Preparing background_data....') for i in tqdm(range(len(background_classes))): folder = background_classes[i] src = DATA_PATH + '/kaggle/images/' + folder
from distutils.dir_util import copy_tree from tqdm import tqdm as tqdm from os import walk import numpy as np import shutil from config import DATA_PATH from few_shot.utils import mkdir, rmdir # Clean up folders rmdir(DATA_PATH + '/whoas/images_background') rmdir(DATA_PATH + '/whoas/images_evaluation') mkdir(DATA_PATH + '/whoas/images_background') mkdir(DATA_PATH + '/whoas/images_evaluation') classes = [] for _, folders, _ in walk(DATA_PATH + '/whoas/images'): for f in folders: classes.append(f) np.random.seed(0) np.random.shuffle(classes) background_classes, evaluation_classes = classes[:83], classes[83:] print('Preparing background_data....') for i in tqdm(range(len(background_classes))): folder = background_classes[i] src = DATA_PATH + '/whoas/images/' + folder dst = DATA_PATH + '/whoas/images_background/' + folder copy_tree(src, dst)
from config import DATA_PATH from few_shot.utils import mkdir, rmdir import sys sys.path.append('./') parser = argparse.ArgumentParser() parser.add_argument('--size', default='small', help='Dataset size: small or large (default: small)') args = parser.parse_args() # Clean up folders rmdir(DATA_PATH + '/fashion-dataset/images_background') rmdir(DATA_PATH + '/fashion-dataset/images_evaluation') mkdir(DATA_PATH + '/fashion-dataset/images_background') mkdir(DATA_PATH + '/fashion-dataset/images_evaluation') # Find class identities classes = [] meta_file = open(DATA_PATH + '/fashion-dataset/styles.csv', 'r') meta_data = meta_file.readlines()[1:] meta_train_file = open(DATA_PATH + '/fashion-dataset/metaTrain.txt', 'r') meta_test_file = open(DATA_PATH + '/fashion-dataset/metaTest.txt', 'r') meta_train_data = set([line.rstrip() for line in meta_train_file]) meta_test_data = set([line.rstrip() for line in meta_test_file]) # Train/test split background_classes, evaluation_classes = meta_train_data, meta_test_data # Create class folders
import sys sys.path.append('../') import os import shutil import natsort import numpy as np from tqdm import tqdm as tqdm import pandas as pd from config import DATA_PATH from few_shot.utils import mkdir, rmdir # Creating and deleting folder/files rmdir(DATA_PATH + '/fashionNet/images_background') rmdir(DATA_PATH + '/fashionNet/images_evaluation') rmdir(DATA_PATH + '/fashionNet/refac_Images') mkdir(DATA_PATH + '/fashionNet/images_background') mkdir(DATA_PATH + '/fashionNet/images_evaluation') mkdir(DATA_PATH + '/fashionNet/refac_Images') print("Is the DATA_PATH is Correct?", os.path.exists(DATA_PATH + '/fashionNet/images/')) ''' Directory File Name Change 1. styles.csv to map image_id and subCategory, class_laebls, meta_sets 2. Rename the images using os.rename() for support and query split ''' _classes = [] split = [] PATH = os.path.join(DATA_PATH, 'fashionNet/styles.csv') df = pd.read_csv(PATH, engine='python')