__init__.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import numpy as np
  2. try:
  3. from yaml import CLoader as Loader, CDumper as Dumper
  4. except ImportError:
  5. from yaml import Loader, Dumper
  6. import yaml
  7. from os.path import isfile
  8. def pretty_print_dict(dictionary):
  9. return ", ".join(["{key}={value}".format(key=key, value=value)
  10. for key, value in dictionary.items()])
  11. def feature_file_name(subset, part_info, model_info):
  12. return "{subset}{suffix}.{model}.npz".format(
  13. subset=subset,
  14. suffix=part_info.feature_suffix,
  15. model=model_info.class_key)
  16. def read_info_file(fpath):
  17. with open(fpath) as f:
  18. return attr_dict(yaml.load(f, Loader=Loader))
  19. def random_idxs(idxs, rnd=None, n_parts=None):
  20. if rnd is None or isinstance(rnd, int):
  21. rnd = np.random.RandomState(rnd)
  22. else:
  23. assert isinstance(rnd, np.random.RandomState), \
  24. "'rnd' should be either a random seed or a RandomState instance!"
  25. n_parts = n_parts or rnd.randint(1, len(idxs))
  26. res = rnd.choice(idxs, n_parts, replace=False)
  27. res.sort()
  28. return res
  29. class attr_dict(dict):
  30. def __getattr__(self, name):
  31. if name in self:
  32. return self[name]
  33. else:
  34. return super(attr_dict, self).get(name)
  35. def __getitem__(self, key):
  36. res = super(attr_dict, self).__getitem__(key)
  37. if isinstance(res, dict):
  38. return attr_dict(res)
  39. return res
  40. def __getstate__(self): return self.__dict__
  41. def __setstate__(self, d): self.__dict__.update(d)
  42. class _MetaInfo(object):
  43. def __init__(self, **kwargs):
  44. for name, value in kwargs.items():
  45. setattr(self, name, value)
  46. self.structure = []
  47. def retry_operation(n_retries, func, *args, **kwargs):
  48. if n_retries <= 0:
  49. return func(*args, **kwargs)
  50. error = None
  51. for i in range(n_retries):
  52. try:
  53. return func(*args, **kwargs)
  54. except Exception as e:
  55. error = e
  56. raise RuntimeError(f"Operation {func.__name__} failed after {n_retries} n_retries! ({error})")
  57. from cvdatasets.utils.dataset import new_iterator
  58. from cvdatasets.utils.image import asarray
  59. from cvdatasets.utils.image import read_image
  60. from cvdatasets.utils.transforms import color_jitter
  61. from cvdatasets.utils.transforms import dimensions
  62. from cvdatasets.utils.transforms import rescale