GaussianHaircut/download_resource.bat

324 lines
11 KiB
Batchfile
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@echo off
chcp 65001 >nul
setlocal EnableDelayedExpansion
REM 请确保本文件以 UTF-8 带 BOM 编码保存
set "PROJECT_DIR=%~dp0"
cd "%PROJECT_DIR%"
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="
if exist "%NEURAL_HAIRCUT_FOLDER_PATH%\pretrained_models\diffusion_prior\dif_ckpt.pt" (
echo [√] Neural Haircut Diffusion Prior模型已存在
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, "
)
if exist "%NEURAL_HAIRCUT_FOLDER_PATH%\pretrained_models\strand_prior\strand_ckpt.pt" (
echo [√] Neural Haircut Strand Prior模型已存在
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, "
)
if exist "%PIXIE_PATH%" (
echo [√] PIXIE模型已存在
set /A EXISTING_FILES+=1
) else (
echo [×] 缺少PIXIE模型
set /A MISSING_FILES+=1
set "MISSING_LIST=!MISSING_LIST!PIXIE, "
)
if exist "%SAM_PATH%" (
echo [√] SAM模型已存在
set /A EXISTING_FILES+=1
) else (
echo [×] 缺少SAM模型
set /A MISSING_FILES+=1
set "MISSING_LIST=!MISSING_LIST!SAM, "
)
if exist "%DINO_PATH%" (
echo [√] GroundingDINO模型已存在
set /A EXISTING_FILES+=1
) else (
echo [×] 缺少GroundingDINO模型
set /A MISSING_FILES+=1
set "MISSING_LIST=!MISSING_LIST!GroundingDINO, "
)
if exist "%MATTE_PATH%" (
echo [√] Matte-Anything模型已存在
set /A EXISTING_FILES+=1
) else (
echo [×] 缺少Matte-Anything模型
set /A MISSING_FILES+=1
set "MISSING_LIST=!MISSING_LIST!Matte-Anything, "
)
if exist "%OPENPOSE_PATH%" (
echo [√] OpenPose模型已存在
set /A EXISTING_FILES+=1
) else (
echo [×] 缺少OpenPose模型
set /A MISSING_FILES+=1
set "MISSING_LIST=!MISSING_LIST!OpenPose, "
)
echo.
echo 已存在 %EXISTING_FILES%/%TOTAL_FILES% 个模型文件
if !MISSING_FILES! GTR 0 (
echo 需要下载 !MISSING_FILES! 个模型文件
set "TMP=!MISSING_LIST!"
set "TMP=!TMP:~0,-2!"
echo 缺少的模型: !TMP!
echo.
echo ************************************************************
echo * 开始下载所需资源文件 *
echo * 下载时间取决于您的网络连接速度 *
echo * 请耐心等待... *
echo ************************************************************
) else (
echo 所有模型文件已存在,无需下载
exit /b 0
)
REM ========================================================================
REM 2. 基础环境配置:检查 Python、更新 pip、安装 gdown、检查 7-Zip
REM ========================================================================
echo ======================================= 基础环境配置 ==============================================
echo.
echo **************************************************************************************************
echo * 基础环境配置 *
echo * 检查Python是否安装更新pip安装gdown *
echo * 请耐心等待... *
echo **************************************************************************************************
echo.
REM 检查 Python 是否安装
python --version >nul 2>nul
IF %ERRORLEVEL% NEQ 0 (
echo "错误未找到Python"
echo "请安装Python并将其添加到系统环境变量PATH中"
exit /b 1
)
REM 更新 pip
python -m pip install --upgrade pip
REM 检查是否已安装 gdown
python -c "import gdown" >nul 2>nul
IF %ERRORLEVEL% EQU 0 (
echo gdown已安装跳过安装步骤...
) ELSE (
echo "正在安装gdown..."
python -m pip install --user gdown --upgrade
python -m pip install --user requests --upgrade
IF %ERRORLEVEL% NEQ 0 (
echo "错误gdown安装失败"
echo "请检查网络连接后重试"
exit /b 1
)
)
REM 添加Python Scripts目录到PATH
for /f "tokens=*" %%i in ('python -c "import sys; print(sys.executable)"') do set PYTHON_PATH=%%i
set PYTHON_SCRIPTS_PATH=%PYTHON_PATH:python.exe=Scripts%
set PYTHON_USER_SCRIPTS=%USERPROFILE%\AppData\Roaming\Python\Python3*\Scripts
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中"
exit /b 1
)
REM 验证 gdown 是否可用
echo 正在验证gdown安装...
python -c "import gdown" >nul 2>nul
IF %ERRORLEVEL% NEQ 0 (
echo "错误gdown安装验证失败"
echo "请重新运行脚本"
exit /b 1
)
echo "gdown安装成功"
echo.
REM ========================================================================
REM 3. 根据验证结果下载缺失的模型文件
REM ========================================================================
echo ======================================= 开始下载所需资源文件 =======================================
echo.
echo **************************************************************************************************
echo * 开始下载所需资源文件 *
echo * 下载时间取决于您的网络连接速度 *
echo * 请耐心等待... *
echo **************************************************************************************************
echo.
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"
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
)
)
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"
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
)
)
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
)
)
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"
cd "%PROJECT_DIR%"
if not exist "%HYPERIQA_PATH%" (
echo 错误hyperIQA模型下载失败
exit /b 1
)
)
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"
cd "%PROJECT_DIR%"
if not exist "%SAM_PATH%" (
echo 错误SAM模型下载失败
exit /b 1
)
)
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"
cd "%PROJECT_DIR%"
if not exist "%DINO_PATH%" (
echo 错误GroundingDINO模型下载失败
exit /b 1
)
)
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"
cd "%PROJECT_DIR%"
if not exist "%MATTE_PATH%" (
echo 错误Matte-Anything模型下载失败
exit /b 1
)
)
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
cd "%PROJECT_DIR%"
if not exist "%OPENPOSE_PATH%" (
echo 错误OpenPose模型下载失败
exit /b 1
)
)
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