diff --git a/utils/general.py b/utils/general.py index f2af386a7d93..06bf088582dc 100755 --- a/utils/general.py +++ b/utils/general.py @@ -103,6 +103,15 @@ def get_latest_run(search_dir='.'): return max(last_list, key=os.path.getctime) if last_list else '' +def user_config_dir(dir='Ultralytics'): + # Return path of user configuration directory (make if necessary) + settings = {'Windows': 'AppData/Roaming', 'Linux': '.config', 'Darwin': 'Library/Application Support'} + path = Path.home() / settings.get(platform.system(), '') / dir + if not path.is_dir(): + path.mkdir() # make dir if required + return path + + def is_docker(): # Is environment a Docker container? return Path('/workspace').exists() # or Path('/.dockerenv').exists() diff --git a/utils/plots.py b/utils/plots.py index d8a561a71dcf..1ed88ea7c832 100644 --- a/utils/plots.py +++ b/utils/plots.py @@ -16,16 +16,14 @@ import torch from PIL import Image, ImageDraw, ImageFont -from utils.general import is_ascii, xyxy2xywh, xywh2xyxy +from utils.general import user_config_dir, is_ascii, xywh2xyxy, xyxy2xywh from utils.metrics import fitness # Settings +CONFIG_DIR = user_config_dir() # Ultralytics settings dir matplotlib.rc('font', **{'size': 11}) matplotlib.use('Agg') # for writing to files only -FILE = Path(__file__).absolute() -ROOT = FILE.parents[1] # yolov5/ dir - class Colors: # Ultralytics color palette https://ultralytics.com/ @@ -49,9 +47,9 @@ def hex2rgb(h): # rgb order (PIL) def check_font(font='Arial.ttf', size=10): - # Return a PIL TrueType Font, downloading to ROOT dir if necessary + # Return a PIL TrueType Font, downloading to CONFIG_DIR if necessary font = Path(font) - font = font if font.exists() else (ROOT / font.name) + font = font if font.exists() else (CONFIG_DIR / font.name) try: return ImageFont.truetype(str(font) if font.exists() else font.name, size) except Exception as e: # download if missing