Add pooled local AV baselines and research notes
This commit is contained in:
42
summarize_local_baselines.py
Normal file
42
summarize_local_baselines.py
Normal file
@@ -0,0 +1,42 @@
|
||||
"""Print B0/B1 activity results in percent, with one explicit AP protocol."""
|
||||
|
||||
import argparse
|
||||
import json
|
||||
from pathlib import Path
|
||||
import re
|
||||
import statistics
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description=__doc__)
|
||||
parser.add_argument("--root", type=Path, default=Path("results/easycom_local_b1"))
|
||||
parser.add_argument("--protocol", choices=("causal_valid_only", "egospeak_full_timeline"), default="causal_valid_only")
|
||||
args = parser.parse_args()
|
||||
files = sorted(args.root.glob("*/metrics.json"))
|
||||
if not files:
|
||||
raise SystemExit(f"No */metrics.json in {args.root}")
|
||||
print(f"Protocol: {args.protocol}; all AP/mAP numbers are percentages")
|
||||
print(f"{'run':<23} {'0.2s mAP':>11} {'BG AP':>11} {'wearer AP':>11} {'others AP':>11} {'mean mAP':>11}")
|
||||
groups = {}
|
||||
for path in files:
|
||||
metrics = json.loads(path.read_text())
|
||||
score = metrics[args.protocol]
|
||||
first = score["horizons"][0]
|
||||
ap = first["class_ap"]
|
||||
values = [100 * value for value in (first["map"], ap["background"],
|
||||
ap["camera_wearer_speaking"], ap["other_people_speaking"], score["mean_map"])]
|
||||
name = path.parent.name
|
||||
print(f"{name:<23}" + "".join(f" {v:11.5f}" for v in values))
|
||||
group = re.sub(r"_seed\d+$", "", name)
|
||||
groups.setdefault(group, []).append(values)
|
||||
print("\nMean ± sample standard deviation (AP/mAP percentage points)")
|
||||
for group, rows in sorted(groups.items()):
|
||||
stats = []
|
||||
for column in zip(*rows):
|
||||
spread = f"{statistics.stdev(column):.5f}" if len(column) > 1 else "n/a"
|
||||
stats.append(f"{statistics.mean(column):.5f} ± {spread}")
|
||||
print(f"{group:<23}" + " | ".join(stats))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user