GaussianHaircut/download_resource.bat

331 lines
10 KiB
Batchfile
Raw Normal View History

2025-02-15 14:31:02 +08:00
@echo off
setlocal enabledelayedexpansion
2025-02-16 15:10:20 +08:00
REM 清理旧的资源目录
IF EXIST "resource" (
echo 清理旧的资源目录...
rmdir /s /q "resource"
)
REM 清理错误路径的资源
IF EXIST "NeuralHaircut" rmdir /s /q "NeuralHaircut"
IF EXIST "Matte-Anything" rmdir /s /q "Matte-Anything"
IF EXIST "openpose" rmdir /s /q "openpose"
IF EXIST "hyperIQA" rmdir /s /q "hyperIQA"
REM 定义模型信息
SET "MODEL_NEURAL_HAIRCUT_NAME=Neural Haircut模型"
SET "MODEL_NEURAL_HAIRCUT_PATH=resource\NeuralHaircut\diffusion_prior\model.pt"
SET "MODEL_NEURAL_HAIRCUT_URL=1_9EOUXHayKiGH5nkrayncln3d6m1uV7f"
SET "MODEL_PIXIE_NAME=PIXIE模型数据"
SET "MODEL_PIXIE_PATH=resource\NeuralHaircut\PIXIE\pixie_data"
SET "MODEL_PIXIE_URL=1mPcGu62YPc4MdkT8FFiOCP629xsENHZf"
SET "MODEL_MATTE_NAME=Matte-Anything模型"
SET "MODEL_MATTE_PATH=resource\Matte-Anything\model.pth"
SET "MODEL_MATTE_URL=1d97oKuITCeWgai2Tf3iNilt6rMSSYzkW"
SET "MODEL_SAM_NAME=SAM模型"
SET "MODEL_SAM_PATH=resource\Matte-Anything\sam_vit_h_4b8939.pth"
SET "MODEL_SAM_URL=https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth"
SET "MODEL_DINO_NAME=GroundingDINO模型"
SET "MODEL_DINO_PATH=resource\Matte-Anything\groundingdino_swint_ogc.pth"
SET "MODEL_DINO_URL=https://github.com/IDEA-Research/GroundingDINO/releases/download/v0.1.0-alpha/groundingdino_swint_ogc.pth"
SET "MODEL_OPENPOSE_NAME=OpenPose模型"
SET "MODEL_OPENPOSE_PATH=resource\openpose\models\pose_iter_584000.caffemodel"
SET "MODEL_OPENPOSE_URL=1Yn03cKKfVOq4qXmgBMQD20UMRRRkd_tV"
SET "MODEL_HYPERIQA_NAME=hyperIQA模型"
SET "MODEL_HYPERIQA_PATH=resource\hyperIQA\pretrained\hyperIQA.pth"
SET "MODEL_HYPERIQA_URL=1OOUmnbvpGea0LIGpIWEbOyxfWx6UCiiE"
REM 下载设置
SET "RETRY_COUNT=3"
SET "TIMEOUT_SECONDS=600"
SET "CURL_OPTS=--connect-timeout 30 --max-time %TIMEOUT_SECONDS% --retry %RETRY_COUNT% -L -C -"
SET "MIN_FILE_SIZE=1000000"
2025-02-15 16:08:48 +08:00
REM 设置当前目录
SET PROJECT_DIR=%~dp0
cd %PROJECT_DIR%
2025-02-15 16:42:39 +08:00
REM 检查7-Zip是否安装
2025-02-15 16:21:25 +08:00
where 7z >nul 2>nul
IF %ERRORLEVEL% NEQ 0 (
2025-02-15 16:42:39 +08:00
echo 错误未找到7-Zip
echo 请从 https://7-zip.org/ 下载并安装7-Zip
echo 并将其添加到系统环境变量PATH中
2025-02-15 16:08:48 +08:00
exit /b 1
)
REM 检查Python是否安装
python --version >nul 2>nul
2025-02-15 14:46:18 +08:00
IF %ERRORLEVEL% NEQ 0 (
2025-02-15 16:42:39 +08:00
echo 错误未找到Python
echo 请安装Python并将其添加到系统环境变量PATH中
2025-02-15 16:08:48 +08:00
exit /b 1
)
2025-02-15 16:42:39 +08:00
REM 更新pip
python -m pip install --upgrade pip
2025-02-15 21:12:05 +08:00
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
)
2025-02-15 16:08:48 +08:00
)
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是否可用
2025-02-15 16:42:39 +08:00
echo 正在验证gdown安装...
2025-02-15 16:36:21 +08:00
python -c "import gdown" >nul 2>nul
2025-02-15 16:08:48 +08:00
IF %ERRORLEVEL% NEQ 0 (
2025-02-15 16:42:39 +08:00
echo 错误gdown安装验证失败
echo 请重新运行脚本
2025-02-15 14:46:18 +08:00
exit /b 1
)
2025-02-15 16:42:39 +08:00
echo gdown安装成功
2025-02-15 16:36:21 +08:00
echo.
2025-02-15 14:46:18 +08:00
2025-02-15 14:31:02 +08:00
REM 创建resource目录结构
2025-02-15 14:39:34 +08:00
mkdir resource 2>nul
2025-02-15 16:21:25 +08:00
cd resource
mkdir NeuralHaircut\diffusion_prior 2>nul
mkdir NeuralHaircut\PIXIE 2>nul
mkdir Matte-Anything 2>nul
2025-02-16 15:10:20 +08:00
mkdir openpose\models\pose\coco 2>nul
2025-02-15 16:21:25 +08:00
mkdir hyperIQA\pretrained 2>nul
2025-02-15 14:31:02 +08:00
2025-02-16 00:48:21 +08:00
REM 验证已有文件
echo 正在检查已有资源文件...
SET MISSING_FILES=0
SET /A TOTAL_FILES=6
SET /A EXISTING_FILES=0
2025-02-16 14:50:36 +08:00
SET MISSING_LIST=
2025-02-16 00:48:21 +08:00
2025-02-16 14:50:36 +08:00
REM Neural Haircut 模型检查
2025-02-16 15:10:20 +08:00
IF EXIST "%MODEL_NEURAL_HAIRCUT_PATH%" (
echo [√] %MODEL_NEURAL_HAIRCUT_NAME%已存在
2025-02-16 00:48:21 +08:00
SET /A EXISTING_FILES+=1
) ELSE (
2025-02-16 15:10:20 +08:00
echo [×] 缺少%MODEL_NEURAL_HAIRCUT_NAME%
2025-02-16 00:48:21 +08:00
SET /A MISSING_FILES+=1
2025-02-16 15:10:20 +08:00
SET MISSING_LIST=!MISSING_LIST!%MODEL_NEURAL_HAIRCUT_NAME%,
2025-02-16 00:48:21 +08:00
)
2025-02-16 14:50:36 +08:00
REM PIXIE 模型检查
2025-02-16 15:10:20 +08:00
IF EXIST "%MODEL_PIXIE_PATH%" (
echo [√] %MODEL_PIXIE_NAME%已存在
2025-02-16 00:48:21 +08:00
SET /A EXISTING_FILES+=1
) ELSE (
2025-02-16 15:10:20 +08:00
echo [×] 缺少%MODEL_PIXIE_NAME%
2025-02-16 00:48:21 +08:00
SET /A MISSING_FILES+=1
2025-02-16 15:10:20 +08:00
SET MISSING_LIST=!MISSING_LIST!%MODEL_PIXIE_NAME%,
2025-02-16 00:48:21 +08:00
)
2025-02-16 14:50:36 +08:00
REM SAM 模型检查
2025-02-16 15:10:20 +08:00
IF EXIST "%MODEL_SAM_PATH%" (
echo [√] %MODEL_SAM_NAME%已存在
2025-02-16 00:48:21 +08:00
SET /A EXISTING_FILES+=1
) ELSE (
2025-02-16 15:10:20 +08:00
echo [×] 缺少%MODEL_SAM_NAME%
2025-02-16 00:48:21 +08:00
SET /A MISSING_FILES+=1
2025-02-16 15:10:20 +08:00
SET MISSING_LIST=!MISSING_LIST!%MODEL_SAM_NAME%,
2025-02-16 00:48:21 +08:00
)
2025-02-16 14:50:36 +08:00
REM GroundingDINO 模型检查
2025-02-16 15:10:20 +08:00
IF EXIST "%MODEL_DINO_PATH%" (
echo [√] %MODEL_DINO_NAME%已存在
2025-02-16 00:48:21 +08:00
SET /A EXISTING_FILES+=1
) ELSE (
2025-02-16 15:10:20 +08:00
echo [×] 缺少%MODEL_DINO_NAME%
2025-02-16 00:48:21 +08:00
SET /A MISSING_FILES+=1
2025-02-16 15:10:20 +08:00
SET MISSING_LIST=!MISSING_LIST!%MODEL_DINO_NAME%,
2025-02-16 00:48:21 +08:00
)
2025-02-16 14:50:36 +08:00
REM OpenPose 模型检查
2025-02-16 15:10:20 +08:00
IF EXIST "%MODEL_OPENPOSE_PATH%" (
echo [√] %MODEL_OPENPOSE_NAME%已存在
2025-02-16 00:48:21 +08:00
SET /A EXISTING_FILES+=1
) ELSE (
2025-02-16 15:10:20 +08:00
echo [×] 缺少%MODEL_OPENPOSE_NAME%
2025-02-16 00:48:21 +08:00
SET /A MISSING_FILES+=1
2025-02-16 15:10:20 +08:00
SET MISSING_LIST=!MISSING_LIST!%MODEL_OPENPOSE_NAME%,
2025-02-16 00:48:21 +08:00
)
2025-02-16 14:50:36 +08:00
REM hyperIQA 模型检查
2025-02-16 15:10:20 +08:00
IF EXIST "%MODEL_HYPERIQA_PATH%" (
echo [√] %MODEL_HYPERIQA_NAME%已存在
2025-02-16 00:48:21 +08:00
SET /A EXISTING_FILES+=1
) ELSE (
2025-02-16 15:10:20 +08:00
echo [×] 缺少%MODEL_HYPERIQA_NAME%
2025-02-16 00:48:21 +08:00
SET /A MISSING_FILES+=1
2025-02-16 15:10:20 +08:00
SET MISSING_LIST=!MISSING_LIST!%MODEL_HYPERIQA_NAME%,
2025-02-16 00:48:21 +08:00
)
echo.
echo 已存在 %EXISTING_FILES%/%TOTAL_FILES% 个模型文件
IF %MISSING_FILES% GTR 0 (
echo 需要下载 %MISSING_FILES% 个模型文件
2025-02-16 14:50:36 +08:00
echo 缺少的模型: !MISSING_LIST:~0,-2!
2025-02-16 00:48:21 +08:00
echo.
echo ************************************************************
echo * 开始下载所需资源文件 *
echo * 下载时间取决于您的网络连接速度 *
echo * 请耐心等待... *
echo ************************************************************
) ELSE (
echo 所有模型文件已存在,无需下载
exit /b 0
)
2025-02-16 14:40:58 +08:00
REM 设置代理选项(可选)
IF DEFINED HTTP_PROXY (
SET CURL_OPTS=%CURL_OPTS% --proxy %HTTP_PROXY%
SET REQUESTS_CA_BUNDLE=%PROJECT_DIR%\certs\cacert.pem
)
2025-02-15 14:31:02 +08:00
REM 下载 Neural Haircut 文件
2025-02-16 15:10:20 +08:00
cd resource\NeuralHaircut
IF EXIST "%MODEL_NEURAL_HAIRCUT_PATH%" (
echo 跳过%MODEL_NEURAL_HAIRCUT_NAME%下载...
2025-02-15 20:51:25 +08:00
) ELSE (
2025-02-16 15:10:20 +08:00
echo 正在下载%MODEL_NEURAL_HAIRCUT_NAME%...
cd diffusion_prior
python -m gdown "%MODEL_NEURAL_HAIRCUT_URL%"
cd ..\..
2025-02-15 20:51:25 +08:00
)
2025-02-16 15:10:20 +08:00
cd PIXIE
2025-02-15 20:51:25 +08:00
IF EXIST "pixie_data.tar" (
echo PIXIE模型已存在跳过下载...
) ELSE (
2025-02-15 20:56:53 +08:00
echo 正在下载PIXIE模型...
2025-02-16 15:10:20 +08:00
python -m gdown "%MODEL_PIXIE_URL%"
2025-02-15 20:51:25 +08:00
REM 使用7-Zip解压tar.gz文件
IF NOT EXIST pixie_data.tar.gz (
echo 错误下载pixie_data.tar.gz失败
exit /b 1
)
7z x pixie_data.tar.gz -y
7z x pixie_data.tar -y
del pixie_data.tar.gz
del pixie_data.tar
2025-02-15 16:36:21 +08:00
)
2025-02-15 14:31:02 +08:00
REM 下载 Matte-Anything 文件
cd ..\..\Matte-Anything
2025-02-15 16:42:39 +08:00
echo 正在下载Matte-Anything文件...
2025-02-16 15:10:20 +08:00
IF EXIST "%MODEL_SAM_PATH%" (
echo %MODEL_SAM_NAME%已存在,跳过下载...
2025-02-15 20:51:25 +08:00
) ELSE (
2025-02-16 15:10:20 +08:00
echo 正在下载%MODEL_SAM_NAME%...
curl %CURL_OPTS% -o "%MODEL_SAM_PATH%" "%MODEL_SAM_URL%"
2025-02-15 21:12:05 +08:00
IF %ERRORLEVEL% NEQ 0 (
2025-02-16 15:10:20 +08:00
echo 错误:下载%MODEL_SAM_NAME%失败
2025-02-15 21:12:05 +08:00
exit /b 1
)
2025-02-15 20:51:25 +08:00
)
2025-02-16 15:10:20 +08:00
IF EXIST "%MODEL_DINO_PATH%" (
echo %MODEL_DINO_NAME%已存在,跳过下载...
2025-02-15 20:51:25 +08:00
) ELSE (
2025-02-16 15:10:20 +08:00
echo 正在下载%MODEL_DINO_NAME%...
curl -L --retry 5 -C - -o "%MODEL_DINO_PATH%" "%MODEL_DINO_URL%"
2025-02-15 20:51:25 +08:00
)
2025-02-16 15:10:20 +08:00
IF EXIST "%MODEL_MATTE_PATH%" (
echo %MODEL_MATTE_NAME%已存在,跳过下载...
2025-02-15 20:51:25 +08:00
) ELSE (
2025-02-16 15:10:20 +08:00
echo 正在下载%MODEL_MATTE_NAME%...
python -m gdown "%MODEL_MATTE_URL%" -O model.pth
2025-02-15 20:51:25 +08:00
)
2025-02-15 14:31:02 +08:00
REM 下载 OpenPose 模型
2025-02-16 15:10:20 +08:00
cd ..\openpose\models\pose\coco
2025-02-15 16:42:39 +08:00
echo 正在下载OpenPose模型...
2025-02-16 15:10:20 +08:00
IF EXIST "%MODEL_OPENPOSE_PATH%" (
echo %MODEL_OPENPOSE_NAME%已存在,跳过下载...
2025-02-15 20:51:25 +08:00
) ELSE (
2025-02-15 20:56:53 +08:00
echo 正在下载OpenPose模型...
2025-02-16 15:10:20 +08:00
python -m gdown "%MODEL_OPENPOSE_URL%" -O models.tar.gz
2025-02-15 20:51:25 +08:00
IF NOT EXIST models.tar.gz (
echo 错误下载models.tar.gz失败
exit /b 1
)
7z x models.tar.gz -y
7z x models.tar -y -omodels
del models.tar.gz
del models.tar
2025-02-15 16:36:21 +08:00
)
2025-02-15 14:31:02 +08:00
REM 下载 hyperIQA 模型
2025-02-16 15:10:20 +08:00
cd ..\..\..\..\..\hyperIQA\pretrained
2025-02-15 16:42:39 +08:00
echo 正在下载hyperIQA模型...
2025-02-16 15:10:20 +08:00
IF EXIST "%MODEL_HYPERIQA_PATH%" (
echo %MODEL_HYPERIQA_NAME%已存在,跳过下载...
2025-02-15 20:51:25 +08:00
) ELSE (
2025-02-16 15:10:20 +08:00
echo 正在下载%MODEL_HYPERIQA_NAME%...
python -m gdown "%MODEL_HYPERIQA_URL%"
2025-02-15 20:51:25 +08:00
)
2025-02-15 14:31:02 +08:00
2025-02-16 15:10:20 +08:00
cd ..\..\..
2025-02-15 16:08:48 +08:00
echo.
2025-02-16 00:48:21 +08:00
IF %ERRORLEVEL% EQU 0 (
echo ************************************************************
echo * 下载任务已完成 *
echo * 所有资源文件已下载到resource目录 *
echo ************************************************************
) ELSE (
echo ************************************************************
echo * 下载任务未完成 *
echo * 请检查以上错误信息 *
echo ************************************************************
exit /b 1
)
2025-02-15 14:46:18 +08:00
2025-02-15 21:12:05 +08:00
REM 验证下载的文件完整性
echo 正在验证下载文件...
2025-02-16 15:10:20 +08:00
cd %PROJECT_DIR%
2025-02-16 00:48:21 +08:00
SET VERIFY_FAILED=0
2025-02-16 15:10:20 +08:00
IF NOT EXIST "%MODEL_NEURAL_HAIRCUT_PATH%" (
echo [×] 缺少%MODEL_NEURAL_HAIRCUT_NAME%
2025-02-16 00:48:21 +08:00
SET /A VERIFY_FAILED+=1
) ELSE (
2025-02-16 15:10:20 +08:00
echo [√] %MODEL_NEURAL_HAIRCUT_NAME%验证成功
2025-02-16 00:48:21 +08:00
)
2025-02-16 15:10:20 +08:00
IF NOT EXIST "%MODEL_PIXIE_PATH%" echo 警告:缺少%MODEL_PIXIE_NAME%
IF NOT EXIST "%MODEL_SAM_PATH%" echo 警告:缺少%MODEL_SAM_NAME%
IF NOT EXIST "%MODEL_DINO_PATH%" echo 警告:缺少%MODEL_DINO_NAME%
2025-02-15 21:12:05 +08:00
IF NOT EXIST "openpose\models\pose\coco" echo 警告缺少OpenPose姿态模型
2025-02-16 15:10:20 +08:00
IF NOT EXIST "%MODEL_HYPERIQA_PATH%" echo 警告:缺少%MODEL_HYPERIQA_NAME%
2025-02-15 21:12:05 +08:00
2025-02-16 00:48:21 +08:00
IF %VERIFY_FAILED% GTR 0 (
2025-02-15 16:08:48 +08:00
echo.
2025-02-16 00:48:21 +08:00
echo 文件完整性验证失败:%VERIFY_FAILED% 个文件缺失或不完整
echo 请重新运行脚本下载缺失文件
2025-02-15 14:46:18 +08:00
exit /b 1
2025-02-16 00:48:21 +08:00
) ELSE (
echo.
echo 文件完整性验证成功!
2025-02-15 14:46:18 +08:00
)