ValueError: Dimension 0 in both shapes must be equal, but are 1 and ****(YOLO网络检测问题)

yolo网络检测时错误解决,Yolo等网络测试时出现以下错误:

错误原因:类别class维度不匹配错误,比如训练时类别是五类,测试的时候不是五类,就会出现这种错误,自己的训练时五类,测试是三类。

原因解决:其实自己在编辑model_data下的voc_classes.txt时,使用的是txt编辑的,没有使用Notepad++,导致txt文档中编辑的三类,其实中间有空字符串,在yolo中的train.py读取训练类别时导致类别增加。比如:

ValueError: Dimension 0 in both shapes must be equal, but are 1 and ****(YOLO网络检测问题)_第1张图片 txt下格式

Notepad++下的格式应该为: 

ValueError: Dimension 0 in both shapes must be equal, but are 1 and ****(YOLO网络检测问题)_第2张图片 Notepad++下正确格式

但是也有可能是下面这种情况:

ValueError: Dimension 0 in both shapes must be equal, but are 1 and ****(YOLO网络检测问题)_第3张图片 txt下格式(1)

Notepad++下的格式为:

ValueError: Dimension 0 in both shapes must be equal, but are 1 and ****(YOLO网络检测问题)_第4张图片 Notepad++下格式

所以测试得到num_classes为5: 

ValueError: Dimension 0 in both shapes must be equal, but are 1 and ****(YOLO网络检测问题)_第5张图片 类别包括空字符串

 测试实现。

# -*- coding: utf-8 -*-
"""

@author: Administrator
"""
'''
用于测试txt文档中类别的个数
'''
classes_path = 'voc_classes.txt'
def get_classes(classes_path):
    with open(classes_path) as f:
        class_names = f.readlines()
    class_names = [c.strip() for c in class_names]
    return class_names

class_names = get_classes(classes_path)
num_classes = len(class_names)
print(num_classes)

 

你可能感兴趣的:(深度学习)