按照xlerobot 的教程跑目标跟踪的 demo 有错误
系统: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 下,还是会报这个错误,想问问这个该怎么解决呢?也尝试了绝对路径和相对路径,依旧没解决这个问题。
想求助一下,该怎么解决这个问题 模型下载链接
理论上这个代码应该是可以自动下载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 发我,我帮你确认是否损坏或格式不匹配。
我就是自动运行代码,下载的文件一直报上述错误。我才自行下载的,但是也是失败
- 环境应该没问题,测试,我使用该链接下载的文件,没有报错
- 文件大小,文件格式也没问题
- 这个没明白什么意思。(只要是这个例子代码自动下载的模型文件,就是官方支持的吧)
- 清楚了缓存,依旧报错
- 最小复现实验应该和 1 类似吧,我跑1中的模型,输出如下;yolo11n-seg.pt 这个依旧报上述错误。
你是否可以上传一份,你那能正常运行该代码的模型文件呢?