如何让YOLOv7的detect.py生成混淆矩阵并解决检测结果不一致问题
YOLOv7测试相关问题
- 我现在碰到两个问题:一是YOLOv7的
test.py和detect.py对同一测试集的识别结果不一致;二是想让detect.py执行时能像test.py一样生成混淆矩阵,想问下是否可行? - 我已经修改了YOLOv7的代码,让混淆矩阵显示真实数值而非比例。原本以为当
detect.py没识别到车牌图像里的“B”时,test.py生成的混淆矩阵中“B”的FN列至少会显示“1”,但实际情况并非如此。
相关素材
- test.py生成的混淆矩阵截图
- detect.py识别测试集图像的结果截图
- detect.py输出的测试集识别标签txt截图
- 测试集真实标签txt截图
修改的代码细节
修改了yolov7\utils\metrics.py中的plot方法,目的是让混淆矩阵显示真实数值而非比例:
原版本代码
def plot(self, save_dir='', names=()): try: import seaborn as sn array = self.matrix / (self.matrix.sum(0).reshape(1, self.nc + 1) + 1E-6) # normalize array[array < 0.005] = np.nan # don't annotate (would appear as 0.00) fig = plt.figure(figsize=(12, 9), tight_layout=True)
修改后版本
def plot(self, save_dir='', names=()): try: import seaborn as sn array = self.matrix #/ (self.matrix.sum(0).reshape(1, self.nc + 1) + 1E-6) # normalize array[array < 0.005] = np.nan # don't annotate (would appear as 0.00) fig = plt.figure(figsize=(12, 9), tight_layout=True)
内容的提问来源于stack exchange,提问作者Jack-peach
相关产品推荐
相关产品推荐

