12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- # encoding: utf-8
- """
- @author: sherlock
- @contact: sherlockliao01@gmail.com
- """
- from PIL import Image, ImageFile
- import errno
- import json
- import pickle as pkl
- import os
- import os.path as osp
- import yaml
- from easydict import EasyDict as edict
- ImageFile.LOAD_TRUNCATED_IMAGES = True
- def read_image(img_path):
- """Keep reading image until succeed.
- This can avoid IOError incurred by heavy IO process."""
- got_img = False
- if not osp.exists(img_path):
- raise IOError("{} does not exist".format(img_path))
- while not got_img:
- try:
- img = Image.open(img_path).convert('RGB')
- got_img = True
- except IOError:
- print("IOError incurred when reading '{}'. Will redo. Don't worry. Just chill.".format(img_path))
- pass
- return img
- def mkdir_if_missing(directory):
- if not osp.exists(directory):
- try:
- os.makedirs(directory)
- except OSError as e:
- if e.errno != errno.EEXIST:
- raise
- def check_isfile(path):
- isfile = osp.isfile(path)
- if not isfile:
- print("=> Warning: no file found at '{}' (ignored)".format(path))
- return isfile
- def read_json(fpath):
- with open(fpath, 'r') as f:
- obj = json.load(f)
- return obj
- def write_json(obj, fpath):
- mkdir_if_missing(osp.dirname(fpath))
- with open(fpath, 'w') as f:
- json.dump(obj, f, indent=4, separators=(',', ': '))
- def get_text_embedding(path, length):
- with open(path, 'rb') as f:
- word_frequency = pkl.load(f)
- def save_train_configs(path, args):
- if not os.path.exists(path):
- os.makedirs(path)
- with open(f'{path}/configs.yaml', 'w') as f:
- yaml.dump(vars(args), f, default_flow_style=False)
- def load_train_configs(path):
- with open(path, 'r') as f:
- args = yaml.load(f, Loader=yaml.FullLoader)
- return edict(args)
|