npzファイルを画像として開こうとする

用户在 Kohya SD Scripts 的 LoRA 训练流程中,启用了 --cache_latents_to_disk 参数,同时使用了“ファインチューニング方式”(Fine-tuning mode)进行字幕(caption)处理。触发问题的工具为 anima_train_network.py

npzファイルを画像として開こうとする

npzファイルを画像として開こうとする

快速结论:该报错发生在 Kohya SD Scripts 使用 --cache_latents_to_disk 参数进行 LoRA 训练时,代码错误地将已缓存的 .npz 文件当作图像文件来读取。优先排查元数据(metadata)中是否缺少 image_size 字段,或者确认为脚本版本未包含修复提交 #2327

问题场景

用户在 Kohya SD Scripts 的 LoRA 训练流程中,启用了 --cache_latents_to_disk 参数,同时使用了“ファインチューニング方式”(Fine-tuning mode)进行字幕(caption)处理。触发问题的工具为 anima_train_network.py 及相关 train_util.py 模块。

报错原文

ERROR    Error loading file: D:\tools\fine\training_character_xl\HadukiIzuna\TV\HadukiIzuna_029_2048x3840_anima.npz
...
Traceback (most recent call last):
  File ".../train_util.py", line 3066, in ...
  ...
PIL.UnidentifiedImageError: cannot identify image file

原因分析

可能原因有两个,均与 --cache_latents_to_disk 生成的 .npz 文件处理逻辑有关:

  • 脚本在读取缓存时,将 .npz 文件错误地当作图像文件(JPEG/PNG 等)进行加载,导致 PIL 无法识别。
  • 元数据(metadata)中缺少 image_size 字段,导致脚本在解码 .npz 缓存时出现判断错误,误触发图像加载流程。

环境排查

  • 确认 sd-scripts 仓库版本:是否低于 #2327 提交的修复版本。
  • 检查训练脚本的调用参数是否包含 --cache_latents_to_disk 以及 --cache_latents
  • 查看训练元数据文件(通常为 .json 或元数据字典)中是否包含 "image_size" 键。
  • 确认 Python 版本(用户环境为 Python 3.12)及 Pillow 库是否正常。

解决步骤

  1. 尝试修复 1(官方修复):将 sd-scripts 仓库更新至包含 #2327 修复提交的最新版本。该提交修复了元数据文件名缺少扩展名时的误操作问题。
  2. 尝试修复 2(用户已验证有效):在训练元数据中手动添加 "image_size" 字段。例如,对于 512×512 的图像,在元数据字典中加入 "image_size": [512, 512] 注意:此操作为 Issue 用户实际验证有效的方法,但官方开发者表示“无 image_size 也应该能正常工作”,因此可优先尝试更新版本。
  3. 临时工作区:如果更新后问题依然存在,可以尝试清除已缓存的 .npz 文件(默认位于缓存目录),重新生成缓存。
  4. 日志对比:如果问题仍然存在,请将错误日志与 #2327 修复后的行为进行对比,确保遇到的错误类型一致(均为 PIL.UnidentifiedImageError)。

验证方法

在应用上述任一修复后,重新运行相同的 LoRA 训练命令(保持 --cache_latents_to_disk 参数启动),确认训练过程中不再出现 PIL.UnidentifiedImageError 且能正常完成 latent 缓存阶段。如果使用修复 #2327,建议先删除旧的 .npz 缓存文件以确保完全重新生成。

参考来源

kohya-ss/sd-scripts #2326

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 7746

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注