@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处理 IF NOT DEFINED CTRL_C_HANDLER ( SET CTRL_C_HANDLER=1 TITLE Download Resource ) 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 :CTRL_C_HANDLER echo. echo ************************************************************ echo * 下载任务被用户中断 * echo * 请重新运行脚本继续下载 * echo ************************************************************ exit /b 1 :EOF