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

YOLOv3+TensorFlow目标检测加载权重出现形状不兼容错误如何解决

问题解决方法

这个报错和numpy版本无关,核心原因是模型结构与加载的权重不匹配:你当前实例化的是标准YOLOv3模型,要加载的是YOLOv3-Tiny的权重,二者第一层卷积输出通道数不同(标准YOLOv3为32,Tiny版本为16),因此触发形状不兼容报错,可按以下步骤修复:

  • 第一步:调整模型导入与实例化代码
    你使用的yolov3_tf2库内置了Tiny版本的模型类,修改对应代码即可:
    原导入代码:
    from yolov3_tf2.models import YoloV3
    
    改为:
    from yolov3_tf2.models import YoloV3, YoloV3Tiny
    
    原模型实例化代码:
    yolo = YoloV3(classes=len(class_names))
    
    改为:
    yolo = YoloV3Tiny(classes=len(class_names))
    
  • 第二步:确认权重正确性
    确保你存放在./weights/路径下的yolov3-tiny.tf是适配TensorFlow 2.x版本的转换后权重,不要直接使用Darknet原生的.weights格式文件重命名使用。
  • 第三步:修复代码中其他语法错误
    你的代码还有两处缩进问题会导致后续运行报错:
    1. img_in = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)及后续到if cv2.waitKey(1) == ord('q')之前的代码,全部要缩进一层,放到while True循环内部,否则只会读取第一帧后就停止处理。
    2. 按下q退出后的资源释放代码位置错误,原代码中vid.release()等语句写在break之后永远不会执行,调整为:
    if cv2.waitKey(1) == ord('q'):
        vid.release()
        out.release()
        cv2.destroyAllWindows()
        break
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:24:03