问题描述
我正尝试计算具有两个类的对象检测任务的“真阳性”(TP),“假阳性”(FP)和“假阴性”(FN)数量。我以为:
def detail_results(gts,model_pred,th):
TP = 0
FP = 0
FN = 0
GTS = 0
PRED = 0
for image_idx in range(len(gts)):
gt = gts[image_idx]
pred = model_pred[image_idx]
GTS+=len(gt)
PRED+= len(pred)
IoUs = []
IoU_idxs = []
for d_gt in gt:
founded = False
for d_pred in pred:
IoU = bb_intersection_over_union( d_pred[0:4],d_gt[0:4])
if IoU != 0.0:
# IoU bigger than threshold,same class,not double detection
if IoU >= th and d_gt[4] == d_pred[4] and not founded:
TP+=1
founded = True
# GT than was not founded
if not founded:
FN+=1
FP = PRED - TP
return(GTS,PRED,TP,FP,FN)
位置:
- gts 包含以下格式的地面真理边界框:[x1,y1,w,h,class]
- model_pred 包含相同格式的模型预测
- th 是IoU阈值
- 方法 bb_intersection_over_union 计算GT的IoU, 预测边界框。
但是此方法返回的结果与Darknet framework中嵌入方法所计算的结果不同:
我在哪里弄错了?
您知道一些可以根据边界框坐标计算TP,FP和FN的库吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)