GaussianHaircut/download_resource.bat

249 lines
7.4 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
setlocal enabledelayedexpansion
REM 错误处理
:ERROR_HANDLER
IF %ERRORLEVEL% NEQ 0 (
echo.
echo ************************************************************
echo * 下载任务被中断 *
echo * 请检查网络连接后重新运行脚本 *
echo * 如果问题持续存在,请查看以上错误信息 *
echo ************************************************************
exit /b 1
)
REM 设置当前目录
SET PROJECT_DIR=%~dp0
cd %PROJECT_DIR%
REM 捕获Ctrl+C中断
REM 在Windows中可以通过注册一个处理函数来捕获Ctrl+C
IF NOT DEFINED CAUGHT_CTRL_C (
SET CAUGHT_CTRL_C=1
CALL :REGISTER_CTRL_C_HANDLER
)
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 清理旧的资源目录
IF EXIST "resource" (
echo 清理旧的资源目录...
rmdir /s /q "resource"
)
REM 创建resource目录结构
echo 正在创建resource目录结构...
mkdir resource 2>nul
mkdir resource\NeuralHaircut 2>nul
mkdir resource\NeuralHaircut\PIXIE 2>nul
mkdir resource\Matte-Anything 2>nul
mkdir resource\Matte-Anything\pretrained 2>nul
mkdir resource\openpose 2>nul
mkdir resource\hyperIQA 2>nul
mkdir resource\hyperIQA\pretrained 2>nul
REM 验证已有文件
echo 正在检查已有资源文件...
SET MISSING_FILES=0
SET /A TOTAL_FILES=7
SET /A EXISTING_FILES=0
SET MISSING_LIST=
REM Neural Haircut Diffusion Prior 检查
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,
)
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 检查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 (
REM 安装gdown
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 验证gdown是否可用
echo 正在验证gdown安装...
python -c "import gdown" >nul 2>nul
IF %ERRORLEVEL% NEQ 0 (
echo 错误gdown安装验证失败
echo 请重新运行脚本
exit /b 1
)
echo gdown安装成功
echo.
REM 检查resource目录是否存在
if not exist %PROJECT_DIR%/resource (
echo 错误resource目录不存在
echo 请检查目录是否存在
exit /b 1
)
REM 批量创建resource目录结构
echo 正在创建resource目录结构...
mkdir %PROJECT_DIR%/resource/NeuralHaircut/
mkdir %PROJECT_DIR%/resource/NeuralHaircut/PIXIE/
mkdir %PROJECT_DIR%/resource/hyperIQA/pretrained/
mkdir %PROJECT_DIR%/resource/Matte-Anything/pretrained/
mkdir %PROJECT_DIR%/resource/openpose
REM Download Neural Haircut files
echo 正在下载Neural Haircut文件...
cd %PROJECT_DIR%/resource/NeuralHaircut
python -m gdown --folder https://drive.google.com/drive/folders/1TCdJ0CKR3Q6LviovndOkJaKm8S1T9F_8
CALL :ERROR_HANDLER
REM 更新 diffusion_prior 模型
cd %PROJECT_DIR%/resource/NeuralHaircut/pretrained_models/diffusion_prior
echo 正在下载Neural Haircut扩散先验模型文件...
python -m gdown 1_9EOUXHayKiGH5nkrayncln3d6m1uV7f
CALL :ERROR_HANDLER
REM 下载 PIXIE 文件
cd %PROJECT_DIR%/resource/NeuralHaircut/PIXIE
echo 正在下载Neural HaircutPIXIE模型文件...
python -m gdown 1mPcGu62YPc4MdkT8FFiOCP629xsENHZf && tar -xvzf pixie_data.tar.gz ./ && rm pixie_data.tar.gz
CALL :ERROR_HANDLER
REM 下载 hyperIQA 模型
cd %PROJECT_DIR%/resource/hyperIQA/pretrained
echo 正在下载hyperIQA模型文件...
python -m gdown 1OOUmnbvpGea0LIGpIWEbOyxfWx6UCiiE
cd %PROJECT_DIR%
CALL :ERROR_HANDLER
REM Download Matte-Anything files
cd %PROJECT_DIR%/resource/Matte-Anything/pretrained
echo 正在下载Matte-Anything扩散先验模型文件...
wget https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth
echo 正在下载Matte-AnythingGroundingDINO模型文件...
wget https://github.com/IDEA-Research/GroundingDINO/releases/download/v0.1.0-alpha/groundingdino_swint_ogc.pth
echo 正在下载Matte-Anything模型文件...
python -m gdown 1d97oKuITCeWgai2Tf3iNilt6rMSSYzkW
CALL :ERROR_HANDLER
REM Download OpenPose files
cd %PROJECT_DIR%/resource/openpose
echo 正在下载OpenPose模型文件...
python -m gdown 1Yn03cKKfVOq4qXmgBMQD20UMRRRkd_tV && tar -xvzf models.tar.gz && rm models.tar.gz
CALL :ERROR_HANDLER
cd %PROJECT_DIR%
echo 所有模型文件下载完成!
echo.
echo 已存在 %EXISTING_FILES%/%TOTAL_FILES% 个模型文件
IF %MISSING_FILES% GTR 0 (
echo 需要下载 %MISSING_FILES% 个模型文件
echo 缺少的模型: !MISSING_LIST:~0,-2!
echo.
echo ************************************************************
echo * 开始下载所需资源文件 *
echo * 下载时间取决于您的网络连接速度 *
echo * 请耐心等待... *
echo ************************************************************
) ELSE (
echo 所有模型文件已存在,无需下载
exit /b 0
)
IF %VERIFY_FAILED% GTR 0 (
echo.
echo 文件完整性验证失败:%VERIFY_FAILED% 个文件缺失或不完整
echo 请重新运行脚本下载缺失文件
exit /b 1
) ELSE (
echo.
echo 文件完整性验证成功!
)
GOTO :EOF
:REGISTER_CTRL_C_HANDLER
echo 注册Ctrl+C处理函数...
FOR /F "tokens=2 delims=[]" %%a IN ('ver') DO FOR /F "tokens=2,3 delims=. " %%b IN ("%%a") DO SET /A WINVER=%%b%%c
IF %WINVER% GEQ 100 (
REM Windows 10及以上版本
powershell -Command "$handler = [Console]::CancelKeyPress.ToString(); if ($handler -notmatch 'Ctrl\+C') { [Console]::TreatControlCAsInput = $true }"
)
:CTRL_C_HANDLER
echo.
echo ************************************************************
echo * 下载任务被用户中断 *
echo * 请重新运行脚本继续下载 *
echo ************************************************************
exit /b 1
:EOF