You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地运行YOLO模型触发IndexError索引越界,求修复方案

修复YOLOv3运行时的IndexError问题

错误根源

你碰到的IndexError: index 57 is out of bounds for axis 0 with size 1,核心问题是颜色数组COLORS的长度只有1,但模型输出的类别ID是57(属于COCO的80类范围),导致用57去索引长度为1的数组时越界。

具体修复步骤

  • 检查类别名称文件的加载
    先确认coco.names的加载代码是否正确,路径是否指向正确的文件:

    classes = []
    with open("你的coco.names路径", "r") as f:
        classes = [line.strip() for line in f.readlines()]
    

    打开coco.names文件数一下行数,正常COCO数据集是80个类别,所以len(classes)应该等于80。如果这里长度不对,要么是路径错了(加载了空文件或错误文件),要么是文件本身内容缺失。

  • 修正颜色数组COLORS的生成逻辑
    COLORS需要和类别数量一一对应,原代码里应该是基于classes的长度生成,检查你的代码是否写成了这样:

    import numpy as np
    COLORS = np.random.uniform(0, 255, size=(len(classes), 3))
    

    如果之前写死了size=(1,3)或者用了错误的长度,就改成上面的代码,让它自动匹配类别数量。

  • 验证模型文件的配套性
    确保你用的yolov3.cfg、权重文件(比如yolov3.weights)和coco.names是一套的:

    • 不要混用YOLOv3-tiny的cfg和标准YOLOv3的权重,反之亦然
    • 所有文件都对应COCO 80类的版本,不要用自定义训练的类别文件配官方权重
  • 检查classIDs的取值范围
    可以在报错行之前加一行调试代码,看看classIDs的数值:

    print("classIDs:", classIDs)
    

    正常情况下数值应该在0到79之间,如果出现大于等于80的数,说明模型和类别文件不匹配,需要重新核对文件。

内容的提问来源于stack exchange,提问作者Nandatto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 13:05:19