WOP
This commit is contained in:
@@ -174,20 +174,47 @@ class AnnotationGenerator:
|
||||
output_path: str | Path,
|
||||
train_path: str = 'train/images',
|
||||
val_path: str = 'val/images',
|
||||
test_path: str = 'test/images'
|
||||
test_path: str = 'test/images',
|
||||
use_wsl_paths: bool | None = None
|
||||
) -> None:
|
||||
"""Generate YOLO dataset YAML configuration."""
|
||||
"""
|
||||
Generate YOLO dataset YAML configuration.
|
||||
|
||||
Args:
|
||||
output_path: Path to output YAML file
|
||||
train_path: Relative path to training images
|
||||
val_path: Relative path to validation images
|
||||
test_path: Relative path to test images
|
||||
use_wsl_paths: If True, convert Windows paths to WSL format.
|
||||
If None, auto-detect based on environment.
|
||||
"""
|
||||
import os
|
||||
import platform
|
||||
|
||||
output_path = Path(output_path)
|
||||
output_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
# Use absolute path for WSL compatibility
|
||||
dataset_dir = output_path.parent.absolute()
|
||||
# Convert Windows path to WSL path if needed
|
||||
dataset_path_str = str(dataset_dir).replace('\\', '/')
|
||||
if dataset_path_str[1] == ':':
|
||||
# Windows path like C:/... -> /mnt/c/...
|
||||
drive = dataset_path_str[0].lower()
|
||||
dataset_path_str = f"/mnt/{drive}{dataset_path_str[2:]}"
|
||||
dataset_path_str = str(dataset_dir)
|
||||
|
||||
# Auto-detect WSL environment
|
||||
if use_wsl_paths is None:
|
||||
# Check if running inside WSL
|
||||
is_wsl = 'microsoft' in platform.uname().release.lower() if platform.system() == 'Linux' else False
|
||||
# Check WSL_DISTRO_NAME environment variable (set when running in WSL)
|
||||
is_wsl = is_wsl or os.environ.get('WSL_DISTRO_NAME') is not None
|
||||
use_wsl_paths = is_wsl
|
||||
|
||||
# Convert path format based on environment
|
||||
if use_wsl_paths:
|
||||
# Running in WSL: convert Windows paths to /mnt/c/... format
|
||||
dataset_path_str = dataset_path_str.replace('\\', '/')
|
||||
if len(dataset_path_str) > 1 and dataset_path_str[1] == ':':
|
||||
drive = dataset_path_str[0].lower()
|
||||
dataset_path_str = f"/mnt/{drive}{dataset_path_str[2:]}"
|
||||
elif platform.system() == 'Windows':
|
||||
# Running on native Windows: use forward slashes for YOLO compatibility
|
||||
dataset_path_str = dataset_path_str.replace('\\', '/')
|
||||
|
||||
config = f"""# Invoice Field Detection Dataset
|
||||
path: {dataset_path_str}
|
||||
|
||||
Reference in New Issue
Block a user