YOLO v11新增ap75指标详解
YOLO v11添加ap75指标
1、按yolo11/ultralytics/utils/metrics.py打开metrics.py文件
2、找到Metric()方法
3、找到下图所示内容在此方法后添加ap75方法
@property
def ap75(self):
"""
Returns the Average Precision (AP) at an IoU threshold of 0.5 for all classes.
Returns:
(np.ndarray, list): Array of shape (nc,) with AP50 values per class, or an empty list if not available.
"""
return self.all_ap[:, 5] if len(self.all_ap) else []
4、继续找到下图所示内容在此方法后添加ap75方法,注意按代码块修改return self.all_ap[:, 5]
@property
def map75(self):
"""
Returns the mean Average Precision (mAP) at an IoU threshold of 0.75.
Returns:
(float): The mAP at an IoU threshold of 0.75.
"""
return self.all_ap[:, 5].mean() if len(self.all_ap) else 0.0
5、找到mean_results()在此方法返回参数内添加map75
def mean_results(self):
"""Mean of results, return mp, mr, map50, map."""
return [self.mp, self.mr, self.map50, self.map75, self.map]
def class_result(self, i):
"""Class-aware result, return p[i], r[i], ap50[i], ap[i]."""
return self.p[i], self.r[i], self.ap50[i], self.ap75[i], self.ap[i]
6、找到def keys(self)方法,添加"metrics/mAP75(B)",
def keys(self):
"""Returns a list of keys for accessing specific metrics."""
return ["metrics/precision(B)", "metrics/recall(B)", "metrics/mAP50(B)", "metrics/mAP75(B)", "metrics/mAP50-95(B)"]
7、找到下一个def keys(self)方法,添加
@property
def keys(self):
"""Returns a list of keys for accessing metrics."""
return [
"metrics/precision(B)",
"metrics/recall(B)",
"metrics/mAP50(B)",
"metrics/mAP75(B)",
"metrics/mAP50-95(B)",
"metrics/precision(M)",
"metrics/recall(M)",
"metrics/mAP50(M)",
"metrics/mAP75(M)",
"metrics/mAP50-95(M)",
]
8、找到下一个def keys(self)方法,添加
@property
def keys(self):
"""Returns list of evaluation metric keys."""
return [
"metrics/precision(B)",
"metrics/recall(B)",
"metrics/mAP50(B)",
"metrics/mAP75(B)",
"metrics/mAP50-95(B)",
"metrics/precision(P)",
"metrics/recall(P)",
"metrics/mAP50(P)",
"metrics/mAP75(P)",
"metrics/mAP50-95(P)",
]
标题9、找到def fitness(self)方法,添加
def fitness(self):
"""Model fitness as a weighted combination of metrics."""
w = [0.0, 0.0, 0.1, 0.1, 0.9] # weights for [P, R, mAP@0.5, mAP@0.5:0.95]
return (np.array(self.mean_results()) * w).sum()
10、找到yolo11/ultralytics/models/yolo/detect/val.py路径下的val.py文件并打开,在如下图所示位置修改
def get_desc(self):
"""Return a formatted string summarizing class metrics of YOLO model."""
return ("%22s" + "%11s" * 7) % ("Class", "Images", "Instances", "Box(P", "R", "mAP50", "mAP75", "mAP50-95)")
按以上步骤修改完成后,训练时可输出ap75指标
作者:一只蹦跶的小蹦跶