MCPcopy Create free account
hub / github.com/colmap/colmap / diff_metrics

Function diff_metrics

benchmark/reconstruction/evaluation/utils.py:1200–1243  ·  view source on GitHub ↗

Computes difference between two sets of metrics. Raises exception if the metrics are inconsistent.

(
    metrics_a: MetricsByDatasetByCatByScene,
    metrics_b: MetricsByDatasetByCatByScene,
)

Source from the content-addressed store, hash-verified

1198
1199
1200def diff_metrics(
1201 metrics_a: MetricsByDatasetByCatByScene,
1202 metrics_b: MetricsByDatasetByCatByScene,
1203):
1204 """Computes difference between two sets of metrics.
1205
1206 Raises exception if the metrics are inconsistent.
1207 """
1208 metrics_diff = copy.deepcopy(metrics_a)
1209 for dataset, category_metrics_a in metrics_a.items():
1210 if dataset not in metrics_b:
1211 raise ValueError(f"Dataset {dataset} not found in metrics_b")
1212 category_metrics_b = metrics_b[dataset]
1213 for category, scene_metrics_a in category_metrics_a.items():
1214 if category not in category_metrics_b:
1215 raise ValueError(f"Category {category} not found in metrics_b")
1216 scene_metrics_b = category_metrics_b[category]
1217 for scene, metrics_a_item in scene_metrics_a.items():
1218 if scene not in scene_metrics_b:
1219 raise ValueError(f"Scene {scene} not found in metrics_b")
1220 metrics_b_item = scene_metrics_b[scene]
1221 if (
1222 metrics_a_item.error_type != metrics_b_item.error_type
1223 or not np.all(
1224 metrics_a_item.error_thresholds
1225 == metrics_b_item.error_thresholds
1226 )
1227 ):
1228 raise ValueError("Inconsistent error thresholds or types")
1229 metrics_diff[dataset][category][scene] = Metrics(
1230 aucs=metrics_a_item.aucs - metrics_b_item.aucs,
1231 recalls=metrics_a_item.recalls - metrics_b_item.recalls,
1232 error_thresholds=metrics_a_item.error_thresholds,
1233 error_type=metrics_a_item.error_type,
1234 num_images=metrics_a_item.num_images
1235 - metrics_b_item.num_images,
1236 num_reg_images=metrics_a_item.num_reg_images
1237 - metrics_b_item.num_reg_images,
1238 num_components=metrics_a_item.num_components
1239 - metrics_b_item.num_components,
1240 largest_component=metrics_a_item.largest_component
1241 - metrics_b_item.largest_component,
1242 )
1243 return metrics_diff
1244
1245
1246def create_result_table(

Callers 2

mainFunction · 0.90
test_nominalMethod · 0.85

Calls 1

MetricsClass · 0.85

Tested by 1

test_nominalMethod · 0.68