YeRen123455/Infrared-Small-Target-Detection

关于ROC曲线绘制的问题

1071189147 opened this issue · 4 comments

您好,我现在在与您的方法做对比,在绘制ROC曲线时,有些问题需要请教一下:

  1. 请问您是使用model/metric.py 中的ROCMetric()得到的tp_rates,fp_rates绘制的?还是使用的PD_FA()得到的Final_FA与Final_PD绘制的呢
  2. 您绘制的时候Bins 采取的是10 吗,即取10个离散点嘛?
  3. 对于其他对比方法,是读取测试结果的图片,再归一化,然后再调用计算ROC的函数吗?我现在使用ROCMetric()得到的值画对比方法的ROC曲线,得到的效果极差,Fa很高,Pd很低,如下图所示:
    roc
    但是对比方法的主观效果,包括计算IoU等指标都是正常的,代表其检测的应该没问题,我不清楚是不是我的程序出问题还是调用的函数不对,
    请问您可以释放一下画ROC曲线的程序 或者 对比方法的ROC曲线的值吗?

或者您可以看一下我的程序哪不对吗?我自己总结的两点需要注意的,第一是更换方法后,需要reset(),第二是GT也需要归一化,

  
    #读取 GT
    for label in imgs:
         labels.append(torch.unsqueeze(torch.unsqueeze(torch.tensor(cv2.imread(labels_path+label,0)/255), 0), 0).cuda())
         #GT 需要归一化!
    #不同方法进行循环计算ROC
    for method in methods_list:
        ROC.reset()  #ROC重置
        #读取预测的图片
        for index,item in enumerate(tqdm(imgs)):
            pred  =torch.unsqueeze(torch.unsqueeze(torch.tensor(cv2.imread(method+item,0)/255),0),0).cuda()#适应ROCMetric()的格式
            ROC.update(pred, labels[index])
        #所有图计算完成后,get()
        ture_positive_rate, false_positive_rate, recall, precision = ROC.get() 

您好,请问您的问题解决了吗

您好,请问您的问题解决了吗

我最后缩小显示区间+更换部分方法

您好,请问您的问题解决了吗

我最后缩小显示区间+更换部分方法

请问方便给我发一份代码嘛,我还是搞不太定。。。我的邮箱是bevisjy@163.com,感谢!

Web-AK commented

@1071189147 @BEVISjyy 我最近也在尝试画ROC曲线一直报错,搞不定,方便发一份吗?我的邮箱:a_doris@163.com 万分感谢!