Text2Light 安装案例:从 GPU 可用到 OpenEXR 报错,再到顺利出图(Windows + Conda)

Text2Light 安装案例:从 GPU 可用到 OpenEXR 报错,再到顺利出图(Windows + Conda)

这是一篇基于真实过程的安装案例记录。我按项目的安装手册一步步在 Windows + Conda 环境部署 Text2Light:一开始 GPU 检测一切正常,运行中却遇到了 OpenCV 的 OpenEXR 读写功能被禁用的报错,最终通过设置环境变量搞定并成功生成图片。


1. 环境与准备

  • Windows 10/11(64 位)
  • Conda 环境(Python 3.8)
  • NVIDIA 显卡 + 驱动;已按手册安装了 PyTorch(CUDA 版)

我按照手册创建了 Conda 环境、安装了 PyTorch 2.0+ 和各类依赖,详细步骤见:projects/text2Light/install.md

安装手册要点速览(简版)

  • 获取代码:克隆仓库 Text2Light 并进入目录。
  • 创建环境:conda create -n text2light python=3.8conda activate text2light;建议添加 pytorchnvidiaconda-forge 源并将 channel_priority 设为 flexible
  • 安装 PyTorch(CUDA 12.0 兼容):conda install -y pytorch==2.0.1 torchvision==0.15.2 pytorch-cuda=12.0 -c pytorch -c nvidia;安装 faiss-cpu==1.7.4 及基础包(numpy==1.24.3/pillow==9.5.0/matplotlib==3.7.1)。
  • 安装其他依赖:使用 pip 安装 opencv-python==4.8.1.78pytorch-lightning==2.0.9omegaconf==2.3.0einops==0.7.0transformers==4.35.2tensorboardX==2.6.2.2h5py==3.10.0tqdm==4.66.1protobuf==3.20.3lmdb==1.4.1 等。
  • 准备模型与数据:将权重解压到 logs/(如 logs/global_sampler_clip/logs/local_sampler_outdoor/logs/sritmo.pth);准备 clip_emb.npy 放在仓库根目录或用 --clip 指定路径。
  • 运行前检查:执行 python -c "import torch, torchvision; print(...)",确认 torch.cuda.is_available() 为 True(PyTorch 2.0+ 显示 CUDA 11.8 也可能与 12.0 兼容)。
  • 推理示例:运行 text2light.py,指定 -rg-rl--clip--sritmo--sr_factor--outdir 等参数生成结果。

完整细节请见 projects/text2Light/install.md,本节仅保留关键路径与版本要点。


2. 开局顺利:GPU 能用

先验证 GPU 是否可用(截图如下):

  • 这一步确认了 torch 能看到 CUDA,说明"显卡没问题,驱动没问题,PyTorch 绑定也没问题"。

3. 突然翻车:OpenEXR 被禁用的报错

运行过程中,OpenCV 抛出如下错误:

text 复制代码
cv2.error: OpenCV(4.8.1) D:\a\opencv-python\opencv-python\opencv\modules\imgcodecs\src\grfmt_exr.cpp:103: error: (-213:The function/feature is not implemented) imgcodecs: OpenEXR codec is disabled. You can enable it via 'OPENCV_IO_ENABLE_OPENEXR' option. Refer for details and cautions here: https://github.com/opencv/opencv/issues/21326 in function 'cv::initOpenEXR'

截图(问题出现时):

发生原因(通俗解释):

  • OpenCV 的 EXR 编解码在一些二进制分发中默认是关闭的,目的是出于体积、安全或许可证方面的考虑。
  • Text2Light 在读写 EXR/HDR 等格式时,需要启用对应的编解码支持,否则会直接报错。

4. 一步到位的解决方案:开启 OpenEXR

按照错误提示,启用 OpenEXR 的最直接方法是设置环境变量 OPENCV_IO_ENABLE_OPENEXR=1

  • PowerShell(当前会话生效):
powershell 复制代码
$env:OPENCV_IO_ENABLE_OPENEXR = "1"
# 启动你的 Python/脚本于同一会话中
python text2light.py -h
  • PowerShell(持久化到用户环境,需重新打开终端生效):
powershell 复制代码
setx OPENCV_IO_ENABLE_OPENEXR 1
  • CMD(当前会话):
cmd 复制代码
set OPENCV_IO_ENABLE_OPENEXR=1

设置完成后,重新运行 Text2Light,对应的 EXR 读写就能被打开,错误消失。

温馨提示:

  • setx 会写入用户环境变量,但对"当前已经打开的终端"不会立即生效,请关闭并重新打开终端或重启 IDE。
  • 如果你使用的是 VSCode 的内置终端,同理需要重启终端标签页。

5. 再次出发:生成成功

问题解决后,重新运行推理脚本,成功生成了输出图像(截图如下): 这说明 OpenEXR 读写能力已开启,Text2Light 的流程能够顺利完成。


6. 过程复盘(简易 Checklist)

  • 确认 GPU 可用(torch.cuda.is_available() 为 True)。
  • install.md 安装依赖;确保 PyTorch 使用 CUDA 版本。
  • 遇到 OpenEXR codec is disabled:设置 OPENCV_IO_ENABLE_OPENEXR=1,再重启终端后重试。
  • 观察日志无错误,确认输出目录收到生成结果。

7. 附:我用到的参考

如果你也碰到类似问题,按本文配置环境变量即可快速恢复;若仍然报错,可将报错栈与运行命令贴出来,我们再一起查。

相关推荐
杨杨杨大侠5 小时前
第3章:实现基础事件总线
java·github·eventbus
杨杨杨大侠5 小时前
第4章:添加注解支持
java·github·eventbus
libokaifa5 小时前
C++ 基础学习
前端·架构·github
wallflower20205 小时前
从零到全流程 CI/CD:多技术栈项目自动化部署实战与优化指南
ci/cd·github
绝无仅有6 小时前
某大厂MySQL面试之SQL注入触点发现与SQLMap测试
后端·面试·github
绝无仅有6 小时前
某互联网大厂的面试go语言从基础到实战的经验和总结
后端·面试·github
止观止7 小时前
GitHub App 架构解析与最佳实践
架构·github
小韩博7 小时前
Windows权限提升(二)
windows·网络安全·github
小马哥编程17 小时前
DNS解析中的服务器协作机制
服务器·git·github