Compare commits

...

2 Commits

Author SHA1 Message Date
da951f4218 Update download_resource.bat 2025-02-17 00:17:01 +08:00
72f7e19d6b Update download_resource.bat 2025-02-17 00:09:45 +08:00

View File

@ -1,104 +1,114 @@
@echo off @echo off
setlocal enabledelayedexpansion chcp 65001 >nul
setlocal EnableDelayedExpansion
SET PROJECT_DIR=%~dp0 REM 请确保本文件以 UTF-8 带 BOM 编码保存
cd %PROJECT_DIR%
REM 定义文件路径 set "PROJECT_DIR=%~dp0"
SET "NEURAL_HAIRCUT_FOLDER_PATH=resource\NeuralHaircut" cd "%PROJECT_DIR%"
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 定义模型文件的路径
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 正在检查已有模型文件... echo 正在检查已有模型文件...
SET MISSING_FILES=0 set MISSING_FILES=0
SET /A TOTAL_FILES=7 set /A TOTAL_FILES=7
SET /A EXISTING_FILES=0 set /A EXISTING_FILES=0
SET MISSING_LIST= 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模型已存在 echo [√] Neural Haircut Diffusion Prior模型已存在
SET /A EXISTING_FILES+=1 set /A EXISTING_FILES+=1
) ELSE ( ) else (
echo [×] 缺少Neural Haircut Diffusion Prior模型 echo [×] 缺少Neural Haircut Diffusion Prior模型
SET /A MISSING_FILES+=1 set /A MISSING_FILES+=1
SET MISSING_LIST=!MISSING_LIST!Neural Haircut Diffusion Prior, 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模型已存在 echo [√] Neural Haircut Strand Prior模型已存在
SET /A EXISTING_FILES+=1 set /A EXISTING_FILES+=1
) ELSE ( ) else (
echo [×] 缺少Neural Haircut Strand Prior模型 echo [×] 缺少Neural Haircut Strand Prior模型
SET /A MISSING_FILES+=1 set /A MISSING_FILES+=1
SET MISSING_LIST=!MISSING_LIST!Neural Haircut Strand Prior, set "MISSING_LIST=!MISSING_LIST!Neural Haircut Strand Prior, "
) )
IF EXIST "%PIXIE_PATH%" ( if exist "%PIXIE_PATH%" (
echo [√] PIXIE模型已存在 echo [√] PIXIE模型已存在
SET /A EXISTING_FILES+=1 set /A EXISTING_FILES+=1
) ELSE ( ) else (
echo [×] 缺少PIXIE模型 echo [×] 缺少PIXIE模型
SET /A MISSING_FILES+=1 set /A MISSING_FILES+=1
SET MISSING_LIST=!MISSING_LIST!PIXIE, set "MISSING_LIST=!MISSING_LIST!PIXIE, "
) )
IF EXIST "%SAM_PATH%" ( if exist "%SAM_PATH%" (
echo [√] SAM模型已存在 echo [√] SAM模型已存在
SET /A EXISTING_FILES+=1 set /A EXISTING_FILES+=1
) ELSE ( ) else (
echo [×] 缺少SAM模型 echo [×] 缺少SAM模型
SET /A MISSING_FILES+=1 set /A MISSING_FILES+=1
SET MISSING_LIST=!MISSING_LIST!SAM, set "MISSING_LIST=!MISSING_LIST!SAM, "
) )
IF EXIST "%DINO_PATH%" ( if exist "%DINO_PATH%" (
echo [√] GroundingDINO模型已存在 echo [√] GroundingDINO模型已存在
SET /A EXISTING_FILES+=1 set /A EXISTING_FILES+=1
) ELSE ( ) else (
echo [×] 缺少GroundingDINO模型 echo [×] 缺少GroundingDINO模型
SET /A MISSING_FILES+=1 set /A MISSING_FILES+=1
SET MISSING_LIST=!MISSING_LIST!GroundingDINO, set "MISSING_LIST=!MISSING_LIST!GroundingDINO, "
) )
IF EXIST "%MATTE_PATH%" ( if exist "%MATTE_PATH%" (
echo [√] Matte-Anything模型已存在 echo [√] Matte-Anything模型已存在
SET /A EXISTING_FILES+=1 set /A EXISTING_FILES+=1
) ELSE ( ) else (
echo [×] 缺少Matte-Anything模型 echo [×] 缺少Matte-Anything模型
SET /A MISSING_FILES+=1 set /A MISSING_FILES+=1
SET MISSING_LIST=!MISSING_LIST!Matte-Anything, set "MISSING_LIST=!MISSING_LIST!Matte-Anything, "
) )
IF EXIST "%OPENPOSE_PATH%" ( if exist "%OPENPOSE_PATH%" (
echo [√] OpenPose模型已存在 echo [√] OpenPose模型已存在
SET /A EXISTING_FILES+=1 set /A EXISTING_FILES+=1
) ELSE ( ) else (
echo [×] 缺少OpenPose模型 echo [×] 缺少OpenPose模型
SET /A MISSING_FILES+=1 set /A MISSING_FILES+=1
SET MISSING_LIST=!MISSING_LIST!OpenPose, set "MISSING_LIST=!MISSING_LIST!OpenPose, "
) )
echo. echo.
echo 已存在 %EXISTING_FILES%/%TOTAL_FILES% 个模型文件 echo 已存在 %EXISTING_FILES%/%TOTAL_FILES% 个模型文件
IF %MISSING_FILES% GTR 0 ( if !MISSING_FILES! GTR 0 (
echo 需要下载 %MISSING_FILES% 个模型文件 echo 需要下载 !MISSING_FILES! 个模型文件
echo 缺少的模型: !MISSING_LIST:~0,-2! set "TMP=!MISSING_LIST!"
set "TMP=!TMP:~0,-2!"
echo 缺少的模型: !TMP!
echo. echo.
echo ************************************************************ echo ************************************************************
echo * 开始下载所需资源文件 * echo * 开始下载所需资源文件 *
echo * 下载时间取决于您的网络连接速度 * echo * 下载时间取决于您的网络连接速度 *
echo * 请耐心等待... * echo * 请耐心等待... *
echo ************************************************************ echo ************************************************************
) ELSE ( ) else (
echo 所有模型文件已存在,无需下载 echo 所有模型文件已存在,无需下载
exit /b 0 exit /b 0
) )
REM ========================================================================
REM 2. 基础环境配置:检查 Python、更新 pip、安装 gdown、检查 7-Zip
REM ========================================================================
echo ======================================= 基础环境配置 ============================================== echo ======================================= 基础环境配置 ==============================================
echo. echo.
echo ************************************************************************************************** echo **************************************************************************************************
@ -107,29 +117,29 @@ echo * 检查Python是否安装更新pip
echo * 请耐心等待... * echo * 请耐心等待... *
echo ************************************************************************************************** echo **************************************************************************************************
echo. echo.
REM 检查 Python 是否安装 REM 检查 Python 是否安装
python --version >nul 2>nul python --version >nul 2>nul
IF %ERRORLEVEL% NEQ 0 ( IF %ERRORLEVEL% NEQ 0 (
echo 错误未找到Python echo "错误未找到Python"
echo 请安装Python并将其添加到系统环境变量PATH中 echo "请安装Python并将其添加到系统环境变量PATH中"
exit /b 1 exit /b 1
) )
REM 更新 pip REM 更新 pip
python -m pip install --upgrade pip python -m pip install --upgrade pip
REM 检查gdown是否已安装 REM 检查是否已安装 gdown
python -c "import gdown" >nul 2>nul python -c "import gdown" >nul 2>nul
IF %ERRORLEVEL% EQU 0 ( IF %ERRORLEVEL% EQU 0 (
echo gdown已安装跳过安装步骤... echo gdown已安装跳过安装步骤...
) ELSE ( ) ELSE (
REM 安装gdown echo "正在安装gdown..."
echo 正在安装gdown...
python -m pip install --user gdown --upgrade python -m pip install --user gdown --upgrade
python -m pip install --user requests --upgrade python -m pip install --user requests --upgrade
IF %ERRORLEVEL% NEQ 0 ( IF %ERRORLEVEL% NEQ 0 (
echo 错误gdown安装失败 echo "错误gdown安装失败"
echo 请检查网络连接后重试 echo "请检查网络连接后重试"
exit /b 1 exit /b 1
) )
) )
@ -143,24 +153,26 @@ set PATH=%PYTHON_SCRIPTS_PATH%;%PYTHON_USER_SCRIPTS%;%PATH%
REM 检查7-Zip是否安装 REM 检查7-Zip是否安装
where 7z >nul 2>nul where 7z >nul 2>nul
IF %ERRORLEVEL% NEQ 0 ( IF %ERRORLEVEL% NEQ 0 (
echo 错误未找到7-Zip echo "错误未找到7-Zip"
echo 请从 https://7-zip.org/ 下载并安装7-Zip echo "请从 https://7-zip.org/ 下载并安装7-Zip"
echo 并将其添加到系统环境变量PATH中 echo "并将其添加到系统环境变量PATH中"
exit /b 1 exit /b 1
) )
REM 验证 gdown 是否可用 REM 验证 gdown 是否可用
echo 正在验证gdown安装... echo 正在验证gdown安装...
python -c "import gdown" >nul 2>nul python -c "import gdown" >nul 2>nul
IF %ERRORLEVEL% NEQ 0 ( IF %ERRORLEVEL% NEQ 0 (
echo 错误gdown安装验证失败 echo "错误gdown安装验证失败"
echo 请重新运行脚本 echo "请重新运行脚本"
exit /b 1 exit /b 1
) )
echo gdown安装成功 echo "gdown安装成功"
echo. echo.
REM ========================================================================
REM 3. 根据验证结果下载缺失的模型文件
REM ========================================================================
echo ======================================= 开始下载所需资源文件 ======================================= echo ======================================= 开始下载所需资源文件 =======================================
echo. echo.
echo ************************************************************************************************** echo **************************************************************************************************
@ -170,97 +182,124 @@ echo * 请耐心等待...
echo ************************************************************************************************** echo **************************************************************************************************
echo. echo.
REM 根据之前的验证结果下载缺失的模型文件 REM 下载 Neural Haircut Diffusion Prior 模型
IF NOT EXIST "%NEURAL_HAIRCUT_FOLDER_PATH%\pretrained_models\diffusion_prior\dif_ckpt.pt" ( if not exist "%NEURAL_HAIRCUT_FOLDER_PATH%\pretrained_models\diffusion_prior\dif_ckpt.pt" (
echo [1/!MISSING_FILES!] 正在下载Neural Haircut Diffusion Prior模型... echo [1/%MISSING_FILES%] 正在下载 Neural Haircut Diffusion Prior模型...
mkdir %PROJECT_DIR%/resource/NeuralHaircut/pretrained_models/diffusion_prior mkdir "%PROJECT_DIR%\resource\NeuralHaircut\pretrained_models\diffusion_prior" >nul 2>&1
cd %PROJECT_DIR%/resource/NeuralHaircut cd "%PROJECT_DIR%\resource\NeuralHaircut"
python -m gdown --folder "https://drive.google.com/drive/folders/1TCdJ0CKR3Q6LviovndOkJaKm8S1T9F_8" 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模型下载失败 echo 错误Neural Haircut Diffusion Prior模型下载失败
exit /b 1 exit /b 1
) )
) )
IF NOT EXIST "%NEURAL_HAIRCUT_FOLDER_PATH%\pretrained_models\strand_prior\strand_ckpt.pt" ( REM 下载 Neural Haircut Strand Prior 模型
echo [2/!MISSING_FILES!] 正在下载Neural Haircut Strand Prior模型... if not exist "%NEURAL_HAIRCUT_FOLDER_PATH%\pretrained_models\strand_prior\strand_ckpt.pt" (
mkdir %PROJECT_DIR%/resource/NeuralHaircut/pretrained_models/strand_prior echo [2/%MISSING_FILES%] 正在下载 Neural Haircut Strand Prior模型...
cd %PROJECT_DIR%/resource/NeuralHaircut 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" 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模型下载失败 echo 错误Neural Haircut Strand Prior模型下载失败
exit /b 1 exit /b 1
) )
) )
IF NOT EXIST "%PIXIE_PATH%" ( REM 下载 PIXIE 模型
echo [3/!MISSING_FILES!] 正在下载PIXIE模型... if not exist "%PIXIE_PATH%" (
mkdir %PROJECT_DIR%/resource/NeuralHaircut/PIXIE echo [3/%MISSING_FILES%] 正在下载 PIXIE模型...
cd %PROJECT_DIR%/resource/NeuralHaircut/PIXIE mkdir "%PROJECT_DIR%\resource\NeuralHaircut\PIXIE" >nul 2>&1
python -m gdown "1mPcGu62YPc4MdkT8FFiOCP629xsENHZf" && tar -xvzf pixie_data.tar.gz ./ && rm pixie_data.tar.gz cd "%PROJECT_DIR%\resource\NeuralHaircut\PIXIE"
cd %PROJECT_DIR% python -m gdown "1mPcGu62YPc4MdkT8FFiOCP629xsENHZf" && tar -xvzf pixie_data.tar.gz && rm pixie_data.tar.gz
IF NOT EXIST "%PIXIE_PATH%" ( cd "%PROJECT_DIR%"
if not exist "%PIXIE_PATH%" (
echo 错误PIXIE模型下载失败 echo 错误PIXIE模型下载失败
exit /b 1 exit /b 1
) )
) )
IF NOT EXIST "%HYPERIQA_PATH%" ( REM 下载 hyperIQA 模型
echo [4/!MISSING_FILES!] 正在下载hyperIQA模型... if not exist "%HYPERIQA_PATH%" (
mkdir %PROJECT_DIR%/resource/hyperIQA/pretrained echo [4/%MISSING_FILES%] 正在下载 hyperIQA模型...
cd %PROJECT_DIR%/resource/hyperIQA/pretrained mkdir "%PROJECT_DIR%\resource\hyperIQA\pretrained" >nul 2>&1
cd "%PROJECT_DIR%\resource\hyperIQA\pretrained"
python -m gdown "1OOUmnbvpGea0LIGpIWEbOyxfWx6UCiiE" python -m gdown "1OOUmnbvpGea0LIGpIWEbOyxfWx6UCiiE"
IF NOT EXIST "%HYPERIQA_PATH%" ( cd "%PROJECT_DIR%"
if not exist "%HYPERIQA_PATH%" (
echo 错误hyperIQA模型下载失败 echo 错误hyperIQA模型下载失败
exit /b 1 exit /b 1
) )
cd %PROJECT_DIR%
) )
IF NOT EXIST "%SAM_PATH%" ( REM 下载 SAM 模型
echo [5/!MISSING_FILES!] 正在下载SAM模型... if not exist "%SAM_PATH%" (
mkdir %PROJECT_DIR%/resource/Matte-Anything/pretrained echo [5/%MISSING_FILES%] 正在下载 SAM模型...
cd %PROJECT_DIR%/resource/Matte-Anything/pretrained 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" 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模型下载失败 echo 错误SAM模型下载失败
exit /b 1 exit /b 1
) )
) )
IF NOT EXIST "%DINO_PATH%" ( REM 下载 GroundingDINO 模型
echo [6/!MISSING_FILES!] 正在下载GroundingDINO模型... if not exist "%DINO_PATH%" (
cd %PROJECT_DIR%/resource/Matte-Anything/pretrained 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" 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模型下载失败 echo 错误GroundingDINO模型下载失败
exit /b 1 exit /b 1
) )
) )
IF NOT EXIST "%MATTE_PATH%" ( REM 下载 Matte-Anything 模型
echo [7/!MISSING_FILES!] 正在下载Matte-Anything模型... if not exist "%MATTE_PATH%" (
cd %PROJECT_DIR%/resource/Matte-Anything/pretrained echo [7/%MISSING_FILES%] 正在下载 Matte-Anything模型...
cd "%PROJECT_DIR%\resource\Matte-Anything\pretrained"
python -m gdown "1d97oKuITCeWgai2Tf3iNilt6rMSSYzkW" python -m gdown "1d97oKuITCeWgai2Tf3iNilt6rMSSYzkW"
IF NOT EXIST "%MATTE_PATH%" ( cd "%PROJECT_DIR%"
if not exist "%MATTE_PATH%" (
echo 错误Matte-Anything模型下载失败 echo 错误Matte-Anything模型下载失败
exit /b 1 exit /b 1
) )
cd %PROJECT_DIR%
) )
IF NOT EXIST "%OPENPOSE_PATH%" ( REM 下载 OpenPose 模型
echo [8/!MISSING_FILES!] 正在下载OpenPose模型... if not exist "%OPENPOSE_PATH%" (
mkdir %PROJECT_DIR%/resource/openpose/models/pose/coco echo [8/%MISSING_FILES%] 正在下载 OpenPose模型...
cd %PROJECT_DIR%/resource/openpose/models/pose/coco 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 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模型下载失败 echo 错误OpenPose模型下载失败
exit /b 1 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