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

如何让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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 10:42:18