Python计算3D感知模型召回率、精确率
上篇文章讲述目标框与感知框交并比计算方法,本文将详细说明召回率与精确率的计算方式。
步骤1:格式化数据
格式化数据分为两步,第一步:格式化标注数据,第二步:格式化感知结果,具体格式如下:
# 标注数据的格式为:
# {
# '文件名': [{'class': value, 'center': [x, y, z], 'size': [l, w, h], 'rotation': value, 'used': False}, ...],
# '文件名': [{'class': value, 'center': [x, y, z], 'size': [l, w, h], 'rotation': value, 'used': False}, ...],
# }
def _format_mark_data(self):
_format_mark_data = {
}
# mark_data 格式为 {"file_name": [["class", [x, y, z], [l, w , h], rotation], ...]}
for file_name, targets in self.mark_data.items():
bounding_boxes = []
for data in targets:
bounding_boxes.append({
"class_name": data[0], "center": data[1], "size": data[2],
"rotation": data[3], "used": False})
_format_mark_data[file_name] = bounding_boxes
return _format_mark_data
# 感知结果格式为:
# {
# "class": [
# {
# 'file_name': 'file_name'
# 'confidence': value,
# 'center': [x, y, z],
# 'size': [l, w, h],
# 'rotation': value,
# },
# ...
# ]
# ...
# }
def _format_res_data(self):
# res_data 格式为 {"file_name": [["class", [x, y, z], [l, w , h], rotation], ...]}
_format_res_data = {
}
for file_name, targets in self.res_data.items():
for target in targets