参考资料 ultralytics/utils/metrics.py
备注
该文件可在https://github.com/ultralytics/ultralytics/blob/main/ultralytics/utils/metrics .py 上获取。如果您发现问题,请通过提交 Pull Request🛠️ 帮助修复。谢谢🙏!
ultralytics.utils.metrics.ConfusionMatrix
用于计算和更新混淆矩阵的类,以完成物体检测和分类任务。
属性
名称 | 类型 | 说明 |
---|---|---|
task |
str
|
任务类型,"检测 "或 "分类"。 |
matrix |
ndarray
|
混淆矩阵,维度取决于任务。 |
nc |
int
|
班级数量。 |
conf |
float
|
检测的置信阈值。 |
iou_thres |
float
|
联合门槛上的交叉路口 |
源代码 ultralytics/utils/metrics.py
284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 |
|
__init__(nc, conf=0.25, iou_thres=0.45, task='detect')
初始化YOLO 模型的属性。
源代码 ultralytics/utils/metrics.py
matrix()
plot(normalize=True, save_dir='', names=(), on_plot=None)
使用 seaborn 绘制混淆矩阵并保存到文件中。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
normalize |
bool
|
是否对混淆矩阵进行归一化处理。 |
True
|
save_dir |
str
|
保存绘图的目录。 |
''
|
names |
tuple
|
类别名称,用作绘图上的标签。 |
()
|
on_plot |
func
|
可选的回调,用于在渲染时传递绘图路径和数据。 |
None
|
源代码 ultralytics/utils/metrics.py
print()
process_batch(detections, gt_bboxes, gt_cls)
更新目标检测任务的混淆矩阵
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
detections |
Array[N, 6] | Array[N, 7]
|
检测到的边界框及其相关信息。
每行应包含(x1, y1, x2, y2, conf, class)
或一个附加元素 |
所需 |
gt_bboxes |
Array[M, 4] | Array[N, 5]
|
采用 xyxy/xyxyr 格式的地面实况边界框。 |
所需 |
gt_cls |
Array[M]
|
类标签。 |
所需 |
源代码 ultralytics/utils/metrics.py
process_cls_preds(preds, targets)
更新分类任务的混淆矩阵
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
preds |
Array[N, min(nc, 5)]
|
预测的类别标签 |
所需 |
targets |
Array[N, 1]
|
基本真实类别标签。 |
所需 |
源代码 ultralytics/utils/metrics.py
tp_fp()
返回真阳性和假阳性。
源代码 ultralytics/utils/metrics.py
ultralytics.utils.metrics.Metric
垒球 SimpleClass
用于计算YOLOv8 模型评价指标的类。
属性
名称 | 类型 | 说明 |
---|---|---|
p |
list
|
每类的精确度。形状:(nc,)。 |
r |
list
|
每类的召回率。形状:(nc, )。 |
f1 |
list
|
每类的 F1 分数。形状:(nc, )。 |
all_ap |
list
|
所有班级和所有 IoU 临界值的 AP 分数。形状:(nc,10)。 |
ap_class_index |
list
|
每个 AP 分数的班级指数。形状:(nc,)。 |
nc |
int
|
班级数量 |
方法
名称 | 说明 |
---|---|
ap50 |
所有班级在 IoU 临界值为 0.5 时的 AP。返回:AP 分数列表。形状: (nc,) 或 []. |
ap |
在 IoU 临界值为 0.5 至 0.95 时的所有等级的 AP。返回:AP 分数列表。形状: (nc,) 或 []. |
mp |
所有等级的平均精度。返回值:浮点数。 |
mr |
所有班级的平均召回率。返回值:浮点数。 |
map50 |
所有班级在 IoU 临界值 0.5 时的平均 AP 值。返回值:浮点数。 |
map75 |
所有班级在 IoU 临界值 0.75 时的平均 AP 值。返回值:浮点数。 |
map |
所有等级在 IoU 临界值 0.5 至 0.95 时的平均 AP 值。返回值:浮点数。 |
mean_results |
结果的平均值,返回 mp、mr、map50、map。 |
class_result |
类别感知结果,返回 p[i]、r[i]、ap50[i]、ap[i]。 |
maps |
每个类的 mAP。返回值mAP 分数数组,形状:(nc,)。 |
fitness |
模型适配度作为各项指标的加权组合。返回值:浮点数。 |
update |
根据新的评估结果更新度量属性。 |
源代码 ultralytics/utils/metrics.py
620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 |
|
ap
property
在 IoU 阈值为 0.5-0.95 时,返回所有类别的平均精度 (AP)。
返回:
类型 | 说明 |
---|---|
(ndarray, list)
|
包含每个类别 AP50-95 值的形状 (nc,) 数组,如果没有,则为空列表。 |
ap50
property
在 IoU 阈值为 0.5 时,返回所有类别的平均精度 (AP)。
返回:
类型 | 说明 |
---|---|
(ndarray, list)
|
包含每个类别 AP50 值的形状 (nc,) 数组,如果没有,则为空列表。 |
curves
property
返回用于访问特定度量曲线的曲线列表。
curves_results
property
返回用于访问特定度量曲线的曲线列表。
map
property
以 0.05 为步长,在 0.5 - 0.95 的 IoU 门限范围内返回平均精度 (mAP)。
返回:
类型 | 说明 |
---|---|
float
|
在 IoU 临界值 0.5 - 0.95 之间的 mAP,步长为 0.05。 |
map50
property
返回 IoU 阈值为 0.5 时的平均精度 (mAP)。
返回:
类型 | 说明 |
---|---|
float
|
IoU 临界值为 0.5 时的 mAP。 |
map75
property
返回 IoU 阈值为 0.75 时的平均精度 (mAP)。
返回:
类型 | 说明 |
---|---|
float
|
IoU 临界值为 0.75 时的 mAP。 |
maps
property
各班的 MAP。
mp
property
返回所有类别的平均精度。
返回:
类型 | 说明 |
---|---|
float
|
所有等级的平均精度。 |
mr
property
返回所有类别的平均召回率。
返回:
类型 | 说明 |
---|---|
float
|
所有班级的平均召回率。 |
__init__()
初始化一个 Metric 实例,用于计算YOLOv8 模型的评估指标。
源代码 ultralytics/utils/metrics.py
class_result(i)
fitness()
mean_results()
update(results)
用一组新结果更新模型的评估指标。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
results |
tuple
|
包含以下评价指标的元组: - p(列表):每个类别的精确度。形状:(nc,)。 - r(列表):每个类别的召回率。形状:(nc,)。 - f1(列表):每个类别的 F1 分数。Shape: (nc,). - all_ap(列表):所有类别和所有 IoU 临界值的 AP 分数。形状:(nc, 10)。 - ap_class_index(列表):每个 AP 分数的类别索引。形状:(nc, )。 |
所需 |
副作用
更新类属性 self.p
, self.r
, self.f1
, self.all_ap
和 self.ap_class_index
基于
中提供的值为基础 results
元组。
源代码 ultralytics/utils/metrics.py
ultralytics.utils.metrics.DetMetrics
垒球 SimpleClass
该类是一个实用类,用于计算检测指标,如精度、召回率和平均精度(mAP (mAP) 的检测指标。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
save_dir |
Path
|
保存输出绘图的目录路径。默认为当前目录。 |
Path('.')
|
plot |
bool
|
表示是否为每个类别绘制精确度-召回曲线的标志。默认为 "假"。 |
False
|
on_plot |
func
|
可选的回调,用于在渲染时传递绘图路径和数据。默认为 "无"。 |
None
|
names |
tuple of str
|
表示类名称的字符串元组。默认为空元组。 |
()
|
属性
名称 | 类型 | 说明 |
---|---|---|
save_dir |
Path
|
保存输出绘图的目录路径。 |
plot |
bool
|
表示是否绘制每个类别的精度-召回曲线的标志。 |
on_plot |
func
|
可选的回调,用于在渲染时传递绘图路径和数据。 |
names |
tuple of str
|
表示类名称的字符串元组。 |
box |
Metric
|
度量类的实例,用于存储检测度量的结果。 |
speed |
dict
|
用于存储检测过程各部分执行时间的字典。 |
方法
名称 | 说明 |
---|---|
process |
用最新一批预测结果更新度量结果。 |
keys |
返回用于访问计算出的检测指标的键列表。 |
mean_results |
返回计算出的检测指标的平均值列表。 |
class_result |
返回特定类的计算检测指标值列表。 |
maps |
返回不同 IoU 阈值的平均精度 (mAP) 值字典。 |
fitness |
根据计算出的检测指标计算适合度得分。 |
ap_class_index |
返回按平均精度 (AP) 值排序的类索引列表。 |
results_dict |
返回将检测度量键映射到其计算值的字典。 |
curves |
TODO |
curves_results |
TODO |
源代码 ultralytics/utils/metrics.py
792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 |
|
ap_class_index
property
返回每个类别的平均精度指数。
curves
property
返回用于访问特定度量曲线的曲线列表。
curves_results
property
返回已计算性能指标和统计数据的字典。
fitness
property
返回盒对象的适配性。
keys
property
返回用于访问特定指标的键列表。
maps
property
返回每个类别的平均精度 (mAP) 分数。
results_dict
property
返回已计算性能指标和统计数据的字典。
__init__(save_dir=Path('.'), plot=False, on_plot=None, names=())
使用保存目录、绘图标志、回调函数和类名初始化 DetMetrics 实例。
源代码 ultralytics/utils/metrics.py
class_result(i)
mean_results()
process(tp, conf, pred_cls, target_cls)
处理物体检测的预测结果并更新指标。
源代码 ultralytics/utils/metrics.py
ultralytics.utils.metrics.SegmentMetrics
垒球 SimpleClass
计算和汇总给定类别集的检测和分割指标。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
save_dir |
Path
|
保存输出绘图的目录路径。默认为当前目录。 |
Path('.')
|
plot |
bool
|
是否保存检测和分割图。默认为 "假"。 |
False
|
on_plot |
func
|
可选的回调,用于在渲染时传递绘图路径和数据。默认为 "无"。 |
None
|
names |
list
|
类名称列表。默认为空列表。 |
()
|
属性
名称 | 类型 | 说明 |
---|---|---|
save_dir |
Path
|
保存输出绘图的目录路径。 |
plot |
bool
|
是否保存检测和分割图。 |
on_plot |
func
|
可选的回调,用于在渲染时传递绘图路径和数据。 |
names |
list
|
类名列表。 |
box |
Metric
|
用于计算方框检测指标的 Metric 类实例。 |
seg |
Metric
|
度量类的一个实例,用于计算掩膜分割度量。 |
speed |
dict
|
字典,用于存储推理不同阶段所用的时间。 |
方法
名称 | 说明 |
---|---|
process |
对给定的预测集进行度量处理。 |
mean_results |
返回所有类别的检测和分割指标的平均值。 |
class_result |
返回类别 |
maps |
返回 IoU 阈值从 0.50 到 0.95 的平均精度 (mAP) 分数。 |
fitness |
返回适合度得分,它是各种指标的单一加权组合。 |
ap_class_index |
返回用于计算平均精度 (AP) 的类索引列表。 |
results_dict |
返回包含所有检测和分割指标以及适合度得分的字典。 |
源代码 ultralytics/utils/metrics.py
893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 |
|
ap_class_index
property
方框和屏蔽具有相同的 ap_class_index。
curves
property
返回用于访问特定度量曲线的曲线列表。
curves_results
property
返回已计算性能指标和统计数据的字典。
fitness
property
获取分割模型和边界框模型的适合度得分。
keys
property
返回用于访问度量的键值列表。
maps
property
返回对象检测和语义分割模型的 mAP 分数。
results_dict
property
返回对象检测模型的评估结果。
__init__(save_dir=Path('.'), plot=False, on_plot=None, names=())
使用保存目录、绘图标志、回调函数和类名初始化 SegmentMetrics 实例。
源代码 ultralytics/utils/metrics.py
class_result(i)
mean_results()
process(tp, tp_m, conf, pred_cls, target_cls)
根据给定的预测集处理检测和分割指标。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
tp |
list
|
真阳性方框列表。 |
所需 |
tp_m |
list
|
真阳性面具列表。 |
所需 |
conf |
list
|
置信度列表。 |
所需 |
pred_cls |
list
|
预测等级列表。 |
所需 |
target_cls |
list
|
目标类列表。 |
所需 |
源代码 ultralytics/utils/metrics.py
ultralytics.utils.metrics.PoseMetrics
计算和汇总给定类别集的检测和姿势指标。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
save_dir |
Path
|
保存输出绘图的目录路径。默认为当前目录。 |
Path('.')
|
plot |
bool
|
是否保存检测和分割图。默认为 "假"。 |
False
|
on_plot |
func
|
可选的回调,用于在渲染时传递绘图路径和数据。默认为 "无"。 |
None
|
names |
list
|
类名称列表。默认为空列表。 |
()
|
属性
名称 | 类型 | 说明 |
---|---|---|
save_dir |
Path
|
保存输出绘图的目录路径。 |
plot |
bool
|
是否保存检测和分割图。 |
on_plot |
func
|
可选的回调,用于在渲染时传递绘图路径和数据。 |
names |
list
|
类名列表。 |
box |
Metric
|
用于计算方框检测指标的 Metric 类实例。 |
pose |
Metric
|
度量类的一个实例,用于计算掩膜分割度量。 |
speed |
dict
|
字典,用于存储推理不同阶段所用的时间。 |
方法
名称 | 说明 |
---|---|
process |
对给定的预测集进行度量处理。 |
mean_results |
返回所有类别的检测和分割指标的平均值。 |
class_result |
返回类别 |
maps |
返回 IoU 阈值从 0.50 到 0.95 的平均精度 (mAP) 分数。 |
fitness |
返回适合度得分,它是各种指标的单一加权组合。 |
ap_class_index |
返回用于计算平均精度 (AP) 的类索引列表。 |
results_dict |
返回包含所有检测和分割指标以及适合度得分的字典。 |
源代码 ultralytics/utils/metrics.py
1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 |
|
curves
property
返回用于访问特定度量曲线的曲线列表。
curves_results
property
返回已计算性能指标和统计数据的字典。
fitness
property
计算分类指标和速度。 targets
和 pred
投入。
keys
property
返回评估指标键的列表。
maps
property
返回箱体和姿态检测的每类平均精度 (mAP)。
__init__(save_dir=Path('.'), plot=False, on_plot=None, names=())
使用目录路径、类名和绘图选项初始化 PoseMetrics 类。
源代码 ultralytics/utils/metrics.py
class_result(i)
mean_results()
process(tp, tp_p, conf, pred_cls, target_cls)
根据给定的预测集处理检测和姿态指标。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
tp |
list
|
真阳性方框列表。 |
所需 |
tp_p |
list
|
真实积极关键点列表。 |
所需 |
conf |
list
|
置信度列表。 |
所需 |
pred_cls |
list
|
预测等级列表。 |
所需 |
target_cls |
list
|
目标类列表。 |
所需 |
源代码 ultralytics/utils/metrics.py
ultralytics.utils.metrics.ClassifyMetrics
垒球 SimpleClass
用于计算分类指标的类,包括前 1 名和前 5 名的准确率。
属性
名称 | 类型 | 说明 |
---|---|---|
top1 |
float
|
1 级精度 |
top5 |
float
|
前五名的准确度 |
speed |
Dict[str, float]
|
一个字典,包含管道中每个步骤所需的时间。 |
属性
fitness (浮点数):模型的适合度,等于前五名的准确率。 results_dict (Dict[str, Union[float, str]]):包含分类指标和适配度的字典。 keys (List[str]):results_dict 的键值列表。
方法
名称 | 说明 |
---|---|
process |
处理目标和预测,计算分类指标。 |
源代码 ultralytics/utils/metrics.py
curves
property
返回用于访问特定度量曲线的曲线列表。
curves_results
property
返回用于访问特定度量曲线的曲线列表。
fitness
property
返回前 1 名和前 5 名准确度的平均值作为适合度得分。
keys
property
返回 results_dict 属性的键值列表。
results_dict
property
返回包含模型性能指标和适应度得分的字典。
__init__()
process(targets, pred)
目标班级和预测班级。
源代码 ultralytics/utils/metrics.py
ultralytics.utils.metrics.OBBMetrics
垒球 SimpleClass
源代码 ultralytics/utils/metrics.py
1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 |
|
ap_class_index
property
返回每个类别的平均精度指数。
curves
property
返回用于访问特定度量曲线的曲线列表。
curves_results
property
返回用于访问特定度量曲线的曲线列表。
fitness
property
返回盒对象的适配性。
keys
property
返回用于访问特定指标的键列表。
maps
property
返回每个类别的平均精度 (mAP) 分数。
results_dict
property
返回已计算性能指标和统计数据的字典。
class_result(i)
mean_results()
process(tp, conf, pred_cls, target_cls)
处理物体检测的预测结果并更新指标。
源代码 ultralytics/utils/metrics.py
ultralytics.utils.metrics.bbox_ioa(box1, box2, iou=False, eps=1e-07)
给定方框 1 和方框 2,计算方框 2 面积的交点。方框的格式为 x1y1x2y2。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
box1 |
ndarray
|
形状为 (n, 4) 的 numpy 数组,代表 n 个边界框。 |
所需 |
box2 |
ndarray
|
形状为 (m, 4) 的 numpy 数组,代表 m 个边界框。 |
所需 |
iou |
bool
|
如果为 True,则计算标准 IoU,否则返回 inter_area/box2_area。 |
False
|
eps |
float
|
一个小值,以避免除以零。默认为 1e-7。 |
1e-07
|
返回:
类型 | 说明 |
---|---|
ndarray
|
一个形状为 (n, m) 的 numpy 数组,代表方框 2 区域的交叉点。 |
源代码 ultralytics/utils/metrics.py
ultralytics.utils.metrics.box_iou(box1, box2, eps=1e-07)
计算方框的交叉-重合(IoU)。预计两组方框都是 (x1, y1, x2, y2) 格式。 基于 https://github.com/pytorch/vision/blob/master/torchvision/ops/boxes.py
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
box1 |
Tensor
|
tensor 的形状 (N, 4) 代表 N 个边界框。 |
所需 |
box2 |
Tensor
|
tensor 的形状 (M, 4) 代表 M 个边界框。 |
所需 |
eps |
float
|
一个小值,以避免除以零。默认为 1e-7。 |
1e-07
|
返回:
类型 | 说明 |
---|---|
Tensor
|
一个 NxMtensor ,包含方框 1 和方框 2 中每个元素的成对 IoU 值。 |
源代码 ultralytics/utils/metrics.py
ultralytics.utils.metrics.bbox_iou(box1, box2, xywh=True, GIoU=False, DIoU=False, CIoU=False, eps=1e-07)
计算方框 1(1,4)与方框 2(n,4)之间的 "联合相交"(IoU)。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
box1 |
Tensor
|
tensor 表示形状为 (1, 4) 的单一边界框。 |
所需 |
box2 |
Tensor
|
代表 n 个边界框的tensor ,形状为 (n,4)。 |
所需 |
xywh |
bool
|
如果为 True,则输入框采用 (x, y, w, h) 格式。若为 False,则输入框格式为 (x1、y1、x2、y2)格式。默认为 True。 |
True
|
GIoU |
bool
|
如果为 True,则计算广义 IoU。默认为 "假"。 |
False
|
DIoU |
bool
|
如果为 True,则计算距离 IoU。默认为 "假"。 |
False
|
CIoU |
bool
|
如果为 "true",则计算完整 IoU。默认为 "假"。 |
False
|
eps |
float
|
一个小值,以避免除以零。默认为 1e-7。 |
1e-07
|
返回:
类型 | 说明 |
---|---|
Tensor
|
IoU、GIoU、DIoU 或 CIoU 值,具体取决于指定的标志。 |
源代码 ultralytics/utils/metrics.py
ultralytics.utils.metrics.mask_iou(mask1, mask2, eps=1e-07)
计算面具 IoU。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
mask1 |
Tensor
|
tensor 的形状 (N, n),其中 N 是地面实况对象的数量,n 是图像宽度和高度的乘积。 是图像宽度和高度的乘积。 |
所需 |
mask2 |
Tensor
|
tensor 的形状 (M,n),其中 M 是预测对象的数量,n 是图像宽度和高度的乘积。 是图像宽度和高度的乘积。 |
所需 |
eps |
float
|
一个小值,以避免除以零。默认为 1e-7。 |
1e-07
|
返回:
类型 | 说明 |
---|---|
Tensor
|
tensor 的形状(N,M)代表掩码 IoU。 |
源代码 ultralytics/utils/metrics.py
ultralytics.utils.metrics.kpt_iou(kpt1, kpt2, area, sigma, eps=1e-07)
计算对象关键点相似度 (OKS)。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
kpt1 |
Tensor
|
tensor 的形状 (N, 17, 3) 代表地面真实关键点。 |
所需 |
kpt2 |
Tensor
|
tensor 的形状 (M,17,3) 代表预测的关键点。 |
所需 |
area |
Tensor
|
tensor 的形状 (N,) 代表来自地面实况的区域。 |
所需 |
sigma |
list
|
一个包含 17 个数值的列表,代表关键点刻度。 |
所需 |
eps |
float
|
一个小值,以避免除以零。默认为 1e-7。 |
1e-07
|
返回:
类型 | 说明 |
---|---|
Tensor
|
tensor 的形状(N,M)代表关键点的相似性。 |
源代码 ultralytics/utils/metrics.py
ultralytics.utils.metrics._get_covariance_matrix(boxes)
从 obbs 生成协方差矩阵。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
boxes |
Tensor
|
tensor 的形状 (N,5) 代表旋转边界框,格式为 xywhr。 |
所需 |
返回:
类型 | 说明 |
---|---|
Tensor
|
与原始旋转边界框相对应的协方差矩阵。 |
源代码 ultralytics/utils/metrics.py
ultralytics.utils.metrics.probiou(obb1, obb2, CIoU=False, eps=1e-07)
计算定向边界框之间的概率 IoU,https://arxiv.org/pdf/2106.06072v1.pdf。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
obb1 |
Tensor
|
tensor 的形状 (N, 5) 代表地面实况 obbs,格式为 xywhr。 |
所需 |
obb2 |
Tensor
|
tensor 形状 (N,5) 代表预测 obbs,格式为 xywhr。 |
所需 |
eps |
float
|
一个小值,以避免除以零。默认为 1e-7。 |
1e-07
|
返回:
类型 | 说明 |
---|---|
Tensor
|
tensor 的形状(N, )代表 obb 相似性。 |
源代码 ultralytics/utils/metrics.py
ultralytics.utils.metrics.batch_probiou(obb1, obb2, eps=1e-07)
计算定向边界框之间的概率 IoU,https://arxiv.org/pdf/2106.06072v1.pdf。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
obb1 |
Tensor | ndarray
|
tensor 的形状 (N, 5) 代表地面实况 obbs,格式为 xywhr。 |
所需 |
obb2 |
Tensor | ndarray
|
tensor 形状 (M,5) 代表预测 obbs,格式为 xywhr。 |
所需 |
eps |
float
|
一个小值,以避免除以零。默认为 1e-7。 |
1e-07
|
返回:
类型 | 说明 |
---|---|
Tensor
|
tensor 的形状(N,M)代表 obb 相似性。 |
源代码 ultralytics/utils/metrics.py
ultralytics.utils.metrics.smooth_BCE(eps=0.1)
计算平滑正负二元交叉熵目标。
该函数根据给定的ε值计算正负标签平滑 BCE 目标。 有关实现细节,请参阅 https://github.com/ultralytics/yolov3/issues/238#issuecomment-598028441。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
eps |
float
|
标签平滑的ε值。默认值为 0.1。 |
0.1
|
返回:
类型 | 说明 |
---|---|
tuple
|
包含正负标签平滑 BCE 目标的元组。 |
源代码 ultralytics/utils/metrics.py
ultralytics.utils.metrics.smooth(y, f=0.05)
分数 f 的盒式滤波器
源代码 ultralytics/utils/metrics.py
ultralytics.utils.metrics.plot_pr_curve(px, py, ap, save_dir=Path('pr_curve.png'), names=(), on_plot=None)
绘制精确度-召回曲线
源代码 ultralytics/utils/metrics.py
ultralytics.utils.metrics.plot_mc_curve(px, py, save_dir=Path('mc_curve.png'), names=(), xlabel='Confidence', ylabel='Metric', on_plot=None)
绘制度量置信度曲线。
源代码 ultralytics/utils/metrics.py
ultralytics.utils.metrics.compute_ap(recall, precision)
根据召回率和精度曲线计算平均精度 (AP)。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
recall |
list
|
召回曲线 |
所需 |
precision |
list
|
精度曲线 |
所需 |
返回:
类型 | 说明 |
---|---|
float
|
平均精度。 |
ndarray
|
精密包络曲线 |
ndarray
|
修改后的召回曲线,在开始和结束处添加了哨点值。 |
源代码 ultralytics/utils/metrics.py
ultralytics.utils.metrics.ap_per_class(tp, conf, pred_cls, target_cls, plot=False, on_plot=None, save_dir=Path(), names=(), eps=1e-16, prefix='')
计算对象检测评估的每类平均精度。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
tp |
ndarray
|
表示检测正确(True)或不正确(False)的二进制数组。 |
所需 |
conf |
ndarray
|
检测结果的置信度分数阵列。 |
所需 |
pred_cls |
ndarray
|
检测结果的预测类别阵列。 |
所需 |
target_cls |
ndarray
|
检测结果的真实类别数组。 |
所需 |
plot |
bool
|
是否绘制 PR 曲线。默认为 "假"。 |
False
|
on_plot |
func
|
回调,用于在渲染时传递绘图路径和数据。默认为 "无"。 |
None
|
save_dir |
Path
|
保存 PR 曲线的目录。默认为空路径。 |
Path()
|
names |
tuple
|
用于绘制 PR 曲线的类名元组。默认为空元组。 |
()
|
eps |
float
|
一个小值,以避免除以零。默认为 1e-16。 |
1e-16
|
prefix |
str
|
保存绘图文件的前缀字符串。默认为空字符串。 |
''
|
返回:
类型 | 说明 |
---|---|
tuple
|
由六个数组和一个唯一类数组组成的元组,其中 tp(ndarray):在每个类别的最大 F1 指标给出的阈值处的真阳性计数。形状:(nc,)。 fp(np.ndarray):每个类别在最大 F1 指标给定的阈值下的假阳性计数。形状:(nc, )。 p(np.ndarray):每个类别在最大 F1 指标给定的阈值下的精度值。形状:(nc, )。 r(np.ndarray):每个类别在最大 F1 指标给出的阈值处的召回值。形状:(nc,)。 f1 (np.ndarray):每个类别在最大 F1 指标给定的阈值处的 F1 分数值。形状:(nc, )。 ap(np.ndarray):每个类别在不同 IoU 阈值下的平均精度。形状:(nc, 10)。 unique_classes (np.ndarray):有数据的唯一类别数组。形状:(nc,)。 p_curve (np.ndarray):每个类别的精度曲线。形状:(nc, 1000)。 r_curve (np.ndarray):每个类别的召回率曲线。形状:(nc, 1000)。 f1_curve (np.ndarray):每个类别的 F1 分数曲线。形状:(nc,1000)。 x(np.ndarray):曲线的 X 轴值。形状:(1000,)。 prec_values:精度值:mAP@0.5 中每个类别的精度值。形状:(nc, 1000)。 |
源代码 ultralytics/utils/metrics.py
529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 |
|