Resolve dataset paths (#6489)
Browse files- utils/general.py +5 -2
utils/general.py
CHANGED
@@ -394,12 +394,15 @@ def check_dataset(data, autodownload=True):
|
|
394 |
with open(data, errors='ignore') as f:
|
395 |
data = yaml.safe_load(f) # dictionary
|
396 |
|
397 |
-
#
|
398 |
-
path = extract_dir or
|
|
|
|
|
399 |
for k in 'train', 'val', 'test':
|
400 |
if data.get(k): # prepend path
|
401 |
data[k] = str(path / data[k]) if isinstance(data[k], str) else [str(path / x) for x in data[k]]
|
402 |
|
|
|
403 |
assert 'nc' in data, "Dataset 'nc' key missing."
|
404 |
if 'names' not in data:
|
405 |
data['names'] = [f'class{i}' for i in range(data['nc'])] # assign class names if missing
|
|
|
394 |
with open(data, errors='ignore') as f:
|
395 |
data = yaml.safe_load(f) # dictionary
|
396 |
|
397 |
+
# Resolve paths
|
398 |
+
path = Path(extract_dir or data.get('path') or '') # optional 'path' default to '.'
|
399 |
+
if not path.is_absolute():
|
400 |
+
path = (ROOT / path).resolve()
|
401 |
for k in 'train', 'val', 'test':
|
402 |
if data.get(k): # prepend path
|
403 |
data[k] = str(path / data[k]) if isinstance(data[k], str) else [str(path / x) for x in data[k]]
|
404 |
|
405 |
+
# Parse yaml
|
406 |
assert 'nc' in data, "Dataset 'nc' key missing."
|
407 |
if 'names' not in data:
|
408 |
data['names'] = [f'class{i}' for i in range(data['nc'])] # assign class names if missing
|