From 72f7e19d6b82873d9493c05f4447b0f87064fb46 Mon Sep 17 00:00:00 2001 From: Jeffreytsai1004 Date: Mon, 17 Feb 2025 00:09:45 +0800 Subject: [PATCH] Update download_resource.bat --- download_resource.bat | 270 ++++++++++++++++++++++++------------------ 1 file changed, 154 insertions(+), 116 deletions(-) diff --git a/download_resource.bat b/download_resource.bat index fbe2952..5cc2455 100644 --- a/download_resource.bat +++ b/download_resource.bat @@ -1,135 +1,144 @@ @echo off -setlocal enabledelayedexpansion +chcp 65001 >nul +setlocal EnableDelayedExpansion -SET PROJECT_DIR=%~dp0 -cd %PROJECT_DIR% +REM 请确保本文件以 UTF-8 带 BOM 编码保存 -REM 定义文件路径 -SET "NEURAL_HAIRCUT_FOLDER_PATH=resource\NeuralHaircut" -SET "PIXIE_PATH=resource\NeuralHaircut\PIXIE\pixie_data\pixie_data" -SET "MATTE_PATH=resource\Matte-Anything\model.pth" -SET "SAM_PATH=resource\Matte-Anything\sam_vit_h_4b8939.pth" -SET "DINO_PATH=resource\Matte-Anything\groundingdino_swint_ogc.pth" -SET "OPENPOSE_PATH=resource\openpose\models\pose\coco\pose_iter_584000.caffemodel" -SET "HYPERIQA_PATH=resource\hyperIQA\pretrained\hyperIQA.pth" +set "PROJECT_DIR=%~dp0" +cd "%PROJECT_DIR%" -REM 检查已有模型文件 +REM 定义模型文件的路径 +set "NEURAL_HAIRCUT_FOLDER_PATH=resource\NeuralHaircut" +set "PIXIE_PATH=resource\NeuralHaircut\PIXIE\pixie_data\pixie_data" +set "MATTE_PATH=resource\Matte-Anything\model.pth" +set "SAM_PATH=resource\Matte-Anything\sam_vit_h_4b8939.pth" +set "DINO_PATH=resource\Matte-Anything\groundingdino_swint_ogc.pth" +set "OPENPOSE_PATH=resource\openpose\models\pose\coco\pose_iter_584000.caffemodel" +set "HYPERIQA_PATH=resource\hyperIQA\pretrained\hyperIQA.pth" + +REM ======================================================================== +REM 1. 检查已有模型文件(使用 [√] 和 [×] 提示) +REM ======================================================================== echo 正在检查已有模型文件... -SET MISSING_FILES=0 -SET /A TOTAL_FILES=7 -SET /A EXISTING_FILES=0 -SET MISSING_LIST= +set MISSING_FILES=0 +set /A TOTAL_FILES=7 +set /A EXISTING_FILES=0 +set "MISSING_LIST=" -IF EXIST "%NEURAL_HAIRCUT_FOLDER_PATH%\pretrained_models\diffusion_prior\dif_ckpt.pt" ( +if exist "%NEURAL_HAIRCUT_FOLDER_PATH%\pretrained_models\diffusion_prior\dif_ckpt.pt" ( echo [√] Neural Haircut Diffusion Prior模型已存在 - SET /A EXISTING_FILES+=1 -) ELSE ( + set /A EXISTING_FILES+=1 +) else ( echo [×] 缺少Neural Haircut Diffusion Prior模型 - SET /A MISSING_FILES+=1 - SET MISSING_LIST=!MISSING_LIST!Neural Haircut Diffusion Prior, + set /A MISSING_FILES+=1 + set "MISSING_LIST=!MISSING_LIST!Neural Haircut Diffusion Prior, " ) -IF EXIST "%NEURAL_HAIRCUT_FOLDER_PATH%\pretrained_models\strand_prior\strand_ckpt.pt" ( +if exist "%NEURAL_HAIRCUT_FOLDER_PATH%\pretrained_models\strand_prior\strand_ckpt.pt" ( echo [√] Neural Haircut Strand Prior模型已存在 - SET /A EXISTING_FILES+=1 -) ELSE ( + set /A EXISTING_FILES+=1 +) else ( echo [×] 缺少Neural Haircut Strand Prior模型 - SET /A MISSING_FILES+=1 - SET MISSING_LIST=!MISSING_LIST!Neural Haircut Strand Prior, + set /A MISSING_FILES+=1 + set "MISSING_LIST=!MISSING_LIST!Neural Haircut Strand Prior, " ) -IF EXIST "%PIXIE_PATH%" ( +if exist "%PIXIE_PATH%" ( echo [√] PIXIE模型已存在 - SET /A EXISTING_FILES+=1 -) ELSE ( + set /A EXISTING_FILES+=1 +) else ( echo [×] 缺少PIXIE模型 - SET /A MISSING_FILES+=1 - SET MISSING_LIST=!MISSING_LIST!PIXIE, + set /A MISSING_FILES+=1 + set "MISSING_LIST=!MISSING_LIST!PIXIE, " ) -IF EXIST "%SAM_PATH%" ( +if exist "%SAM_PATH%" ( echo [√] SAM模型已存在 - SET /A EXISTING_FILES+=1 -) ELSE ( + set /A EXISTING_FILES+=1 +) else ( echo [×] 缺少SAM模型 - SET /A MISSING_FILES+=1 - SET MISSING_LIST=!MISSING_LIST!SAM, + set /A MISSING_FILES+=1 + set "MISSING_LIST=!MISSING_LIST!SAM, " ) -IF EXIST "%DINO_PATH%" ( +if exist "%DINO_PATH%" ( echo [√] GroundingDINO模型已存在 - SET /A EXISTING_FILES+=1 -) ELSE ( + set /A EXISTING_FILES+=1 +) else ( echo [×] 缺少GroundingDINO模型 - SET /A MISSING_FILES+=1 - SET MISSING_LIST=!MISSING_LIST!GroundingDINO, + set /A MISSING_FILES+=1 + set "MISSING_LIST=!MISSING_LIST!GroundingDINO, " ) -IF EXIST "%MATTE_PATH%" ( +if exist "%MATTE_PATH%" ( echo [√] Matte-Anything模型已存在 - SET /A EXISTING_FILES+=1 -) ELSE ( + set /A EXISTING_FILES+=1 +) else ( echo [×] 缺少Matte-Anything模型 - SET /A MISSING_FILES+=1 - SET MISSING_LIST=!MISSING_LIST!Matte-Anything, + set /A MISSING_FILES+=1 + set "MISSING_LIST=!MISSING_LIST!Matte-Anything, " ) -IF EXIST "%OPENPOSE_PATH%" ( +if exist "%OPENPOSE_PATH%" ( echo [√] OpenPose模型已存在 - SET /A EXISTING_FILES+=1 -) ELSE ( + set /A EXISTING_FILES+=1 +) else ( echo [×] 缺少OpenPose模型 - SET /A MISSING_FILES+=1 - SET MISSING_LIST=!MISSING_LIST!OpenPose, + set /A MISSING_FILES+=1 + set "MISSING_LIST=!MISSING_LIST!OpenPose, " ) echo. echo 已存在 %EXISTING_FILES%/%TOTAL_FILES% 个模型文件 -IF %MISSING_FILES% GTR 0 ( +if %MISSING_FILES% GTR 0 ( echo 需要下载 %MISSING_FILES% 个模型文件 - echo 缺少的模型: !MISSING_LIST:~0,-2! + call :RemoveTrailingComma "!MISSING_LIST!" + echo 缺少的模型: %result% echo. echo ************************************************************ echo * 开始下载所需资源文件 * echo * 下载时间取决于您的网络连接速度 * echo * 请耐心等待... * echo ************************************************************ -) ELSE ( +) else ( echo 所有模型文件已存在,无需下载 exit /b 0 ) +REM ======================================================================== +REM 2. 基础环境配置:检查 Python、更新 pip、安装 gdown、检查 7-Zip +REM ======================================================================== echo ======================================= 基础环境配置 ============================================== echo. echo ************************************************************************************************** echo * 基础环境配置 * -echo * 检查Python是否安装,更新pip,安装gdown * +echo * 检查Python是否安装,更新pip,安装gdown * echo * 请耐心等待... * echo ************************************************************************************************** echo. -REM 检查Python是否安装 + +REM 检查 Python 是否安装 python --version >nul 2>nul IF %ERRORLEVEL% NEQ 0 ( - echo 错误:未找到Python - echo 请安装Python并将其添加到系统环境变量PATH中 + echo "错误:未找到Python" + echo "请安装Python并将其添加到系统环境变量PATH中" exit /b 1 ) -REM 更新pip +REM 更新 pip python -m pip install --upgrade pip -REM 检查gdown是否已安装 +REM 检查是否已安装 gdown python -c "import gdown" >nul 2>nul IF %ERRORLEVEL% EQU 0 ( echo gdown已安装,跳过安装步骤... ) ELSE ( - REM 安装gdown - echo 正在安装gdown... + echo "正在安装gdown..." python -m pip install --user gdown --upgrade python -m pip install --user requests --upgrade IF %ERRORLEVEL% NEQ 0 ( - echo 错误:gdown安装失败 - echo 请检查网络连接后重试 + echo "错误:gdown安装失败" + echo "请检查网络连接后重试" exit /b 1 ) ) @@ -143,24 +152,26 @@ set PATH=%PYTHON_SCRIPTS_PATH%;%PYTHON_USER_SCRIPTS%;%PATH% REM 检查7-Zip是否安装 where 7z >nul 2>nul IF %ERRORLEVEL% NEQ 0 ( - echo 错误:未找到7-Zip - echo 请从 https://7-zip.org/ 下载并安装7-Zip - echo 并将其添加到系统环境变量PATH中 + echo "错误:未找到7-Zip" + echo "请从 https://7-zip.org/ 下载并安装7-Zip" + echo "并将其添加到系统环境变量PATH中" exit /b 1 ) - -REM 验证gdown是否可用 +REM 验证 gdown 是否可用 echo 正在验证gdown安装... python -c "import gdown" >nul 2>nul IF %ERRORLEVEL% NEQ 0 ( - echo 错误:gdown安装验证失败 - echo 请重新运行脚本 + echo "错误:gdown安装验证失败" + echo "请重新运行脚本" exit /b 1 ) -echo gdown安装成功! +echo "gdown安装成功!" echo. +REM ======================================================================== +REM 3. 根据验证结果下载缺失的模型文件 +REM ======================================================================== echo ======================================= 开始下载所需资源文件 ======================================= echo. echo ************************************************************************************************** @@ -170,97 +181,124 @@ echo * 请耐心等待... echo ************************************************************************************************** echo. -REM 根据之前的验证结果下载缺失的模型文件 -IF NOT EXIST "%NEURAL_HAIRCUT_FOLDER_PATH%\pretrained_models\diffusion_prior\dif_ckpt.pt" ( - echo [1/!MISSING_FILES!] 正在下载Neural Haircut Diffusion Prior模型... - mkdir %PROJECT_DIR%/resource/NeuralHaircut/pretrained_models/diffusion_prior - cd %PROJECT_DIR%/resource/NeuralHaircut +REM 下载 Neural Haircut Diffusion Prior 模型 +if not exist "%NEURAL_HAIRCUT_FOLDER_PATH%\pretrained_models\diffusion_prior\dif_ckpt.pt" ( + echo [1/%MISSING_FILES%] 正在下载 Neural Haircut Diffusion Prior模型... + mkdir "%PROJECT_DIR%\resource\NeuralHaircut\pretrained_models\diffusion_prior" >nul 2>&1 + cd "%PROJECT_DIR%\resource\NeuralHaircut" python -m gdown --folder "https://drive.google.com/drive/folders/1TCdJ0CKR3Q6LviovndOkJaKm8S1T9F_8" - IF NOT EXIST "%NEURAL_HAIRCUT_FOLDER_PATH%\pretrained_models\diffusion_prior\dif_ckpt.pt" ( + cd "%PROJECT_DIR%" + if not exist "%NEURAL_HAIRCUT_FOLDER_PATH%\pretrained_models\diffusion_prior\dif_ckpt.pt" ( echo 错误:Neural Haircut Diffusion Prior模型下载失败 exit /b 1 ) ) -IF NOT EXIST "%NEURAL_HAIRCUT_FOLDER_PATH%\pretrained_models\strand_prior\strand_ckpt.pt" ( - echo [2/!MISSING_FILES!] 正在下载Neural Haircut Strand Prior模型... - mkdir %PROJECT_DIR%/resource/NeuralHaircut/pretrained_models/strand_prior - cd %PROJECT_DIR%/resource/NeuralHaircut +REM 下载 Neural Haircut Strand Prior 模型 +if not exist "%NEURAL_HAIRCUT_FOLDER_PATH%\pretrained_models\strand_prior\strand_ckpt.pt" ( + echo [2/%MISSING_FILES%] 正在下载 Neural Haircut Strand Prior模型... + mkdir "%PROJECT_DIR%\resource\NeuralHaircut\pretrained_models\strand_prior" >nul 2>&1 + cd "%PROJECT_DIR%\resource\NeuralHaircut" python -m gdown --folder "https://drive.google.com/drive/folders/1TCdJ0CKR3Q6LviovndOkJaKm8S1T9F_8" - IF NOT EXIST "%NEURAL_HAIRCUT_FOLDER_PATH%\pretrained_models\strand_prior\strand_ckpt.pt" ( + cd "%PROJECT_DIR%" + if not exist "%NEURAL_HAIRCUT_FOLDER_PATH%\pretrained_models\strand_prior\strand_ckpt.pt" ( echo 错误:Neural Haircut Strand Prior模型下载失败 exit /b 1 ) ) -IF NOT EXIST "%PIXIE_PATH%" ( - echo [3/!MISSING_FILES!] 正在下载PIXIE模型... - mkdir %PROJECT_DIR%/resource/NeuralHaircut/PIXIE - cd %PROJECT_DIR%/resource/NeuralHaircut/PIXIE - python -m gdown "1mPcGu62YPc4MdkT8FFiOCP629xsENHZf" && tar -xvzf pixie_data.tar.gz ./ && rm pixie_data.tar.gz - cd %PROJECT_DIR% - IF NOT EXIST "%PIXIE_PATH%" ( +REM 下载 PIXIE 模型 +if not exist "%PIXIE_PATH%" ( + echo [3/%MISSING_FILES%] 正在下载 PIXIE模型... + mkdir "%PROJECT_DIR%\resource\NeuralHaircut\PIXIE" >nul 2>&1 + cd "%PROJECT_DIR%\resource\NeuralHaircut\PIXIE" + python -m gdown "1mPcGu62YPc4MdkT8FFiOCP629xsENHZf" && tar -xvzf pixie_data.tar.gz && rm pixie_data.tar.gz + cd "%PROJECT_DIR%" + if not exist "%PIXIE_PATH%" ( echo 错误:PIXIE模型下载失败 exit /b 1 ) ) -IF NOT EXIST "%HYPERIQA_PATH%" ( - echo [4/!MISSING_FILES!] 正在下载hyperIQA模型... - mkdir %PROJECT_DIR%/resource/hyperIQA/pretrained - cd %PROJECT_DIR%/resource/hyperIQA/pretrained +REM 下载 hyperIQA 模型 +if not exist "%HYPERIQA_PATH%" ( + echo [4/%MISSING_FILES%] 正在下载 hyperIQA模型... + mkdir "%PROJECT_DIR%\resource\hyperIQA\pretrained" >nul 2>&1 + cd "%PROJECT_DIR%\resource\hyperIQA\pretrained" python -m gdown "1OOUmnbvpGea0LIGpIWEbOyxfWx6UCiiE" - IF NOT EXIST "%HYPERIQA_PATH%" ( + cd "%PROJECT_DIR%" + if not exist "%HYPERIQA_PATH%" ( echo 错误:hyperIQA模型下载失败 exit /b 1 ) - cd %PROJECT_DIR% ) -IF NOT EXIST "%SAM_PATH%" ( - echo [5/!MISSING_FILES!] 正在下载SAM模型... - mkdir %PROJECT_DIR%/resource/Matte-Anything/pretrained - cd %PROJECT_DIR%/resource/Matte-Anything/pretrained +REM 下载 SAM 模型 +if not exist "%SAM_PATH%" ( + echo [5/%MISSING_FILES%] 正在下载 SAM模型... + mkdir "%PROJECT_DIR%\resource\Matte-Anything\pretrained" >nul 2>&1 + cd "%PROJECT_DIR%\resource\Matte-Anything\pretrained" wget "https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth" - IF NOT EXIST "%SAM_PATH%" ( + cd "%PROJECT_DIR%" + if not exist "%SAM_PATH%" ( echo 错误:SAM模型下载失败 exit /b 1 ) ) -IF NOT EXIST "%DINO_PATH%" ( - echo [6/!MISSING_FILES!] 正在下载GroundingDINO模型... - cd %PROJECT_DIR%/resource/Matte-Anything/pretrained +REM 下载 GroundingDINO 模型 +if not exist "%DINO_PATH%" ( + echo [6/%MISSING_FILES%] 正在下载 GroundingDINO模型... + cd "%PROJECT_DIR%\resource\Matte-Anything\pretrained" wget "https://github.com/IDEA-Research/GroundingDINO/releases/download/v0.1.0-alpha/groundingdino_swint_ogc.pth" - IF NOT EXIST "%DINO_PATH%" ( + cd "%PROJECT_DIR%" + if not exist "%DINO_PATH%" ( echo 错误:GroundingDINO模型下载失败 exit /b 1 ) ) -IF NOT EXIST "%MATTE_PATH%" ( - echo [7/!MISSING_FILES!] 正在下载Matte-Anything模型... - cd %PROJECT_DIR%/resource/Matte-Anything/pretrained +REM 下载 Matte-Anything 模型 +if not exist "%MATTE_PATH%" ( + echo [7/%MISSING_FILES%] 正在下载 Matte-Anything模型... + cd "%PROJECT_DIR%\resource\Matte-Anything\pretrained" python -m gdown "1d97oKuITCeWgai2Tf3iNilt6rMSSYzkW" - IF NOT EXIST "%MATTE_PATH%" ( + cd "%PROJECT_DIR%" + if not exist "%MATTE_PATH%" ( echo 错误:Matte-Anything模型下载失败 exit /b 1 ) - cd %PROJECT_DIR% ) -IF NOT EXIST "%OPENPOSE_PATH%" ( - echo [8/!MISSING_FILES!] 正在下载OpenPose模型... - mkdir %PROJECT_DIR%/resource/openpose/models/pose/coco - cd %PROJECT_DIR%/resource/openpose/models/pose/coco +REM 下载 OpenPose 模型 +if not exist "%OPENPOSE_PATH%" ( + echo [8/%MISSING_FILES%] 正在下载 OpenPose模型... + mkdir "%PROJECT_DIR%\resource\openpose\models\pose\coco" >nul 2>&1 + cd "%PROJECT_DIR%\resource\openpose\models\pose\coco" python -m gdown "1Yn03cKKfVOq4qXmgBMQD20UMRRRkd_tV" && tar -xvzf models.tar.gz && rm models.tar.gz - IF NOT EXIST "%OPENPOSE_PATH%" ( + cd "%PROJECT_DIR%" + if not exist "%OPENPOSE_PATH%" ( echo 错误:OpenPose模型下载失败 exit /b 1 ) - cd %PROJECT_DIR% ) +REM 所有模型下载并验证完成 +echo. +echo 所有模型文件已下载并验证成功! +pause + +:RemoveTrailingComma +REM 此子程序移除传入字符串末尾多余的“, ”(逗号和空格) +set "str=%~1" +:RemoveTrailingLoop +if "%str:~-2%"==", " ( + set "str=%str:~0,-2%" + goto RemoveTrailingLoop +) +set "result=%str%" +goto :eof +