Fix ROI training batch launcher
This commit is contained in:
parent
36f6389d22
commit
6a3754421b
@ -1,92 +1,130 @@
|
||||
@echo off
|
||||
setlocal
|
||||
chcp 65001 >nul
|
||||
cls
|
||||
|
||||
set "REPO_DIR=%~dp0"
|
||||
for %%I in ("%~dp0.") do set "REPO_DIR=%%~fI"
|
||||
pushd "%REPO_DIR%"
|
||||
|
||||
set "YOLO_LAUNCHER="
|
||||
set "YOLO_MODE="
|
||||
where yolo >nul 2>nul
|
||||
if %ERRORLEVEL% equ 0 set "YOLO_LAUNCHER=yolo"
|
||||
if %ERRORLEVEL% equ 0 goto launcher_cli
|
||||
|
||||
if not defined YOLO_LAUNCHER (
|
||||
py -3.11 -c "import ultralytics" >nul 2>nul
|
||||
if %ERRORLEVEL% equ 0 set "YOLO_LAUNCHER=py -3.11 -m ultralytics"
|
||||
)
|
||||
py -3.11 -c "import ultralytics" >nul 2>nul
|
||||
if %ERRORLEVEL% equ 0 goto launcher_py
|
||||
|
||||
if not defined YOLO_LAUNCHER (
|
||||
python -c "import ultralytics" >nul 2>nul
|
||||
if %ERRORLEVEL% equ 0 set "YOLO_LAUNCHER=python -m ultralytics"
|
||||
)
|
||||
python -c "import ultralytics" >nul 2>nul
|
||||
if %ERRORLEVEL% equ 0 goto launcher_python
|
||||
|
||||
if not defined YOLO_LAUNCHER (
|
||||
echo [错误] 未找到可用的 Ultralytics 启动方式
|
||||
echo.
|
||||
echo 请先确保满足以下任一条件:
|
||||
echo 1. yolo 命令已加入 PATH
|
||||
echo 2. py -3.11 可运行并已安装 ultralytics
|
||||
echo 3. python 可运行并已安装 ultralytics
|
||||
popd
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
set "DATASET=%REPO_DIR%datasets\shoe-roi-mix\data.yaml"
|
||||
|
||||
if not exist "%DATASET%" (
|
||||
echo [错误] 找不到 ROI 数据集配置: %DATASET%
|
||||
echo.
|
||||
echo 请先构建 ROI 数据集:
|
||||
echo python "%REPO_DIR%09_build_roi_shoe_dataset.py" --clean
|
||||
popd
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo ============================================================
|
||||
echo 训练鞋子 ROI 检测模型 (YOLOv8s + 640x640)
|
||||
echo ============================================================
|
||||
echo.
|
||||
echo [信息] 数据集: %DATASET%
|
||||
echo [信息] 模型: yolov8s.pt
|
||||
echo [ERROR] No usable Ultralytics launcher was found.
|
||||
echo.
|
||||
echo Make sure one of the following works:
|
||||
echo 1. yolo is in PATH
|
||||
echo 2. py -3.11 can import ultralytics
|
||||
echo 3. python can import ultralytics
|
||||
goto fail
|
||||
|
||||
:launcher_cli
|
||||
set "YOLO_MODE=cli"
|
||||
goto launcher_done
|
||||
|
||||
:launcher_py
|
||||
set "YOLO_MODE=py"
|
||||
goto launcher_done
|
||||
|
||||
:launcher_python
|
||||
set "YOLO_MODE=python"
|
||||
goto launcher_done
|
||||
|
||||
:launcher_done
|
||||
set "DATASET=%REPO_DIR%\datasets\shoe-roi-mix\data.yaml"
|
||||
set "MODEL=yolov8s.pt"
|
||||
set "EPOCHS=150"
|
||||
set "IMGSZ=640"
|
||||
set "BATCH=16"
|
||||
set "PROJECT=%REPO_DIR%runs\roi_yolov8s_640"
|
||||
set "PROJECT=%REPO_DIR%\runs\roi_yolov8s_640"
|
||||
set "RUN_NAME=train_roi"
|
||||
|
||||
echo 训练参数:
|
||||
echo - Epochs: %EPOCHS%
|
||||
echo - Image Size: %IMGSZ%x%IMGSZ%
|
||||
echo - Batch Size: %BATCH%
|
||||
echo - Device: GPU (cuda:0)
|
||||
echo - Project: %PROJECT%
|
||||
echo - Run Name: %RUN_NAME% ^(已存在时会自动递增,不覆盖旧模型^)
|
||||
echo.
|
||||
if defined DATASET_OVERRIDE set "DATASET=%DATASET_OVERRIDE%"
|
||||
if defined MODEL_OVERRIDE set "MODEL=%MODEL_OVERRIDE%"
|
||||
if defined EPOCHS_OVERRIDE set "EPOCHS=%EPOCHS_OVERRIDE%"
|
||||
if defined IMGSZ_OVERRIDE set "IMGSZ=%IMGSZ_OVERRIDE%"
|
||||
if defined BATCH_OVERRIDE set "BATCH=%BATCH_OVERRIDE%"
|
||||
if defined PROJECT_OVERRIDE set "PROJECT=%PROJECT_OVERRIDE%"
|
||||
if defined RUN_NAME_OVERRIDE set "RUN_NAME=%RUN_NAME_OVERRIDE%"
|
||||
|
||||
echo ============================================================
|
||||
echo 开始训练
|
||||
echo ============================================================
|
||||
echo.
|
||||
|
||||
call %YOLO_LAUNCHER% detect train data="%DATASET%" model="yolov8s.pt" epochs=%EPOCHS% imgsz=%IMGSZ% batch=%BATCH% device=0 project="%PROJECT%" name="%RUN_NAME%"
|
||||
|
||||
if %ERRORLEVEL% neq 0 (
|
||||
if not exist "%DATASET%" (
|
||||
echo [ERROR] ROI dataset yaml not found: %DATASET%
|
||||
echo.
|
||||
echo [错误] 训练失败!
|
||||
popd
|
||||
pause
|
||||
exit /b 1
|
||||
echo Build the ROI dataset first:
|
||||
echo python "%REPO_DIR%\09_build_roi_shoe_dataset.py" --clean
|
||||
goto fail
|
||||
)
|
||||
|
||||
echo.
|
||||
echo ============================================================
|
||||
echo 训练完成!
|
||||
echo Train ROI Shoe Detector ^(YOLOv8s + 640x640^)
|
||||
echo ============================================================
|
||||
echo.
|
||||
echo 模型输出目录: %PROJECT%
|
||||
echo [INFO] Repo: %REPO_DIR%
|
||||
echo [INFO] Dataset: %DATASET%
|
||||
echo [INFO] Model: %MODEL%
|
||||
echo [INFO] Launcher: %YOLO_MODE%
|
||||
echo.
|
||||
echo Training params:
|
||||
echo Epochs: %EPOCHS%
|
||||
echo Image Size: %IMGSZ%x%IMGSZ%
|
||||
echo Batch Size: %BATCH%
|
||||
echo Device: GPU ^(cuda:0^)
|
||||
echo Project: %PROJECT%
|
||||
echo Run Name: %RUN_NAME%
|
||||
echo.
|
||||
|
||||
if defined DRY_RUN (
|
||||
echo [INFO] DRY_RUN is set. Exiting before training.
|
||||
goto success
|
||||
)
|
||||
|
||||
if "%YOLO_MODE%"=="cli" goto run_cli
|
||||
if "%YOLO_MODE%"=="py" goto run_py
|
||||
if "%YOLO_MODE%"=="python" goto run_python
|
||||
|
||||
echo [ERROR] Internal launcher selection error.
|
||||
goto fail
|
||||
|
||||
:run_cli
|
||||
yolo detect train data="%DATASET%" model="%MODEL%" epochs=%EPOCHS% imgsz=%IMGSZ% batch=%BATCH% device=0 project="%PROJECT%" name="%RUN_NAME%"
|
||||
goto check_result
|
||||
|
||||
:run_py
|
||||
py -3.11 -m ultralytics detect train data="%DATASET%" model="%MODEL%" epochs=%EPOCHS% imgsz=%IMGSZ% batch=%BATCH% device=0 project="%PROJECT%" name="%RUN_NAME%"
|
||||
goto check_result
|
||||
|
||||
:run_python
|
||||
python -m ultralytics detect train data="%DATASET%" model="%MODEL%" epochs=%EPOCHS% imgsz=%IMGSZ% batch=%BATCH% device=0 project="%PROJECT%" name="%RUN_NAME%"
|
||||
goto check_result
|
||||
|
||||
:check_result
|
||||
if %ERRORLEVEL% neq 0 (
|
||||
echo.
|
||||
echo [ERROR] Training failed.
|
||||
goto fail
|
||||
)
|
||||
|
||||
:success
|
||||
echo.
|
||||
echo ============================================================
|
||||
echo Training Complete
|
||||
echo ============================================================
|
||||
echo.
|
||||
echo Output project: %PROJECT%
|
||||
echo.
|
||||
popd
|
||||
endlocal
|
||||
exit /b 0
|
||||
|
||||
:fail
|
||||
echo.
|
||||
popd
|
||||
pause
|
||||
endlocal
|
||||
exit /b 1
|
||||
|
||||
Loading…
Reference in New Issue
Block a user