DeepAnythingV2 部署问题排查与解决指南

📅 2026/8/26 18:39:00
DeepAnythingV2 部署问题排查与解决指南
一、项目简介DeepAnythingV2 是一款基于 Vision Transformer (ViT) 架构的单目深度估计模型支持多种编码器规模vits / vitb / vitl / vitg可用于图像深度图推理。本文档记录了在 Windows 环境下部署 DeepAnythingV2 过程中遇到的各类问题及其解决方案。二、部署运行项目地址2.1 新建环境conda create -n daV2 python3.11 -y conda activate daV22.2 安装依赖pip install --upgrade pip pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com7.3 使用模型importcv2importtorchfromdepth_anything_v2.dptimportDepthAnythingV2 DEVICEcudaiftorch.cuda.is_available()elsempsiftorch.backends.mps.is_available()elsecpumodel_configs{vits:{encoder:vits,features:64,out_channels:[48,96,192,384]},vitb:{encoder:vitb,features:128,out_channels:[96,192,384,768]},vitl:{encoder:vitl,features:256,out_channels:[256,512,1024,1024]},vitg:{encoder:vitg,features:384,out_channels:[1536,1536,1536,1536]}}encodervitl# or vits, vitb, vitgmodelDepthAnythingV2(**model_configs[encoder])model.load_state_dict(torch.load(fcheckpoints/depth_anything_v2_{encoder}.pth,map_locationcpu))modelmodel.to(DEVICE).eval()raw_imgcv2.imread(your/image/path)depthmodel.infer_image(raw_img)# HxW raw depth map in numpy7.4 Transformers加载模型fromtransformersimportpipelinefromPILimportImage pipepipeline(taskdepth-estimation,modeldepth-anything/Depth-Anything-V2-Small-hf)imageImage.open(your/image/path)depthpipe(image)[depth]7.5 在图像上运行推理python run.py --encoder vits --img-path image --outdir depth_vis原图运行结果图三、环境依赖安装SSL 证书错误3.1 问题现象在 Anaconda Prompt 中执行pip install --upgrade pip certifi时使用清华源https://pypi.tuna.tsinghua.edu.cn/simple报错WARNING: Retrying (Retry(total4, connectNone, readNone, redirectNone, statusNone)) after connection broken by SSLError(SSLError(142, [ASN1: NOT_ENOUGH_DATA] not enough data (_ssl.c:3992))): /simple/pip/ WARNING: Retrying (Retry(total3, connectNone, readNone, redirectNone, statusNone)) after connection broken by SSLError(SSLError(142, [ASN1: NOT_ENOUGH_DATA] not enough data (_ssl.c:3992))): /simple/pip/ WARNING: Retrying (Retry(total2, connectNone, readNone, redirectNone, statusNone)) after connection broken by SSLError(SSLError(142, [ASN1: NOT_ENOUGH_DATA] not enough data (_ssl.c:3992))): /simple/pip/ WARNING: Retrying (Retry(total1, connectNone, readNone, redirectNone, statusNone)) after connection broken by SSLError(SSLError(142, [ASN1: NOT_ENOUGH_DATA] not enough data (_ssl.c:3992))): /simple/pip/ Could not fetch URL https://pypi.tuna.tsinghua.edu.cn/simple/pip/: There was a problem confirming the ssl certificate: [ASN1: NOT_ENOUGH_DATA] not enough data (_ssl.c:3992) - skipping WARNING: Retrying (Retry(total4, connectNone, readNone, redirectNone, statusNone)) after connection broken by SSLError(SSLError(142, [ASN1: NOT_ENOUGH_DATA] not enough data (_ssl.c:3992))): /simple/certifi/ WARNING: Retrying (Retry(total3, connectNone, readNone, redirectNone, statusNone)) after connection broken by SSLError(SSLError(142, [ASN1: NOT_ENOUGH_DATA] not enough data (_ssl.c:3992))): /simple/certifi/ WARNING: Retrying (Retry(total2, connectNone, readNone, redirectNone, statusNone)) after connection broken by SSLError(SSLError(142, [ASN1: NOT_ENOUGH_DATA] not enough data (_ssl.c:3992))): /simple/certifi/ WARNING: Retrying (Retry(total1, connectNone, readNone, redirectNone, statusNone)) after connection broken by SSLError(SSLError(142, [ASN1: NOT_ENOUGH_DATA] not enough data (_ssl.c:3992))): /simple/certifi/ Could not fetch URL https://pypi.tuna.tsinghua.edu.cn/simple/certifi/: There was a problem confirming the ssl certificate: [ASN1: NOT_ENOUGH_DATA] not enough data (_ssl.c:3992) - skipping ERROR: Could not find a version that satisfies the requirement certifi (from versions: none) ERROR: No matching distribution found for certifi3.2 初步排查切换多个国内镜像源清华源、阿里云源、中科大源等均报完全相同的[ASN1: NOT_ENOUGH_DATA]错误。说明问题不是镜像源的问题而是本地环境的 SSL/TLS 连接本身存在问题。3.3 深入诊断检查代理环境变量在 Python 交互解释器中逐一检查https_proxy、http_proxy、ALL_PROXY、HTTPS_PROXY、HTTP_PROXY全部为空排除代理干扰。检查 Python 和 OpenSSL 版本Python版本: 3.10.0 OpenSSL版本: OpenSSL 3.6.3 9 Jun 2026Python 3.10.0 和 OpenSSL 3.6.3 版本均正常不是版本过旧的问题。直接 SSL 连接测试在命令行中执行以下命令测试与 pypi.org 的 SSL 连接python -c import ssl,socket; ctxssl.create_default_context(); sctx.wrap_socket(socket.socket(),server_hostnamepypi.org); s.settimeout(15); s.connect((pypi.org,443)); print(SSL连接成功); s.close()报错信息Traceback (most recent call last): File string, line 1, in module File E:\miniconda3\envs\deepanythingv2\lib\ssl.py, line 770, in create_default_context context.load_default_certs(purpose) File E:\miniconda3\envs\deepanythingv2\lib\ssl.py, line 591, in load_default_certs self._load_windows_store_certs(storename, purpose) File E:\miniconda3\envs\deepanythingv2\lib\ssl.py, line 583, in _load_windows_store_certs self.load_verify_locations(cadatacerts) ssl.SSLError: [ASN1: NOT_ENOUGH_DATA] not enough data (_ssl.c:3992)3.4 根因分析错误堆栈明确指向ssl.py中的_load_windows_store_certs函数。该函数负责从 Windows 系统证书存储Certificate Store中加载根证书。当系统中存在损坏的证书数据时load_verify_locations(cadatacerts)会抛出ASN1: NOT_ENOUGH_DATA异常导致整个 SSL 上下文初始化失败。结论Windows 系统证书存储Certificate Store已损坏导致 Python 在加载根证书时直接崩溃。这不是镜像源的问题也不是 pip 的问题而是系统层面的证书库损坏。3.5 为什么 pip 无法安装 OpenSSL 来修复OpenSSL 已存在且版本正常ssl.OPENSSL_VERSION输出 OpenSSL 3.6.3版本很新。崩溃发生在加载证书阶段错误在load_default_certs()→_load_windows_store_certs()时触发即 Python 从 Windows 证书库读取根证书时遇到损坏数据。pip 本身依赖 SSLpip install需要通过 HTTPS 下载包而 HTTPS 依赖 SSLSSL 又依赖证书库。证书库坏了 → SSL 初始化失败 → pip 无法连接任何服务器 → 无法下载任何东西形成死循环。OpenSSL 是系统级 C 库不能通过 pip 安装。即使 PyPI 上有名为openssl的包也只是一个 Python 封装底层依然依赖系统 OpenSSL 和系统证书库无法绕过问题。四、SSL 错误解决方案4.1 方案一新建 conda 环境 升级 Python 到 3.11推荐Python 3.11 对 Windows 证书库损坏的情况做了容错处理跳过损坏的证书不再直接崩溃。当前环境使用的是 Python 3.10.02021年11月构建版本较老。操作步骤conda create -n daV2 python3.11 -y conda activate daV2 pip install --upgrade pip pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com优点操作最简单Python 3.11 自带容错机制。成功率较高。4.2 方案二用 sitecustomize.py 修补 ssl 模块备选原理在 Python 的site-packages目录放一个sitecustomize.py文件Python 启动时会自动执行它提前修补ssl模块让损坏的证书被跳过而不是直接崩溃。这样 pip 和所有 Python 程序都能正常使用 SSL。操作步骤在E:\miniconda3\envs\deepanythingv2\Lib\site-packages\目录下新建文件sitecustomize.py写入以下内容并保存importssl _originalssl.SSLContext._load_windows_store_certsdef_safe_load_windows_store_certs(self,storename,purpose):certsbytearray()try:fromsslimport_windowsforcert,encoding,trustin_windows.enum_certificates(storename):ifencodingx509_asn:iftrustisTrueorpurpose.oidintrust:try:certs.extend(cert)exceptException:passexceptException:passtry:self.load_verify_locations(cadatacerts)exceptssl.SSLError:passreturncerts ssl.SSLContext._load_windows_store_certs_safe_load_windows_store_certs保存后重新打开一个 Anaconda Prompt环境变量刷新测试 SSL 是否恢复正常python -c import ssl; ctxssl.create_default_context(); print(SSL恢复正常!) pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com优点成功率接近 100%一劳永逸。成功率几乎 100%。4.3 方案三修复 Windows 系统证书存储根治方案如果方案一和方案二都生效了说明确实是 Windows 证书库损坏。如果想彻底修复系统层面的问题以管理员身份打开命令提示符CMD执行系统文件检查sfc /scannow执行 DISM 修复DISM /Online /Cleanup-Image /RestoreHealth重启电脑修复完成后如果之前使用了方案二可删除sitecustomize.py文件。优点从根源修复系统问题。成功率取决于系统状况。4.4 方案对比方案操作难度成功率说明方案一新建环境 Python 3.11最简单较高新版 Python 自带容错方案二sitecustomize.py 修补中等几乎100%跳过损坏证书立竿见影方案三修复 Windows 证书库较复杂取决于系统根治系统问题五、模型推理提示xFormers not available5.1 问题现象运行 DeepAnythingV2 推理代码时控制台输出以下提示信息xFormers not available5.2 问题本质这不是报错只是一个无害的提示信息模型已经正常运行了。xFormers是一个用于推理加速的可选库主要作用是在输入尺寸较大时减小显存占用和加快推理速度。Depth Anything V2 的代码会尝试导入 xFormers如果没安装就打印这条提示然后自动回退到标准的 PyTorch 注意力机制继续运行。5.3 安装 xFormers可选xFormers 的版本必须和 PyTorch 版本严格匹配。先查看 PyTorch 版本python -c import torch; print(torch.__version__); print(torch.version.cuda)然后根据输出的 PyTorch 版本和 CUDA 版本到 xFormers 官方页面找到对应版本安装# 例如 PyTorch 2.4.0 CUDA 12.1 pip install -U xformers --index-url https://download.pytorch.org/whl/cu121 # 例如 PyTorch 2.4.0 CUDA 11.8 pip install -U xformers --index-url https://download.pytorch.org/whl/cu118注意如果 PyTorch 版本较低需要找到对应的低版本 xFormers不能随便装最新版。5.4 不安装的影响不装 xFormers 完全不影响模型推理结果的正确性只是推理速度可能稍慢、显存占用稍高。对于vits小模型来说影响很小完全可以忽略这条提示。六、警告处理triton not found6.1 问题现象运行run.py时出现以下警告和错误W0820 14:57:44.561000 33444 site-packages\torch\utils\flop_counter.py:29] triton not found; flop counting will not work for triton kernels A matching Triton is not available, some optimizations will not be enabled Traceback (most recent call last): File E:\miniconda3\envs\daV2\Lib\site-packages\xformers\__init__.py, line 57, in _is_triton_available import triton # noqa ^^^^^^^^^^^^^ ModuleNotFoundError: No module named triton Progress 1/2: image\1.png Progress 2/2: image\2.jpg尝试安装 tritonpip install triton --index-url https://download.pytorch.org/whl/cu126 Looking in indexes: https://download.pytorch.org/whl/cu126 ERROR: Could not find a version that satisfies the requirement triton (from versions: none) ERROR: No matching distribution found for triton6.2 为什么装不上 tritontriton是 PyTorch 的可选依赖主要用于两个用途FLOP 计数性能分析torch.utils.flop_counter需要它来统计计算量推理加速在某些模型架构上加速注意力计算但它主要支持 Linux 平台Windows 上几乎没有可用的 GPU 轮子。当前环境是win-64所以 PyTorch 官方索引里根本没有匹配平台的 triton 包。6.3 处理方案方案一直接忽略推荐推理已经跑通了从输出可以看到Progress 1/2和Progress 2/2说明两张图片的深度估计已经全部完成并保存了。那个警告只影响 FLOP 计数性能分析功能不影响推理结果和推理速度。方案二抑制警告不想看到警告的话可以在运行命令前设置环境变量来屏蔽它$env:TORCH_LOGS; python run.py --encoder vits --img-path image --outdir depth_vis或者在run.py文件开头import torch之后加一行importwarnings warnings.filterwarnings(ignore,message.*triton not found.*)方案三换到 Linux 环境如需要 triton如果确实需要 triton比如做性能分析只能换到 Linux 环境WSL2 / Linux 虚拟机 / 服务器上去安装pip install triton --index-url https://download.pytorch.org/whl/cu126