From 3a3cf8a6c5109a4e1383c88c518ce84154c12574 Mon Sep 17 00:00:00 2001 From: Colin Wong Date: Thu, 7 Jul 2022 18:29:46 -0500 Subject: [PATCH 1/5] Fix LoadImages with dataset yaml lists --- utils/dataloaders.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/utils/dataloaders.py b/utils/dataloaders.py index 5d4dfc6e4d14..5ce6e8257e0d 100755 --- a/utils/dataloaders.py +++ b/utils/dataloaders.py @@ -176,15 +176,20 @@ def __iter__(self): class LoadImages: # YOLOv5 image/video dataloader, i.e. `python detect.py --source image.jpg/vid.mp4` def __init__(self, path, img_size=640, stride=32, auto=True): - p = str(Path(path).resolve()) # os-agnostic absolute path - if '*' in p: - files = sorted(glob.glob(p, recursive=True)) # glob - elif os.path.isdir(p): - files = sorted(glob.glob(os.path.join(p, '*.*'))) # dir - elif os.path.isfile(p): - files = [p] # files + if isinstance(path, list): + paths = [str(Path(p).resolve()) for p in path] # list of paths else: - raise Exception(f'ERROR: {p} does not exist') + paths = [str(Path(path).resolve())] # os-agnostic absolute path + files = [] + for p in sorted(paths): + if '*' in p: + files.extend(sorted(glob.glob(p, recursive=True))) # glob + elif os.path.isdir(p): + files.extend(sorted(glob.glob(os.path.join(p, '*.*')))) # dir + elif os.path.isfile(p): + files.append(p) # files + else: + raise Exception(f'ERROR: {p} does not exist') images = [x for x in files if x.split('.')[-1].lower() in IMG_FORMATS] videos = [x for x in files if x.split('.')[-1].lower() in VID_FORMATS] From 8122733db9ce632f519f64b34c405c3f8cc8125f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 8 Jul 2022 14:15:28 +0200 Subject: [PATCH 2/5] Update dataloaders.py --- utils/dataloaders.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/dataloaders.py b/utils/dataloaders.py index 5ce6e8257e0d..1984b9f4359f 100755 --- a/utils/dataloaders.py +++ b/utils/dataloaders.py @@ -189,7 +189,7 @@ def __init__(self, path, img_size=640, stride=32, auto=True): elif os.path.isfile(p): files.append(p) # files else: - raise Exception(f'ERROR: {p} does not exist') + raise FileNotFoundError(f'{p} does not exist') images = [x for x in files if x.split('.')[-1].lower() in IMG_FORMATS] videos = [x for x in files if x.split('.')[-1].lower() in VID_FORMATS] From a78e1323af82c5568688767cf0c944ab9c8168c4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 8 Jul 2022 14:16:45 +0200 Subject: [PATCH 3/5] Update dataloaders.py --- utils/dataloaders.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/dataloaders.py b/utils/dataloaders.py index 1984b9f4359f..9f360fde46ff 100755 --- a/utils/dataloaders.py +++ b/utils/dataloaders.py @@ -176,7 +176,7 @@ def __iter__(self): class LoadImages: # YOLOv5 image/video dataloader, i.e. `python detect.py --source image.jpg/vid.mp4` def __init__(self, path, img_size=640, stride=32, auto=True): - if isinstance(path, list): + if isinstance(path, (list, tuple)): paths = [str(Path(p).resolve()) for p in path] # list of paths else: paths = [str(Path(path).resolve())] # os-agnostic absolute path From 0b1dfb1fa49fe2a6cb1a26b00594d36eae17ac50 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 8 Jul 2022 14:23:13 +0200 Subject: [PATCH 4/5] Simplify/refactor PR --- utils/dataloaders.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/utils/dataloaders.py b/utils/dataloaders.py index 9f360fde46ff..3bef540ee735 100755 --- a/utils/dataloaders.py +++ b/utils/dataloaders.py @@ -176,12 +176,9 @@ def __iter__(self): class LoadImages: # YOLOv5 image/video dataloader, i.e. `python detect.py --source image.jpg/vid.mp4` def __init__(self, path, img_size=640, stride=32, auto=True): - if isinstance(path, (list, tuple)): - paths = [str(Path(p).resolve()) for p in path] # list of paths - else: - paths = [str(Path(path).resolve())] # os-agnostic absolute path files = [] - for p in sorted(paths): + for p in sorted(path) if isinstance(path, (list, tuple)) else [path]: + p = str(Path(p).resolve()) if '*' in p: files.extend(sorted(glob.glob(p, recursive=True))) # glob elif os.path.isdir(p): From 7e6b78576d2679659d70c1da0240235dc387c745 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 8 Jul 2022 14:26:16 +0200 Subject: [PATCH 5/5] Update dataloaders.py --- utils/dataloaders.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/dataloaders.py b/utils/dataloaders.py index 3bef540ee735..4f1c98fd880d 100755 --- a/utils/dataloaders.py +++ b/utils/dataloaders.py @@ -439,7 +439,7 @@ def __init__(self, f += [x.replace('./', parent) if x.startswith('./') else x for x in t] # local to global path # f += [p.parent / x.lstrip(os.sep) for x in t] # local to global path (pathlib) else: - raise Exception(f'{prefix}{p} does not exist') + raise FileNotFoundError(f'{prefix}{p} does not exist') self.im_files = sorted(x.replace('/', os.sep) for x in f if x.split('.')[-1].lower() in IMG_FORMATS) # self.img_files = sorted([x for x in f if x.suffix[1:].lower() in IMG_FORMATS]) # pathlib assert self.im_files, f'{prefix}No images found'