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

如何使用Darknet计算YOLOv4的mAP0.5:0.95评估指标

Darknet YOLOv4 自定义IoU阈值mAP计算方法

默认执行不带额外参数的map命令,只会输出IoU=0.5阈值下的mAP结果,通过追加参数即可实现其他阈值、以及COCO标准mAP@0.5:0.95的计算,具体操作如下:

  • 单指定IoU阈值的mAP计算
    在原命令末尾追加-iou_thresh 阈值参数即可,阈值替换为0~1之间你需要的数值。比如要计算IoU=0.75下的mAP,执行命令:
!./darknet detector map $_path_to_objdata_file $_path_to_configuration_file $_path_to_weights -iou_thresh 0.75

运行完成后输出的mean average precision结果,就是对应阈值下的mAP。

  • mAP@IoU=0.5:0.95指标计算
    目前Colab环境部署YOLOv4所用的基本都是AlexeyAB维护的Darknet分支,本身内置了多IoU阈值步长计算逻辑,不需要自己手动循环跑多个阈值,直接在原命令后追加起止阈值、步长参数即可:
!./darknet detector map $_path_to_objdata_file $_path_to_configuration_file $_path_to_weights -iou_thresh 0.5 -iou_step 0.05 -iou_end 0.95

三个参数分别指定IoU起始值、阈值步长、IoU结束值,刚好覆盖mAP@0.5:0.95要求的从0.5到0.95、间隔0.05的全部10个阈值。运行完成后,输出日志里会逐个列出每个IoU阈值对应的AP值,最终给出的跨阈值平均结果就是需要的mAP@0.5:0.95。

如果你用的是较早的、没有步长计算参数的Darknet版本,可以直接在Colab里执行下面的shell循环,自动遍历10个阈值计算结果并输出平均值:

iou_list=(0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95)
total_map=0
for iou in ${iou_list[@]}
do
  # 提取单阈值mAP结果累加
  single_map=$(./darknet detector map $_path_to_objdata_file $_path_to_configuration_file $_path_to_weights -iou_thresh $iou | grep "mean average precision" | awk '{print $NF}')
  total_map=$(echo "$total_map + $single_map" | bc)
done
# 计算10个阈值的平均结果
map_final=$(echo "scale=4; $total_map / 10" | bc)
echo "计算完成,mAP@IoU0.5:0.95 = $map_final"

内容的提问来源于stack exchange,提问作者Gregor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 15:48:35