XLeRobot icon indicating copy to clipboard operation
XLeRobot copied to clipboard

按照xlerobot 的教程跑目标跟踪的 demo 有错误

Open beforeface opened this issue 2 months ago • 2 comments

系统:linux 20.04 yolo : 8.3.214

这是报错信息 Program execution failed: PytorchStreamReader failed reading zip archive: failed finding central directory Traceback (most recent call last): File "/home/simpro/work/lerobot/examples/3_so100_yolo_ee_control.py", line 516, in main model = YOLOE("yoloe-11l-seg.pt") # or select yoloe-11s/m-seg.pt for different sizes

我也下载了 yoloe-11l-seg.pt,放在了 example和 .config/Ultralytics 下,还是会报这个错误,想问问这个该怎么解决呢?也尝试了绝对路径和相对路径,依旧没解决这个问题。

想求助一下,该怎么解决这个问题 模型下载链接

beforeface avatar Oct 17 '25 09:10 beforeface

理论上这个代码应该是可以自动下载yolo模型的,可以先试试看另一个example(_follow)看看是不是有同样的问题。

下面是AI的回答:

我看到了你的错误是 PytorchStreamReader failed reading zip archive: failed finding central directory,通常表示“权重文件不是一个有效的 PyTorch zip/JIT 文件或已损坏”。绝大多数时候是权重下载不完整/格式不匹配导致的。按下面步骤逐一排查,基本能定位并解决。

快速定位(先验证环境没问题)

  • 用一个已知可用的权重试加载(你目录下已有 yolo11n-seg.pt/yolo11l-seg.pt):
from ultralytics import YOLO
YOLO("/home/vector/Research/XLeRobot/yolo11n-seg.pt")  # 或 yolo11l-seg.pt
  • 如果这能正常加载,说明环境/Ultralytics安装没问题,故障只在 yoloe-11l-seg.pt 文件本身。
  • 如果这也报同样错误,考虑升级/重装 ultralytics:pip install -U ultralytics,然后再试。

检查你下载的 yoloe-11l-seg.pt 是否损坏/格式不对

在终端检查文件是否像“网页/HTML”或“空文件”:

ls -lh /home/vector/Research/XLeRobot/yoloe-11l-seg.pt
file /home/vector/Research/XLeRobot/yoloe-11l-seg.pt
head -c 64 /home/vector/Research/XLeRobot/yoloe-11l-seg.pt | xxd
sha256sum /home/vector/Research/XLeRobot/yoloe-11l-seg.pt
  • 如果 file 输出显示是 “HTML/text”,那就是误下了网页,需要重新以直链下载。
  • 如果大小异常小(几 KB/MB),基本就是坏的,重新下载。
  • 如果是 safetensors 格式却被命名成 .pt,也会触发此错误。可尝试改名为 .safetensors 并用 Ultralytics 直接加载:
from ultralytics import YOLO
YOLO("/home/vector/Research/XLeRobot/yoloe-11l-seg.safetensors")

确认权重格式与类匹配

  • Ultralytics 官方一般用 YOLO(...) 来加载分割/检测权重(yolov8*, yolo11*)。你正在用的是 YOLOE(...)。请确保这份 yoloe-11l-seg.pt 的确是与 Ultralytics 的 YOLOE 类兼容的“Ultralytics 格式”权重,而不是别的仓库(例如 YOLOE/YOLO-World/第三方实现)的权重。
  • 若不确定,直接换成 Ultralytics 官方权重(你已经有 yolo11l-seg.pt 等),并把代码改为:
from ultralytics import YOLO
model = YOLO("/home/vector/Research/XLeRobot/yolo11l-seg.pt")
  • 你当前脚本用到了“文本提示类别”(set_classes/get_text_pe)。这通常是 YOLO-World/YOLOE 类才有的接口。若改用 YOLO(...),请相应调整用法(Ultralytics 官方 YOLO 不支持这种 text prompt 方式;若必须用 text prompt,请确保使用支持 text prompt 的对应类和配套权重)。

清理缓存后再试

有时缓存中的同名损坏文件会反复被读取:

rm -f ~/.cache/torch/hub/checkpoints/yoloe-11l-seg.pt
rm -rf ~/.cache/ultralytics

然后用可信直链重新下载 yoloe-11l-seg.pt,或直接使用你已验证能加载的 yolo11l-seg.pt

最小复现实验(建议先跑)

from ultralytics import YOLO
m = YOLO("/home/vector/Research/XLeRobot/yolo11n-seg.pt")
res = m.predict(source="0", imgsz=640, stream=False, device="cpu")  # 简单跑一下
print("OK")

如果上述“已知可用模型”能加载运行,但 yoloe-11l-seg.pt 始终报错,那么可以确定是该文件的来源/格式问题。建议:

  • 换用与当前代码完全匹配的“官方发布地址”的 yoloe-11l-seg.pt
  • 或把代码调整为使用 YOLO(...) + yolo11*-seg.pt 这条官方支持路径。

需要的话你把你 yoloe-11l-seg.pt 的文件大小、file 输出、sha256sum 发我,我帮你确认是否损坏或格式不匹配。

Vector-Wangel avatar Oct 17 '25 14:10 Vector-Wangel

我就是自动运行代码,下载的文件一直报上述错误。我才自行下载的,但是也是失败

  1. 环境应该没问题,测试,我使用该链接下载的文件,没有报错
  2. 文件大小,文件格式也没问题Image
  3. 这个没明白什么意思。(只要是这个例子代码自动下载的模型文件,就是官方支持的吧)
  4. 清楚了缓存,依旧报错
  5. 最小复现实验应该和 1 类似吧,我跑1中的模型,输出如下;yolo11n-seg.pt 这个依旧报上述错误。
Image

你是否可以上传一份,你那能正常运行该代码的模型文件呢?

beforeface avatar Oct 20 '25 01:10 beforeface