Text2Light 安装案例:从 GPU 可用到 OpenEXR 报错,再到顺利出图(Windows + Conda)
这是一篇基于真实过程的安装案例记录。我按项目的安装手册一步步在 Windows + Conda 环境部署 Text2Light:一开始 GPU 检测一切正常,运行中却遇到了 OpenCV 的 OpenEXR 读写功能被禁用的报错,最终通过设置环境变量搞定并成功生成图片。
- 安装依据:
projects/text2Light/install.md
- 项目地址:github.com/FrozenBurni...
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.8
,conda activate text2light
;建议添加pytorch
、nvidia
、conda-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.78
、pytorch-lightning==2.0.9
、omegaconf==2.3.0
、einops==0.7.0
、transformers==4.35.2
、tensorboardX==2.6.2.2
、h5py==3.10.0
、tqdm==4.66.1
、protobuf==3.20.3
、lmdb==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. 附:我用到的参考
- 项目安装手册:
projects/text2Light/install.md
- OpenCV 官方讨论(关于 OpenEXR):github.com/opencv/open...
如果你也碰到类似问题,按本文配置环境变量即可快速恢复;若仍然报错,可将报错栈与运行命令贴出来,我们再一起查。