0. 源码链接:
1. 显示效果
yolov5运行val.py
时,显示如下(图1)所示,只有map50
和map50-95
, 如果想显示map75,如下(图2)所示,应该修改部分代码内容。
2. 解决思路
-
任务背景:yolov5版本:
6.2
, 解决问题为12
个类别的检测问题 -
解决关键代码在
276
行,如下加粗部分
打印ap的值:结果如下图所示:输出结果12行,代表12个类别;每一行有10个数,分别代表ap[50, 55, 60, 65, 70, 75, 80, 85, 90, 95], 所以ap75=ap[5]
,map75=ap.mean[:,5]
3. 修改部分
-
190-191行
# 修改前 s = ('%22s' + '%11s' * 6) % ('Class', 'Images', 'Instances', 'P', 'R', 'mAP50', 'mAP50-95') tp, fp, p, r, f1, mp, mr, map50, ap50, map = 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 # 修改后 s = ('%22s' + '%11s' * 7) % ('Class', 'Images', 'Instances', 'P', 'R', 'mAP50', 'mAP75', 'mAP50-95') tp, fp, p, r, f1, mp, mr, map50, map75, ap50, map = 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0
-
276-277行
# 修改前 ap50, ap = ap[:, 0], ap.mean(1) # AP@0.5, AP@0.5:0.95 mp, mr, map50, map = p.mean(), r.mean(), ap50.mean(), ap.mean() # 修改后 ap50, ap75, ap = ap[:, 0], ap[:, 5], ap.mean(1) # AP@0.5, AP@0.75, AP@0.5:0.95 mp, mr, map50, map75, map = p.mean(), r.mean(), ap50.mean(), ap75.mean(), ap.mean()
-
281-282行
# 修改前 pf = '%22s' + '%11i' * 2 + '%11.3g' * 4 # print format LOGGER.info(pf % ('all', seen, nt.sum(), mp, mr, map50, map)) # 修改后 pf = '%22s' + '%11i' * 2 + '%11.3g' * 5 # print format LOGGER.info(pf % ('all', seen, nt.sum(), mp, mr, map50, map75, map))
-
289行
# 修改前 LOGGER.info(pf % (names[c], seen, nt[c], p[i], r[i], ap50[i], ap[i])) # 修改后 LOGGER.info(pf % (names[c], seen, nt[c], p[i], r[i], ap50[i], ap75[i], ap[i]))
-
300行
# 修改前 callbacks.run('on_val_end', nt, tp, fp, p, r, f1, ap, ap50, ap_class, confusion_matrix) # 修改后 callbacks.run('on_val_end', nt, tp, fp, p, r, f1, ap, ap50, ap75, ap_class, confusion_matrix)
-
324行
# 修改前 map, map50 = eval.stats[:2] # update results (mAP@0.5:0.95, mAP@0.5) # 修改后 map, map50, map75 = eval.stats[:3] # update results (mAP@0.5:0.95, mAP@0.75,mAP@0.5)
-
336行
# 修改前 return (mp, mr, map50, map, *(loss.cpu() / len(dataloader)).tolist()), maps, t # 修改后 return (mp, mr, map50, map75, map, *(loss.cpu() / len(dataloader)).tolist()), maps, t
修改之后再运行
val.py
就可以了!!!
文章出处登录后可见!
已经登录?立即刷新