dieKarotte commited on
Commit
29ab2d0
·
verified ·
1 Parent(s): 86cbd36

Add files using upload-large-folder tool

Browse files
Files changed (50) hide show
  1. checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__hm3d__00034-6imZUJGRUq4__000000-foa__132991__gt.csv +34 -0
  2. checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__hm3d__00034-6imZUJGRUq4__000032-foa__118401__gt.csv +3 -0
  3. checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__hm3d__00034-6imZUJGRUq4__000048-foa__2050__gt.csv +2 -0
  4. checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__hm3d__00034-6imZUJGRUq4__000064-foa__347902__pred.csv +77 -0
  5. checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__hm3d__00034-6imZUJGRUq4__000072-foa__60822__pred.csv +129 -0
  6. checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__hm3d__00034-6imZUJGRUq4__000088-foa__402628__gt.csv +4 -0
  7. checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__hm3d__00056-kdw2Uapns3b__000004-foa__160791__pred.csv +69 -0
  8. checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__hm3d__00056-kdw2Uapns3b__000012-foa__278193__gt.csv +18 -0
  9. checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__ov2_000011__gt.csv +55 -0
  10. checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__ov2_000065__pred.csv +65 -0
  11. checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__ov2_000076__gt.csv +55 -0
  12. checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__ov2_000076__pred.csv +201 -0
  13. checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__ov2_000099__gt.csv +40 -0
  14. checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__ov2_000119__pred.csv +201 -0
  15. checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__ov2_000156__pred.csv +201 -0
  16. checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__ov3_000079__pred.csv +201 -0
  17. checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__ov3_000112__pred.csv +201 -0
  18. checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__ov3_000149__pred.csv +201 -0
  19. checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__ov3_000159__gt.csv +45 -0
  20. docs/0413.md +512 -0
  21. docs/0416.md +215 -0
  22. docs/0422.md +569 -0
  23. docs/0423.md +969 -0
  24. docs/0424.md +269 -0
  25. docs/SPATIAL_AUDIO_FRAMEWORKS_ANALYSIS.md +724 -0
  26. docs/SPATIAL_FRAMEWORKS_QUICK_REFERENCE.md +192 -0
  27. docs/spatial_beats_design_guide.md +603 -0
  28. docs/spatial_beats_token_interface_note.md +176 -0
  29. docs/v13d_full_hyperparameters.md +230 -0
  30. eval_voxaudio_ood_results/dacvae/per_sample.json +2096 -0
  31. eval_voxaudio_ood_results/dacvae/summary.json +25 -0
  32. eval_voxaudio_ood_results/foa_vae/per_sample.json +0 -0
  33. eval_voxaudio_ood_results/foa_vae/summary.json +25 -0
  34. eval_voxaudio_ood_results/mono_vae/per_sample.json +2216 -0
  35. eval_voxaudio_ood_results/mono_vae/summary.json +25 -0
  36. results/v13d_test_dcase_starss.json +30 -0
  37. results/v13d_test_dcase_starss.log +26 -0
  38. results/v13d_test_unified.json +30 -0
  39. results/v13d_test_unified.log +0 -0
  40. results/v13d_valid_dcase_starss.json +30 -0
  41. results/v13d_valid_dcase_starss.log +26 -0
  42. results/v13d_valid_ov1_real.log +92 -0
  43. results/v13d_valid_ov1_sim.json +30 -0
  44. results/v13d_valid_ov1_sim.log +26 -0
  45. results/v13d_valid_ov2_real.log +92 -0
  46. results/v13d_valid_ov2_sim.log +92 -0
  47. results/v13d_valid_ov3_real.log +92 -0
  48. results/v13d_valid_ov3_sim.log +92 -0
  49. results/v13d_valid_unified.json +30 -0
  50. results/v13d_valid_unified.log +0 -0
checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__hm3d__00034-6imZUJGRUq4__000000-foa__132991__gt.csv ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ frame_idx,frame_time_s,src_or_track_idx,class_idx,class_name,azimuth_deg,elevation_deg,distance_m,activity_prob
2
+ 0,0.0,0,41,singing,121.266,-42.349,2.338,1.0
3
+ 1,0.4041,0,41,singing,121.266,-42.349,2.338,1.0
4
+ 2,0.8083,0,41,singing,121.266,-42.349,2.338,1.0
5
+ 3,1.2124,0,41,singing,121.266,-42.349,2.338,1.0
6
+ 4,1.6166,0,41,singing,121.266,-42.349,2.338,1.0
7
+ 5,2.0207,0,41,singing,121.266,-42.349,2.338,1.0
8
+ 6,2.4248,0,41,singing,121.266,-42.349,2.338,1.0
9
+ 7,2.829,0,41,singing,121.266,-42.349,2.338,1.0
10
+ 8,3.2331,0,41,singing,121.266,-42.349,2.338,1.0
11
+ 9,3.6372,0,41,singing,121.266,-42.349,2.338,1.0
12
+ 10,4.0414,0,41,singing,121.266,-42.349,2.338,1.0
13
+ 11,4.4455,0,41,singing,121.266,-42.349,2.338,1.0
14
+ 12,4.8497,0,41,singing,121.266,-42.349,2.338,1.0
15
+ 13,5.2538,0,41,singing,121.266,-42.349,2.338,1.0
16
+ 14,5.6579,0,41,singing,121.266,-42.349,2.338,1.0
17
+ 15,6.0621,0,41,singing,121.266,-42.349,2.338,1.0
18
+ 16,6.4662,0,41,singing,121.266,-42.349,2.338,1.0
19
+ 17,6.8704,0,41,singing,121.266,-42.349,2.338,1.0
20
+ 18,7.2745,0,41,singing,121.266,-42.349,2.338,1.0
21
+ 19,7.6786,0,41,singing,121.266,-42.349,2.338,1.0
22
+ 20,8.0828,0,41,singing,121.266,-42.349,2.338,1.0
23
+ 21,8.4869,0,41,singing,121.266,-42.349,2.338,1.0
24
+ 22,8.8911,0,41,singing,121.266,-42.349,2.338,1.0
25
+ 23,9.2952,0,41,singing,121.266,-42.349,2.338,1.0
26
+ 24,9.6993,0,41,singing,121.266,-42.349,2.338,1.0
27
+ 25,10.1035,0,41,singing,121.266,-42.349,2.338,1.0
28
+ 26,10.5076,0,41,singing,121.266,-42.349,2.338,1.0
29
+ 27,10.9117,0,41,singing,121.266,-42.349,2.338,1.0
30
+ 28,11.3159,0,41,singing,121.266,-42.349,2.338,1.0
31
+ 29,11.72,0,41,singing,121.266,-42.349,2.338,1.0
32
+ 30,12.1242,0,41,singing,121.266,-42.349,2.338,1.0
33
+ 31,12.5283,0,41,singing,121.266,-42.349,2.338,1.0
34
+ 32,12.9324,0,41,singing,121.266,-42.349,2.338,1.0
checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__hm3d__00034-6imZUJGRUq4__000032-foa__118401__gt.csv ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ frame_idx,frame_time_s,src_or_track_idx,class_idx,class_name,azimuth_deg,elevation_deg,distance_m,activity_prob
2
+ 0,0.0,0,9,tool,134.861,-9.617,2.821,1.0
3
+ 1,0.412,0,9,tool,134.861,-9.617,2.821,1.0
checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__hm3d__00034-6imZUJGRUq4__000048-foa__2050__gt.csv ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ frame_idx,frame_time_s,src_or_track_idx,class_idx,class_name,azimuth_deg,elevation_deg,distance_m,activity_prob
2
+ 0,0.0,0,1,string_instrument,-41.991,6.244,1.138,1.0
checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__hm3d__00034-6imZUJGRUq4__000064-foa__347902__pred.csv ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ frame_idx,frame_time_s,src_or_track_idx,class_idx,class_name,azimuth_deg,elevation_deg,distance_m,activity_prob
2
+ 0,0.0,0,2,guitar,78.019,-31.913,2.959,0.9883
3
+ 1,0.3972,0,2,guitar,78.412,-31.649,2.974,0.9727
4
+ 2,0.7944,0,2,guitar,79.285,-30.843,3.034,0.5391
5
+ 3,1.1917,0,2,guitar,80.034,-30.1,3.019,0.0542
6
+ 4,1.5889,0,2,guitar,80.538,-29.535,2.959,0.0097
7
+ 5,1.9861,0,2,guitar,80.845,-29.198,2.871,0.0023
8
+ 6,2.3833,0,2,guitar,81.142,-28.607,2.797,0.0009
9
+ 7,2.7805,0,2,guitar,81.423,-28.247,2.724,0.0005
10
+ 8,3.1778,0,2,guitar,81.527,-28.004,2.68,0.0003
11
+ 9,3.575,0,2,guitar,81.835,-27.601,2.637,0.0002
12
+ 10,3.9722,0,2,guitar,81.913,-27.473,2.593,0.0001
13
+ 11,4.3694,0,2,guitar,82.002,-27.167,2.55,0.0001
14
+ 12,4.7666,0,2,guitar,82.192,-27.028,2.507,0.0001
15
+ 13,5.1639,0,2,guitar,82.235,-26.87,2.478,0.0001
16
+ 14,5.5611,0,2,guitar,82.279,-26.706,2.464,0.0001
17
+ 15,5.9583,0,2,guitar,82.38,-26.717,2.435,0.0001
18
+ 16,6.3555,0,2,guitar,82.626,-26.196,2.407,0.0
19
+ 17,6.7527,0,2,guitar,82.651,-26.104,2.393,0.0
20
+ 18,7.15,0,2,guitar,82.734,-25.923,2.364,0.0
21
+ 0,0.0,1,2,guitar,77.651,-31.146,2.945,0.9883
22
+ 1,0.3972,1,2,guitar,78.182,-30.561,2.959,0.9727
23
+ 2,0.7944,1,2,guitar,78.839,-29.916,3.034,0.5508
24
+ 3,1.1917,1,2,guitar,79.632,-29.032,3.034,0.0618
25
+ 4,1.5889,1,2,guitar,80.146,-28.427,2.974,0.0114
26
+ 5,1.9861,1,2,guitar,80.481,-27.888,2.9,0.0028
27
+ 6,2.3833,1,2,guitar,80.611,-27.538,2.827,0.0012
28
+ 7,2.7805,1,2,guitar,80.915,-27.156,2.768,0.0006
29
+ 8,3.1778,1,2,guitar,81.049,-26.889,2.724,0.0004
30
+ 9,3.575,1,2,guitar,81.239,-26.608,2.68,0.0003
31
+ 10,3.9722,1,2,guitar,81.401,-26.466,2.637,0.0002
32
+ 11,4.3694,1,2,guitar,81.479,-26.312,2.608,0.0001
33
+ 12,4.7666,1,2,guitar,81.711,-25.997,2.564,0.0001
34
+ 13,5.1639,1,2,guitar,81.634,-25.985,2.536,0.0001
35
+ 14,5.5611,1,2,guitar,81.72,-25.814,2.521,0.0001
36
+ 15,5.9583,1,2,guitar,81.862,-25.814,2.493,0.0001
37
+ 16,6.3555,1,2,guitar,82.015,-25.466,2.464,0.0001
38
+ 17,6.7527,1,2,guitar,82.002,-25.362,2.45,0.0
39
+ 18,7.15,1,2,guitar,82.165,-25.191,2.435,0.0
40
+ 0,0.0,2,2,guitar,77.498,-31.873,2.959,0.9844
41
+ 1,0.3972,2,2,guitar,77.984,-31.583,2.974,0.9688
42
+ 2,0.7944,2,2,guitar,78.815,-31.021,3.049,0.4395
43
+ 3,1.1917,2,2,guitar,79.462,-30.289,3.019,0.0337
44
+ 4,1.5889,2,2,guitar,79.851,-29.734,2.945,0.0057
45
+ 5,1.9861,2,2,guitar,80.101,-29.237,2.856,0.0013
46
+ 6,2.3833,2,2,guitar,80.224,-28.782,2.768,0.0006
47
+ 7,2.7805,2,2,guitar,80.489,-28.417,2.695,0.0003
48
+ 8,3.1778,2,2,guitar,80.521,-28.167,2.637,0.0002
49
+ 9,3.575,2,2,guitar,80.811,-27.918,2.593,0.0001
50
+ 10,3.9722,2,2,guitar,80.937,-27.454,2.55,0.0001
51
+ 11,4.3694,2,2,guitar,80.946,-27.311,2.507,0.0001
52
+ 12,4.7666,2,2,guitar,81.133,-27.166,2.478,0.0001
53
+ 13,5.1639,2,2,guitar,81.071,-27.09,2.435,0.0
54
+ 14,5.5611,2,2,guitar,81.133,-26.744,2.421,0.0
55
+ 15,5.9583,2,2,guitar,81.276,-26.76,2.393,0.0
56
+ 16,6.3555,2,2,guitar,81.342,-26.584,2.364,0.0
57
+ 17,6.7527,2,2,guitar,81.353,-26.399,2.35,0.0
58
+ 18,7.15,2,2,guitar,81.457,-26.406,2.322,0.0
59
+ 0,0.0,3,2,guitar,80.098,-32.192,2.959,0.9766
60
+ 1,0.3972,3,2,guitar,80.162,-31.832,2.959,0.9492
61
+ 2,0.7944,3,2,guitar,80.794,-31.194,3.004,0.3926
62
+ 3,1.1917,3,2,guitar,81.267,-30.391,2.974,0.0488
63
+ 4,1.5889,3,2,guitar,81.644,-29.769,2.915,0.0117
64
+ 5,1.9861,3,2,guitar,81.779,-29.351,2.827,0.0034
65
+ 6,2.3833,3,2,guitar,81.836,-29.018,2.768,0.0016
66
+ 7,2.7805,3,2,guitar,82.104,-28.491,2.71,0.0009
67
+ 8,3.1778,3,2,guitar,82.082,-28.394,2.666,0.0005
68
+ 9,3.575,3,2,guitar,82.368,-27.978,2.608,0.0004
69
+ 10,3.9722,3,2,guitar,82.464,-27.683,2.579,0.0003
70
+ 11,4.3694,3,2,guitar,82.51,-27.374,2.536,0.0002
71
+ 12,4.7666,3,2,guitar,82.608,-27.401,2.507,0.0002
72
+ 13,5.1639,3,2,guitar,82.604,-27.244,2.464,0.0001
73
+ 14,5.5611,3,2,guitar,82.655,-27.085,2.45,0.0001
74
+ 15,5.9583,3,2,guitar,82.792,-26.829,2.421,0.0001
75
+ 16,6.3555,3,2,guitar,82.903,-26.57,2.393,0.0001
76
+ 17,6.7527,3,2,guitar,82.988,-26.393,2.379,0.0001
77
+ 18,7.15,3,2,guitar,83.018,-26.302,2.35,0.0001
checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__hm3d__00034-6imZUJGRUq4__000072-foa__60822__pred.csv ADDED
@@ -0,0 +1,129 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ frame_idx,frame_time_s,src_or_track_idx,class_idx,class_name,azimuth_deg,elevation_deg,distance_m,activity_prob
2
+ 0,0.0,0,11,war_sound,11.191,-42.083,1.174,0.1216
3
+ 1,0.3964,0,11,war_sound,10.795,-41.837,1.199,0.3418
4
+ 2,0.7929,0,11,war_sound,10.324,-41.213,1.212,0.5391
5
+ 3,1.1893,0,11,war_sound,10.042,-40.748,1.221,0.6484
6
+ 4,1.5858,0,11,war_sound,9.829,-40.457,1.223,0.6992
7
+ 5,1.9822,0,11,war_sound,9.502,-39.993,1.226,0.7188
8
+ 6,2.3787,0,11,war_sound,9.396,-39.68,1.226,0.7109
9
+ 7,2.7751,0,11,war_sound,9.265,-39.531,1.223,0.6758
10
+ 8,3.1716,0,11,war_sound,9.125,-39.227,1.226,0.625
11
+ 9,3.568,0,11,war_sound,8.997,-38.89,1.226,0.5547
12
+ 10,3.9645,0,11,war_sound,8.997,-38.89,1.226,0.4707
13
+ 11,4.3609,0,11,war_sound,8.755,-38.563,1.221,0.3789
14
+ 12,4.7574,0,11,war_sound,8.725,-38.528,1.221,0.2891
15
+ 13,5.1538,0,11,war_sound,8.609,-38.344,1.215,0.209
16
+ 14,5.5503,0,11,war_sound,8.453,-38.161,1.215,0.1533
17
+ 15,5.9467,0,11,war_sound,8.225,-38.137,1.212,0.1128
18
+ 16,6.3432,0,11,war_sound,8.271,-37.895,1.207,0.0747
19
+ 17,6.7396,0,11,war_sound,8.158,-37.66,1.201,0.0503
20
+ 18,7.1361,0,11,war_sound,8.085,-37.62,1.196,0.0352
21
+ 19,7.5325,0,11,war_sound,8.01,-37.58,1.193,0.0251
22
+ 20,7.929,0,11,war_sound,7.979,-37.491,1.188,0.017
23
+ 21,8.3254,0,11,war_sound,7.903,-37.24,1.182,0.0117
24
+ 22,8.7219,0,11,war_sound,7.788,-37.149,1.18,0.0086
25
+ 23,9.1183,0,11,war_sound,7.792,-37.099,1.172,0.0065
26
+ 24,9.5148,0,11,war_sound,7.796,-36.832,1.169,0.0052
27
+ 25,9.9112,0,11,war_sound,7.719,-36.84,1.166,0.0041
28
+ 26,10.3077,0,11,war_sound,7.68,-36.678,1.164,0.0032
29
+ 27,10.7041,0,11,war_sound,7.6,-36.684,1.15,0.0025
30
+ 28,11.1006,0,11,war_sound,7.56,-36.63,1.145,0.002
31
+ 29,11.497,0,11,war_sound,7.388,-36.47,1.142,0.0016
32
+ 30,11.8935,0,11,war_sound,7.389,-36.296,1.14,0.0013
33
+ 31,12.2899,0,11,war_sound,7.347,-36.122,1.137,0.0011
34
+ 0,0.0,1,11,war_sound,9.944,-41.433,1.26,0.1758
35
+ 1,0.3964,1,11,war_sound,9.419,-40.851,1.291,0.4414
36
+ 2,0.7929,1,11,war_sound,8.964,-40.057,1.305,0.6328
37
+ 3,1.1893,1,11,war_sound,8.718,-39.609,1.313,0.7148
38
+ 4,1.5858,1,11,war_sound,8.539,-39.297,1.319,0.7422
39
+ 5,1.9822,1,11,war_sound,8.277,-38.837,1.325,0.7344
40
+ 6,2.3787,1,11,war_sound,8.231,-38.683,1.325,0.707
41
+ 7,2.7751,1,11,war_sound,7.985,-38.388,1.319,0.6562
42
+ 8,3.1716,1,11,war_sound,7.985,-38.194,1.325,0.5859
43
+ 9,3.568,1,11,war_sound,7.825,-37.855,1.33,0.5039
44
+ 10,3.9645,1,11,war_sound,7.786,-37.858,1.325,0.4121
45
+ 11,4.3609,1,11,war_sound,7.592,-37.674,1.319,0.3184
46
+ 12,4.7574,1,11,war_sound,7.553,-37.282,1.319,0.2363
47
+ 13,5.1538,1,11,war_sound,7.477,-37.24,1.319,0.1689
48
+ 14,5.5503,1,11,war_sound,7.321,-37.049,1.313,0.1235
49
+ 15,5.9467,1,11,war_sound,7.165,-36.962,1.31,0.0913
50
+ 16,6.3432,1,11,war_sound,7.165,-36.912,1.305,0.0618
51
+ 17,6.7396,1,11,war_sound,7.045,-36.662,1.299,0.0435
52
+ 18,7.1361,1,11,war_sound,7.044,-36.767,1.296,0.0311
53
+ 19,7.5325,1,11,war_sound,7.003,-36.505,1.291,0.0226
54
+ 20,7.929,1,11,war_sound,6.961,-36.346,1.285,0.0164
55
+ 21,8.3254,1,11,war_sound,6.918,-36.345,1.282,0.012
56
+ 22,8.7219,1,11,war_sound,6.831,-36.346,1.279,0.0092
57
+ 23,9.1183,1,11,war_sound,6.787,-36.18,1.274,0.0071
58
+ 24,9.5148,1,11,war_sound,6.827,-36.007,1.268,0.0057
59
+ 25,9.9112,1,11,war_sound,6.74,-35.952,1.265,0.0046
60
+ 26,10.3077,1,11,war_sound,6.652,-35.781,1.26,0.0038
61
+ 27,10.7041,1,11,war_sound,6.605,-35.605,1.246,0.003
62
+ 28,11.1006,1,11,war_sound,6.515,-35.662,1.243,0.0025
63
+ 29,11.497,1,11,war_sound,6.419,-35.654,1.24,0.0021
64
+ 30,11.8935,1,11,war_sound,6.459,-35.467,1.237,0.0018
65
+ 31,12.2899,1,11,war_sound,6.41,-35.402,1.234,0.0015
66
+ 0,0.0,2,11,war_sound,13.083,-43.429,1.182,0.1348
67
+ 1,0.3964,2,11,war_sound,12.498,-42.745,1.207,0.3438
68
+ 2,0.7929,2,11,war_sound,11.944,-42.085,1.215,0.5234
69
+ 3,1.1893,2,11,war_sound,11.74,-41.778,1.221,0.6289
70
+ 4,1.5858,2,11,war_sound,11.514,-41.448,1.221,0.6836
71
+ 5,1.9822,2,11,war_sound,11.161,-40.984,1.223,0.707
72
+ 6,2.3787,2,11,war_sound,10.949,-40.665,1.218,0.7109
73
+ 7,2.7751,2,11,war_sound,10.823,-40.534,1.215,0.6875
74
+ 8,3.1716,2,11,war_sound,10.68,-40.381,1.21,0.6445
75
+ 9,3.568,2,11,war_sound,10.539,-40.23,1.21,0.5859
76
+ 10,3.9645,2,11,war_sound,10.48,-39.88,1.201,0.5078
77
+ 11,4.3609,2,11,war_sound,10.261,-39.737,1.199,0.4219
78
+ 12,4.7574,2,11,war_sound,10.142,-39.362,1.196,0.332
79
+ 13,5.1538,2,11,war_sound,10.022,-39.373,1.188,0.248
80
+ 14,5.5503,2,11,war_sound,9.822,-39.196,1.185,0.1826
81
+ 15,5.9467,2,11,war_sound,9.677,-39.174,1.174,0.1348
82
+ 16,6.3432,2,11,war_sound,9.611,-39.145,1.169,0.0903
83
+ 17,6.7396,2,11,war_sound,9.503,-38.92,1.161,0.061
84
+ 18,7.1361,2,11,war_sound,9.381,-38.528,1.156,0.0427
85
+ 19,7.5325,2,11,war_sound,9.353,-38.491,1.148,0.0293
86
+ 20,7.929,2,11,war_sound,9.296,-38.415,1.14,0.02
87
+ 21,8.3254,2,11,war_sound,9.184,-38.174,1.132,0.014
88
+ 22,8.7219,2,11,war_sound,9.124,-38.304,1.129,0.0103
89
+ 23,9.1183,2,11,war_sound,9.051,-38.054,1.121,0.0076
90
+ 24,9.5148,2,11,war_sound,9.106,-38.005,1.113,0.0059
91
+ 25,9.9112,2,11,war_sound,8.989,-37.751,1.108,0.0046
92
+ 26,10.3077,2,11,war_sound,8.924,-37.771,1.103,0.0036
93
+ 27,10.7041,2,11,war_sound,8.848,-37.618,1.09,0.0027
94
+ 28,11.1006,2,11,war_sound,8.77,-37.574,1.084,0.0023
95
+ 29,11.497,2,11,war_sound,8.701,-37.478,1.082,0.0018
96
+ 30,11.8935,2,11,war_sound,8.621,-37.317,1.074,0.0015
97
+ 31,12.2899,2,11,war_sound,8.585,-37.266,1.074,0.0012
98
+ 0,0.0,3,11,war_sound,11.085,-44.051,1.172,0.1318
99
+ 1,0.3964,3,11,war_sound,10.457,-43.344,1.215,0.3672
100
+ 2,0.7929,3,11,war_sound,9.944,-42.843,1.237,0.543
101
+ 3,1.1893,3,11,war_sound,9.653,-42.136,1.248,0.6211
102
+ 4,1.5858,3,11,war_sound,9.361,-41.803,1.257,0.6367
103
+ 5,1.9822,3,11,war_sound,9.106,-41.295,1.26,0.6094
104
+ 6,2.3787,3,11,war_sound,8.966,-41.132,1.257,0.5703
105
+ 7,2.7751,3,11,war_sound,8.828,-40.97,1.257,0.5117
106
+ 8,3.1716,3,11,war_sound,8.691,-40.613,1.257,0.4395
107
+ 9,3.568,3,11,war_sound,8.522,-40.429,1.257,0.3691
108
+ 10,3.9645,3,11,war_sound,8.565,-40.426,1.254,0.2988
109
+ 11,4.3609,3,11,war_sound,8.311,-40.246,1.248,0.2324
110
+ 12,4.7574,3,11,war_sound,8.184,-39.855,1.248,0.1787
111
+ 13,5.1538,3,11,war_sound,8.058,-39.863,1.243,0.1318
112
+ 14,5.5503,3,11,war_sound,7.978,-39.837,1.243,0.1011
113
+ 15,5.9467,3,11,war_sound,7.769,-39.614,1.237,0.0791
114
+ 16,6.3432,3,11,war_sound,7.726,-39.411,1.229,0.0574
115
+ 17,6.7396,3,11,war_sound,7.687,-39.378,1.223,0.0415
116
+ 18,7.1361,3,11,war_sound,7.603,-39.138,1.221,0.0311
117
+ 19,7.5325,3,11,war_sound,7.563,-39.102,1.212,0.0233
118
+ 20,7.929,3,11,war_sound,7.565,-38.849,1.207,0.0175
119
+ 21,8.3254,3,11,war_sound,7.435,-38.817,1.201,0.0128
120
+ 22,8.7219,3,11,war_sound,7.394,-38.846,1.201,0.01
121
+ 23,9.1183,3,11,war_sound,7.351,-38.807,1.193,0.0081
122
+ 24,9.5148,3,11,war_sound,7.351,-38.474,1.188,0.0065
123
+ 25,9.9112,3,11,war_sound,7.261,-38.322,1.18,0.0052
124
+ 26,10.3077,3,11,war_sound,7.171,-38.168,1.18,0.0042
125
+ 27,10.7041,3,11,war_sound,7.079,-38.126,1.166,0.0033
126
+ 28,11.1006,3,11,war_sound,7.079,-38.077,1.161,0.0027
127
+ 29,11.497,3,11,war_sound,6.937,-38.104,1.158,0.0023
128
+ 30,11.8935,3,11,war_sound,6.89,-37.753,1.15,0.0019
129
+ 31,12.2899,3,11,war_sound,6.841,-37.703,1.148,0.0016
checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__hm3d__00034-6imZUJGRUq4__000088-foa__402628__gt.csv ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ frame_idx,frame_time_s,src_or_track_idx,class_idx,class_name,azimuth_deg,elevation_deg,distance_m,activity_prob
2
+ 0,0.0,0,3,body_sound,-153.896,-52.022,0.906,1.0
3
+ 1,0.4159,0,3,body_sound,-153.896,-52.022,0.906,1.0
4
+ 2,0.8318,0,3,body_sound,-153.896,-52.022,0.906,1.0
checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__hm3d__00056-kdw2Uapns3b__000004-foa__160791__pred.csv ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ frame_idx,frame_time_s,src_or_track_idx,class_idx,class_name,azimuth_deg,elevation_deg,distance_m,activity_prob
2
+ 0,0.0,0,11,war_sound,176.802,-31.065,3.987,0.7617
3
+ 1,0.3919,0,11,war_sound,178.23,-31.069,3.972,0.8477
4
+ 2,0.7838,0,11,war_sound,179.029,-31.361,3.972,0.8594
5
+ 3,1.1756,0,11,war_sound,179.7,-31.416,3.957,0.8594
6
+ 4,1.5675,0,11,war_sound,-179.897,-31.012,3.957,0.8438
7
+ 5,1.9594,0,11,war_sound,-179.459,-31.539,3.941,0.8086
8
+ 6,2.3513,0,11,war_sound,-179.555,-31.528,3.941,0.7422
9
+ 7,2.7432,0,11,war_sound,-179.312,-31.355,3.941,0.6289
10
+ 8,3.1351,0,11,war_sound,-179.39,-31.668,3.957,0.4727
11
+ 9,3.5269,0,11,war_sound,-179.314,-31.52,3.957,0.2852
12
+ 10,3.9188,0,11,war_sound,-179.001,-31.219,3.957,0.1543
13
+ 11,4.3107,0,11,war_sound,-178.998,-31.197,3.957,0.0771
14
+ 12,4.7026,0,11,war_sound,-179.092,-30.839,3.941,0.0374
15
+ 13,5.0945,0,11,war_sound,-178.809,-31.179,3.926,0.0188
16
+ 14,5.4864,0,11,war_sound,-178.397,-31.312,3.911,0.0107
17
+ 15,5.8782,0,11,war_sound,-177.756,-31.078,3.896,0.0069
18
+ 16,6.2701,0,11,war_sound,-178.058,-31.085,3.865,0.0041
19
+ 0,0.0,1,11,war_sound,177.822,-29.955,4.049,0.7578
20
+ 1,0.3919,1,11,war_sound,179.75,-30.068,4.018,0.8633
21
+ 2,0.7838,1,11,war_sound,-179.143,-30.576,4.018,0.8867
22
+ 3,1.1756,1,11,war_sound,-177.891,-30.489,4.003,0.8906
23
+ 4,1.5675,1,11,war_sound,-177.365,-30.073,4.003,0.875
24
+ 5,1.9594,1,11,war_sound,-176.89,-30.663,4.003,0.8359
25
+ 6,2.3513,1,11,war_sound,-176.465,-30.768,4.003,0.7578
26
+ 7,2.7432,1,11,war_sound,-176.36,-30.736,4.003,0.6289
27
+ 8,3.1351,1,11,war_sound,-176.025,-30.877,4.018,0.4512
28
+ 9,3.5269,1,11,war_sound,-176.038,-30.715,4.018,0.2559
29
+ 10,3.9188,1,11,war_sound,-175.837,-30.703,4.018,0.1357
30
+ 11,4.3107,1,11,war_sound,-175.461,-30.656,4.003,0.0674
31
+ 12,4.7026,1,11,war_sound,-175.409,-30.472,4.003,0.0337
32
+ 13,5.0945,1,11,war_sound,-175.056,-30.778,3.972,0.0175
33
+ 14,5.4864,1,11,war_sound,-174.644,-30.728,3.957,0.0107
34
+ 15,5.8782,1,11,war_sound,-173.935,-30.822,3.941,0.0069
35
+ 16,6.2701,1,11,war_sound,-174.062,-30.565,3.911,0.0042
36
+ 0,0.0,2,11,war_sound,177.152,-34.475,4.049,0.6953
37
+ 1,0.3919,2,11,war_sound,178.852,-34.064,4.018,0.8125
38
+ 2,0.7838,2,11,war_sound,-179.948,-34.414,4.018,0.8438
39
+ 3,1.1756,2,11,war_sound,-178.911,-34.631,4.003,0.8477
40
+ 4,1.5675,2,11,war_sound,-178.091,-34.331,3.987,0.8438
41
+ 5,1.9594,2,11,war_sound,-177.433,-34.832,3.987,0.8203
42
+ 6,2.3513,2,11,war_sound,-176.879,-35.034,3.972,0.7695
43
+ 7,2.7432,2,11,war_sound,-176.476,-35.109,3.972,0.6797
44
+ 8,3.1351,2,11,war_sound,-175.608,-35.582,3.972,0.543
45
+ 9,3.5269,2,11,war_sound,-175.162,-35.675,3.972,0.3496
46
+ 10,3.9188,2,11,war_sound,-174.312,-35.602,3.987,0.1973
47
+ 11,4.3107,2,11,war_sound,-173.569,-36.303,3.972,0.0981
48
+ 12,4.7026,2,11,war_sound,-173.092,-36.022,3.972,0.0466
49
+ 13,5.0945,2,11,war_sound,-171.959,-36.895,3.941,0.0229
50
+ 14,5.4864,2,11,war_sound,-170.831,-37.133,3.926,0.0128
51
+ 15,5.8782,2,11,war_sound,-169.746,-37.29,3.911,0.0078
52
+ 16,6.2701,2,11,war_sound,-169.753,-37.308,3.88,0.0046
53
+ 0,0.0,3,11,war_sound,176.355,-31.689,4.11,0.6992
54
+ 1,0.3919,3,11,war_sound,178.979,-31.573,4.08,0.8867
55
+ 2,0.7838,3,11,war_sound,-179.076,-31.935,4.049,0.9297
56
+ 3,1.1756,3,11,war_sound,-177.725,-32.019,4.018,0.9336
57
+ 4,1.5675,3,11,war_sound,-177.027,-31.692,4.003,0.9219
58
+ 5,1.9594,3,11,war_sound,-176.65,-32.322,4.003,0.8789
59
+ 6,2.3513,3,11,war_sound,-176.294,-32.471,4.018,0.7891
60
+ 7,2.7432,3,11,war_sound,-176.397,-32.64,4.018,0.6289
61
+ 8,3.1351,3,11,war_sound,-176.284,-33.063,4.018,0.4297
62
+ 9,3.5269,3,11,war_sound,-176.467,-32.998,4.018,0.2363
63
+ 10,3.9188,3,11,war_sound,-176.028,-32.803,4.018,0.1216
64
+ 11,4.3107,3,11,war_sound,-175.65,-32.991,4.018,0.061
65
+ 12,4.7026,3,11,war_sound,-175.742,-32.688,4.003,0.0311
66
+ 13,5.0945,3,11,war_sound,-175.139,-33.232,3.972,0.0159
67
+ 14,5.4864,3,11,war_sound,-174.603,-33.199,3.941,0.0097
68
+ 15,5.8782,3,11,war_sound,-173.664,-33.271,3.926,0.0063
69
+ 16,6.2701,3,11,war_sound,-173.989,-33.087,3.896,0.0038
checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__hm3d__00056-kdw2Uapns3b__000012-foa__278193__gt.csv ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ frame_idx,frame_time_s,src_or_track_idx,class_idx,class_name,azimuth_deg,elevation_deg,distance_m,activity_prob
2
+ 1,0.4002,0,43,writing,49.464,-45.574,2.133,1.0
3
+ 2,0.8004,0,43,writing,49.464,-45.574,2.133,1.0
4
+ 3,1.2006,0,43,writing,49.464,-45.574,2.133,1.0
5
+ 4,1.6008,0,43,writing,49.464,-45.574,2.133,1.0
6
+ 5,2.001,0,43,writing,49.464,-45.574,2.133,1.0
7
+ 6,2.4011,0,43,writing,49.464,-45.574,2.133,1.0
8
+ 7,2.8013,0,43,writing,49.464,-45.574,2.133,1.0
9
+ 8,3.2015,0,43,writing,49.464,-45.574,2.133,1.0
10
+ 9,3.6017,0,43,writing,49.464,-45.574,2.133,1.0
11
+ 10,4.0019,0,43,writing,49.464,-45.574,2.133,1.0
12
+ 11,4.4021,0,43,writing,49.464,-45.574,2.133,1.0
13
+ 12,4.8023,0,43,writing,49.464,-45.574,2.133,1.0
14
+ 13,5.2025,0,43,writing,49.464,-45.574,2.133,1.0
15
+ 14,5.6027,0,43,writing,49.464,-45.574,2.133,1.0
16
+ 15,6.0029,0,43,writing,49.464,-45.574,2.133,1.0
17
+ 16,6.403,0,43,writing,49.464,-45.574,2.133,1.0
18
+ 17,6.8032,0,43,writing,49.464,-45.574,2.133,1.0
checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__ov2_000011__gt.csv ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ frame_idx,frame_time_s,src_or_track_idx,class_idx,class_name,azimuth_deg,elevation_deg,distance_m,activity_prob
2
+ 0,0.0,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
3
+ 1,0.4,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
4
+ 2,0.8,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
5
+ 3,1.2,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
6
+ 4,1.6,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
7
+ 5,2.0,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
8
+ 6,2.4,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
9
+ 7,2.8,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
10
+ 8,3.2,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
11
+ 9,3.6,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
12
+ 10,4.0,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
13
+ 11,4.4,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
14
+ 12,4.8,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
15
+ 13,5.2,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
16
+ 14,5.6,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
17
+ 15,6.0,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
18
+ 16,6.4,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
19
+ 17,6.8,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
20
+ 18,7.2,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
21
+ 19,7.6,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
22
+ 20,8.0,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
23
+ 21,8.4,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
24
+ 22,8.8,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
25
+ 23,9.2,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
26
+ 24,9.6,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
27
+ 25,10.0,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
28
+ 26,10.4,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
29
+ 27,10.8,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
30
+ 28,11.2,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
31
+ 29,11.6,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
32
+ 30,12.0,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
33
+ 31,12.4,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
34
+ 32,12.8,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
35
+ 33,13.2,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
36
+ 34,13.6,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
37
+ 35,14.0,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
38
+ 36,14.4,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
39
+ 37,14.8,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
40
+ 38,15.2,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
41
+ 39,15.6,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
42
+ 40,16.0,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
43
+ 41,16.4,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
44
+ 42,16.8,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
45
+ 43,17.2,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
46
+ 44,17.6,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
47
+ 45,18.0,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
48
+ 46,18.4,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
49
+ 47,18.8,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
50
+ 48,19.2,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
51
+ 49,19.6,0,23,telephone_alarm,-59.911,-6.962,4.73,1.0
52
+ 22,8.8,1,13,breathing,-50.319,10.656,4.931,1.0
53
+ 23,9.2,1,13,breathing,-50.319,10.656,4.931,1.0
54
+ 24,9.6,1,13,breathing,-50.319,10.656,4.931,1.0
55
+ 25,10.0,1,13,breathing,-50.319,10.656,4.931,1.0
checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__ov2_000065__pred.csv ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ frame_idx,frame_time_s,src_or_track_idx,class_idx,class_name,azimuth_deg,elevation_deg,distance_m,activity_prob
2
+ 0,0.0,0,39,clock,-85.299,-10.221,3.034,0.7852
3
+ 1,0.4099,0,39,clock,-85.36,-10.511,3.019,0.8438
4
+ 2,0.8197,0,39,clock,-85.349,-10.704,3.004,0.8516
5
+ 3,1.2296,0,39,clock,-85.41,-10.824,3.004,0.8398
6
+ 4,1.6395,0,39,clock,-85.379,-10.883,3.019,0.8203
7
+ 5,2.0493,0,39,clock,-85.318,-11.001,3.004,0.793
8
+ 6,2.4592,0,39,clock,-85.318,-10.941,3.019,0.7656
9
+ 7,2.869,0,39,clock,-85.247,-10.794,3.019,0.7344
10
+ 8,3.2789,0,39,clock,-85.463,-10.197,3.019,0.7148
11
+ 9,3.6888,0,39,clock,-86.724,-8.789,3.019,0.6836
12
+ 10,4.0986,0,39,clock,-89.433,-6.25,2.989,0.6406
13
+ 11,4.5085,0,39,clock,-93.785,-3.464,2.989,0.5664
14
+ 12,4.9184,0,39,clock,-98.955,-1.392,3.019,0.4043
15
+ 13,5.3282,0,30,door,-103.081,-0.228,3.078,0.1768
16
+ 14,5.7381,0,30,door,-105.571,0.332,3.108,0.0549
17
+ 15,6.1479,0,30,door,-107.309,0.773,3.108,0.017
18
+ 0,0.0,1,39,clock,-86.191,-8.998,3.078,0.5781
19
+ 1,0.4099,1,39,clock,-86.378,-9.304,3.063,0.7031
20
+ 2,0.8197,1,39,clock,-86.484,-9.465,3.063,0.7266
21
+ 3,1.2296,1,39,clock,-86.591,-9.525,3.063,0.7188
22
+ 4,1.6395,1,39,clock,-86.621,-9.525,3.063,0.6953
23
+ 5,2.0493,1,39,clock,-86.591,-9.565,3.063,0.6641
24
+ 6,2.4592,1,39,clock,-86.623,-9.546,3.078,0.6328
25
+ 7,2.869,1,39,clock,-86.654,-9.286,3.093,0.6055
26
+ 8,3.2789,1,39,clock,-86.841,-8.784,3.093,0.582
27
+ 9,3.6888,1,39,clock,-87.777,-7.74,3.093,0.5586
28
+ 10,4.0986,1,39,clock,-89.706,-5.781,3.078,0.5352
29
+ 11,4.5085,1,39,clock,-93.151,-3.435,3.078,0.5078
30
+ 12,4.9184,1,30,door,-98.182,-1.249,3.108,0.4453
31
+ 13,5.3282,1,30,door,-103.03,0.133,3.153,0.3027
32
+ 14,5.7381,1,30,door,-106.356,0.822,3.213,0.1387
33
+ 15,6.1479,1,30,door,-108.637,1.298,3.243,0.0454
34
+ 0,0.0,2,39,clock,-86.635,-9.256,3.183,0.6562
35
+ 1,0.4099,2,39,clock,-86.73,-9.552,3.168,0.6875
36
+ 2,0.8197,2,39,clock,-86.729,-9.698,3.168,0.6719
37
+ 3,1.2296,2,39,clock,-86.777,-9.761,3.168,0.6367
38
+ 4,1.6395,2,39,clock,-86.745,-9.698,3.183,0.5938
39
+ 5,2.0493,2,39,clock,-86.73,-9.678,3.168,0.5469
40
+ 6,2.4592,2,39,clock,-86.864,-9.512,3.183,0.5078
41
+ 7,2.869,2,39,clock,-87.217,-9.0,3.168,0.4824
42
+ 8,3.2789,2,39,clock,-88.193,-7.947,3.168,0.4668
43
+ 9,3.6888,2,39,clock,-91.074,-5.882,3.153,0.4551
44
+ 10,4.0986,2,30,door,-95.458,-3.672,3.153,0.4395
45
+ 11,4.5085,2,30,door,-100.305,-2.091,3.183,0.3926
46
+ 12,4.9184,2,30,door,-105.217,-1.086,3.228,0.2578
47
+ 13,5.3282,2,30,door,-108.316,-0.519,3.273,0.105
48
+ 14,5.7381,2,30,door,-110.136,-0.181,3.288,0.0374
49
+ 15,6.1479,2,30,door,-111.525,0.134,3.288,0.0132
50
+ 0,0.0,3,38,camera,-86.549,-8.481,3.168,0.8789
51
+ 1,0.4099,3,38,camera,-86.442,-8.689,3.153,0.9414
52
+ 2,0.8197,3,38,camera,-86.245,-8.722,3.153,0.9531
53
+ 3,1.2296,3,38,camera,-86.298,-8.633,3.168,0.957
54
+ 4,1.6395,3,38,camera,-86.642,-8.188,3.183,0.9531
55
+ 5,2.0493,3,38,camera,-87.995,-7.231,3.183,0.9492
56
+ 6,2.4592,3,38,camera,-90.54,-5.825,3.198,0.9375
57
+ 7,2.869,3,38,camera,-93.637,-4.373,3.213,0.9141
58
+ 8,3.2789,3,30,door,-97.042,-3.067,3.243,0.8789
59
+ 9,3.6888,3,30,door,-101.275,-1.766,3.273,0.8086
60
+ 10,4.0986,3,30,door,-104.937,-0.723,3.303,0.6992
61
+ 11,4.5085,3,30,door,-107.977,-0.005,3.333,0.5352
62
+ 12,4.9184,3,30,door,-110.65,0.616,3.363,0.3438
63
+ 13,5.3282,3,30,door,-112.895,1.196,3.394,0.1797
64
+ 14,5.7381,3,30,door,-114.336,1.502,3.394,0.0967
65
+ 15,6.1479,3,30,door,-115.564,1.859,3.409,0.0481
checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__ov2_000076__gt.csv ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ frame_idx,frame_time_s,src_or_track_idx,class_idx,class_name,azimuth_deg,elevation_deg,distance_m,activity_prob
2
+ 0,0.0,0,16,speech,-66.274,-28.619,2.21,1.0
3
+ 1,0.4,0,16,speech,-66.274,-28.619,2.21,1.0
4
+ 2,0.8,0,16,speech,-66.274,-28.619,2.21,1.0
5
+ 3,1.2,0,16,speech,-66.274,-28.619,2.21,1.0
6
+ 4,1.6,0,16,speech,-66.274,-28.619,2.21,1.0
7
+ 5,2.0,0,16,speech,-66.274,-28.619,2.21,1.0
8
+ 6,2.4,0,16,speech,-66.274,-28.619,2.21,1.0
9
+ 7,2.8,0,16,speech,-66.274,-28.619,2.21,1.0
10
+ 8,3.2,0,16,speech,-66.274,-28.619,2.21,1.0
11
+ 9,3.6,0,16,speech,-66.274,-28.619,2.21,1.0
12
+ 10,4.0,0,16,speech,-66.274,-28.619,2.21,1.0
13
+ 11,4.4,0,16,speech,-66.274,-28.619,2.21,1.0
14
+ 12,4.8,0,16,speech,-66.274,-28.619,2.21,1.0
15
+ 13,5.2,0,16,speech,-66.274,-28.619,2.21,1.0
16
+ 14,5.6,0,16,speech,-66.274,-28.619,2.21,1.0
17
+ 15,6.0,0,16,speech,-66.274,-28.619,2.21,1.0
18
+ 16,6.4,0,16,speech,-66.274,-28.619,2.21,1.0
19
+ 17,6.8,0,16,speech,-66.274,-28.619,2.21,1.0
20
+ 18,7.2,0,16,speech,-66.274,-28.619,2.21,1.0
21
+ 19,7.6,0,16,speech,-66.274,-28.619,2.21,1.0
22
+ 20,8.0,0,16,speech,-66.274,-28.619,2.21,1.0
23
+ 21,8.4,0,16,speech,-66.274,-28.619,2.21,1.0
24
+ 22,8.8,0,16,speech,-66.274,-28.619,2.21,1.0
25
+ 23,9.2,0,16,speech,-66.274,-28.619,2.21,1.0
26
+ 24,9.6,0,16,speech,-66.274,-28.619,2.21,1.0
27
+ 25,10.0,0,16,speech,-66.274,-28.619,2.21,1.0
28
+ 26,10.4,0,16,speech,-66.274,-28.619,2.21,1.0
29
+ 27,10.8,0,16,speech,-66.274,-28.619,2.21,1.0
30
+ 28,11.2,0,16,speech,-66.274,-28.619,2.21,1.0
31
+ 29,11.6,0,16,speech,-66.274,-28.619,2.21,1.0
32
+ 30,12.0,0,16,speech,-66.274,-28.619,2.21,1.0
33
+ 31,12.4,0,16,speech,-66.274,-28.619,2.21,1.0
34
+ 32,12.8,0,16,speech,-66.274,-28.619,2.21,1.0
35
+ 33,13.2,0,16,speech,-66.274,-28.619,2.21,1.0
36
+ 34,13.6,0,16,speech,-66.274,-28.619,2.21,1.0
37
+ 35,14.0,0,16,speech,-66.274,-28.619,2.21,1.0
38
+ 36,14.4,0,16,speech,-66.274,-28.619,2.21,1.0
39
+ 37,14.8,0,16,speech,-66.274,-28.619,2.21,1.0
40
+ 38,15.2,0,16,speech,-66.274,-28.619,2.21,1.0
41
+ 39,15.6,0,16,speech,-66.274,-28.619,2.21,1.0
42
+ 40,16.0,0,16,speech,-66.274,-28.619,2.21,1.0
43
+ 41,16.4,0,16,speech,-66.274,-28.619,2.21,1.0
44
+ 42,16.8,0,16,speech,-66.274,-28.619,2.21,1.0
45
+ 43,17.2,0,16,speech,-66.274,-28.619,2.21,1.0
46
+ 44,17.6,0,16,speech,-66.274,-28.619,2.21,1.0
47
+ 45,18.0,0,16,speech,-66.274,-28.619,2.21,1.0
48
+ 46,18.4,0,16,speech,-66.274,-28.619,2.21,1.0
49
+ 47,18.8,0,16,speech,-66.274,-28.619,2.21,1.0
50
+ 48,19.2,0,16,speech,-66.274,-28.619,2.21,1.0
51
+ 49,19.6,0,16,speech,-66.274,-28.619,2.21,1.0
52
+ 11,4.4,1,43,writing,157.445,-19.401,1.894,1.0
53
+ 12,4.8,1,43,writing,157.445,-19.401,1.894,1.0
54
+ 13,5.2,1,43,writing,157.445,-19.401,1.894,1.0
55
+ 14,5.6,1,43,writing,157.445,-19.401,1.894,1.0
checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__ov2_000076__pred.csv ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ frame_idx,frame_time_s,src_or_track_idx,class_idx,class_name,azimuth_deg,elevation_deg,distance_m,activity_prob
2
+ 0,0.0,0,13,breathing,-61.489,-32.474,1.689,0.5039
3
+ 1,0.4,0,13,breathing,-61.976,-32.936,1.695,0.7461
4
+ 2,0.8,0,13,breathing,-62.082,-33.075,1.701,0.832
5
+ 3,1.2,0,13,breathing,-62.176,-33.416,1.701,0.8672
6
+ 4,1.6,0,13,breathing,-61.998,-33.373,1.701,0.8828
7
+ 5,2.0,0,13,breathing,-61.916,-33.527,1.701,0.8945
8
+ 6,2.4,0,13,breathing,-61.916,-33.527,1.695,0.9023
9
+ 7,2.8,0,13,breathing,-61.916,-33.666,1.695,0.9062
10
+ 8,3.2,0,13,breathing,-61.916,-33.666,1.695,0.9102
11
+ 9,3.6,0,13,breathing,-61.916,-33.666,1.695,0.9141
12
+ 10,4.0,0,13,breathing,-61.916,-33.804,1.695,0.9141
13
+ 11,4.4,0,13,breathing,-62.01,-33.722,1.695,0.9141
14
+ 12,4.8,0,13,breathing,-61.916,-33.666,1.689,0.9141
15
+ 13,5.2,0,13,breathing,-61.916,-33.804,1.689,0.9141
16
+ 14,5.6,0,13,breathing,-61.916,-33.804,1.689,0.9141
17
+ 15,6.0,0,13,breathing,-62.186,-33.766,1.689,0.9141
18
+ 16,6.4,0,13,breathing,-61.916,-33.942,1.682,0.9141
19
+ 17,6.8,0,13,breathing,-62.092,-33.847,1.682,0.9141
20
+ 18,7.2,0,13,breathing,-62.092,-33.985,1.676,0.9102
21
+ 19,7.6,0,13,breathing,-61.998,-34.067,1.676,0.9102
22
+ 20,8.0,0,13,breathing,-62.082,-34.194,1.676,0.9062
23
+ 21,8.4,0,13,breathing,-61.998,-34.067,1.67,0.9062
24
+ 22,8.8,0,13,breathing,-62.082,-34.331,1.67,0.9062
25
+ 23,9.2,0,13,breathing,-62.082,-34.331,1.67,0.9062
26
+ 24,9.6,0,13,breathing,-62.082,-34.331,1.663,0.9023
27
+ 25,10.0,0,13,breathing,-62.082,-34.331,1.67,0.9023
28
+ 26,10.4,0,13,breathing,-62.26,-34.237,1.663,0.9023
29
+ 27,10.8,0,13,breathing,-62.26,-34.375,1.663,0.9023
30
+ 28,11.2,0,13,breathing,-62.439,-34.419,1.663,0.9023
31
+ 29,11.6,0,13,breathing,-62.439,-34.281,1.663,0.8984
32
+ 30,12.0,0,13,breathing,-62.439,-34.419,1.657,0.8945
33
+ 31,12.4,0,13,breathing,-62.439,-34.419,1.657,0.8984
34
+ 32,12.8,0,13,breathing,-62.799,-34.368,1.651,0.8984
35
+ 33,13.2,0,13,breathing,-63.071,-34.571,1.651,0.8945
36
+ 34,13.6,0,13,breathing,-63.253,-34.475,1.651,0.8945
37
+ 35,14.0,0,13,breathing,-63.435,-34.518,1.644,0.8945
38
+ 36,14.4,0,13,breathing,-63.619,-34.668,1.644,0.8906
39
+ 37,14.8,0,13,breathing,-63.804,-34.818,1.638,0.8906
40
+ 38,15.2,0,13,breathing,-63.99,-34.861,1.632,0.8906
41
+ 39,15.6,0,13,breathing,-64.28,-35.253,1.625,0.8828
42
+ 40,16.0,0,13,breathing,-65.041,-35.283,1.625,0.8789
43
+ 41,16.4,0,13,breathing,-65.247,-35.408,1.625,0.875
44
+ 42,16.8,0,13,breathing,-65.96,-35.611,1.613,0.8672
45
+ 43,17.2,0,13,breathing,-66.295,-36.021,1.619,0.8555
46
+ 44,17.6,0,13,breathing,-67.172,-36.374,1.613,0.8438
47
+ 45,18.0,0,13,breathing,-67.751,-36.547,1.613,0.8242
48
+ 46,18.4,0,13,breathing,-67.938,-36.915,1.607,0.8086
49
+ 47,18.8,0,13,breathing,-68.308,-36.929,1.607,0.793
50
+ 48,19.2,0,13,breathing,-68.962,-37.242,1.607,0.7734
51
+ 49,19.6,0,13,breathing,-68.901,-37.328,1.6,0.7539
52
+ 0,0.0,1,13,breathing,-61.277,-31.69,1.676,0.7461
53
+ 1,0.4,1,13,breathing,-61.834,-32.138,1.682,0.8906
54
+ 2,0.8,1,13,breathing,-61.928,-32.484,1.682,0.9336
55
+ 3,1.2,1,13,breathing,-62.031,-32.486,1.689,0.9492
56
+ 4,1.6,1,13,breathing,-62.205,-32.528,1.689,0.957
57
+ 5,2.0,1,13,breathing,-62.031,-32.764,1.682,0.9609
58
+ 6,2.4,1,13,breathing,-62.031,-32.764,1.682,0.9648
59
+ 7,2.8,1,13,breathing,-62.042,-32.704,1.676,0.9688
60
+ 8,3.2,1,13,breathing,-61.858,-32.722,1.682,0.9688
61
+ 9,3.6,1,13,breathing,-62.031,-32.903,1.682,0.9688
62
+ 10,4.0,1,13,breathing,-62.214,-32.883,1.676,0.9727
63
+ 11,4.4,1,13,breathing,-62.214,-32.883,1.676,0.9727
64
+ 12,4.8,1,13,breathing,-62.214,-32.883,1.676,0.9727
65
+ 13,5.2,1,13,breathing,-62.042,-32.979,1.676,0.9727
66
+ 14,5.6,1,13,breathing,-62.214,-33.02,1.676,0.9727
67
+ 15,6.0,1,13,breathing,-62.214,-33.02,1.67,0.9727
68
+ 16,6.4,1,13,breathing,-62.214,-33.02,1.67,0.9727
69
+ 17,6.8,1,13,breathing,-62.214,-33.02,1.663,0.9727
70
+ 18,7.2,1,13,breathing,-62.214,-33.157,1.663,0.9727
71
+ 19,7.6,1,13,breathing,-62.214,-33.157,1.663,0.9727
72
+ 20,8.0,1,13,breathing,-62.387,-33.199,1.663,0.9727
73
+ 21,8.4,1,13,breathing,-62.214,-33.157,1.657,0.9727
74
+ 22,8.8,1,13,breathing,-62.387,-33.335,1.657,0.9727
75
+ 23,9.2,1,13,breathing,-62.387,-33.471,1.651,0.9727
76
+ 24,9.6,1,13,breathing,-62.387,-33.471,1.651,0.9727
77
+ 25,10.0,1,13,breathing,-62.387,-33.471,1.651,0.9727
78
+ 26,10.4,1,13,breathing,-62.387,-33.471,1.644,0.9727
79
+ 27,10.8,1,13,breathing,-62.387,-33.471,1.644,0.9727
80
+ 28,11.2,1,13,breathing,-62.56,-33.649,1.644,0.9727
81
+ 29,11.6,1,13,breathing,-62.56,-33.513,1.644,0.9727
82
+ 30,12.0,1,13,breathing,-62.56,-33.513,1.638,0.9727
83
+ 31,12.4,1,13,breathing,-62.56,-33.649,1.638,0.9727
84
+ 32,12.8,1,13,breathing,-62.913,-33.394,1.632,0.9727
85
+ 33,13.2,1,13,breathing,-62.913,-33.53,1.632,0.9727
86
+ 34,13.6,1,13,breathing,-63.086,-33.571,1.625,0.9727
87
+ 35,14.0,1,13,breathing,-63.086,-33.571,1.625,0.9727
88
+ 36,14.4,1,13,breathing,-63.26,-33.611,1.619,0.9688
89
+ 37,14.8,1,13,breathing,-63.259,-33.949,1.613,0.9688
90
+ 38,15.2,1,13,breathing,-63.435,-33.787,1.607,0.9688
91
+ 39,15.6,1,13,breathing,-63.612,-34.166,1.6,0.9648
92
+ 40,16.0,1,13,breathing,-64.228,-34.103,1.594,0.9609
93
+ 41,16.4,1,13,breathing,-64.144,-34.152,1.588,0.957
94
+ 42,16.8,1,13,breathing,-64.413,-34.212,1.576,0.9492
95
+ 43,17.2,1,13,breathing,-64.601,-34.46,1.576,0.9375
96
+ 44,17.6,1,13,breathing,-65.147,-34.58,1.569,0.9258
97
+ 45,18.0,1,13,breathing,-65.26,-34.781,1.563,0.9102
98
+ 46,18.4,1,13,breathing,-65.275,-34.996,1.551,0.8945
99
+ 47,18.8,1,13,breathing,-65.283,-35.104,1.551,0.8828
100
+ 48,19.2,1,13,breathing,-65.772,-35.146,1.551,0.8633
101
+ 49,19.6,1,13,breathing,-65.772,-35.006,1.545,0.8516
102
+ 0,0.0,2,13,breathing,-61.39,-31.056,1.689,0.6797
103
+ 1,0.4,2,13,breathing,-61.783,-31.637,1.695,0.8359
104
+ 2,0.8,2,13,breathing,-61.975,-31.919,1.695,0.8828
105
+ 3,1.2,2,13,breathing,-61.892,-31.942,1.695,0.9023
106
+ 4,1.6,2,13,breathing,-61.796,-32.169,1.695,0.9141
107
+ 5,2.0,2,13,breathing,-61.713,-32.19,1.695,0.918
108
+ 6,2.4,2,13,breathing,-61.713,-32.335,1.689,0.9219
109
+ 7,2.8,2,13,breathing,-61.535,-32.292,1.689,0.9258
110
+ 8,3.2,2,13,breathing,-61.631,-32.211,1.689,0.9258
111
+ 9,3.6,2,13,breathing,-61.713,-32.479,1.689,0.9258
112
+ 10,4.0,2,13,breathing,-61.713,-32.479,1.689,0.9258
113
+ 11,4.4,2,13,breathing,-61.809,-32.399,1.689,0.9258
114
+ 12,4.8,2,13,breathing,-61.809,-32.399,1.682,0.9258
115
+ 13,5.2,2,13,breathing,-61.535,-32.58,1.682,0.9258
116
+ 14,5.6,2,13,breathing,-61.809,-32.399,1.682,0.9258
117
+ 15,6.0,2,13,breathing,-61.809,-32.543,1.676,0.9258
118
+ 16,6.4,2,13,breathing,-61.809,-32.543,1.676,0.9219
119
+ 17,6.8,2,13,breathing,-61.892,-32.667,1.676,0.9219
120
+ 18,7.2,2,13,breathing,-61.713,-32.767,1.67,0.9219
121
+ 19,7.6,2,13,breathing,-61.617,-32.848,1.67,0.918
122
+ 20,8.0,2,13,breathing,-61.796,-32.892,1.67,0.918
123
+ 21,8.4,2,13,breathing,-61.713,-32.767,1.663,0.918
124
+ 22,8.8,2,13,breathing,-61.892,-32.811,1.663,0.9141
125
+ 23,9.2,2,13,breathing,-61.796,-33.036,1.663,0.9141
126
+ 24,9.6,2,13,breathing,-61.892,-32.954,1.657,0.9141
127
+ 25,10.0,2,13,breathing,-61.892,-32.954,1.657,0.9141
128
+ 26,10.4,2,13,breathing,-61.976,-32.936,1.657,0.9102
129
+ 27,10.8,2,13,breathing,-61.975,-33.079,1.657,0.9102
130
+ 28,11.2,2,13,breathing,-61.976,-33.222,1.657,0.9102
131
+ 29,11.6,2,13,breathing,-61.976,-32.936,1.651,0.9062
132
+ 30,12.0,2,13,breathing,-62.156,-33.123,1.651,0.9062
133
+ 31,12.4,2,13,breathing,-62.071,-32.997,1.644,0.9062
134
+ 32,12.8,2,13,breathing,-62.431,-33.084,1.644,0.9062
135
+ 33,13.2,2,13,breathing,-62.431,-33.084,1.644,0.9062
136
+ 34,13.6,2,13,breathing,-62.613,-33.27,1.644,0.9023
137
+ 35,14.0,2,13,breathing,-62.613,-33.127,1.638,0.9023
138
+ 36,14.4,2,13,breathing,-62.792,-33.275,1.638,0.8984
139
+ 37,14.8,2,13,breathing,-62.883,-33.44,1.632,0.8984
140
+ 38,15.2,2,13,breathing,-63.068,-33.377,1.625,0.8945
141
+ 39,15.6,2,13,breathing,-63.157,-33.611,1.619,0.8906
142
+ 40,16.0,2,13,breathing,-63.621,-33.718,1.619,0.8867
143
+ 41,16.4,2,13,breathing,-63.714,-33.739,1.619,0.8789
144
+ 42,16.8,2,13,breathing,-63.997,-33.622,1.607,0.8711
145
+ 43,17.2,2,13,breathing,-64.096,-33.86,1.607,0.8633
146
+ 44,17.6,2,13,breathing,-64.578,-34.076,1.607,0.8477
147
+ 45,18.0,2,13,breathing,-64.782,-34.047,1.6,0.832
148
+ 46,18.4,2,13,breathing,-64.885,-34.328,1.594,0.8203
149
+ 47,18.8,2,13,breathing,-64.99,-34.314,1.594,0.8047
150
+ 48,19.2,2,13,breathing,-65.302,-34.457,1.594,0.7852
151
+ 49,19.6,2,13,breathing,-65.401,-34.329,1.588,0.7695
152
+ 0,0.0,3,13,breathing,-63.637,-36.285,1.676,0.4766
153
+ 1,0.4,3,13,breathing,-64.418,-36.53,1.689,0.8164
154
+ 2,0.8,3,13,breathing,-64.695,-36.693,1.689,0.918
155
+ 3,1.2,3,13,breathing,-64.879,-36.644,1.689,0.9531
156
+ 4,1.6,3,13,breathing,-64.977,-36.666,1.689,0.9688
157
+ 5,2.0,3,13,breathing,-64.873,-36.805,1.689,0.9766
158
+ 6,2.4,3,13,breathing,-64.977,-36.942,1.682,0.9805
159
+ 7,2.8,3,13,breathing,-64.879,-37.058,1.676,0.9844
160
+ 8,3.2,3,13,breathing,-64.879,-36.92,1.676,0.9883
161
+ 9,3.6,3,13,breathing,-65.172,-36.986,1.676,0.9883
162
+ 10,4.0,3,13,breathing,-65.376,-37.146,1.676,0.9883
163
+ 11,4.4,3,13,breathing,-65.376,-37.146,1.676,0.9922
164
+ 12,4.8,3,13,breathing,-65.583,-37.168,1.676,0.9922
165
+ 13,5.2,3,13,breathing,-65.683,-37.328,1.676,0.9922
166
+ 14,5.6,3,13,breathing,-65.892,-37.351,1.676,0.9922
167
+ 15,6.0,3,13,breathing,-66.194,-37.416,1.676,0.9922
168
+ 16,6.4,3,13,breathing,-66.206,-37.535,1.67,0.9922
169
+ 17,6.8,3,13,breathing,-66.537,-37.84,1.67,0.9922
170
+ 18,7.2,3,13,breathing,-66.846,-37.904,1.67,0.9922
171
+ 19,7.6,3,13,breathing,-66.772,-38.126,1.67,0.9961
172
+ 20,8.0,3,13,breathing,-67.205,-38.195,1.67,0.9961
173
+ 21,8.4,3,13,breathing,-67.451,-38.487,1.663,0.9961
174
+ 22,8.8,3,13,breathing,-67.77,-38.551,1.67,0.9961
175
+ 23,9.2,3,13,breathing,-67.918,-38.824,1.663,0.9961
176
+ 24,9.6,3,13,breathing,-68.155,-38.994,1.663,0.9961
177
+ 25,10.0,3,13,breathing,-68.749,-39.072,1.663,0.9961
178
+ 26,10.4,3,13,breathing,-68.911,-39.354,1.663,0.9961
179
+ 27,10.8,3,13,breathing,-69.585,-39.335,1.663,0.9961
180
+ 28,11.2,3,13,breathing,-70.017,-39.938,1.657,0.9961
181
+ 29,11.6,3,13,breathing,-70.429,-39.98,1.657,0.9961
182
+ 30,12.0,3,13,breathing,-70.934,-40.051,1.657,0.9961
183
+ 31,12.4,3,13,breathing,-71.525,-40.396,1.651,0.9961
184
+ 32,12.8,3,13,breathing,-72.294,-40.505,1.651,0.9961
185
+ 33,13.2,3,13,breathing,-72.754,-40.844,1.644,0.9961
186
+ 34,13.6,3,13,breathing,-73.453,-41.343,1.651,0.9961
187
+ 35,14.0,3,13,breathing,-74.194,-41.564,1.644,0.9922
188
+ 36,14.4,3,13,breathing,-74.896,-41.93,1.644,0.9922
189
+ 37,14.8,3,13,breathing,-75.758,-42.608,1.638,0.9922
190
+ 38,15.2,3,13,breathing,-76.735,-42.859,1.632,0.9922
191
+ 39,15.6,3,13,breathing,-78.257,-44.081,1.625,0.9922
192
+ 40,16.0,3,13,breathing,-79.821,-44.387,1.625,0.9883
193
+ 41,16.4,3,13,breathing,-80.643,-44.94,1.625,0.9883
194
+ 42,16.8,3,13,breathing,-82.416,-45.748,1.619,0.9844
195
+ 43,17.2,3,13,breathing,-83.481,-46.684,1.619,0.9805
196
+ 44,17.6,3,13,breathing,-85.533,-47.372,1.619,0.9727
197
+ 45,18.0,3,13,breathing,-86.876,-48.197,1.619,0.9688
198
+ 46,18.4,3,13,breathing,-87.407,-48.445,1.619,0.9609
199
+ 47,18.8,3,13,breathing,-88.061,-48.872,1.625,0.957
200
+ 48,19.2,3,13,breathing,-89.771,-49.398,1.632,0.9492
201
+ 49,19.6,3,13,breathing,-89.933,-49.812,1.625,0.9414
checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__ov2_000099__gt.csv ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ frame_idx,frame_time_s,src_or_track_idx,class_idx,class_name,azimuth_deg,elevation_deg,distance_m,activity_prob
2
+ 0,0.0,0,37,zipper,80.687,15.8,3.062,1.0
3
+ 1,0.3972,0,37,zipper,80.687,15.8,3.062,1.0
4
+ 2,0.7943,0,37,zipper,80.687,15.8,3.062,1.0
5
+ 3,1.1915,0,37,zipper,80.687,15.8,3.062,1.0
6
+ 4,1.5887,0,37,zipper,80.687,15.8,3.062,1.0
7
+ 5,1.9858,0,37,zipper,80.687,15.8,3.062,1.0
8
+ 6,2.383,0,37,zipper,80.687,15.8,3.062,1.0
9
+ 7,2.7802,0,37,zipper,80.687,15.8,3.062,1.0
10
+ 8,3.1773,0,37,zipper,80.687,15.8,3.062,1.0
11
+ 9,3.5745,0,37,zipper,80.687,15.8,3.062,1.0
12
+ 10,3.9717,0,37,zipper,80.687,15.8,3.062,1.0
13
+ 11,4.3688,0,37,zipper,80.687,15.8,3.062,1.0
14
+ 12,4.766,0,37,zipper,80.687,15.8,3.062,1.0
15
+ 13,5.1631,0,37,zipper,80.687,15.8,3.062,1.0
16
+ 14,5.5603,0,37,zipper,80.687,15.8,3.062,1.0
17
+ 15,5.9575,0,37,zipper,80.687,15.8,3.062,1.0
18
+ 16,6.3546,0,37,zipper,80.687,15.8,3.062,1.0
19
+ 17,6.7518,0,37,zipper,80.687,15.8,3.062,1.0
20
+ 18,7.149,0,37,zipper,80.687,15.8,3.062,1.0
21
+ 19,7.5461,0,37,zipper,80.687,15.8,3.062,1.0
22
+ 4,1.5887,1,22,train,-83.499,-24.228,1.804,1.0
23
+ 5,1.9858,1,22,train,-83.499,-24.228,1.804,1.0
24
+ 6,2.383,1,22,train,-83.499,-24.228,1.804,1.0
25
+ 7,2.7802,1,22,train,-83.499,-24.228,1.804,1.0
26
+ 8,3.1773,1,22,train,-83.499,-24.228,1.804,1.0
27
+ 9,3.5745,1,22,train,-83.499,-24.228,1.804,1.0
28
+ 10,3.9717,1,22,train,-83.499,-24.228,1.804,1.0
29
+ 11,4.3688,1,22,train,-83.499,-24.228,1.804,1.0
30
+ 12,4.766,1,22,train,-83.499,-24.228,1.804,1.0
31
+ 13,5.1631,1,22,train,-83.499,-24.228,1.804,1.0
32
+ 14,5.5603,1,22,train,-83.499,-24.228,1.804,1.0
33
+ 15,5.9575,1,22,train,-83.499,-24.228,1.804,1.0
34
+ 16,6.3546,1,22,train,-83.499,-24.228,1.804,1.0
35
+ 17,6.7518,1,22,train,-83.499,-24.228,1.804,1.0
36
+ 18,7.149,1,22,train,-83.499,-24.228,1.804,1.0
37
+ 19,7.5461,1,22,train,-83.499,-24.228,1.804,1.0
38
+ 20,7.9433,1,22,train,-83.499,-24.228,1.804,1.0
39
+ 21,8.3405,1,22,train,-83.499,-24.228,1.804,1.0
40
+ 22,8.7376,1,22,train,-83.499,-24.228,1.804,1.0
checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__ov2_000119__pred.csv ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ frame_idx,frame_time_s,src_or_track_idx,class_idx,class_name,azimuth_deg,elevation_deg,distance_m,activity_prob
2
+ 0,0.0,0,55,aircraft,-16.401,-19.656,3.819,0.793
3
+ 1,0.4,0,55,aircraft,-15.906,-19.959,3.804,0.793
4
+ 2,0.8,0,55,aircraft,-15.514,-19.909,3.804,0.7812
5
+ 3,1.2,0,55,aircraft,-15.222,-20.017,3.804,0.7695
6
+ 4,1.6,0,55,aircraft,-15.131,-19.942,3.789,0.7578
7
+ 5,2.0,0,55,aircraft,-15.034,-19.991,3.789,0.7461
8
+ 6,2.4,0,55,aircraft,-14.763,-20.014,3.789,0.7383
9
+ 7,2.8,0,55,aircraft,-14.578,-19.906,3.789,0.7305
10
+ 8,3.2,0,55,aircraft,-14.668,-19.816,3.773,0.7227
11
+ 9,3.6,0,27,animal,-14.581,-19.864,3.773,0.7148
12
+ 10,4.0,0,55,aircraft,-14.581,-19.864,3.789,0.7031
13
+ 11,4.4,0,55,aircraft,-14.578,-19.824,3.773,0.6953
14
+ 12,4.8,0,55,aircraft,-14.488,-19.666,3.773,0.6875
15
+ 13,5.2,0,55,aircraft,-14.488,-19.666,3.773,0.6836
16
+ 14,5.6,0,55,aircraft,-14.491,-19.623,3.773,0.6758
17
+ 15,6.0,0,55,aircraft,-14.672,-19.691,3.773,0.668
18
+ 16,6.4,0,55,aircraft,-14.398,-19.508,3.773,0.6602
19
+ 17,6.8,0,55,aircraft,-14.491,-19.623,3.773,0.6562
20
+ 18,7.2,0,27,animal,-14.491,-19.623,3.773,0.6484
21
+ 19,7.6,0,55,aircraft,-14.4,-19.547,3.773,0.6406
22
+ 20,8.0,0,55,aircraft,-14.307,-19.35,3.773,0.6328
23
+ 21,8.4,0,55,aircraft,-14.309,-19.471,3.773,0.6289
24
+ 22,8.8,0,55,aircraft,-14.218,-19.478,3.773,0.6211
25
+ 23,9.2,0,55,aircraft,-14.309,-19.387,3.773,0.6172
26
+ 24,9.6,0,55,aircraft,-14.218,-19.395,3.773,0.6094
27
+ 25,10.0,0,55,aircraft,-14.218,-19.478,3.773,0.6055
28
+ 26,10.4,0,55,aircraft,-14.309,-19.387,3.773,0.5977
29
+ 27,10.8,0,55,aircraft,-14.309,-19.304,3.773,0.5938
30
+ 28,11.2,0,55,aircraft,-14.127,-19.281,3.773,0.5898
31
+ 29,11.6,0,55,aircraft,-14.309,-19.22,3.773,0.5859
32
+ 30,12.0,0,55,aircraft,-14.309,-19.22,3.773,0.5781
33
+ 31,12.4,0,55,aircraft,-14.217,-19.191,3.773,0.5742
34
+ 32,12.8,0,55,aircraft,-14.398,-19.011,3.773,0.5742
35
+ 33,13.2,0,55,aircraft,-14.491,-19.122,3.773,0.5664
36
+ 34,13.6,0,55,aircraft,-14.491,-19.039,3.773,0.5625
37
+ 35,14.0,0,55,aircraft,-14.307,-18.934,3.773,0.5586
38
+ 36,14.4,0,55,aircraft,-14.581,-18.948,3.773,0.5586
39
+ 37,14.8,0,55,aircraft,-14.491,-18.871,3.773,0.5547
40
+ 38,15.2,0,55,aircraft,-14.491,-18.871,3.773,0.5508
41
+ 39,15.6,0,55,aircraft,-14.491,-18.703,3.758,0.5469
42
+ 40,16.0,0,55,aircraft,-14.585,-18.729,3.758,0.543
43
+ 41,16.4,0,55,aircraft,-14.585,-18.729,3.758,0.543
44
+ 42,16.8,0,55,aircraft,-14.585,-18.56,3.758,0.543
45
+ 43,17.2,0,55,aircraft,-14.494,-18.397,3.758,0.543
46
+ 44,17.6,0,55,aircraft,-14.585,-18.135,3.743,0.543
47
+ 45,18.0,0,55,aircraft,-14.494,-18.057,3.743,0.543
48
+ 46,18.4,0,55,aircraft,-14.497,-18.001,3.727,0.5391
49
+ 47,18.8,0,55,aircraft,-14.589,-17.908,3.727,0.5391
50
+ 48,19.2,0,55,aircraft,-14.5,-17.77,3.727,0.5352
51
+ 49,19.6,0,55,aircraft,-14.5,-17.77,3.712,0.5195
52
+ 0,0.0,1,55,aircraft,-16.649,-18.834,3.804,0.8906
53
+ 1,0.4,1,55,aircraft,-16.192,-19.084,3.789,0.9062
54
+ 2,0.8,1,27,animal,-15.922,-19.116,3.789,0.9023
55
+ 3,1.2,1,27,animal,-15.658,-19.148,3.789,0.8984
56
+ 4,1.6,1,55,aircraft,-15.489,-19.056,3.789,0.8945
57
+ 5,2.0,1,27,animal,-15.4,-19.179,3.789,0.8906
58
+ 6,2.4,1,55,aircraft,-15.161,-19.273,3.789,0.8867
59
+ 7,2.8,1,27,animal,-14.995,-19.107,3.789,0.8828
60
+ 8,3.2,1,27,animal,-15.075,-19.1,3.773,0.8789
61
+ 9,3.6,1,27,animal,-15.001,-19.139,3.773,0.875
62
+ 10,4.0,1,27,animal,-15.001,-19.139,3.789,0.8672
63
+ 11,4.4,1,55,aircraft,-14.995,-19.107,3.789,0.8633
64
+ 12,4.8,1,27,animal,-14.915,-18.966,3.789,0.8594
65
+ 13,5.2,1,27,animal,-14.831,-18.869,3.789,0.8555
66
+ 14,5.6,1,27,animal,-14.836,-18.899,3.789,0.8516
67
+ 15,6.0,1,55,aircraft,-14.995,-18.886,3.789,0.8477
68
+ 16,6.4,1,27,animal,-14.915,-18.893,3.789,0.8438
69
+ 17,6.8,1,27,animal,-14.836,-18.825,3.789,0.8398
70
+ 18,7.2,1,27,animal,-14.915,-18.893,3.789,0.8359
71
+ 19,7.6,1,27,animal,-14.756,-18.906,3.789,0.832
72
+ 20,8.0,1,27,animal,-14.756,-18.758,3.789,0.8281
73
+ 21,8.4,1,55,aircraft,-14.756,-18.832,3.789,0.8203
74
+ 22,8.8,1,27,animal,-14.756,-18.832,3.789,0.8164
75
+ 23,9.2,1,27,animal,-14.673,-18.661,3.789,0.8164
76
+ 24,9.6,1,55,aircraft,-14.597,-18.771,3.789,0.8125
77
+ 25,10.0,1,27,animal,-14.676,-18.764,3.789,0.8086
78
+ 26,10.4,1,55,aircraft,-14.593,-18.668,3.789,0.8047
79
+ 27,10.8,1,27,animal,-14.676,-18.69,3.789,0.8008
80
+ 28,11.2,1,55,aircraft,-14.514,-18.674,3.804,0.7969
81
+ 29,11.6,1,55,aircraft,-14.676,-18.616,3.789,0.793
82
+ 30,12.0,1,55,aircraft,-14.676,-18.616,3.804,0.7891
83
+ 31,12.4,1,55,aircraft,-14.673,-18.514,3.804,0.7891
84
+ 32,12.8,1,55,aircraft,-14.915,-18.523,3.804,0.7852
85
+ 33,13.2,1,55,aircraft,-14.836,-18.529,3.789,0.7812
86
+ 34,13.6,1,55,aircraft,-14.836,-18.529,3.804,0.7812
87
+ 35,14.0,1,55,aircraft,-14.756,-18.462,3.804,0.7773
88
+ 36,14.4,1,55,aircraft,-14.915,-18.449,3.804,0.7734
89
+ 37,14.8,1,55,aircraft,-14.756,-18.387,3.804,0.7734
90
+ 38,15.2,1,55,aircraft,-14.836,-18.307,3.789,0.7695
91
+ 39,15.6,1,55,aircraft,-14.836,-18.158,3.804,0.7656
92
+ 40,16.0,1,55,aircraft,-15.001,-18.172,3.789,0.7656
93
+ 41,16.4,1,55,aircraft,-15.001,-18.172,3.789,0.7617
94
+ 42,16.8,1,55,aircraft,-14.921,-17.954,3.789,0.7617
95
+ 43,17.2,1,55,aircraft,-14.76,-17.966,3.789,0.7617
96
+ 44,17.6,1,55,aircraft,-15.087,-17.74,3.789,0.7578
97
+ 45,18.0,1,55,aircraft,-14.926,-17.677,3.789,0.7578
98
+ 46,18.4,1,55,aircraft,-14.926,-17.525,3.773,0.7539
99
+ 47,18.8,1,55,aircraft,-14.931,-17.472,3.773,0.75
100
+ 48,19.2,1,55,aircraft,-15.018,-17.412,3.773,0.7422
101
+ 49,19.6,1,55,aircraft,-14.85,-17.249,3.773,0.7305
102
+ 0,0.0,2,55,aircraft,-17.142,-18.923,3.819,0.7578
103
+ 1,0.4,2,55,aircraft,-16.666,-19.178,3.804,0.7461
104
+ 2,0.8,2,55,aircraft,-16.385,-19.134,3.804,0.7305
105
+ 3,1.2,2,55,aircraft,-16.04,-19.361,3.804,0.707
106
+ 4,1.6,2,55,aircraft,-15.863,-19.189,3.789,0.6875
107
+ 5,2.0,2,55,aircraft,-15.781,-19.273,3.789,0.6719
108
+ 6,2.4,2,55,aircraft,-15.616,-19.287,3.789,0.6562
109
+ 7,2.8,2,55,aircraft,-15.36,-19.199,3.773,0.6406
110
+ 8,3.2,2,55,aircraft,-15.442,-19.116,3.773,0.6289
111
+ 9,3.6,2,55,aircraft,-15.278,-19.053,3.773,0.6172
112
+ 10,4.0,2,55,aircraft,-15.285,-19.163,3.773,0.6055
113
+ 11,4.4,2,55,aircraft,-15.278,-19.053,3.773,0.5938
114
+ 12,4.8,2,55,aircraft,-15.195,-18.908,3.773,0.582
115
+ 13,5.2,2,55,aircraft,-15.113,-18.915,3.758,0.5742
116
+ 14,5.6,2,55,aircraft,-15.202,-18.939,3.758,0.5664
117
+ 15,6.0,2,55,aircraft,-15.285,-18.933,3.758,0.5547
118
+ 16,6.4,2,55,aircraft,-15.113,-18.838,3.758,0.543
119
+ 17,6.8,2,55,aircraft,-15.12,-18.793,3.758,0.5352
120
+ 18,7.2,2,55,aircraft,-15.12,-18.869,3.758,0.5312
121
+ 19,7.6,2,55,aircraft,-14.954,-18.729,3.758,0.5195
122
+ 20,8.0,2,55,aircraft,-14.954,-18.729,3.758,0.5117
123
+ 21,8.4,2,55,aircraft,-15.037,-18.722,3.758,0.5039
124
+ 22,8.8,2,55,aircraft,-14.87,-18.736,3.758,0.4961
125
+ 23,9.2,2,55,aircraft,-14.954,-18.652,3.758,0.4902
126
+ 24,9.6,2,55,aircraft,-14.87,-18.581,3.758,0.4824
127
+ 25,10.0,2,55,aircraft,-14.87,-18.581,3.758,0.4785
128
+ 26,10.4,2,55,aircraft,-14.783,-18.405,3.758,0.4707
129
+ 27,10.8,2,55,aircraft,-14.87,-18.504,3.758,0.4648
130
+ 28,11.2,2,55,aircraft,-14.87,-18.504,3.758,0.459
131
+ 29,11.6,2,55,aircraft,-14.87,-18.427,3.758,0.4551
132
+ 30,12.0,2,55,aircraft,-14.865,-18.321,3.758,0.4492
133
+ 31,12.4,2,55,aircraft,-14.865,-18.321,3.758,0.4453
134
+ 32,12.8,2,55,aircraft,-15.037,-18.336,3.758,0.4414
135
+ 33,13.2,2,55,aircraft,-15.037,-18.336,3.743,0.4355
136
+ 34,13.6,2,55,aircraft,-15.037,-18.259,3.758,0.4297
137
+ 35,14.0,2,55,aircraft,-14.87,-18.272,3.758,0.4277
138
+ 36,14.4,2,55,aircraft,-15.037,-18.181,3.743,0.4238
139
+ 37,14.8,2,55,aircraft,-14.87,-18.117,3.743,0.4199
140
+ 38,15.2,2,55,aircraft,-14.954,-18.032,3.743,0.416
141
+ 39,15.6,2,55,aircraft,-14.787,-17.968,3.743,0.4121
142
+ 40,16.0,2,55,aircraft,-14.954,-17.799,3.727,0.4102
143
+ 41,16.4,2,55,aircraft,-14.87,-17.805,3.727,0.4082
144
+ 42,16.8,2,55,aircraft,-14.876,-17.752,3.727,0.4102
145
+ 43,17.2,2,55,aircraft,-14.792,-17.602,3.727,0.4082
146
+ 44,17.6,2,55,aircraft,-14.792,-17.444,3.712,0.4102
147
+ 45,18.0,2,55,aircraft,-14.708,-17.372,3.712,0.4102
148
+ 46,18.4,2,55,aircraft,-14.713,-17.315,3.697,0.4102
149
+ 47,18.8,2,55,aircraft,-14.713,-17.236,3.697,0.4082
150
+ 48,19.2,2,55,aircraft,-14.544,-17.009,3.682,0.4062
151
+ 49,19.6,2,55,aircraft,-14.544,-16.93,3.682,0.3926
152
+ 0,0.0,3,55,aircraft,-16.427,-23.745,3.712,0.9102
153
+ 1,0.4,3,55,aircraft,-16.172,-23.989,3.697,0.9531
154
+ 2,0.8,3,55,aircraft,-15.785,-23.913,3.667,0.9609
155
+ 3,1.2,3,55,aircraft,-15.247,-23.992,3.651,0.9648
156
+ 4,1.6,3,55,aircraft,-14.983,-23.733,3.636,0.9609
157
+ 5,2.0,3,55,aircraft,-14.375,-23.685,3.621,0.9609
158
+ 6,2.4,3,55,aircraft,-13.617,-23.491,3.606,0.957
159
+ 7,2.8,3,55,aircraft,-13.123,-23.277,3.606,0.957
160
+ 8,3.2,3,55,aircraft,-12.804,-22.907,3.59,0.9531
161
+ 9,3.6,3,55,aircraft,-12.165,-22.711,3.59,0.9492
162
+ 10,4.0,3,55,aircraft,-11.701,-22.504,3.59,0.9453
163
+ 11,4.4,3,55,aircraft,-11.407,-22.428,3.575,0.9453
164
+ 12,4.8,3,55,aircraft,-11.039,-22.219,3.56,0.9414
165
+ 13,5.2,3,55,aircraft,-10.679,-22.014,3.56,0.9414
166
+ 14,5.6,3,55,aircraft,-10.462,-21.914,3.545,0.9375
167
+ 15,6.0,3,55,aircraft,-10.269,-21.84,3.545,0.9336
168
+ 16,6.4,3,55,aircraft,-9.849,-21.645,3.53,0.9336
169
+ 17,6.8,3,55,aircraft,-9.733,-21.652,3.515,0.9297
170
+ 18,7.2,3,55,aircraft,-9.513,-21.449,3.515,0.9297
171
+ 19,7.6,3,55,aircraft,-9.284,-21.327,3.499,0.9258
172
+ 20,8.0,3,55,aircraft,-9.146,-21.123,3.499,0.9258
173
+ 21,8.4,3,55,aircraft,-8.909,-20.898,3.484,0.9219
174
+ 22,8.8,3,55,aircraft,-8.72,-20.908,3.484,0.9219
175
+ 23,9.2,3,55,aircraft,-8.644,-20.778,3.469,0.918
176
+ 24,9.6,3,55,aircraft,-8.493,-20.652,3.469,0.918
177
+ 25,10.0,3,55,aircraft,-8.373,-20.556,3.454,0.918
178
+ 26,10.4,3,55,aircraft,-8.259,-20.427,3.439,0.918
179
+ 27,10.8,3,55,aircraft,-8.259,-20.293,3.439,0.918
180
+ 28,11.2,3,55,aircraft,-8.066,-20.203,3.439,0.918
181
+ 29,11.6,3,55,aircraft,-8.109,-19.897,3.424,0.9141
182
+ 30,12.0,3,55,aircraft,-7.953,-19.671,3.409,0.918
183
+ 31,12.4,3,55,aircraft,-7.803,-19.543,3.409,0.918
184
+ 32,12.8,3,55,aircraft,-7.882,-19.637,3.394,0.918
185
+ 33,13.2,3,55,aircraft,-7.92,-19.5,3.378,0.918
186
+ 34,13.6,3,55,aircraft,-7.769,-19.371,3.378,0.918
187
+ 35,14.0,3,55,aircraft,-7.658,-19.199,3.378,0.918
188
+ 36,14.4,3,55,aircraft,-7.658,-19.062,3.363,0.918
189
+ 37,14.8,3,55,aircraft,-7.47,-19.028,3.363,0.918
190
+ 38,15.2,3,55,aircraft,-7.317,-18.827,3.348,0.918
191
+ 39,15.6,3,55,aircraft,-7.087,-18.628,3.333,0.918
192
+ 40,16.0,3,55,aircraft,-7.241,-18.508,3.318,0.918
193
+ 41,16.4,3,55,aircraft,-7.125,-18.442,3.318,0.9141
194
+ 42,16.8,3,55,aircraft,-6.931,-18.262,3.303,0.9141
195
+ 43,17.2,3,55,aircraft,-6.66,-18.131,3.303,0.9141
196
+ 44,17.6,3,55,aircraft,-6.657,-17.869,3.288,0.9102
197
+ 45,18.0,3,55,aircraft,-6.458,-17.897,3.273,0.9062
198
+ 46,18.4,3,55,aircraft,-6.336,-17.779,3.273,0.9062
199
+ 47,18.8,3,55,aircraft,-6.217,-17.638,3.273,0.9023
200
+ 48,19.2,3,55,aircraft,-6.093,-17.517,3.258,0.8984
201
+ 49,19.6,3,55,aircraft,-6.087,-17.464,3.258,0.8906
checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__ov2_000156__pred.csv ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ frame_idx,frame_time_s,src_or_track_idx,class_idx,class_name,azimuth_deg,elevation_deg,distance_m,activity_prob
2
+ 0,0.0,0,35,insect,-92.579,-19.456,3.896,0.8086
3
+ 1,0.4,0,35,insect,-92.913,-19.244,3.911,0.8359
4
+ 2,0.8,0,35,insect,-92.945,-19.131,3.911,0.8398
5
+ 3,1.2,0,35,insect,-93.152,-18.937,3.911,0.8438
6
+ 4,1.6,0,35,insect,-93.309,-18.708,3.911,0.8398
7
+ 5,2.0,0,35,insect,-93.058,-18.938,3.911,0.8398
8
+ 6,2.4,0,35,insect,-93.261,-18.673,3.896,0.8359
9
+ 7,2.8,0,35,insect,-93.258,-19.056,3.911,0.832
10
+ 8,3.2,0,35,insect,-93.112,-19.138,3.896,0.8281
11
+ 9,3.6,0,35,insect,-93.624,-18.899,3.896,0.8242
12
+ 10,4.0,0,35,insect,-93.208,-18.677,3.896,0.8203
13
+ 11,4.4,0,35,insect,-93.261,-18.559,3.896,0.8125
14
+ 12,4.8,0,35,insect,-93.88,-18.664,3.896,0.8086
15
+ 13,5.2,0,35,insect,-93.801,-18.629,3.896,0.8086
16
+ 14,5.6,0,35,insect,-93.351,-19.099,3.896,0.8008
17
+ 15,6.0,0,35,insect,-93.226,-18.599,3.88,0.7969
18
+ 16,6.4,0,35,insect,-93.786,-18.939,3.88,0.793
19
+ 17,6.8,0,35,insect,-93.287,-18.869,3.88,0.7891
20
+ 18,7.2,0,35,insect,-93.321,-18.597,3.865,0.7852
21
+ 19,7.6,0,35,insect,-93.334,-18.716,3.865,0.7773
22
+ 20,8.0,0,35,insect,-93.062,-18.642,3.865,0.7734
23
+ 21,8.4,0,35,insect,-92.869,-18.529,3.85,0.7695
24
+ 22,8.8,0,35,insect,-93.076,-18.488,3.85,0.7656
25
+ 23,9.2,0,35,insect,-92.632,-18.455,3.85,0.7656
26
+ 24,9.6,0,35,insect,-92.837,-18.761,3.85,0.7617
27
+ 25,10.0,0,35,insect,-92.375,-18.459,3.834,0.7617
28
+ 26,10.4,0,35,insect,-92.869,-18.529,3.819,0.7578
29
+ 27,10.8,0,35,insect,-92.429,-18.151,3.819,0.7578
30
+ 28,11.2,0,35,insect,-91.979,-18.045,3.819,0.7539
31
+ 29,11.6,0,35,insect,-91.798,-17.926,3.804,0.7539
32
+ 30,12.0,0,35,insect,-91.133,-17.668,3.804,0.75
33
+ 31,12.4,0,35,insect,-90.93,-17.338,3.789,0.7539
34
+ 32,12.8,0,35,insect,-90.887,-17.494,3.789,0.75
35
+ 33,13.2,0,35,insect,-90.926,-17.153,3.773,0.7461
36
+ 34,13.6,0,35,insect,-90.438,-17.059,3.758,0.7461
37
+ 35,14.0,0,35,insect,-90.517,-16.676,3.758,0.7422
38
+ 36,14.4,0,35,insect,-89.977,-16.677,3.743,0.7344
39
+ 37,14.8,0,35,insect,-89.863,-16.632,3.727,0.7266
40
+ 38,15.2,0,35,insect,-89.798,-16.435,3.712,0.7109
41
+ 39,15.6,0,35,insect,-89.395,-15.866,3.682,0.6953
42
+ 40,16.0,0,35,insect,-89.134,-15.632,3.667,0.6758
43
+ 41,16.4,0,35,insect,-88.471,-15.387,3.651,0.6523
44
+ 42,16.8,0,35,insect,-88.862,-15.282,3.636,0.6289
45
+ 43,17.2,0,35,insect,-88.632,-14.999,3.621,0.5977
46
+ 44,17.6,0,35,insect,-88.703,-14.457,3.59,0.5547
47
+ 45,18.0,0,35,insect,-88.527,-14.561,3.575,0.5234
48
+ 46,18.4,0,35,insect,-88.097,-14.558,3.56,0.5
49
+ 47,18.8,0,35,insect,-88.295,-14.348,3.545,0.4824
50
+ 48,19.2,0,35,insect,-88.028,-14.133,3.53,0.4609
51
+ 49,19.6,0,35,insect,-87.886,-14.027,3.53,0.4551
52
+ 0,0.0,1,35,insect,-90.976,-22.752,4.003,0.8945
53
+ 1,0.4,1,35,insect,-91.486,-22.089,4.003,0.9258
54
+ 2,0.8,1,35,insect,-91.505,-21.682,4.003,0.9336
55
+ 3,1.2,1,35,insect,-91.79,-21.656,4.003,0.9336
56
+ 4,1.6,1,35,insect,-91.693,-21.142,4.003,0.9375
57
+ 5,2.0,1,35,insect,-91.164,-21.347,4.003,0.9336
58
+ 6,2.4,1,35,insect,-91.447,-21.206,4.003,0.9336
59
+ 7,2.8,1,35,insect,-91.486,-21.522,4.018,0.9336
60
+ 8,3.2,1,35,insect,-91.229,-21.5,4.018,0.9336
61
+ 9,3.6,1,35,insect,-91.7,-21.179,4.018,0.9297
62
+ 10,4.0,1,35,insect,-91.18,-21.157,4.018,0.9297
63
+ 11,4.4,1,35,insect,-91.212,-21.007,4.018,0.9297
64
+ 12,4.8,1,35,insect,-91.831,-21.063,4.018,0.9258
65
+ 13,5.2,1,35,insect,-91.691,-21.038,4.018,0.9258
66
+ 14,5.6,1,35,insect,-90.899,-21.388,4.018,0.9219
67
+ 15,6.0,1,35,insect,-91.006,-20.982,4.018,0.9219
68
+ 16,6.4,1,35,insect,-91.312,-21.156,4.018,0.918
69
+ 17,6.8,1,35,insect,-90.85,-21.274,4.003,0.918
70
+ 18,7.2,1,35,insect,-91.015,-21.158,4.003,0.9141
71
+ 19,7.6,1,35,insect,-90.991,-21.106,4.003,0.9141
72
+ 20,8.0,1,35,insect,-90.564,-21.25,4.003,0.9102
73
+ 21,8.4,1,35,insect,-90.265,-21.02,4.003,0.9102
74
+ 22,8.8,1,35,insect,-90.575,-20.992,4.003,0.9062
75
+ 23,9.2,1,35,insect,-90.116,-21.02,4.003,0.9062
76
+ 24,9.6,1,35,insect,-90.333,-21.34,4.003,0.9023
77
+ 25,10.0,1,35,insect,-89.764,-21.135,3.987,0.9023
78
+ 26,10.4,1,35,insect,-90.258,-20.993,3.987,0.9023
79
+ 27,10.8,1,35,insect,-89.702,-20.904,3.987,0.8984
80
+ 28,11.2,1,35,insect,-89.228,-20.727,3.987,0.8945
81
+ 29,11.6,1,35,insect,-88.997,-20.669,3.972,0.8945
82
+ 30,12.0,1,35,insect,-88.086,-20.459,3.972,0.8906
83
+ 31,12.4,1,35,insect,-88.153,-20.173,3.972,0.8867
84
+ 32,12.8,1,35,insect,-88.039,-20.202,3.972,0.8828
85
+ 33,13.2,1,35,insect,-87.894,-20.002,3.957,0.8789
86
+ 34,13.6,1,35,insect,-87.582,-19.915,3.957,0.875
87
+ 35,14.0,1,35,insect,-87.49,-19.538,3.941,0.8672
88
+ 36,14.4,1,35,insect,-86.947,-19.434,3.941,0.8555
89
+ 37,14.8,1,35,insect,-86.681,-19.444,3.941,0.8438
90
+ 38,15.2,1,35,insect,-86.456,-19.279,3.911,0.8164
91
+ 39,15.6,1,35,insect,-85.787,-18.923,3.911,0.793
92
+ 40,16.0,1,35,insect,-85.604,-18.65,3.896,0.7656
93
+ 41,16.4,1,35,insect,-84.885,-18.404,3.88,0.7305
94
+ 42,16.8,1,35,insect,-84.893,-18.367,3.88,0.6914
95
+ 43,17.2,1,35,insect,-84.474,-17.982,3.865,0.6484
96
+ 44,17.6,1,35,insect,-84.277,-17.385,3.85,0.5898
97
+ 45,18.0,1,35,insect,-84.033,-17.489,3.834,0.543
98
+ 46,18.4,1,35,insect,-83.484,-17.472,3.819,0.5156
99
+ 47,18.8,1,35,insect,-83.362,-17.245,3.804,0.4883
100
+ 48,19.2,1,35,insect,-83.027,-17.009,3.789,0.459
101
+ 49,19.6,1,35,insect,-82.722,-16.912,3.789,0.4512
102
+ 0,0.0,2,35,insect,-91.976,-19.607,3.972,0.8203
103
+ 1,0.4,2,35,insect,-92.456,-19.299,3.987,0.832
104
+ 2,0.8,2,35,insect,-93.016,-19.04,3.987,0.8281
105
+ 3,1.2,2,35,insect,-93.383,-19.121,3.972,0.8281
106
+ 4,1.6,2,35,insect,-93.524,-18.866,3.972,0.8242
107
+ 5,2.0,2,35,insect,-93.031,-18.875,3.972,0.8164
108
+ 6,2.4,2,35,insect,-93.506,-18.7,3.972,0.8125
109
+ 7,2.8,2,35,insect,-93.702,-19.214,3.987,0.8086
110
+ 8,3.2,2,35,insect,-93.523,-19.218,3.972,0.8047
111
+ 9,3.6,2,35,insect,-94.152,-19.166,3.972,0.7969
112
+ 10,4.0,2,35,insect,-93.9,-18.913,3.972,0.793
113
+ 11,4.4,2,35,insect,-93.969,-18.736,3.972,0.7891
114
+ 12,4.8,2,35,insect,-94.74,-18.934,3.972,0.7812
115
+ 13,5.2,2,35,insect,-94.62,-18.897,3.972,0.7773
116
+ 14,5.6,2,35,insect,-93.973,-19.299,3.972,0.7734
117
+ 15,6.0,2,35,insect,-94.203,-18.819,3.972,0.7656
118
+ 16,6.4,2,35,insect,-94.679,-18.985,3.972,0.7578
119
+ 17,6.8,2,35,insect,-94.282,-19.253,3.957,0.7578
120
+ 18,7.2,2,35,insect,-94.476,-19.03,3.957,0.75
121
+ 19,7.6,2,35,insect,-94.508,-19.039,3.957,0.7461
122
+ 20,8.0,2,35,insect,-94.122,-19.218,3.957,0.7383
123
+ 21,8.4,2,35,insect,-94.34,-18.952,3.941,0.7344
124
+ 22,8.8,2,35,insect,-94.362,-18.911,3.941,0.7305
125
+ 23,9.2,2,35,insect,-93.977,-18.961,3.941,0.7266
126
+ 24,9.6,2,35,insect,-94.545,-19.429,3.941,0.7227
127
+ 25,10.0,2,35,insect,-93.831,-19.094,3.926,0.7188
128
+ 26,10.4,2,35,insect,-94.508,-19.039,3.926,0.7188
129
+ 27,10.8,2,35,insect,-94.049,-18.959,3.926,0.7148
130
+ 28,11.2,2,35,insect,-93.415,-18.706,3.926,0.7109
131
+ 29,11.6,2,35,insect,-93.54,-18.708,3.911,0.7109
132
+ 30,12.0,2,35,insect,-92.761,-18.633,3.911,0.707
133
+ 31,12.4,2,35,insect,-92.684,-18.244,3.911,0.707
134
+ 32,12.8,2,35,insect,-92.457,-18.419,3.911,0.707
135
+ 33,13.2,2,35,insect,-92.551,-18.077,3.896,0.7031
136
+ 34,13.6,2,35,insect,-92.117,-18.21,3.896,0.6992
137
+ 35,14.0,2,35,insect,-92.235,-17.908,3.88,0.6953
138
+ 36,14.4,2,35,insect,-91.406,-17.841,3.865,0.6875
139
+ 37,14.8,2,35,insect,-91.437,-17.878,3.865,0.6836
140
+ 38,15.2,2,35,insect,-91.336,-17.715,3.85,0.6719
141
+ 39,15.6,2,35,insect,-90.742,-17.209,3.834,0.6562
142
+ 40,16.0,2,35,insect,-90.379,-16.85,3.819,0.6406
143
+ 41,16.4,2,35,insect,-89.448,-16.624,3.804,0.6172
144
+ 42,16.8,2,35,insect,-89.612,-16.574,3.789,0.5938
145
+ 43,17.2,2,35,insect,-89.13,-16.3,3.773,0.5664
146
+ 44,17.6,2,35,insect,-88.793,-15.651,3.758,0.5234
147
+ 45,18.0,2,35,insect,-88.435,-15.711,3.727,0.4902
148
+ 46,18.4,2,35,insect,-87.769,-15.705,3.727,0.4668
149
+ 47,18.8,2,35,insect,-87.869,-15.397,3.712,0.4492
150
+ 48,19.2,2,35,insect,-87.482,-15.263,3.697,0.4258
151
+ 49,19.6,2,35,insect,-87.258,-15.148,3.697,0.4199
152
+ 0,0.0,3,35,insect,-101.232,-10.541,3.85,0.9336
153
+ 1,0.4,3,35,insect,-100.479,-10.492,3.834,0.9688
154
+ 2,0.8,3,35,insect,-99.844,-10.152,3.819,0.9766
155
+ 3,1.2,3,35,insect,-99.707,-10.201,3.819,0.9805
156
+ 4,1.6,3,35,insect,-99.357,-9.904,3.804,0.9805
157
+ 5,2.0,3,35,insect,-98.722,-9.965,3.804,0.9844
158
+ 6,2.4,3,35,insect,-98.531,-9.552,3.789,0.9844
159
+ 7,2.8,3,35,insect,-98.267,-9.932,3.789,0.9844
160
+ 8,3.2,3,35,insect,-97.942,-9.833,3.773,0.9844
161
+ 9,3.6,3,35,insect,-98.078,-9.563,3.773,0.9805
162
+ 10,4.0,3,35,insect,-97.716,-9.571,3.773,0.9805
163
+ 11,4.4,3,35,insect,-97.574,-9.455,3.758,0.9805
164
+ 12,4.8,3,35,insect,-97.843,-9.361,3.758,0.9805
165
+ 13,5.2,3,35,insect,-97.574,-9.279,3.743,0.9805
166
+ 14,5.6,3,35,insect,-97.125,-9.58,3.743,0.9805
167
+ 15,6.0,3,35,insect,-96.992,-9.306,3.743,0.9805
168
+ 16,6.4,3,35,insect,-97.125,-9.361,3.727,0.9766
169
+ 17,6.8,3,35,insect,-96.814,-9.484,3.727,0.9766
170
+ 18,7.2,3,35,insect,-96.86,-9.295,3.712,0.9766
171
+ 19,7.6,3,35,insect,-96.684,-9.212,3.712,0.9766
172
+ 20,8.0,3,35,insect,-96.209,-9.194,3.697,0.9766
173
+ 21,8.4,3,35,insect,-96.34,-9.149,3.697,0.9727
174
+ 22,8.8,3,35,insect,-96.209,-9.065,3.682,0.9727
175
+ 23,9.2,3,35,insect,-95.954,-9.015,3.682,0.9727
176
+ 24,9.6,3,35,insect,-96.263,-9.167,3.682,0.9688
177
+ 25,10.0,3,35,insect,-95.839,-9.035,3.667,0.9688
178
+ 26,10.4,3,35,insect,-96.097,-9.031,3.667,0.9688
179
+ 27,10.8,3,35,insect,-95.897,-8.803,3.667,0.9648
180
+ 28,11.2,3,35,insect,-95.702,-8.704,3.651,0.9609
181
+ 29,11.6,3,35,insect,-95.408,-8.543,3.651,0.957
182
+ 30,12.0,3,35,insect,-94.992,-8.368,3.636,0.9531
183
+ 31,12.4,3,35,insect,-94.976,-8.192,3.636,0.9492
184
+ 32,12.8,3,35,insect,-95.111,-8.144,3.636,0.9453
185
+ 33,13.2,3,35,insect,-95.163,-7.938,3.621,0.9375
186
+ 34,13.6,3,35,insect,-95.065,-7.89,3.621,0.9336
187
+ 35,14.0,3,35,insect,-95.176,-7.648,3.606,0.9258
188
+ 36,14.4,3,35,insect,-95.02,-7.605,3.606,0.9102
189
+ 37,14.8,3,35,insect,-95.108,-7.528,3.59,0.8984
190
+ 38,15.2,3,35,insect,-95.052,-7.369,3.59,0.875
191
+ 39,15.6,3,35,insect,-95.036,-7.098,3.575,0.8477
192
+ 40,16.0,3,35,insect,-95.201,-6.867,3.56,0.8242
193
+ 41,16.4,3,35,insect,-94.821,-6.873,3.56,0.7969
194
+ 42,16.8,3,35,insect,-95.135,-6.755,3.545,0.7617
195
+ 43,17.2,3,35,insect,-95.031,-6.644,3.53,0.7266
196
+ 44,17.6,3,35,insect,-95.156,-6.382,3.515,0.6797
197
+ 45,18.0,3,35,insect,-95.308,-6.38,3.515,0.6406
198
+ 46,18.4,3,35,insect,-94.966,-6.346,3.499,0.6133
199
+ 47,18.8,3,35,insect,-95.069,-6.265,3.484,0.5938
200
+ 48,19.2,3,35,insect,-94.993,-6.266,3.484,0.5664
201
+ 49,19.6,3,35,insect,-94.924,-6.071,3.484,0.5586
checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__ov3_000079__pred.csv ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ frame_idx,frame_time_s,src_or_track_idx,class_idx,class_name,azimuth_deg,elevation_deg,distance_m,activity_prob
2
+ 0,0.0,0,48,appliance,-140.389,-13.446,3.273,0.6445
3
+ 1,0.4,0,48,appliance,-140.194,-13.8,3.288,0.7656
4
+ 2,0.8,0,48,appliance,-140.232,-13.977,3.288,0.8008
5
+ 3,1.2,0,48,appliance,-140.119,-14.094,3.288,0.8164
6
+ 4,1.6,0,48,appliance,-140.119,-14.094,3.288,0.8203
7
+ 5,2.0,0,48,appliance,-140.119,-14.233,3.288,0.8203
8
+ 6,2.4,0,48,appliance,-140.119,-14.302,3.288,0.8203
9
+ 7,2.8,0,48,appliance,-139.929,-14.356,3.288,0.8203
10
+ 8,3.2,0,48,appliance,-140.119,-14.302,3.288,0.8164
11
+ 9,3.6,0,48,appliance,-140.232,-14.394,3.288,0.8125
12
+ 10,4.0,0,48,appliance,-140.119,-14.371,3.273,0.8086
13
+ 11,4.4,0,48,appliance,-140.119,-14.371,3.273,0.8047
14
+ 12,4.8,0,38,camera,-140.119,-14.302,3.273,0.8008
15
+ 13,5.2,0,38,camera,-140.119,-14.302,3.273,0.7969
16
+ 14,5.6,0,38,camera,-140.119,-14.302,3.273,0.7891
17
+ 15,6.0,0,38,camera,-140.119,-14.302,3.273,0.7852
18
+ 16,6.4,0,38,camera,-140.232,-14.325,3.258,0.7773
19
+ 17,6.8,0,38,camera,-140.232,-14.255,3.258,0.7734
20
+ 18,7.2,0,38,camera,-140.232,-14.325,3.258,0.7617
21
+ 19,7.6,0,38,camera,-140.346,-14.278,3.258,0.7539
22
+ 20,8.0,0,38,camera,-140.346,-14.208,3.258,0.7461
23
+ 21,8.4,0,38,camera,-140.46,-14.161,3.243,0.7383
24
+ 22,8.8,0,38,camera,-140.46,-14.091,3.243,0.7305
25
+ 23,9.2,0,38,camera,-140.575,-14.044,3.228,0.7266
26
+ 24,9.6,0,38,camera,-140.575,-14.044,3.228,0.7188
27
+ 25,10.0,0,38,camera,-140.575,-13.904,3.213,0.7148
28
+ 26,10.4,0,38,camera,-140.575,-13.834,3.198,0.707
29
+ 27,10.8,0,38,camera,-140.575,-13.764,3.198,0.6992
30
+ 28,11.2,0,38,camera,-140.69,-13.716,3.183,0.6953
31
+ 29,11.6,0,38,camera,-140.616,-13.579,3.168,0.6914
32
+ 30,12.0,0,38,camera,-140.616,-13.437,3.168,0.6875
33
+ 31,12.4,0,38,camera,-140.616,-13.296,3.138,0.6836
34
+ 32,12.8,0,38,camera,-140.616,-13.225,3.138,0.6836
35
+ 33,13.2,0,38,camera,-140.541,-13.227,3.108,0.6797
36
+ 34,13.6,0,38,camera,-140.583,-13.034,3.093,0.6797
37
+ 35,14.0,0,38,camera,-140.507,-12.89,3.078,0.6758
38
+ 36,14.4,0,38,camera,-140.43,-12.744,3.049,0.6758
39
+ 37,14.8,0,38,camera,-140.711,-12.659,3.019,0.6719
40
+ 38,15.2,0,38,camera,-140.477,-12.504,2.959,0.668
41
+ 39,15.6,0,38,camera,-140.688,-12.334,2.915,0.6641
42
+ 40,16.0,0,38,camera,-140.859,-12.218,2.871,0.6602
43
+ 41,16.4,0,38,camera,-140.874,-12.169,2.827,0.6562
44
+ 42,16.8,0,38,camera,-140.89,-11.956,2.797,0.6523
45
+ 43,17.2,0,38,camera,-141.124,-11.844,2.739,0.6406
46
+ 44,17.6,0,38,camera,-141.201,-11.797,2.68,0.625
47
+ 45,18.0,0,38,camera,-141.34,-11.704,2.651,0.6133
48
+ 46,18.4,0,38,camera,-141.456,-11.645,2.637,0.6016
49
+ 47,18.8,0,38,camera,-141.429,-11.695,2.608,0.5898
50
+ 48,19.2,0,38,camera,-141.582,-11.64,2.579,0.5742
51
+ 49,19.6,0,38,camera,-141.461,-11.577,2.579,0.5586
52
+ 0,0.0,1,48,appliance,-140.787,-12.734,3.303,0.7305
53
+ 1,0.4,1,48,appliance,-140.774,-12.911,3.318,0.832
54
+ 2,0.8,1,48,appliance,-140.732,-13.175,3.318,0.8633
55
+ 3,1.2,1,48,appliance,-140.616,-13.296,3.318,0.875
56
+ 4,1.6,1,48,appliance,-140.5,-13.275,3.318,0.8789
57
+ 5,2.0,1,48,appliance,-140.5,-13.416,3.318,0.8828
58
+ 6,2.4,1,48,appliance,-140.5,-13.416,3.318,0.8828
59
+ 7,2.8,1,48,appliance,-140.5,-13.487,3.318,0.8828
60
+ 8,3.2,1,48,appliance,-140.5,-13.487,3.318,0.8828
61
+ 9,3.6,1,48,appliance,-140.5,-13.557,3.318,0.8789
62
+ 10,4.0,1,48,appliance,-140.5,-13.557,3.318,0.8789
63
+ 11,4.4,1,48,appliance,-140.385,-13.536,3.318,0.875
64
+ 12,4.8,1,48,appliance,-140.575,-13.483,3.318,0.8711
65
+ 13,5.2,1,48,appliance,-140.5,-13.557,3.318,0.8672
66
+ 14,5.6,1,48,appliance,-140.5,-13.557,3.318,0.8633
67
+ 15,6.0,1,48,appliance,-140.385,-13.536,3.318,0.8594
68
+ 16,6.4,1,48,appliance,-140.385,-13.536,3.318,0.8555
69
+ 17,6.8,1,48,appliance,-140.5,-13.557,3.318,0.8516
70
+ 18,7.2,1,48,appliance,-140.575,-13.483,3.318,0.8438
71
+ 19,7.6,1,48,appliance,-140.5,-13.487,3.318,0.8359
72
+ 20,8.0,1,48,appliance,-140.616,-13.508,3.318,0.832
73
+ 21,8.4,1,48,appliance,-140.616,-13.508,3.318,0.8242
74
+ 22,8.8,1,48,appliance,-140.805,-13.385,3.318,0.8164
75
+ 23,9.2,1,48,appliance,-140.616,-13.437,3.318,0.8125
76
+ 24,9.6,1,48,appliance,-140.805,-13.385,3.318,0.8047
77
+ 25,10.0,1,48,appliance,-140.805,-13.315,3.318,0.7969
78
+ 26,10.4,1,48,appliance,-140.921,-13.265,3.303,0.793
79
+ 27,10.8,1,48,appliance,-140.921,-13.265,3.303,0.7852
80
+ 28,11.2,1,48,appliance,-140.921,-13.194,3.303,0.7773
81
+ 29,11.6,1,48,appliance,-140.848,-13.054,3.303,0.7734
82
+ 30,12.0,1,48,appliance,-140.732,-13.033,3.303,0.7656
83
+ 31,12.4,1,48,appliance,-140.732,-12.891,3.288,0.7617
84
+ 32,12.8,1,48,appliance,-140.921,-12.84,3.288,0.7578
85
+ 33,13.2,1,48,appliance,-140.921,-12.769,3.273,0.75
86
+ 34,13.6,1,48,appliance,-140.848,-12.697,3.273,0.7461
87
+ 35,14.0,1,48,appliance,-140.848,-12.554,3.273,0.7383
88
+ 36,14.4,1,48,appliance,-140.848,-12.411,3.258,0.7344
89
+ 37,14.8,1,48,appliance,-140.891,-12.428,3.243,0.7227
90
+ 38,15.2,1,48,appliance,-140.818,-12.208,3.213,0.7109
91
+ 39,15.6,1,48,appliance,-140.862,-12.077,3.198,0.6992
92
+ 40,16.0,1,48,appliance,-140.906,-12.018,3.183,0.6875
93
+ 41,16.4,1,48,appliance,-140.755,-11.933,3.153,0.668
94
+ 42,16.8,1,48,appliance,-140.722,-11.714,3.123,0.6523
95
+ 43,17.2,1,48,appliance,-140.812,-11.585,3.093,0.6289
96
+ 44,17.6,1,48,appliance,-141.033,-11.394,3.049,0.5977
97
+ 45,18.0,1,48,appliance,-140.922,-11.305,3.019,0.5703
98
+ 46,18.4,1,48,appliance,-141.234,-11.193,3.004,0.5508
99
+ 47,18.8,1,48,appliance,-141.072,-11.171,2.989,0.5312
100
+ 48,19.2,1,48,appliance,-141.093,-11.009,2.959,0.5117
101
+ 49,19.6,1,48,appliance,-140.872,-10.975,2.959,0.4941
102
+ 0,0.0,2,48,appliance,-141.861,-12.341,3.258,0.6523
103
+ 1,0.4,2,48,appliance,-141.755,-12.679,3.258,0.7266
104
+ 2,0.8,2,48,appliance,-141.703,-12.807,3.273,0.7461
105
+ 3,1.2,2,48,appliance,-141.582,-12.86,3.273,0.75
106
+ 4,1.6,2,48,appliance,-141.582,-12.86,3.273,0.75
107
+ 5,2.0,2,48,appliance,-141.582,-13.007,3.273,0.7422
108
+ 6,2.4,2,48,appliance,-141.703,-13.102,3.273,0.7383
109
+ 7,2.8,2,48,appliance,-141.703,-13.175,3.273,0.7305
110
+ 8,3.2,2,48,appliance,-141.703,-13.102,3.273,0.7227
111
+ 9,3.6,2,48,appliance,-141.703,-13.175,3.273,0.7148
112
+ 10,4.0,2,48,appliance,-141.703,-13.175,3.273,0.707
113
+ 11,4.4,2,48,appliance,-141.703,-13.175,3.273,0.6992
114
+ 12,4.8,2,48,appliance,-141.703,-13.175,3.258,0.6875
115
+ 13,5.2,2,48,appliance,-141.703,-13.175,3.258,0.6836
116
+ 14,5.6,2,48,appliance,-141.633,-13.251,3.258,0.6719
117
+ 15,6.0,2,48,appliance,-141.703,-13.175,3.258,0.6602
118
+ 16,6.4,2,48,appliance,-141.633,-13.251,3.258,0.6523
119
+ 17,6.8,2,48,appliance,-141.948,-13.144,3.258,0.6406
120
+ 18,7.2,2,48,appliance,-141.825,-13.123,3.258,0.6289
121
+ 19,7.6,2,48,appliance,-141.755,-13.199,3.258,0.6172
122
+ 20,8.0,2,48,appliance,-141.878,-13.146,3.258,0.6055
123
+ 21,8.4,2,48,appliance,-141.878,-13.146,3.243,0.5938
124
+ 22,8.8,2,48,appliance,-142.193,-12.964,3.243,0.582
125
+ 23,9.2,2,48,appliance,-142.001,-13.093,3.243,0.5742
126
+ 24,9.6,2,48,appliance,-142.001,-13.019,3.243,0.5625
127
+ 25,10.0,2,48,appliance,-142.193,-12.89,3.228,0.5547
128
+ 26,10.4,2,48,appliance,-142.125,-12.891,3.228,0.5469
129
+ 27,10.8,2,48,appliance,-142.001,-12.87,3.228,0.5352
130
+ 28,11.2,2,48,appliance,-142.125,-12.816,3.228,0.5273
131
+ 29,11.6,2,48,appliance,-142.249,-12.612,3.213,0.5234
132
+ 30,12.0,2,48,appliance,-142.249,-12.537,3.213,0.5156
133
+ 31,12.4,2,48,appliance,-142.125,-12.442,3.198,0.5117
134
+ 32,12.8,2,48,appliance,-142.249,-12.387,3.183,0.5078
135
+ 33,13.2,2,48,appliance,-142.181,-12.385,3.183,0.5
136
+ 34,13.6,2,48,appliance,-142.306,-12.178,3.168,0.498
137
+ 35,14.0,2,48,appliance,-142.111,-12.078,3.153,0.4941
138
+ 36,14.4,2,48,appliance,-142.041,-11.92,3.138,0.4922
139
+ 37,14.8,2,10,machine,-142.224,-11.954,3.108,0.4883
140
+ 38,15.2,2,10,machine,-142.082,-11.708,3.078,0.4863
141
+ 39,15.6,2,10,machine,-142.198,-11.574,3.049,0.4824
142
+ 40,16.0,2,10,machine,-142.257,-11.505,3.019,0.4805
143
+ 41,16.4,2,10,machine,-142.245,-11.345,2.989,0.4766
144
+ 42,16.8,2,10,machine,-142.293,-11.272,2.945,0.4727
145
+ 43,17.2,2,10,machine,-142.312,-11.148,2.915,0.4668
146
+ 44,17.6,2,10,machine,-142.509,-11.044,2.871,0.457
147
+ 45,18.0,2,10,machine,-142.647,-10.971,2.827,0.4473
148
+ 46,18.4,2,10,machine,-142.904,-10.913,2.812,0.4414
149
+ 47,18.8,2,10,machine,-142.595,-10.91,2.797,0.4297
150
+ 48,19.2,2,10,machine,-142.896,-10.853,2.768,0.4238
151
+ 49,19.6,2,10,machine,-142.778,-10.834,2.768,0.4082
152
+ 0,0.0,3,48,appliance,-144.149,-13.1,3.093,0.6445
153
+ 1,0.4,3,48,appliance,-143.951,-13.385,3.093,0.832
154
+ 2,0.8,3,48,appliance,-143.887,-13.568,3.108,0.8906
155
+ 3,1.2,3,48,appliance,-143.653,-13.666,3.093,0.9102
156
+ 4,1.6,3,48,appliance,-143.536,-13.715,3.093,0.9219
157
+ 5,2.0,3,48,appliance,-143.536,-13.852,3.093,0.9297
158
+ 6,2.4,3,48,appliance,-143.536,-13.92,3.078,0.9336
159
+ 7,2.8,3,5,water,-143.653,-14.008,3.078,0.9336
160
+ 8,3.2,3,5,water,-143.536,-13.92,3.078,0.9375
161
+ 9,3.6,3,48,appliance,-143.536,-13.988,3.063,0.9375
162
+ 10,4.0,3,5,water,-143.536,-13.92,3.063,0.9375
163
+ 11,4.4,3,5,water,-143.536,-13.92,3.063,0.9375
164
+ 12,4.8,3,38,camera,-143.707,-13.866,3.049,0.9336
165
+ 13,5.2,3,38,camera,-143.653,-13.872,3.049,0.9336
166
+ 14,5.6,3,38,camera,-143.653,-13.803,3.034,0.9336
167
+ 15,6.0,3,38,camera,-143.48,-13.858,3.034,0.9297
168
+ 16,6.4,3,38,camera,-143.597,-13.809,3.019,0.9297
169
+ 17,6.8,3,38,camera,-143.715,-13.76,3.004,0.9258
170
+ 18,7.2,3,38,camera,-143.541,-13.676,3.004,0.9258
171
+ 19,7.6,3,38,camera,-143.778,-13.716,2.989,0.9219
172
+ 20,8.0,3,38,camera,-143.722,-13.652,2.974,0.9219
173
+ 21,8.4,3,38,camera,-143.786,-13.607,2.959,0.918
174
+ 22,8.8,3,38,camera,-143.73,-13.54,2.945,0.9141
175
+ 23,9.2,3,38,camera,-143.917,-13.514,2.93,0.9141
176
+ 24,9.6,3,38,camera,-143.861,-13.518,2.915,0.9102
177
+ 25,10.0,3,38,camera,-144.052,-13.346,2.886,0.9062
178
+ 26,10.4,3,38,camera,-143.938,-13.353,2.871,0.9062
179
+ 27,10.8,3,38,camera,-144.007,-13.229,2.841,0.9023
180
+ 28,11.2,3,38,camera,-144.148,-13.276,2.827,0.9023
181
+ 29,11.6,3,38,camera,-144.162,-13.074,2.812,0.8945
182
+ 30,12.0,3,38,camera,-144.118,-13.023,2.783,0.8945
183
+ 31,12.4,3,14,laughter,-144.072,-12.97,2.739,0.8906
184
+ 32,12.8,3,14,laughter,-144.345,-12.853,2.724,0.8867
185
+ 33,13.2,3,14,laughter,-144.302,-12.958,2.695,0.8828
186
+ 34,13.6,3,14,laughter,-144.258,-12.817,2.68,0.8789
187
+ 35,14.0,3,14,laughter,-144.421,-12.693,2.651,0.875
188
+ 36,14.4,3,14,laughter,-144.27,-12.746,2.622,0.8633
189
+ 37,14.8,3,14,laughter,-144.593,-12.727,2.608,0.8555
190
+ 38,15.2,3,14,laughter,-144.53,-12.624,2.564,0.8438
191
+ 39,15.6,3,14,laughter,-144.86,-12.659,2.536,0.8281
192
+ 40,16.0,3,14,laughter,-144.891,-12.635,2.507,0.8164
193
+ 41,16.4,3,14,laughter,-144.853,-12.758,2.493,0.793
194
+ 42,16.8,3,14,laughter,-145.291,-12.646,2.478,0.7734
195
+ 43,17.2,3,14,laughter,-145.389,-12.632,2.464,0.7422
196
+ 44,17.6,3,14,laughter,-145.48,-12.739,2.435,0.7031
197
+ 45,18.0,3,14,laughter,-145.854,-12.699,2.421,0.668
198
+ 46,18.4,3,14,laughter,-145.911,-12.785,2.421,0.6406
199
+ 47,18.8,3,14,laughter,-145.768,-12.902,2.407,0.6172
200
+ 48,19.2,3,14,laughter,-145.892,-12.893,2.407,0.5898
201
+ 49,19.6,3,14,laughter,-145.685,-12.803,2.407,0.5703
checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__ov3_000112__pred.csv ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ frame_idx,frame_time_s,src_or_track_idx,class_idx,class_name,azimuth_deg,elevation_deg,distance_m,activity_prob
2
+ 0,0.0,0,34,home_sound,-114.752,47.18,1.108,0.6406
3
+ 1,0.4,0,34,home_sound,-114.485,46.845,1.134,0.832
4
+ 2,0.8,0,34,home_sound,-114.063,46.887,1.142,0.8867
5
+ 3,1.2,0,34,home_sound,-113.929,46.891,1.148,0.9062
6
+ 4,1.6,0,34,home_sound,-113.929,47.044,1.148,0.918
7
+ 5,2.0,0,34,home_sound,-113.629,47.261,1.148,0.9219
8
+ 6,2.4,0,34,home_sound,-113.629,47.412,1.145,0.9258
9
+ 7,2.8,0,34,home_sound,-113.479,47.444,1.148,0.9297
10
+ 8,3.2,0,34,home_sound,-113.349,47.295,1.148,0.9297
11
+ 9,3.6,0,34,home_sound,-113.349,47.295,1.148,0.9336
12
+ 10,4.0,0,34,home_sound,-113.22,47.295,1.145,0.9336
13
+ 11,4.4,0,34,home_sound,-113.22,47.444,1.145,0.9336
14
+ 12,4.8,0,34,home_sound,-113.22,47.295,1.148,0.9336
15
+ 13,5.2,0,34,home_sound,-113.07,47.476,1.145,0.9336
16
+ 14,5.6,0,34,home_sound,-112.921,47.359,1.148,0.9336
17
+ 15,6.0,0,34,home_sound,-112.818,47.179,1.145,0.9336
18
+ 16,6.4,0,34,home_sound,-112.794,47.359,1.148,0.9336
19
+ 17,6.8,0,34,home_sound,-112.944,47.327,1.142,0.9336
20
+ 18,7.2,0,34,home_sound,-112.669,47.21,1.145,0.9297
21
+ 19,7.6,0,34,home_sound,-112.794,47.359,1.142,0.9297
22
+ 20,8.0,0,34,home_sound,-112.645,47.39,1.145,0.9297
23
+ 21,8.4,0,34,home_sound,-112.345,47.452,1.142,0.9297
24
+ 22,8.8,0,34,home_sound,-112.371,47.272,1.145,0.9258
25
+ 23,9.2,0,34,home_sound,-112.345,47.452,1.145,0.9258
26
+ 24,9.6,0,34,home_sound,-112.194,47.483,1.145,0.9258
27
+ 25,10.0,0,34,home_sound,-112.043,47.513,1.145,0.9258
28
+ 26,10.4,0,34,home_sound,-111.741,47.425,1.148,0.9219
29
+ 27,10.8,0,34,home_sound,-111.892,47.543,1.145,0.9219
30
+ 28,11.2,0,34,home_sound,-111.741,47.574,1.148,0.9219
31
+ 29,11.6,0,34,home_sound,-111.437,47.485,1.15,0.918
32
+ 30,12.0,0,34,home_sound,-111.284,47.364,1.153,0.918
33
+ 31,12.4,0,34,home_sound,-111.055,47.558,1.15,0.918
34
+ 32,12.8,0,34,home_sound,-110.862,47.271,1.153,0.918
35
+ 33,13.2,0,34,home_sound,-110.825,47.452,1.153,0.9141
36
+ 34,13.6,0,34,home_sound,-110.672,47.481,1.158,0.9141
37
+ 35,14.0,0,34,home_sound,-110.323,47.722,1.153,0.9102
38
+ 36,14.4,0,34,home_sound,-110.245,47.736,1.161,0.9062
39
+ 37,14.8,0,34,home_sound,-109.969,47.661,1.164,0.9023
40
+ 38,15.2,0,34,home_sound,-109.608,47.904,1.166,0.8984
41
+ 39,15.6,0,34,home_sound,-109.081,48.022,1.172,0.8906
42
+ 40,16.0,0,34,home_sound,-109.193,47.876,1.177,0.8906
43
+ 41,16.4,0,34,home_sound,-108.654,48.149,1.177,0.8828
44
+ 42,16.8,0,34,home_sound,-108.296,48.419,1.18,0.875
45
+ 43,17.2,0,34,home_sound,-107.843,48.551,1.185,0.8672
46
+ 44,17.6,0,34,home_sound,-107.507,48.884,1.191,0.8555
47
+ 45,18.0,0,34,home_sound,-107.11,49.17,1.196,0.8438
48
+ 46,18.4,0,34,home_sound,-106.79,49.447,1.199,0.832
49
+ 47,18.8,0,34,home_sound,-105.998,49.794,1.204,0.8203
50
+ 48,19.2,0,34,home_sound,-105.959,50.115,1.207,0.8047
51
+ 49,19.6,0,34,home_sound,-105.482,50.181,1.207,0.7891
52
+ 0,0.0,1,34,home_sound,-115.006,48.218,1.092,0.5664
53
+ 1,0.4,1,34,home_sound,-114.585,47.868,1.126,0.7852
54
+ 2,0.8,1,34,home_sound,-114.305,47.866,1.134,0.8555
55
+ 3,1.2,1,34,home_sound,-114.014,47.899,1.142,0.8828
56
+ 4,1.6,1,34,home_sound,-113.878,47.897,1.145,0.8984
57
+ 5,2.0,1,34,home_sound,-113.86,48.233,1.148,0.9102
58
+ 6,2.4,1,34,home_sound,-113.572,48.262,1.148,0.9141
59
+ 7,2.8,1,34,home_sound,-113.572,48.114,1.15,0.918
60
+ 8,3.2,1,34,home_sound,-113.265,48.18,1.15,0.9219
61
+ 9,3.6,1,34,home_sound,-113.418,48.295,1.153,0.9258
62
+ 10,4.0,1,34,home_sound,-113.286,48.143,1.153,0.9258
63
+ 11,4.4,1,34,home_sound,-113.286,48.291,1.153,0.9258
64
+ 12,4.8,1,34,home_sound,-113.133,48.176,1.156,0.9297
65
+ 13,5.2,1,34,home_sound,-112.85,48.204,1.153,0.9297
66
+ 14,5.6,1,34,home_sound,-112.697,48.088,1.158,0.9297
67
+ 15,6.0,1,34,home_sound,-112.722,48.052,1.156,0.9297
68
+ 16,6.4,1,34,home_sound,-112.569,48.084,1.158,0.9297
69
+ 17,6.8,1,34,home_sound,-112.569,48.084,1.156,0.9297
70
+ 18,7.2,1,34,home_sound,-112.569,47.936,1.158,0.9297
71
+ 19,7.6,1,34,home_sound,-112.389,48.299,1.156,0.9297
72
+ 20,8.0,1,34,home_sound,-112.235,48.183,1.158,0.9297
73
+ 21,8.4,1,34,home_sound,-112.08,48.214,1.156,0.9297
74
+ 22,8.8,1,34,home_sound,-112.109,48.177,1.158,0.9297
75
+ 23,9.2,1,34,home_sound,-111.956,48.06,1.158,0.9297
76
+ 24,9.6,1,34,home_sound,-111.926,48.245,1.158,0.9297
77
+ 25,10.0,1,34,home_sound,-111.57,48.137,1.161,0.9258
78
+ 26,10.4,1,34,home_sound,-111.459,48.188,1.164,0.9258
79
+ 27,10.8,1,34,home_sound,-111.337,48.182,1.161,0.9258
80
+ 28,11.2,1,34,home_sound,-111.103,48.227,1.164,0.9258
81
+ 29,11.6,1,34,home_sound,-110.791,48.138,1.166,0.9219
82
+ 30,12.0,1,34,home_sound,-110.674,48.339,1.169,0.9219
83
+ 31,12.4,1,34,home_sound,-110.399,48.36,1.166,0.9219
84
+ 32,12.8,1,34,home_sound,-110.241,48.24,1.169,0.918
85
+ 33,13.2,1,34,home_sound,-110.041,48.306,1.169,0.918
86
+ 34,13.6,1,34,home_sound,-110.041,48.306,1.174,0.918
87
+ 35,14.0,1,34,home_sound,-109.482,48.255,1.172,0.9141
88
+ 36,14.4,1,34,home_sound,-109.596,48.415,1.177,0.9102
89
+ 37,14.8,1,34,home_sound,-109.225,48.51,1.18,0.9062
90
+ 38,15.2,1,34,home_sound,-108.765,48.618,1.185,0.9023
91
+ 39,15.6,1,34,home_sound,-108.213,48.74,1.188,0.8984
92
+ 40,16.0,1,34,home_sound,-108.351,48.933,1.193,0.8945
93
+ 41,16.4,1,34,home_sound,-107.782,49.211,1.196,0.8867
94
+ 42,16.8,1,34,home_sound,-107.311,49.352,1.196,0.8789
95
+ 43,17.2,1,34,home_sound,-106.931,49.826,1.201,0.8711
96
+ 44,17.6,1,34,home_sound,-106.552,50.192,1.207,0.8555
97
+ 45,18.0,1,34,home_sound,-106.12,50.493,1.207,0.8438
98
+ 46,18.4,1,34,home_sound,-105.673,50.639,1.212,0.832
99
+ 47,18.8,1,34,home_sound,-104.821,51.0,1.215,0.8203
100
+ 48,19.2,1,34,home_sound,-104.844,51.504,1.218,0.8008
101
+ 49,19.6,1,34,home_sound,-104.34,51.406,1.218,0.7852
102
+ 0,0.0,2,34,home_sound,-113.944,49.314,1.21,0.6914
103
+ 1,0.4,2,34,home_sound,-113.506,48.976,1.229,0.8359
104
+ 2,0.8,2,34,home_sound,-113.363,49.122,1.232,0.875
105
+ 3,1.2,2,34,home_sound,-113.222,49.112,1.234,0.8906
106
+ 4,1.6,2,34,home_sound,-113.222,49.264,1.234,0.8945
107
+ 5,2.0,2,34,home_sound,-112.838,49.305,1.232,0.8945
108
+ 6,2.4,2,34,home_sound,-112.756,49.473,1.229,0.8984
109
+ 7,2.8,2,34,home_sound,-112.812,49.652,1.232,0.8984
110
+ 8,3.2,2,34,home_sound,-112.593,49.356,1.232,0.8945
111
+ 9,3.6,2,34,home_sound,-112.593,49.506,1.232,0.8945
112
+ 10,4.0,2,34,home_sound,-112.674,49.639,1.229,0.8945
113
+ 11,4.4,2,34,home_sound,-112.538,49.478,1.226,0.8906
114
+ 12,4.8,2,34,home_sound,-112.457,49.494,1.229,0.8906
115
+ 13,5.2,2,34,home_sound,-112.457,49.494,1.229,0.8906
116
+ 14,5.6,2,34,home_sound,-112.16,49.366,1.232,0.8867
117
+ 15,6.0,2,34,home_sound,-112.19,49.322,1.229,0.8828
118
+ 16,6.4,2,34,home_sound,-112.109,49.338,1.232,0.8828
119
+ 17,6.8,2,34,home_sound,-112.404,49.466,1.229,0.8789
120
+ 18,7.2,2,34,home_sound,-111.866,49.238,1.229,0.8789
121
+ 19,7.6,2,34,home_sound,-112.079,49.531,1.226,0.875
122
+ 20,8.0,2,34,home_sound,-111.785,49.254,1.229,0.8711
123
+ 21,8.4,2,34,home_sound,-111.541,49.302,1.226,0.8672
124
+ 22,8.8,2,34,home_sound,-111.785,49.403,1.229,0.8633
125
+ 23,9.2,2,34,home_sound,-111.541,49.302,1.229,0.8633
126
+ 24,9.6,2,34,home_sound,-111.67,49.464,1.232,0.8594
127
+ 25,10.0,2,34,home_sound,-111.378,49.334,1.232,0.8594
128
+ 26,10.4,2,34,home_sound,-111.132,49.381,1.234,0.8555
129
+ 27,10.8,2,34,home_sound,-111.296,49.35,1.234,0.8516
130
+ 28,11.2,2,34,home_sound,-110.968,49.412,1.234,0.8516
131
+ 29,11.6,2,34,home_sound,-110.556,49.34,1.24,0.8477
132
+ 30,12.0,2,34,home_sound,-110.391,49.371,1.24,0.8438
133
+ 31,12.4,2,34,home_sound,-110.225,49.401,1.24,0.8438
134
+ 32,12.8,2,34,home_sound,-110.186,49.222,1.243,0.8438
135
+ 33,13.2,2,34,home_sound,-110.059,49.281,1.243,0.8359
136
+ 34,13.6,2,34,home_sound,-109.892,49.311,1.248,0.832
137
+ 35,14.0,2,34,home_sound,-109.475,49.233,1.248,0.8281
138
+ 36,14.4,2,34,home_sound,-109.425,49.429,1.257,0.8242
139
+ 37,14.8,2,34,home_sound,-109.12,49.518,1.26,0.8203
140
+ 38,15.2,2,34,home_sound,-108.55,49.651,1.268,0.8164
141
+ 39,15.6,2,34,home_sound,-107.995,49.97,1.274,0.8086
142
+ 40,16.0,2,34,home_sound,-107.907,49.675,1.282,0.8008
143
+ 41,16.4,2,34,home_sound,-107.511,49.969,1.285,0.793
144
+ 42,16.8,2,34,home_sound,-106.9,50.101,1.288,0.7852
145
+ 43,17.2,2,34,home_sound,-106.494,50.439,1.299,0.7773
146
+ 44,17.6,2,34,home_sound,-105.877,50.653,1.308,0.7617
147
+ 45,18.0,2,34,home_sound,-105.317,50.979,1.313,0.75
148
+ 46,18.4,2,34,home_sound,-105.146,51.464,1.319,0.7383
149
+ 47,18.8,2,34,home_sound,-103.934,51.666,1.325,0.7305
150
+ 48,19.2,2,34,home_sound,-103.878,52.148,1.336,0.7109
151
+ 49,19.6,2,34,home_sound,-103.456,51.925,1.33,0.6953
152
+ 0,0.0,3,34,home_sound,-122.397,54.007,1.092,0.6211
153
+ 1,0.4,3,34,home_sound,-122.486,53.624,1.121,0.9023
154
+ 2,0.8,3,34,home_sound,-122.442,53.688,1.129,0.9609
155
+ 3,1.2,3,34,home_sound,-122.242,53.538,1.132,0.9766
156
+ 4,1.6,3,34,home_sound,-122.085,53.585,1.134,0.9844
157
+ 5,2.0,3,34,home_sound,-121.926,53.763,1.137,0.9883
158
+ 6,2.4,3,34,home_sound,-121.965,53.832,1.137,0.9922
159
+ 7,2.8,3,34,home_sound,-121.844,54.08,1.14,0.9922
160
+ 8,3.2,3,34,home_sound,-121.682,53.864,1.142,0.9922
161
+ 9,3.6,3,34,home_sound,-121.62,53.989,1.148,0.9922
162
+ 10,4.0,3,34,home_sound,-121.557,53.982,1.148,0.9961
163
+ 11,4.4,3,34,home_sound,-121.658,53.927,1.148,0.9961
164
+ 12,4.8,3,34,home_sound,-121.531,54.046,1.156,0.9961
165
+ 13,5.2,3,34,home_sound,-121.402,54.301,1.158,0.9961
166
+ 14,5.6,3,34,home_sound,-121.167,54.209,1.164,0.9961
167
+ 15,6.0,3,34,home_sound,-120.896,54.177,1.164,0.9961
168
+ 16,6.4,3,34,home_sound,-120.861,54.381,1.166,0.9961
169
+ 17,6.8,3,34,home_sound,-120.998,54.539,1.166,0.9961
170
+ 18,7.2,3,34,home_sound,-120.683,54.715,1.172,0.9961
171
+ 19,7.6,3,34,home_sound,-120.644,54.927,1.169,0.9961
172
+ 20,8.0,3,34,home_sound,-120.423,55.192,1.174,0.9961
173
+ 21,8.4,3,34,home_sound,-120.303,55.548,1.174,0.9961
174
+ 22,8.8,3,34,home_sound,-120.379,55.274,1.18,0.9961
175
+ 23,9.2,3,34,home_sound,-119.852,55.51,1.18,0.9961
176
+ 24,9.6,3,34,home_sound,-119.908,55.963,1.182,0.9961
177
+ 25,10.0,3,34,home_sound,-119.565,56.132,1.188,0.9961
178
+ 26,10.4,3,34,home_sound,-119.506,56.367,1.191,0.9961
179
+ 27,10.8,3,34,home_sound,-119.221,56.561,1.191,0.9961
180
+ 28,11.2,3,34,home_sound,-118.942,56.735,1.191,0.9961
181
+ 29,11.6,3,34,home_sound,-118.348,56.987,1.196,0.9961
182
+ 30,12.0,3,34,home_sound,-118.065,57.407,1.199,0.9961
183
+ 31,12.4,3,34,home_sound,-117.543,57.64,1.199,0.9961
184
+ 32,12.8,3,34,home_sound,-117.543,57.64,1.201,0.9961
185
+ 33,13.2,3,34,home_sound,-116.898,58.024,1.201,0.9922
186
+ 34,13.6,3,34,home_sound,-116.79,58.286,1.21,0.9922
187
+ 35,14.0,3,34,home_sound,-115.877,58.601,1.21,0.9922
188
+ 36,14.4,3,34,home_sound,-115.627,59.025,1.215,0.9922
189
+ 37,14.8,3,34,home_sound,-115.115,59.501,1.221,0.9922
190
+ 38,15.2,3,34,home_sound,-113.806,60.139,1.229,0.9922
191
+ 39,15.6,3,34,home_sound,-112.437,61.317,1.234,0.9883
192
+ 40,16.0,3,34,home_sound,-112.224,61.488,1.243,0.9883
193
+ 41,16.4,3,34,home_sound,-110.37,62.343,1.251,0.9844
194
+ 42,16.8,3,34,home_sound,-108.673,63.3,1.254,0.9805
195
+ 43,17.2,3,34,home_sound,-106.887,64.273,1.265,0.9766
196
+ 44,17.6,3,34,home_sound,-104.225,65.652,1.279,0.9688
197
+ 45,18.0,3,34,home_sound,-101.886,66.654,1.291,0.9609
198
+ 46,18.4,3,34,home_sound,-100.163,67.602,1.299,0.9531
199
+ 47,18.8,3,34,home_sound,-96.413,68.202,1.31,0.9492
200
+ 48,19.2,3,34,home_sound,-93.262,69.619,1.325,0.9375
201
+ 49,19.6,3,34,home_sound,-92.556,69.302,1.325,0.9336
checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__ov3_000149__pred.csv ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ frame_idx,frame_time_s,src_or_track_idx,class_idx,class_name,azimuth_deg,elevation_deg,distance_m,activity_prob
2
+ 0,0.0,0,45,rain,145.62,-25.37,2.915,0.9297
3
+ 1,0.4,0,45,rain,145.69,-25.575,2.9,0.957
4
+ 2,0.8,0,45,rain,145.585,-25.848,2.9,0.9609
5
+ 3,1.2,0,45,rain,145.368,-26.018,2.9,0.9609
6
+ 4,1.6,0,45,rain,145.204,-26.134,2.9,0.9609
7
+ 5,2.0,0,45,rain,145.317,-26.229,2.9,0.957
8
+ 6,2.4,0,45,rain,145.154,-26.344,2.886,0.957
9
+ 7,2.8,0,45,rain,144.878,-26.363,2.886,0.9531
10
+ 8,3.2,0,45,rain,144.992,-26.458,2.886,0.9492
11
+ 9,3.6,0,45,rain,144.992,-26.458,2.886,0.9492
12
+ 10,4.0,0,45,rain,144.83,-26.412,2.886,0.9453
13
+ 11,4.4,0,45,rain,144.83,-26.571,2.886,0.9414
14
+ 12,4.8,0,45,rain,144.83,-26.412,2.886,0.9375
15
+ 13,5.2,0,45,rain,144.83,-26.571,2.886,0.9375
16
+ 14,5.6,0,45,rain,144.83,-26.571,2.886,0.9336
17
+ 15,6.0,0,45,rain,144.83,-26.571,2.886,0.9297
18
+ 16,6.4,0,45,rain,144.83,-26.729,2.886,0.9258
19
+ 17,6.8,0,45,rain,144.83,-26.571,2.886,0.9219
20
+ 18,7.2,0,45,rain,144.669,-26.525,2.871,0.918
21
+ 19,7.6,0,45,rain,144.669,-26.683,2.886,0.9141
22
+ 20,8.0,0,45,rain,144.782,-26.618,2.886,0.9102
23
+ 21,8.4,0,45,rain,144.669,-26.683,2.886,0.9062
24
+ 22,8.8,0,45,rain,144.896,-26.554,2.886,0.9023
25
+ 23,9.2,0,45,rain,144.896,-26.554,2.886,0.8984
26
+ 24,9.6,0,45,rain,144.622,-26.573,2.886,0.8945
27
+ 25,10.0,0,45,rain,144.735,-26.509,2.886,0.8906
28
+ 26,10.4,0,45,rain,144.735,-26.509,2.886,0.8867
29
+ 27,10.8,0,45,rain,144.848,-26.445,2.886,0.8789
30
+ 28,11.2,0,45,rain,144.848,-26.602,2.886,0.875
31
+ 29,11.6,0,45,rain,144.848,-26.445,2.886,0.8711
32
+ 30,12.0,0,45,rain,144.848,-26.445,2.886,0.8672
33
+ 31,12.4,0,45,rain,144.848,-26.445,2.886,0.8633
34
+ 32,12.8,0,45,rain,144.96,-26.382,2.886,0.8594
35
+ 33,13.2,0,45,rain,144.96,-26.382,2.886,0.8555
36
+ 34,13.6,0,45,rain,144.913,-26.274,2.886,0.8516
37
+ 35,14.0,0,45,rain,145.072,-26.162,2.886,0.8438
38
+ 36,14.4,0,45,rain,145.182,-26.099,2.886,0.8398
39
+ 37,14.8,0,45,rain,145.024,-26.056,2.886,0.8359
40
+ 38,15.2,0,45,rain,145.182,-25.943,2.871,0.8281
41
+ 39,15.6,0,45,rain,145.182,-25.943,2.871,0.8242
42
+ 40,16.0,0,45,rain,145.134,-25.681,2.871,0.8203
43
+ 41,16.4,0,45,rain,145.182,-25.629,2.886,0.8164
44
+ 42,16.8,0,45,rain,145.293,-25.41,2.886,0.8125
45
+ 43,17.2,0,45,rain,145.134,-25.21,2.886,0.8086
46
+ 44,17.6,0,45,rain,145.293,-25.094,2.886,0.8086
47
+ 45,18.0,0,45,rain,145.182,-24.837,2.871,0.8047
48
+ 46,18.4,0,45,rain,145.182,-24.518,2.871,0.8047
49
+ 47,18.8,0,45,rain,144.96,-24.477,2.871,0.8008
50
+ 48,19.2,0,45,rain,145.12,-24.195,2.871,0.7969
51
+ 49,19.6,0,45,rain,145.008,-24.092,2.871,0.7812
52
+ 0,0.0,1,45,rain,143.259,-23.577,2.93,0.6406
53
+ 1,0.4,1,45,rain,143.005,-23.372,2.915,0.6484
54
+ 2,0.8,1,45,rain,142.798,-23.396,2.9,0.6523
55
+ 3,1.2,1,45,rain,142.759,-23.377,2.9,0.6484
56
+ 4,1.6,1,45,rain,142.883,-23.318,2.9,0.6445
57
+ 5,2.0,1,45,rain,142.883,-23.318,2.9,0.6406
58
+ 6,2.4,1,45,rain,142.719,-23.359,2.886,0.6328
59
+ 7,2.8,1,45,rain,142.595,-23.419,2.9,0.6289
60
+ 8,3.2,1,45,rain,142.595,-23.245,2.9,0.6211
61
+ 9,3.6,1,45,rain,142.719,-23.186,2.9,0.6133
62
+ 10,4.0,1,45,rain,142.719,-23.099,2.9,0.6094
63
+ 11,4.4,1,45,rain,142.843,-23.04,2.9,0.6016
64
+ 12,4.8,1,45,rain,142.843,-22.953,2.9,0.5938
65
+ 13,5.2,1,45,rain,142.843,-22.866,2.9,0.5898
66
+ 14,5.6,1,45,rain,143.007,-22.736,2.9,0.5781
67
+ 15,6.0,1,45,rain,143.007,-22.736,2.9,0.5703
68
+ 16,6.4,1,45,rain,143.007,-22.736,2.9,0.5625
69
+ 17,6.8,1,45,rain,143.171,-22.605,2.9,0.5547
70
+ 18,7.2,1,45,rain,143.007,-22.474,2.9,0.5508
71
+ 19,7.6,1,45,rain,143.13,-22.329,2.9,0.5391
72
+ 20,8.0,1,45,rain,143.13,-22.241,2.9,0.5312
73
+ 21,8.4,1,45,rain,143.13,-22.241,2.9,0.5234
74
+ 22,8.8,1,45,rain,143.253,-22.184,2.9,0.5156
75
+ 23,9.2,1,45,rain,143.294,-22.02,2.9,0.5078
76
+ 24,9.6,1,45,rain,143.416,-21.875,2.9,0.5039
77
+ 25,10.0,1,45,rain,143.416,-21.875,2.9,0.5
78
+ 26,10.4,1,45,rain,143.416,-21.699,2.9,0.4922
79
+ 27,10.8,1,45,rain,143.538,-21.554,2.9,0.4844
80
+ 28,11.2,1,45,rain,143.702,-21.596,2.9,0.4805
81
+ 29,11.6,1,45,rain,143.702,-21.33,2.9,0.4746
82
+ 30,12.0,1,45,rain,143.823,-21.098,2.9,0.4707
83
+ 31,12.4,1,45,rain,143.867,-21.015,2.9,0.4688
84
+ 32,12.8,1,45,rain,144.107,-20.905,2.9,0.4648
85
+ 33,13.2,1,45,rain,144.107,-20.905,2.9,0.4629
86
+ 34,13.6,1,45,rain,144.107,-20.638,2.915,0.4609
87
+ 35,14.0,1,45,rain,144.439,-20.538,2.915,0.4629
88
+ 36,14.4,1,45,rain,144.439,-20.268,2.9,0.4648
89
+ 37,14.8,1,45,rain,144.439,-20.088,2.9,0.4668
90
+ 38,15.2,1,45,rain,144.654,-19.947,2.9,0.4727
91
+ 39,15.6,1,45,rain,144.654,-19.673,2.9,0.4824
92
+ 40,16.0,1,45,rain,145.058,-19.422,2.9,0.4883
93
+ 41,16.4,1,45,rain,145.161,-19.235,2.9,0.4961
94
+ 42,16.8,1,45,rain,145.161,-18.864,2.9,0.5078
95
+ 43,17.2,1,45,rain,145.213,-18.766,2.9,0.5234
96
+ 44,17.6,1,45,rain,145.437,-18.421,2.886,0.5352
97
+ 45,18.0,1,45,rain,145.491,-18.224,2.886,0.5469
98
+ 46,18.4,1,45,rain,145.251,-18.041,2.886,0.5547
99
+ 47,18.8,1,45,rain,145.48,-17.874,2.886,0.5547
100
+ 48,19.2,1,45,rain,145.536,-17.669,2.871,0.5586
101
+ 49,19.6,1,45,rain,145.414,-17.623,2.871,0.543
102
+ 0,0.0,2,45,rain,143.912,-24.349,2.959,0.7344
103
+ 1,0.4,2,45,rain,143.692,-24.488,2.945,0.7148
104
+ 2,0.8,2,45,rain,143.607,-24.443,2.93,0.6836
105
+ 3,1.2,2,45,rain,143.448,-24.399,2.915,0.6562
106
+ 4,1.6,2,45,rain,143.407,-24.295,2.915,0.6367
107
+ 5,2.0,2,45,rain,143.407,-24.295,2.915,0.6094
108
+ 6,2.4,2,45,rain,143.248,-24.251,2.9,0.5977
109
+ 7,2.8,2,45,rain,143.248,-24.087,2.9,0.582
110
+ 8,3.2,2,45,rain,143.248,-23.922,2.9,0.5664
111
+ 9,3.6,2,45,rain,143.248,-23.922,2.9,0.5547
112
+ 10,4.0,2,45,rain,143.248,-23.922,2.9,0.543
113
+ 11,4.4,2,45,rain,143.366,-23.617,2.9,0.5352
114
+ 12,4.8,2,45,rain,143.366,-23.617,2.9,0.5195
115
+ 13,5.2,2,45,rain,143.366,-23.534,2.9,0.5117
116
+ 14,5.6,2,45,rain,143.407,-23.552,2.886,0.5
117
+ 15,6.0,2,45,rain,143.524,-23.412,2.886,0.4922
118
+ 16,6.4,2,45,rain,143.524,-23.329,2.886,0.4805
119
+ 17,6.8,2,45,rain,143.683,-23.288,2.886,0.4727
120
+ 18,7.2,2,45,rain,143.524,-23.162,2.886,0.4648
121
+ 19,7.6,2,45,rain,143.683,-23.121,2.886,0.4512
122
+ 20,8.0,2,45,rain,143.641,-22.939,2.886,0.4434
123
+ 21,8.4,2,45,rain,143.799,-22.981,2.886,0.4316
124
+ 22,8.8,2,45,rain,143.915,-22.757,2.886,0.4238
125
+ 23,9.2,2,45,rain,143.799,-22.814,2.886,0.416
126
+ 24,9.6,2,45,rain,143.799,-22.646,2.886,0.4102
127
+ 25,10.0,2,45,rain,144.074,-22.547,2.886,0.4043
128
+ 26,10.4,2,45,rain,144.074,-22.379,2.886,0.3965
129
+ 27,10.8,2,45,rain,144.189,-22.323,2.886,0.3887
130
+ 28,11.2,2,45,rain,144.348,-22.28,2.886,0.3828
131
+ 29,11.6,2,45,rain,144.348,-22.111,2.886,0.375
132
+ 30,12.0,2,45,rain,144.348,-21.942,2.886,0.3691
133
+ 31,12.4,2,45,rain,144.348,-21.858,2.886,0.3652
134
+ 32,12.8,2,45,rain,144.622,-21.842,2.886,0.3613
135
+ 33,13.2,2,45,rain,144.622,-21.757,2.886,0.3574
136
+ 34,13.6,2,45,rain,144.782,-21.627,2.886,0.3516
137
+ 35,14.0,2,45,rain,144.896,-21.402,2.886,0.3516
138
+ 36,14.4,2,45,rain,144.943,-21.324,2.871,0.3477
139
+ 37,14.8,2,45,rain,145.056,-21.099,2.886,0.3477
140
+ 38,15.2,2,45,rain,145.105,-20.933,2.871,0.3496
141
+ 39,15.6,2,45,rain,145.105,-20.675,2.871,0.3516
142
+ 40,16.0,2,45,rain,145.542,-20.522,2.871,0.3535
143
+ 41,16.4,2,45,rain,145.481,-20.317,2.871,0.3574
144
+ 42,16.8,2,45,rain,145.646,-20.002,2.871,0.3652
145
+ 43,17.2,2,45,rain,145.646,-19.826,2.856,0.373
146
+ 44,17.6,2,45,rain,145.751,-19.558,2.856,0.3867
147
+ 45,18.0,2,45,rain,145.804,-19.377,2.856,0.3965
148
+ 46,18.4,2,45,rain,145.69,-19.158,2.856,0.4043
149
+ 47,18.8,2,45,rain,145.629,-19.025,2.841,0.4062
150
+ 48,19.2,2,45,rain,145.798,-18.693,2.841,0.4141
151
+ 49,19.6,2,45,rain,145.566,-18.704,2.841,0.3984
152
+ 0,0.0,3,45,rain,142.631,-22.002,2.915,0.8828
153
+ 1,0.4,3,45,rain,142.789,-21.385,2.871,0.9102
154
+ 2,0.8,3,45,rain,143.017,-20.791,2.841,0.9062
155
+ 3,1.2,3,45,rain,143.168,-20.332,2.827,0.8945
156
+ 4,1.6,3,45,rain,143.358,-20.038,2.812,0.8867
157
+ 5,2.0,3,45,rain,143.624,-19.773,2.797,0.875
158
+ 6,2.4,3,45,rain,143.705,-19.604,2.783,0.8633
159
+ 7,2.8,3,45,rain,143.705,-19.349,2.783,0.8555
160
+ 8,3.2,3,45,rain,143.86,-19.042,2.768,0.8477
161
+ 9,3.6,3,45,rain,144.015,-18.819,2.768,0.8359
162
+ 10,4.0,3,45,rain,144.058,-18.728,2.768,0.8281
163
+ 11,4.4,3,45,rain,144.215,-18.589,2.753,0.8203
164
+ 12,4.8,3,45,rain,144.643,-18.435,2.753,0.8164
165
+ 13,5.2,3,45,rain,144.576,-18.3,2.753,0.8086
166
+ 14,5.6,3,45,rain,144.735,-18.246,2.739,0.8047
167
+ 15,6.0,3,45,rain,144.782,-18.15,2.739,0.7969
168
+ 16,6.4,3,45,rain,144.782,-17.972,2.739,0.793
169
+ 17,6.8,3,45,rain,144.943,-17.827,2.739,0.7891
170
+ 18,7.2,3,45,rain,144.992,-17.728,2.724,0.7852
171
+ 19,7.6,3,45,rain,145.154,-17.671,2.724,0.7812
172
+ 20,8.0,3,45,rain,145.041,-17.628,2.724,0.7773
173
+ 21,8.4,3,45,rain,145.204,-17.479,2.724,0.7734
174
+ 22,8.8,3,45,rain,145.204,-17.389,2.724,0.7695
175
+ 23,9.2,3,45,rain,145.419,-17.318,2.724,0.7695
176
+ 24,9.6,3,45,rain,145.419,-17.227,2.724,0.7695
177
+ 25,10.0,3,45,rain,145.471,-17.214,2.724,0.7695
178
+ 26,10.4,3,45,rain,145.471,-17.03,2.71,0.7695
179
+ 27,10.8,3,45,rain,145.637,-16.969,2.71,0.7695
180
+ 28,11.2,3,45,rain,145.69,-17.048,2.71,0.7695
181
+ 29,11.6,3,45,rain,145.858,-16.801,2.71,0.7695
182
+ 30,12.0,3,45,rain,145.629,-16.707,2.71,0.7734
183
+ 31,12.4,3,45,rain,145.682,-16.597,2.71,0.7773
184
+ 32,12.8,3,45,rain,145.968,-16.487,2.695,0.7773
185
+ 33,13.2,3,45,rain,146.023,-16.47,2.695,0.7812
186
+ 34,13.6,3,45,rain,146.08,-16.358,2.695,0.7812
187
+ 35,14.0,3,45,rain,146.136,-16.34,2.695,0.7852
188
+ 36,14.4,3,45,rain,146.194,-16.225,2.695,0.7891
189
+ 37,14.8,3,45,rain,146.077,-16.175,2.68,0.793
190
+ 38,15.2,3,45,rain,146.31,-16.09,2.68,0.7969
191
+ 39,15.6,3,45,rain,146.251,-15.92,2.68,0.8008
192
+ 40,16.0,3,45,rain,146.547,-15.904,2.666,0.8008
193
+ 41,16.4,3,45,rain,146.489,-15.831,2.666,0.8008
194
+ 42,16.8,3,45,rain,146.55,-15.81,2.666,0.8047
195
+ 43,17.2,3,45,rain,146.43,-15.757,2.666,0.8047
196
+ 44,17.6,3,45,rain,146.674,-15.564,2.666,0.8008
197
+ 45,18.0,3,45,rain,146.737,-15.54,2.651,0.8008
198
+ 46,18.4,3,45,rain,146.616,-15.485,2.651,0.7969
199
+ 47,18.8,3,45,rain,146.557,-15.509,2.651,0.793
200
+ 48,19.2,3,45,rain,146.743,-15.334,2.651,0.7891
201
+ 49,19.6,3,45,rain,146.497,-15.429,2.651,0.7773
checkpoints/spatial_beats_ov1_local_spatial_v7j_ov123_exp/03_ov123_top4/val_predictions/epoch_0001_csv/valid__ov3_000159__gt.csv ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ frame_idx,frame_time_s,src_or_track_idx,class_idx,class_name,azimuth_deg,elevation_deg,distance_m,activity_prob
2
+ 6,2.4128,0,19,vehicle,-32.065,-0.311,2.365,1.0
3
+ 7,2.815,0,19,vehicle,-32.065,-0.311,2.365,1.0
4
+ 8,3.2171,0,19,vehicle,-32.065,-0.311,2.365,1.0
5
+ 9,3.6193,0,19,vehicle,-32.065,-0.311,2.365,1.0
6
+ 10,4.0214,0,19,vehicle,-32.065,-0.311,2.365,1.0
7
+ 11,4.4235,0,19,vehicle,-32.065,-0.311,2.365,1.0
8
+ 12,4.8257,0,19,vehicle,-32.065,-0.311,2.365,1.0
9
+ 13,5.2278,0,19,vehicle,-32.065,-0.311,2.365,1.0
10
+ 14,5.63,0,19,vehicle,-32.065,-0.311,2.365,1.0
11
+ 15,6.0321,0,19,vehicle,-32.065,-0.311,2.365,1.0
12
+ 16,6.4342,0,19,vehicle,-32.065,-0.311,2.365,1.0
13
+ 17,6.8364,0,19,vehicle,-32.065,-0.311,2.365,1.0
14
+ 18,7.2385,0,19,vehicle,-32.065,-0.311,2.365,1.0
15
+ 19,7.6407,0,19,vehicle,-32.065,-0.311,2.365,1.0
16
+ 20,8.0428,0,19,vehicle,-32.065,-0.311,2.365,1.0
17
+ 21,8.4449,0,19,vehicle,-32.065,-0.311,2.365,1.0
18
+ 22,8.8471,0,19,vehicle,-32.065,-0.311,2.365,1.0
19
+ 23,9.2492,0,19,vehicle,-32.065,-0.311,2.365,1.0
20
+ 21,8.4449,1,36,typing,95.334,-20.364,4.225,1.0
21
+ 22,8.8471,1,36,typing,95.334,-20.364,4.225,1.0
22
+ 23,9.2492,1,36,typing,95.334,-20.364,4.225,1.0
23
+ 24,9.6514,1,36,typing,95.334,-20.364,4.225,1.0
24
+ 25,10.0535,1,36,typing,95.334,-20.364,4.225,1.0
25
+ 26,10.4556,1,36,typing,95.334,-20.364,4.225,1.0
26
+ 27,10.8578,1,36,typing,95.334,-20.364,4.225,1.0
27
+ 28,11.2599,1,36,typing,95.334,-20.364,4.225,1.0
28
+ 29,11.662,1,36,typing,95.334,-20.364,4.225,1.0
29
+ 30,12.0642,1,36,typing,95.334,-20.364,4.225,1.0
30
+ 31,12.4663,1,36,typing,95.334,-20.364,4.225,1.0
31
+ 32,12.8685,1,36,typing,95.334,-20.364,4.225,1.0
32
+ 33,13.2706,1,36,typing,95.334,-20.364,4.225,1.0
33
+ 34,13.6727,1,36,typing,95.334,-20.364,4.225,1.0
34
+ 22,8.8471,2,42,tearing,151.596,-2.896,1.779,1.0
35
+ 23,9.2492,2,42,tearing,151.596,-2.896,1.779,1.0
36
+ 28,11.2599,3,48,appliance,108.664,2.827,4.402,1.0
37
+ 29,11.662,3,48,appliance,108.664,2.827,4.402,1.0
38
+ 30,12.0642,3,48,appliance,108.664,2.827,4.402,1.0
39
+ 31,12.4663,3,48,appliance,108.664,2.827,4.402,1.0
40
+ 32,12.8685,3,48,appliance,108.664,2.827,4.402,1.0
41
+ 33,13.2706,3,48,appliance,108.664,2.827,4.402,1.0
42
+ 34,13.6727,3,48,appliance,108.664,2.827,4.402,1.0
43
+ 35,14.0749,3,48,appliance,108.664,2.827,4.402,1.0
44
+ 36,14.477,3,48,appliance,108.664,2.827,4.402,1.0
45
+ 37,14.8792,3,48,appliance,108.664,2.827,4.402,1.0
docs/0413.md ADDED
@@ -0,0 +1,512 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 0413 当前 Spatial-BEATs 基线总结
2
+
3
+ 本文档记录 2026-04-13 时点仓库内当前可复现的 `Spatial-BEATs` 基线状态。
4
+ 重点不是回顾全部试错,而是明确:
5
+
6
+ - 当前应该以哪个 checkpoint / preset 为基线
7
+ - 当前模型架构到底是什么
8
+ - 当前训练和验证流程如何工作
9
+ - 这条线已经证明了什么,没证明什么
10
+ - 后续继续改时,哪些地方不要再误改
11
+
12
+ 当前本地快照提交:
13
+
14
+ ```text
15
+ b782333 snapshot: restore 0410 local_spatial baseline state
16
+ ```
17
+
18
+ ## 1. 当前基线对象
19
+
20
+ 当前恢复并确认的基线是:
21
+
22
+ ```text
23
+ train_spatial_beats.py --preset ov1_local_spatial
24
+ ```
25
+
26
+ 对应的历史参考 checkpoint 是:
27
+
28
+ ```text
29
+ checkpoints/spatial_beats_ov1_local_spatial_run1/best.pt
30
+ ```
31
+
32
+ 这条线对应的设计目标是:
33
+
34
+ - 用 `W` 通道的 BEATs 路径提供语义时间序列
35
+ - 用 `WXYZ + IVxyz` 的 local spatial branch 提供局部空间时间序列
36
+ - 两者在 token 时间轴上对齐后相加融合
37
+ - 用一个单路 fused temporal token 序列同时做:
38
+ - clip-level class
39
+ - direction
40
+ - distance
41
+ - 最终 `llm_spatial_tokens`
42
+
43
+ 这条线不是:
44
+
45
+ - `semantic_aux_classifier` 双头版本
46
+ - 原始 Kaldi fbank W semantic special path 版本
47
+ - class/spatial 分别从不同 token 读出的版本
48
+
49
+ 这些后续尝试都已经从当前基线中移除。
50
+
51
+ ## 2. 当前模型架构
52
+
53
+ 当前 `ov1_local_spatial` 的主路径如下:
54
+
55
+ ```text
56
+ FOA waveform [B, 4, T]
57
+ -> SpatialBEATsPreprocessor
58
+ -> foa_feat [B, 7, T_f, F]
59
+ channels = [W, X, Y, Z, IVx, IVy, IVz]
60
+
61
+ -> extract_patch_tokens()
62
+ base path:
63
+ W_logmel -> original single-channel BEATs patch embedding
64
+ spatial delta path:
65
+ 7ch foa_feat -> SpatialDeltaPatchAdapter -> delta_patch_tokens
66
+ patch_tokens = base_patch_tokens + delta_patch_tokens
67
+
68
+ -> BEATs trunk
69
+ -> frequency_pool
70
+ -> TemporalResampler(target_token_rate = 2.5 Hz)
71
+ -> ShallowTemporalReadout
72
+ -> semantic_embeddings [B, T_s, D]
73
+
74
+ -> LocalSpatialEncoder(foa_feat) -> local_patch_rate_tokens [B, T_f, D_s]
75
+ -> LocalSpatialResampler -> local_spatial_tokens [B, T_s, D_s]
76
+ -> local_spatial_proj: Linear(D_s, D)
77
+ -> fused_embeddings = LayerNorm(semantic_embeddings + local_update)
78
+
79
+ -> LocalSpatialPredictionHeads(fused_embeddings)
80
+ -> class pooled token
81
+ -> spatial pooled token
82
+ -> pred_class_logits [B, 65]
83
+ -> pred_direction [B, 3]
84
+ -> pred_distance [B, 1]
85
+
86
+ -> SpatialTokenProjector(fused_embeddings)
87
+ -> llm_spatial_tokens [B, T_s, d_llm]
88
+ ```
89
+
90
+ ### 2.1 FOA 前端
91
+
92
+ 代码入口:
93
+
94
+ - [spatial_modules.py](/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/spatial_modules.py)
95
+ - [spatial_beats.py](/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/spatial_beats.py)
96
+
97
+ 当前前端行为:
98
+
99
+ - 输入波形按 DCASE 存储顺序 `[W, Y, Z, X]`
100
+ - `SpatialBEATsPreprocessor` 内部先重排到 `[W, X, Y, Z]`
101
+ - 计算:
102
+ - `WXYZ logmel`
103
+ - `IVx, IVy, IVz`
104
+ - 输出 `foa_feat [B, 7, T_f, F]`
105
+
106
+ 这里仍然是当前基线的一部分。
107
+ 也就是说,当前基线不是完全复用原始 `BEATs.py preprocess()`,而是:
108
+
109
+ - 用自实现 STFT/mel 前端
110
+ - 再用 BEATs 统计量做归一化
111
+
112
+ 这点非常重要,因为后续很多分类迁移问题都和这里有关。
113
+
114
+ ### 2.2 Patch token 构造
115
+
116
+ 当前 patch 输入仍然是“W base + 7ch delta”风格:
117
+
118
+ - `patch_embedding.proj` 只接收 `W_logmel`
119
+ - `SpatialDeltaPatchAdapter` 从完整 `foa_feat` 生成 patch-level residual update
120
+ - 最终送入 trunk 的是:
121
+
122
+ ```text
123
+ patch_tokens = base_patch_tokens + delta_patch_tokens
124
+ ```
125
+
126
+ 当前 `ov1_local_spatial` preset 中:
127
+
128
+ - `train_patch_embedding_in_stage1 = False`
129
+ - `train_spatial_adapter_in_stage1 = False`
130
+ - `patch_adapter_residual_alpha_init = 0.0`
131
+ - `patch_adapter_out_proj_scale_init = 0.0`
132
+
133
+ 也就是说,在这条恢复后的 run1 基线里:
134
+
135
+ - trunk 冻结
136
+ - patch embedding 冻结
137
+ - patch delta adapter 也不训练
138
+
139
+ 真正训练的是后面的 local spatial 分支和 fused readout。
140
+
141
+ ### 2.3 BEATs trunk 路径
142
+
143
+ 当前 trunk 保持的是原 BEATs 主干:
144
+
145
+ - `layer_norm`
146
+ - `post_extract_proj`
147
+ - `encoder.pos_conv`
148
+ - `encoder.layers.*`
149
+ - `encoder.layer_norm`
150
+
151
+ 预训练初始化来自:
152
+
153
+ ```text
154
+ pretrain_ckpt/BEATs_iter3_plus_AS2M.pt/BEATs_iter3_plus_AS2M.pt
155
+ ```
156
+
157
+ 加载逻辑在:
158
+
159
+ - [spatial_beats.py](/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/spatial_beats.py)
160
+
161
+ 当前日志行为应类似:
162
+
163
+ ```text
164
+ [SpatialBEATs] Reusing 201 compatible BEATs keys
165
+ [SpatialBEATs] Reusing original single-channel BEATs patch embedding
166
+ ```
167
+
168
+ ### 2.4 Local spatial 分支
169
+
170
+ 当前 spatial branch 是当前基线的核心增量,结构为:
171
+
172
+ - `LocalSpatialEncoder`
173
+ - 2D CNN 提取局部多通道空间模式
174
+ - 频率池化
175
+ - temporal Transformer
176
+ - `TemporalResampler`
177
+ - 把 local spatial token 序列重采样到和 semantic token 同样的 `T_s`
178
+ - `local_spatial_proj`
179
+ - `Linear(D_s, D)`,小尺度初始化
180
+ - `local_spatial_fusion_norm`
181
+ - `LayerNorm(semantic + local_update)`
182
+
183
+ 代码位置:
184
+
185
+ - [spatial_modules.py](/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/spatial_modules.py)
186
+ - [spatial_beats.py](/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/spatial_beats.py)
187
+
188
+ ### 2.5 Prediction heads
189
+
190
+ 当前 `LocalSpatialPredictionHeads` 是 0410 那条线真正使用的版本:
191
+
192
+ - 输入只有 `fused_tokens`
193
+ - class 和 spatial 都从同一个 fused sequence 上做 attention pooling
194
+ - 不是 class 从 semantic token 读、spatial 从 fused token 读的后改版本
195
+
196
+ 结构:
197
+
198
+ ```text
199
+ fused_tokens [B, T_s, D]
200
+ -> class_score -> class attention pooling -> class_token
201
+ -> spatial_score -> spatial attention pooling -> spatial_token
202
+
203
+ class_token -> class_head -> pred_class_logits
204
+ spatial_token -> direction_head -> pred_direction (normalized)
205
+ spatial_token -> distance_head -> pred_distance (softplus)
206
+ ```
207
+
208
+ 初始化细节:
209
+
210
+ - `class_score.weight/bias = 0`
211
+ - `spatial_score.weight/bias = 0`
212
+
213
+ 所以初始 attention pooling 等价于均匀 mean-pool。
214
+ 这就是为什么它可以比较平滑地接入之前的 class head checkpoint。
215
+
216
+ ## 3. 当前 supervision 与 loss
217
+
218
+ 当前 `ov1_local_spatial` 使用:
219
+
220
+ ```text
221
+ cfg.loss.supervision_mode = "mono_ast"
222
+ ```
223
+
224
+ 对应 loss 计算在:
225
+
226
+ - [spatial_loss.py](/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/spatial_loss.py)
227
+
228
+ 当前这条线不是 Hungarian slot matching,而是单源 clip-level supervision:
229
+
230
+ - 每个样本必须只有一个有效源
231
+ - 从第一个有效源读取:
232
+ - class
233
+ - azimuth
234
+ - elevation
235
+ - distance
236
+
237
+ loss 定义:
238
+
239
+ ```text
240
+ loss_cls_aux = cross_entropy(pred_class_logits, cls_target)
241
+ loss_direction = 1 - cos(pred_direction, gt_direction)
242
+ loss_dist = smooth_l1(pred_distance, gt_distance)
243
+
244
+ loss_total =
245
+ lambda_cls_aux * loss_cls_aux
246
+ + lambda_direction * loss_direction
247
+ + lambda_dist * loss_dist
248
+ ```
249
+
250
+ 当前 `ov1_local_spatial` 默认权重:
251
+
252
+ ```text
253
+ lambda_cls_aux = 1.0
254
+ lambda_direction = 12.0
255
+ lambda_dist = 2.0
256
+ ```
257
+
258
+ valid metrics:
259
+
260
+ - `class_acc`
261
+ - `azi_mae_deg`
262
+ - `ele_mae_deg`
263
+ - `dist_mae`
264
+
265
+ ### 3.1 Active window mask
266
+
267
+ 虽然是单源 clip-level readout,这条线仍然会构建弱时间窗 mask:
268
+
269
+ - `build_primary_source_window_mask()`
270
+ - 根据 source start/end time 映射到 token 轴
271
+ - 作为 `active_window_mask` 提供给 `LocalSpatialPredictionHeads`
272
+
273
+ 这意味着 pooled class/spatial token 默认更关注标注的 active window,而不是整段所有 token。
274
+
275
+ ## 4. 当前训练配置
276
+
277
+ 当前恢复后的 `ov1_local_spatial` preset 在:
278
+
279
+ - [train_spatial_beats.py](/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/train_spatial_beats.py)
280
+
281
+ 关键配置:
282
+
283
+ ```text
284
+ batch_size = 8
285
+ num_workers = 4
286
+ num_epochs = 20
287
+ learning_rate = 1e-4
288
+ weight_decay = 0.05
289
+
290
+ freeze_trunk_in_stage1 = True
291
+ unfreeze_full_trunk = False
292
+ train_patch_embedding_in_stage1 = False
293
+ train_spatial_adapter_in_stage1 = False
294
+ freeze_projector_by_default = True
295
+
296
+ dataset.max_clip_duration_seconds = 20.0
297
+ dataset.crop_mode = "start"
298
+
299
+ best_metric_name = "azi_mae_deg"
300
+ minimize_best_metric = True
301
+ class_finetuned_ckpt = checkpoints/beats_ov1_event_cls_head_only/best.pt
302
+ ```
303
+
304
+ 当前最重要的初始化来源有两个:
305
+
306
+ 1. `BEATs pretrained trunk`
307
+ 2. `checkpoints/beats_ov1_event_cls_head_only/best.pt`
308
+
309
+ 第二个 checkpoint 的加载策略是:
310
+
311
+ ```text
312
+ beats.patch_embedding.weight -> patch_embedding.proj.weight
313
+ beats.patch_embedding.bias -> patch_embedding.proj.bias
314
+ beats.layer_norm.* -> layer_norm.*
315
+ beats.post_extract_proj.* -> post_extract_proj.*
316
+ beats.encoder.* -> encoder.*
317
+ classifier.weight -> local_spatial_prediction_heads.class_head.weight
318
+ classifier.bias -> local_spatial_prediction_heads.class_head.bias
319
+ ```
320
+
321
+ 所以当前 `ov1_local_spatial` 的初始分类能力,并不是随机的,而是:
322
+
323
+ - 先来自 W-channel 事件分类 baseline 的 class head
324
+ - 再接到 fused temporal readout 上
325
+
326
+ ## 5. 当前 checkpoint 已证明的结果
327
+
328
+ 参考 checkpoint:
329
+
330
+ ```text
331
+ checkpoints/spatial_beats_ov1_local_spatial_run1/best.pt
332
+ ```
333
+
334
+ 这条 run 的已知最佳结果是:
335
+
336
+ ```text
337
+ best epoch = 7
338
+ best metric = azi_mae_deg
339
+
340
+ train:
341
+ loss_total = 4.0454
342
+ loss_cls_aux = 1.3232
343
+ loss_direction = 0.1966
344
+ loss_dist = 0.1816
345
+ class_acc = 0.6184
346
+ azi_mae_deg = 24.68
347
+ ele_mae_deg = 10.07
348
+ dist_mae = 0.465
349
+
350
+ valid:
351
+ loss_total = 5.1220
352
+ loss_cls_aux = 2.5258
353
+ loss_direction = 0.1856
354
+ loss_dist = 0.1847
355
+ class_acc = 0.3985
356
+ azi_mae_deg = 23.52
357
+ ele_mae_deg = 9.65
358
+ dist_mae = 0.475
359
+ ```
360
+
361
+ 更关键的是 `epoch_0000` 的行为:
362
+
363
+ ```text
364
+ train class_acc ≈ 0.246
365
+ val class_acc ≈ 0.244
366
+ val azi_mae ≈ 71.49
367
+ val ele_mae ≈ 71.54
368
+ ```
369
+
370
+ 这说明 run1 的初始状态是:
371
+
372
+ - class 明显高于随机
373
+ - 空间一开始很差
374
+
375
+ 这正是后续 0413 恢复工作所要回到的行为。
376
+
377
+ ## 6. 0413 已排除掉的错误分支
378
+
379
+ 为了避免后续再把这条基线改坏,下面这些都已经确认不是当前基线的一部分:
380
+
381
+ ### 6.1 不是 `semantic_aux_classifier` 版本
382
+
383
+ 后面曾尝试:
384
+
385
+ - 在训练期额外挂一个完全独立的 semantic auxiliary classifier
386
+ - 让 class loss 不再从 fused token 读
387
+
388
+ 结果:
389
+
390
+ - 这条线改变了初始化行为
391
+ - 会让 `Epoch 0` class 接近随机
392
+ - 与原始 run1 不一致
393
+
394
+ 现在已经从当前基线彻底移除。
395
+
396
+ ### 6.2 不是 `use_original_beats_semantic_frontend_for_local_spatial` 版本
397
+
398
+ 后面曾尝试:
399
+
400
+ - 让 local_spatial 路径里的 semantic branch 改走原始 W-only Kaldi fbank + BEATs
401
+
402
+ 结果:
403
+
404
+ - 这条线会明显改变 local_spatial 的初始化分布
405
+ - 也是导致后续 “空间一开始很好、class 一开始很差” 的原因之一
406
+
407
+ 现在已经从当前基线移除。
408
+
409
+ ### 6.3 不是 class/spatial 分开读不同 token 的版本
410
+
411
+ 后面曾尝试:
412
+
413
+ - class 从 `semantic_tokens` 池化
414
+ - spatial 从 `fused_tokens` 池化
415
+
416
+ 这同样改变了 0410 run1 的行为。
417
+ 当前已经恢复成:
418
+
419
+ - class 和 spatial 都从 `fused_tokens` 读
420
+
421
+ ## 7. 当前仓库里额外存在但不属于这条基线的内容
422
+
423
+ 当前仓库除了 `ov1_local_spatial` 之外,还保留了一些后续研发分支:
424
+
425
+ - `ov1_ast`
426
+ - `ov1_pretrunk_ast_*`
427
+ - `ov123_local_spatial_slot`
428
+ - `ov123_local_spatial_track`
429
+ - `ov123_local_spatial_accdoa`
430
+
431
+ 这些分支仍然在代码里,但它们不是当前这份文档关注的“恢复后的单源 local_spatial 基线”。
432
+
433
+ 后续如果继续研究 frame-level / slot-level 多源建模,应当:
434
+
435
+ - 把它们视为新的实验线
436
+ - 不要再直接污染 `ov1_local_spatial`
437
+
438
+ ## 8. 当前推荐的复现命令
439
+
440
+ 恢复后的基线复现命令:
441
+
442
+ ```bash
443
+ CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 torchrun --nproc_per_node=8 --master_port=29531 \
444
+ train_spatial_beats.py \
445
+ --preset ov1_local_spatial \
446
+ --distributed \
447
+ --batch-size 8 \
448
+ --num-workers 24 \
449
+ --num-epochs 20 \
450
+ --output-dir checkpoints/spatial_beats_ov1_local_spatial_run1
451
+ ```
452
+
453
+ 如果只想做行为检查,先跑 1 个 epoch 就够:
454
+
455
+ ```bash
456
+ CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 torchrun --nproc_per_node=8 --master_port=29531 \
457
+ train_spatial_beats.py \
458
+ --preset ov1_local_spatial \
459
+ --distributed \
460
+ --batch-size 8 \
461
+ --num-workers 24 \
462
+ --num-epochs 1 \
463
+ --output-dir checkpoints/spatial_beats_ov1_local_spatial_repro_check
464
+ ```
465
+
466
+ 判断是否仍在 run1 轨道上的最直接标准:
467
+
468
+ - `Epoch 0 class_acc` 应该明显高于随机
469
+ - `Epoch 0 azi/ele` 应该仍然很差
470
+
471
+ 而不是:
472
+
473
+ - `Epoch 0 class` 接近 0
474
+ - `Epoch 0 spatial` 一开始就很好
475
+
476
+ ## 9. 目前这条线的结论
477
+
478
+ 当前 `ov1_local_spatial` 基线已经证明:
479
+
480
+ 1. 单路 fused token 架构是能学到空间的。
481
+ 2. 这条线能在不动 trunk 的前提下,把 azimuth / elevation / distance 拉下来。
482
+ 3. 但它的 class 保持能力有限,最佳 valid `class_acc` 约 `0.40`,明显低于纯 W-channel BEATs 分类 baseline。
483
+ 4. 所以这条线当前更适合作为:
484
+ - “可工作空间基线”
485
+ - 后续 frame-level spatial 扩展的 warm-start
486
+
487
+ 它还没有证明:
488
+
489
+ 1. class 和 spatial 可以同时都做到强泛化。
490
+ 2. fused token 已经足够好,可以直接无脑接 LLM。
491
+
492
+ ## 10. 后续继续迭代时的建议
493
+
494
+ 如果以后继续改,不要再直接破坏 `ov1_local_spatial` 这条基线。更稳的方式是:
495
+
496
+ 1. 保留 `ov1_local_spatial` 不动,作为 frozen baseline。
497
+ 2. 新实验单独开新 preset。
498
+ 3. 新实验优先从:
499
+ - `checkpoints/spatial_beats_ov1_local_spatial_run1/best.pt`
500
+ - 或 `DEFAULT_OV1_LOCAL_SPATIAL_INIT`
501
+ warm-start。
502
+ 4. 任何涉及下面这些点的修改,都应视为“新架构”,不要再说和 run1 一样:
503
+ - semantic aux classifier
504
+ - 原始 W-BEATs special frontend
505
+ - class/spatial 分离 readout
506
+ - 新的 frame-level supervision path
507
+
508
+ 当前最安全的角色定位是:
509
+
510
+ ```text
511
+ ov1_local_spatial = 已恢复并可复现的 0410 单源 local-spatial baseline
512
+ ```
docs/0416.md ADDED
@@ -0,0 +1,215 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 0416 Spatial-BEATs 实验记录
2
+
3
+ 本文档记录 2026-04-16 对话期间的所有改动、实验和结果。
4
+
5
+ ## 1. Bug 修复
6
+
7
+ ### 1.1 方位角坐标系修复(val_predictions 显示 bug)
8
+
9
+ **问题**:val_predictions jsonl 文件中 `gt_azimuth_deg` 是 DCASE 标准 `[-180°, 180°]`,但 `pred_azimuth_deg` 被 `torch.remainder(..., 360.0)` 转成了 `[0°, 360°]`。导致 GT=-168° 和 Pred=192° 看起来差 360° 但实际是同一个方向。
10
+
11
+ **影响**:仅影响 val_predictions 文件的可读性。**训练 loss 和 epoch log metrics 不受影响**(`_circular_distance_deg` 对两种坐标系都能正确计算圆周距离)。
12
+
13
+ **修复**(`spatial_loss.py`):
14
+ - `_azi_ele_deg_from_direction_vector`:去掉 `torch.remainder(..., 360.0)`,`atan2` 直接返回 `[-180°, 180°]`
15
+ - 新增 `_to_dcase_azimuth()` 工具函数
16
+ - `build_validation_examples`、`build_pretrunk_ast_validation_examples` 中 pred_azi 使用 `_to_dcase_azimuth` 转换
17
+
18
+ ### 1.2 Vocabulary 标签修复(65→63 类)
19
+
20
+ **问题 1**:`female_singing`(171例) 和 `male_singing`(104例) 与 `singing` 是父子关系,模型在 65 类 softmax 下完全区分不了(test accuracy=0%)。
21
+
22
+ **问题 2**:`string_instrument` 类中有 **1644 个样本**(22.8%)是 Hi-hat/Crash_cymbal/Cymbal 打击乐,被错误映射。这些应该归入 `percussion`。
23
+
24
+ **修复**(`fix_vocabulary_and_manifests.py`):
25
+ - `female_singing` + `male_singing` → 合并到 `singing`(65→63 类)
26
+ - `string_instrument` 中 `mono_primary_label` 为 Hi-hat/Crash_cymbal/Cymbal 的样本 → 重标为 `percussion`
27
+ - 对 ov1/ov2/ov3 manifest 全部原地修复,备份为 `.bak_20260416`
28
+ - `final_vocabulary.csv` 重编号为连续的 1~63
29
+
30
+ **受影响文件**:
31
+ | 文件 | 变更 |
32
+ |---|---|
33
+ | `final_vocabulary.csv` | 65→63 类,去掉 female_singing/male_singing |
34
+ | `ov1_foa.jsonl` | 460 条 singing 合并 + 1644 条 cymbal 修正 |
35
+ | `ov2_foa.jsonl` / `ov3_foa.jsonl` | 无变动(这些类别未出现) |
36
+
37
+ **代码 default 值更新**:
38
+ | 文件 | 变更 |
39
+ |---|---|
40
+ | `spatial_beats.py` | `source_num_classes: 65 → 63` |
41
+ | `spatial_dataset.py` | `num_classes: 65 → 63` |
42
+ | `spatial_modules.py` | 6 处函数参数默认值 `65 → 63` |
43
+ | `spatial_atst.py` | `source_num_classes: 65 → 63` |
44
+
45
+ ### 1.3 load_checkpoint strict 改为 non-strict
46
+
47
+ **问题**:stage1→stage2 resume 时,如果两阶段 model config 不完全一致(比如 stage1 无 semantic_anchor 但 stage2 有),`strict=True` 会报错 missing key。
48
+
49
+ **修复**(`train_spatial_beats.py`):`load_checkpoint` 改用 `strict=False`,missing/unexpected key 打印 warning 不报错。
50
+
51
+ ## 2. v2 Test 集完整评测
52
+
53
+ 编写了 `eval_spatial_beats.py` 评测脚本,在 ov1 **完整 test 集(1800 样本)** 上评测了 v2 stage2 best.pt。
54
+
55
+ **checkpoint**:`checkpoints/spatial_beats_ov1_local_spatial_v2_exp/02_spatial/best.pt`
56
+
57
+ | 指标 | 值 |
58
+ |---|---|
59
+ | class_acc | **43.83%** |
60
+ | azi_mae | **19.87°** |
61
+ | ele_mae | 8.66° |
62
+ | dist_mae | 0.554 m |
63
+ | SELD F1 | 0.3139 |
64
+ | SELD LR | 0.6956 |
65
+ | SELD LE | 8.64° |
66
+ | **SELD Score ↓** | **0.6027** |
67
+
68
+ ### 63 类映射后(post-hoc)
69
+
70
+ | 指标 | 65类 | 63类映射 |
71
+ |---|---|---|
72
+ | class_acc | 43.83% | **44.44%** (+0.6%) |
73
+ | 空间指标 | 不变 | 不变 |
74
+
75
+ 提升来自 singing 子类合并(+11 个正确样本)。
76
+
77
+ ### Per-class 分析亮点
78
+
79
+ - **Accuracy=0 的 4 个类**:female_singing, male_singing, tape, wood
80
+ - **Accuracy≥0.7 的 5 个类**:bird(70.6%), guitar(70.9%), thunderstorm(76%), knock(77.8%), car(100%)
81
+ - **最大混淆来源**:父子标签层级冲突(guitar↔keyboard_instrument, wind_instrument→musical_instrument, male_singing→singing)
82
+
83
+ ## 3. bypass / purify 实验结果
84
+
85
+ 两个新架构实验的 stage1 都**全 trunk 解冻**(12 层),目标是用更激进的策略达到更高 class_acc。
86
+
87
+ | 实验 | Stage1 策略 | Stage1 class_acc | Stage2 SELD |
88
+ |---|---|---|---|
89
+ | bypass | 全解冻 + bypass_local_fusion + 零空间 | ~25% ❌ | 0.743 |
90
+ | purify | 全解冻 + freeze_local_spatial + 零空间 | ~25% ❌ | 0.816 |
91
+ | **v2(对照)** | top-2 + semantic_anchor + 空间多任务 | **~56%** ✅ | **0.603** |
92
+
93
+ **结论**:全 trunk 解冻 + SpatialBEATs 架构 = 崩。top-2 解冻更稳定。
94
+
95
+ ## 4. 分类能力损失分析
96
+
97
+ ### 纯 BEATs 分类实验(无空间任务)
98
+
99
+ | 解冻策略 | val_acc |
100
+ |---|---|
101
+ | head_only(trunk 全冻) | 62.6% |
102
+ | top-8(层 4-11) | **69.1%** |
103
+ | full(全 12 层) | 70.0% |
104
+
105
+ ### SpatialBEATs 分类损失链
106
+
107
+ ```
108
+ 纯 BEATs 62.6%(trunk 全冻)
109
+ → SpatialBEATs v2 stage1: 56% (-6.6%: CNN噪声 + 多任务干扰 + 只解冻top-2)
110
+ → SpatialBEATs v2 stage2: 44% (-12%: λ_dir=12 空间梯度冲击语义)
111
+ ```
112
+
113
+ ### 关键发现:v4 的 trunk 起点
114
+
115
+ v4 config 中 `class_finetuned_ckpt` 之前指向的是 `head_only/best.pt`(62.6%),其 trunk 权重和原始 BEATs **完全相同**(head_only 全冻 trunk 训练)。已修正为指向 `02_full/best.pt`(70%),获取 FSD50K 适配过的 trunk。
116
+
117
+ ## 5. 失败实验
118
+
119
+ ### v3 / v3ws(bypass + top-8/top-4)
120
+ - v3 epoch1: cls=0.116 ❌
121
+ - v3ws epoch1: cls=0.080 ❌
122
+ - 原因:bypass 模式 + SpatialBEATs = DDP 不稳定
123
+
124
+ ### v3b / v3bws(freeze_local_spatial + top-8/top-4)
125
+ - v3b 15 epoch: cls=35.67%,azi=89.66°(空间几乎随机)
126
+ - v3bws: 无效果
127
+ - 原因:多变量同时改动(top-8 + freeze_local_spatial + ddp_find_unused + 无 anchor),不如 v2 的组合
128
+
129
+ ## 6. 新增架构:Frame-Level Track Supervision
130
+
131
+ ### 动机
132
+
133
+ 当前 `mono_ast` 是 clip-level 预测(attention pool → 1 class + 1 direction),无法:
134
+ 1. 输出 DCASE 格式逐帧检测
135
+ 2. 扩展到 ov2/ov3 多源
136
+ 3. 约束 trunk 逐帧表征质量
137
+
138
+ ### 实现
139
+
140
+ 在 `readout_scheme="local_spatial"` 下新增可选 `FrameTrack` 分支,与 clip-level head **并行运行**:
141
+
142
+ ```
143
+ fused_spatial_embeddings [B, T_s, D]
144
+ ├── attention pool → clip-level mono_ast prediction (已有)
145
+ └── SourceQueryDecoder → [B, K, T_s, D] → FrameTrack prediction (新增)
146
+ ```
147
+
148
+ **完全复用已有代码**:`SourceQueryDecoder`、`FrameTrackPredictionHeads`、`compute_frame_track_losses` 一行都没改。
149
+
150
+ **控制开关**:
151
+ - `SpatialBEATsConfig.enable_frame_track: bool = False`
152
+ - `SpatialLossConfig.enable_frame_track_loss: bool = False`
153
+ - 默认关闭,所有现有实验零影响
154
+
155
+ **改动文件**:
156
+ | 文件 | 改动 |
157
+ |---|---|
158
+ | `spatial_beats.py` | Config flag + __init__ 创建 head + forward 产出 |
159
+ | `spatial_loss.py` | Config flag |
160
+ | `train_spatial_beats.py` | run_train_step 追加 loss + validate 追加 examples + preset |
161
+ | `spatial_modules.py` | **不改** |
162
+
163
+ **新 preset**:`ov1_local_spatial_v4f_spatial`
164
+
165
+ ## 7. 当前实验矩阵
166
+
167
+ ### 正在跑
168
+
169
+ | 实验 | 状态 | 配置要点 |
170
+ |---|---|---|
171
+ | v4 stage1 | 运行中 | v2 架构复刻 + 63 类 + **70% trunk init** |
172
+
173
+ ### 等 v4 stage1 结束后
174
+
175
+ | 实验 | 脚本 | 配置要点 |
176
+ |---|---|---|
177
+ | v4 stage2 | `run_ov1_v4.sh` | v2 复刻(λ_dir=12, anchor=0.5) |
178
+ | v4g stage2 | `run_ov1_v4g.sh` | 温和版(λ_dir=6, λ_cls=2, anchor=1.5) |
179
+ | v4f stage2 | `run_ov1_v4f.sh` | v4 + 并行 frame-level track head |
180
+
181
+ ### 预期效果
182
+
183
+ | 实验 | 预期 class_acc | 预期 azi_mae | 新能力 |
184
+ |---|---|---|---|
185
+ | v4 stage2 | ~44%(同 v2) | ~20° | baseline |
186
+ | v4g stage2 | **~50%+** | ~25-30° | 分类更好,空间稍差 |
187
+ | v4f stage2 | ~44% + frame metrics | ~20° | DCASE 逐帧输出 |
188
+
189
+ ## 8. 新增文件清单
190
+
191
+ | 文件 | 用途 |
192
+ |---|---|
193
+ | `eval_spatial_beats.py` | 独立评测脚本,支持所有 preset |
194
+ | `fix_vocabulary_and_manifests.py` | 一次性 vocab+manifest 修复脚本 |
195
+ | `run_ov1_v3.sh` | v3 实验(bypass,已失败) |
196
+ | `run_ov1_v3ws.sh` | v3ws 实验(bypass+warmstart,已失败) |
197
+ | `run_ov1_v3b.sh` | v3b 实验(freeze_local_spatial,效果差) |
198
+ | `run_ov1_v3bws.sh` | v3bws 实验(同上+warmstart) |
199
+ | `run_ov1_v4.sh` | v4 实验(v2 复刻 + 63 类 + 70% trunk) |
200
+ | `run_ov1_v4g.sh` | v4g 温和空间版 |
201
+ | `run_ov1_v4f.sh` | v4f frame-level track 版 |
202
+
203
+ ## 9. 关键经验总结
204
+
205
+ 1. **不要全解冻 trunk**:纯 BEATs 全解冻 OK(70%),但 SpatialBEATs 架构下全解冻必崩(25%)。top-2 是当前唯一验证过的安全策略。
206
+
207
+ 2. **bypass_local_fusion 不可用**:在 DDP 训练下导致不稳定,即使只是 top-8 解冻也会崩。freeze_local_spatial 稍好但仍差。
208
+
209
+ 3. **Semantic anchor 有效**:v2 的 anchor(λ=0.5)让 stage2 class_acc 从 25%(无 anchor 的 kaldi_spatial)保到 44%。
210
+
211
+ 4. **标签质量是分类瓶颈**:65 类中父子层级冲突(singing/female_singing、musical_instrument/string_instrument)和标签映射 bug(cymbal→string_instrument)贡献了大量"假错误"。
212
+
213
+ 5. **trunk 初始化很重要**:v4 之前一直用的是 `head_only/best.pt`(trunk ≡ 原始 BEATs),现在改为 `02_full/best.pt`(trunk 已适配 FSD50K,70%),预期 stage1 起点更高。
214
+
215
+ 6. **一次只改一个变量**:v3b/v3bws 同时改了 5 个变量导致无法诊断,v4 只改了 trunk init 这一项。
docs/0422.md ADDED
@@ -0,0 +1,569 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 2026-04-22 记录:v7h 基线、v8 融合升级与当前诊断
2
+
3
+ 本文档记录 2026-04-22 这轮关于 `v7h -> v8` 的设计、问答、结果和代码修改。
4
+
5
+ 相关旧文档:
6
+ - `docs/0422_v7h_v7j.md`:主要记录 `v7h / v7j` 的诊断和尝试
7
+
8
+ 本文聚焦:
9
+ - 当前最可用版本 `v7h` 到底是什么
10
+ - 为什么要做 `v8`
11
+ - `v8` 的结构改了什么,没改什么
12
+ - 目前 `epoch0/epoch1` 的真实现象
13
+ - 后续应该继续看什么
14
+
15
+ ## 1. 当前结论
16
+
17
+ 截至本轮:
18
+
19
+ - 当前最可用的稳定基线仍然是 `v7h`
20
+ - `v8` 不是坏形态,值得继续训练
21
+ - `v8` 当前的主要问题不是 duplicate 崩坏,而是 `ov2/ov3` 上的 class binding 还不稳,尤其 `ov3` 仍有明显 class collapse
22
+ - `v8` 现在还处于 two-stage 的 stage 1,前 3 个 epoch 本来就不训 `dir/dist`,所以 `F20 / LE_CD / oazi` 在 `epoch0-2` 不适合过早下结论
23
+
24
+ ## 2. 关键问答与结论
25
+
26
+ ### 2.1 BEATs 适不适合做逐帧、多源预测
27
+
28
+ 结论:
29
+
30
+ - 原始 `BEATs` 官方下游头更偏 `clip-level audio tagging`
31
+ - 但 `BEATs` 作为语义 backbone 是适合逐帧任务的
32
+ - 真正不够的是“直接拿官方 head 做 strong-label / 多源 SELD”
33
+
34
+ 对当前项目更准确的判断是:
35
+
36
+ - `BEATs` 适合作为语义分支
37
+ - `local spatial branch` 适合作为空间分支
38
+ - 真正的难点在于:
39
+ - 如何融合语义/空间表征
40
+ - 如何让 query decoder 在同一时刻分辨多个源
41
+ - 如何让 per-frame class / DoA 监督不互相拖累
42
+
43
+ ### 2.2 现在 4 个 track 到底在预测什么
44
+
45
+ 当前 `local_spatial_track` 路线的输出是:
46
+
47
+ - 每帧固定产出 `K=4` 组 candidate tracks
48
+ - 每条 track 在每帧预测:
49
+ - `activity`
50
+ - `class`
51
+ - `direction`
52
+ - `distance`
53
+
54
+ 它不是“每帧一定有 4 个真实声源”,而是“每帧最多从 4 个候选槽位里激活若干条”。
55
+
56
+ 结构链路是:
57
+
58
+ ```text
59
+ fused_embeddings [B, T_s, D]
60
+ -> SourceQueryDecoder
61
+ -> track_latents [B, K, D]
62
+ -> track_time_features [B, K, T_s, D]
63
+ -> FrameTrackPredictionHeads
64
+ -> pred_activity
65
+ -> pred_class_logits
66
+ -> pred_direction
67
+ -> pred_distance
68
+ ```
69
+
70
+ ### 2.3 `oracle_cls / oracle_azi / oracle_ele` 是什么
71
+
72
+ 这几个量是 `track` 头的 oracle 诊断指标,不是官方 DCASE metric。
73
+
74
+ 定义:
75
+
76
+ - 先在 GT-active 的 frame-source 对上做 matching
77
+ - matching 时不走 activity threshold,只看 head 本身
78
+ - 在 matched pair 上统计:
79
+ - `oracle_cls`:class 是否对
80
+ - `oracle_azi`:azimuth MAE
81
+ - `oracle_ele`:elevation MAE
82
+
83
+ 用途:
84
+
85
+ - 看 class/DoA head 本身有没有学到
86
+ - 不包含最终检测误差,不等于 `F20`
87
+
88
+ ### 2.4 要不要先训练一个独立的 per-frame class-only BEATs
89
+
90
+ 结论:不建议单独另起一个 class-only 模型作为主路线。
91
+
92
+ 原因:
93
+
94
+ - 最终任务的 class 是从
95
+ `fused -> source_query_decoder -> track_time_features -> class_head`
96
+ 这条路径读出来的
97
+ - 单独训一个普通 per-frame classifier,学不到 query/track binding
98
+
99
+ 更合理的做法是:
100
+
101
+ - 保留同一套 `track-query` 架构
102
+ - 先做 `activity + class` warmup
103
+ - 再打开 `dir/dist`
104
+
105
+ 这就是当前 `v8` 的 two-stage 设计。
106
+
107
+ ### 2.5 v7 阶段关于初始化和解冻的结论
108
+
109
+ 已经确认的结论:
110
+
111
+ - `source_query_decoder` 和 `activity_head` 随机初始化是合理的
112
+ - `frame_track_prediction_heads.class/direction/distance` 可以从旧的 `local_spatial_prediction_heads` 迁移同语义权重
113
+ - 如果 `v7` 只在 `ov1` 上学过,到了 `ov123` 不建议永远冻结 trunk
114
+ - 当前合理策略是:
115
+ - 继续从已有可用 checkpoint 热启动
116
+ - 解冻 trunk 顶部少量层,例如 top-4
117
+
118
+ ## 3. 当前最可用基线:v7h
119
+
120
+ `v7h` 继承自 `v7f_ov123_top4`,是当前最可用的稳定基线。
121
+
122
+ 核心训练设定:
123
+
124
+ - `readout_scheme = local_spatial_track`
125
+ - `enable_clip_aux_head = False`
126
+ - `ov1:ov2:ov3 = 1:3:3`
127
+ - 去掉 focal BCE
128
+ - `frame_activity_pos_weight = 3.0`
129
+ - class-cost warmup 采用 `1 + 2` epoch
130
+ - trunk 顶部 4 层解冻
131
+
132
+ 相关配置可参考:
133
+ - `train_spatial_beats.py:1465`
134
+ - `docs/0422_v7h_v7j.md`
135
+
136
+ 历史最好结果记录:
137
+
138
+ ```text
139
+ v7h ep3 val:
140
+ F20=0.246
141
+ LE_CD=34.3°
142
+ LR_CD=0.504
143
+ SELD=0.608
144
+ ```
145
+
146
+ 这也是当前继续做 `v8` 的热启动来源。
147
+
148
+ ## 4. v8 的设计目标
149
+
150
+ ### 4.1 为什么要做 v8
151
+
152
+ 对 `v7h` 的判断是:
153
+
154
+ - 前端不要乱改
155
+ - `source_query_decoder` 和 `frame_track_prediction_heads` 也先不要乱改
156
+ - 真正可能偏弱的是 fused token 的构造方式
157
+
158
+ `v7h` 的融合只有:
159
+
160
+ ```text
161
+ fused = LayerNorm(semantic_embeddings + local_update)
162
+ ```
163
+
164
+ 这隐含假设:
165
+
166
+ - semantic token 和 spatial token 已经天然对齐
167
+ - 只要相加,query decoder 就能自动学会利用空间信息
168
+
169
+ 这个假设偏强,因此设计 `v8`:
170
+
171
+ - 前端完全不改
172
+ - 只升级 semantic/spatial 的 fusion
173
+
174
+ ### 4.2 v8 设计原则
175
+
176
+ - 以 semantic token 为主骨架
177
+ - spatial token 不直接硬加,而是通过 cross-attention 注入
178
+ - 新模块要能安全从 `v7h` 热启动
179
+
180
+ 因此 `v8` 的 fusion 采用:
181
+
182
+ ```text
183
+ semantic <- spatial cross-attention (2 layers)
184
+ + gated direct spatial residual
185
+ + same final LayerNorm
186
+ ```
187
+
188
+ ## 5. v8 新模型架构
189
+
190
+ ### 5.1 整体链路
191
+
192
+ `v8` 只改 fused 部分,其他都和 `v7h` 一致:
193
+
194
+ ```text
195
+ FOA waveform [B, 4, T]
196
+ -> SpatialBEATsPreprocessor
197
+ -> patch embedding + BEATs trunk
198
+ -> frequency_pool
199
+ -> TemporalResampler (2.5 Hz)
200
+ -> temporal_readout
201
+ -> semantic_embeddings [B, T_s, D]
202
+
203
+ -> LocalSpatialEncoder
204
+ -> local_spatial_resampler
205
+ -> local_spatial_proj
206
+ -> local_update [B, T_s, D]
207
+
208
+ -> LocalSpatialCrossFuser (new in v8)
209
+ semantic <- spatial cross-attn x 2
210
+ + gated spatial residual
211
+ -> local_spatial_fusion_norm
212
+ -> fused_embeddings [B, T_s, D]
213
+
214
+ -> SourceQueryDecoder
215
+ -> FrameTrackPredictionHeads
216
+ ```
217
+
218
+ ### 5.2 代码落点
219
+
220
+ 新增或修改位置:
221
+
222
+ - `spatial_modules.py:1723-1842`
223
+ - `LocalSpatialCrossFusionBlock`
224
+ - `LocalSpatialCrossFuser`
225
+ - `spatial_beats.py:173-182`
226
+ - 新增 fusion 配置字段
227
+ - `spatial_beats.py:1104-1118`
228
+ - `build_local_spatial_fusion()` 改为支持 `cross_attn_gated`
229
+ - `train_spatial_beats.py:1536-1549`
230
+ - 新增 `make_ov1_local_spatial_v8_ov123_top4_config()`
231
+ - `run_ov1_v8_ov123_top4.sh:1-68`
232
+ - 新的启动脚本
233
+
234
+ ### 5.3 v8 的训练可学习参数
235
+
236
+ 为了保证 `v8` 新融合模块真的训练到,代码里做了两处接线:
237
+
238
+ - `train_spatial_beats.py:2528-2535`
239
+ - `local_spatial_fuser` 被加入 `always_train_prefixes`
240
+ - `train_spatial_beats.py:2646-2653`
241
+ - `local_spatial_fuser.` 被加入 `_SPATIAL_PREFIXES`
242
+
243
+ 也就是说:
244
+
245
+ - 新 fuser 走 `spatial_lr` 组
246
+ - 不会被当成 trunk 或 head 漏掉
247
+
248
+ ## 6. v8 的两阶段训练
249
+
250
+ ### 6.1 设计原因
251
+
252
+ 直接在新融合结构上同时训练 `class + direction + distance`,早期很容易出现:
253
+
254
+ - class 还没稳定
255
+ - DoA 噪声先进入 matching
256
+ - assignment 被错误的 spatial cost 带偏
257
+
258
+ 所以 `v8` 采用 two-stage:
259
+
260
+ - stage 1:先训 `activity + class`
261
+ - stage 2:再恢复 `dir/dist`
262
+
263
+ ### 6.2 具体配置
264
+
265
+ `v8` preset 中:
266
+
267
+ ```text
268
+ frame_spatial_loss_warmup_epochs = 3
269
+ frame_spatial_loss_warmup_scale = 0.0
270
+ ```
271
+
272
+ 对应代码:
273
+
274
+ - `train_spatial_beats.py:1547-1548`
275
+ - `train_spatial_beats.py:4079-4102`
276
+
277
+ 含义:
278
+
279
+ - `epoch 0-2`
280
+ - `lambda_frame_direction = 0`
281
+ - `lambda_frame_distance = 0`
282
+ - `frame_match_dir_cost_weight = 0`
283
+ - `frame_match_dist_cost_weight = 0`
284
+ - `epoch 3+`
285
+ - 自动恢复完整方向/距离监督
286
+
287
+ ## 7. v8 热启动方式
288
+
289
+ 默认脚本:
290
+
291
+ ```text
292
+ ./run_ov1_v8_ov123_top4.sh
293
+ ```
294
+
295
+ 默认行为:
296
+
297
+ - 从 `v7h` 的 `best.pt` 热启动
298
+ - 只新增 `local_spatial_fuser.*` 参数
299
+ - 其余 trunk / local_spatial / source_query_decoder / frame-track heads 继承已有权重
300
+ - 训练比例继续保持 `ov1:ov2:ov3 = 1:3:3`
301
+
302
+ 脚本位置:
303
+
304
+ - `run_ov1_v8_ov123_top4.sh:16-37`
305
+
306
+ ## 8. v8 当前结果
307
+
308
+ ### 8.1 epoch 0 日志
309
+
310
+ 用户记录:
311
+
312
+ ```text
313
+ [Epoch 0] train:
314
+ loss=1.3445 activity=0.3099 cls_aux=1.0346
315
+ direction=0.4527 dist=0.4894
316
+ act↑=0.887 act↓=0.136 sep=0.751
317
+ ocls=0.786 oazi=45.2° oele=18.4°
318
+
319
+ [Epoch 0] val:
320
+ loss=2.1304 activity=0.2310 cls_aux=1.8995
321
+ direction=0.4377 dist=0.4337
322
+ act↑=0.925 act↓=0.092 sep=0.832
323
+ ocls=0.652 oazi=46.9° oele=20.1°
324
+ ER20=1.047 F20=0.096 LE_CD=51.8° LR_CD=0.486 SELD=0.688
325
+ ```
326
+
327
+ ### 8.2 epoch 0 CSV 诊断
328
+
329
+ `epoch_0000_csv` 的诊断结论:
330
+
331
+ - 不是 `v7j` 那种 3-4 条轨全亮的崩坏
332
+ - `activity` 分离已经很好
333
+ - 当前主要瓶颈是 `class + angle`,不是 duplicate
334
+
335
+ 粗统计:
336
+
337
+ ```text
338
+ TP=207 FP=2147 FN=1844
339
+ P=0.088 R=0.101 F1=0.094
340
+
341
+ FP breakdown:
342
+ class_wrong = 1211
343
+ angle_wrong = 911
344
+ duplicate = 25
345
+
346
+ active_hist:
347
+ 0 active: 185
348
+ 1 active: 748
349
+ 2 active: 683
350
+ 3 active: 80
351
+
352
+ no_gt_frames=286
353
+ no_gt_with_pred=119
354
+ ratio=0.416
355
+
356
+ mean_maxprob_gt = 0.972
357
+ mean_maxprob_nogt = 0.400
358
+ ```
359
+
360
+ 解释:
361
+
362
+ - `act↑/act↓/sep` 很强,说明 activity head 已经把有源/无源分开了
363
+ - 但 `class_wrong` 和 `angle_wrong` 很高
364
+ - `F20` 低并不意外,因为 stage 1 根本还没训 `dir/dist`
365
+
366
+ ### 8.3 epoch 0 的 ov1 / ov2 / ov3 形态
367
+
368
+ 代表样本观察:
369
+
370
+ `ov1`
371
+
372
+ ```text
373
+ mean_act_by_track = {0: 0.88, 1: 0.007, 2: 0.001, 3: 0.0}
374
+ active_tracks_per_frame_hist = {1: 37}
375
+ top_pred_classes = singing(37)
376
+ ```
377
+
378
+ 说明单源样本已经能稳定只亮一条轨。
379
+
380
+ `ov2`
381
+
382
+ ```text
383
+ mean_act_by_track = {0: 0.999, 1: 0.745, 2: 0.133, 3: 0.0}
384
+ active_tracks_per_frame_hist = {1: 5, 2: 45}
385
+ top_pred_classes = frog(50), bird(37), tool(8)
386
+ ```
387
+
388
+ 说明双源样本已经在尝试输出两条轨。
389
+
390
+ `ov3`
391
+
392
+ ```text
393
+ mean_act_by_track = {0: 0.977, 1: 0.519, 2: 0.036, 3: 0.0}
394
+ active_tracks_per_frame_hist = {1: 17, 2: 32}
395
+ top_pred_classes = tool(81)
396
+ ```
397
+
398
+ 说明三源样本里第二条轨开始亮,但有明显 class collapse。
399
+
400
+ ## 9. v8 的 epoch 1:重点看 ov2 / ov3
401
+
402
+ 第二个 epoch 之后,重点检查了 `ov23`。
403
+
404
+ ### 9.1 active track 数量变化
405
+
406
+ 在“有预测的帧”上,平均亮起的轨数:
407
+
408
+ ```text
409
+ epoch0:
410
+ ov2 = 1.578
411
+ ov3 = 1.767
412
+
413
+ epoch1:
414
+ ov2 = 1.736
415
+ ov3 = 1.942
416
+ ```
417
+
418
+ 这说明:
419
+
420
+ - `ov2/ov3` 上第二条轨更积极了
421
+ - 模型更愿意在 overlap 场景输出多轨
422
+
423
+ 这本身不是坏事,但如果 class/DoA 没跟上,就会先表现为 FP 上升。
424
+
425
+ ### 9.2 代表样本对比
426
+
427
+ `ov2` 代表样本 `valid__ov2_000000__pred.csv`
428
+
429
+ `epoch0`
430
+
431
+ ```text
432
+ mean_act_by_track = {0: 0.999, 1: 0.745, 2: 0.133, 3: 0.0}
433
+ active_hist = {1: 5, 2: 45}
434
+ top_classes = frog(50), bird(37), tool(8)
435
+ ```
436
+
437
+ `epoch1`
438
+
439
+ ```text
440
+ mean_act_by_track = {0: 0.996, 1: 0.312, 2: 0.625, 3: 0.339}
441
+ active_hist = {1: 11, 2: 39}
442
+ top_classes = frog(50), wind(39)
443
+ ```
444
+
445
+ 解释:
446
+
447
+ - 第二条活跃轨从 `track1` 转向 `track2`
448
+ - 类别也从 `bird` 变成了 `wind`
449
+ - 说明 query 责任在重排,但 class binding 还不稳定
450
+
451
+ `ov3` 代表样本 `valid__ov3_000004__pred.csv`
452
+
453
+ `epoch0`
454
+
455
+ ```text
456
+ mean_act_by_track = {0: 0.977, 1: 0.519, 2: 0.036, 3: 0.0}
457
+ active_hist = {1: 17, 2: 32}
458
+ top_classes = tool(81)
459
+ ```
460
+
461
+ `epoch1`
462
+
463
+ ```text
464
+ mean_act_by_track = {0: 0.966, 1: 0.665, 2: 0.065, 3: 0.127}
465
+ active_hist = {1: 11, 2: 39}
466
+ top_classes = tool(89)
467
+ ```
468
+
469
+ 解释:
470
+
471
+ - 第二条轨更稳定地亮了
472
+ - 但 class collapse 没缓解,反而更统一地塌成 `tool`
473
+
474
+ 因此当前对 `epoch1` 的判断是:
475
+
476
+ - `ov2`:有变化,但不能算明显变好
477
+ - `ov3`:暂时没有变好,仍然是当前最大问题点
478
+
479
+ ## 10. 当前诊断
480
+
481
+ 截至目前,对 `v8` 的判断是:
482
+
483
+ ### 10.1 已经证明的事
484
+
485
+ - `v8` 没有走向 `v7j` 那种 duplicate 崩坏
486
+ - `activity` 分离做得比担心中要好
487
+ - `ov2/ov3` 上的多轨输出能力确实在长出来
488
+
489
+ ### 10.2 还没解决的事
490
+
491
+ - `ov2/ov3` 的 class binding 还不稳
492
+ - `ov3` 仍然存在明显 class collapse
493
+ - stage 1 期间不训 `dir/dist`,所以 `F20 / LE_CD / oazi` 现在还不能作为最终判断
494
+
495
+ ### 10.3 当前最值得关注的信号
496
+
497
+ - `epoch 3+` 进入 stage 2 后:
498
+ - `ocls` 是否继续上升
499
+ - `oazi` 是否明显下降
500
+ - `F20` 是否出现拐点
501
+ - `ov3` 的 top predicted classes 是否开始从单一 `tool` 分裂成多个类
502
+ - `ov23` 的平均 active tracks 是否继续上涨过快
503
+
504
+ ## 11. 本轮实际代码修改
505
+
506
+ 本轮已经落地的修改:
507
+
508
+ ### 11.1 新增 v8 融合模块
509
+
510
+ - `spatial_modules.py:1723-1842`
511
+ - `LocalSpatialCrossFusionBlock`
512
+ - `LocalSpatialCrossFuser`
513
+
514
+ ### 11.2 新增 fusion 配置
515
+
516
+ - `spatial_beats.py:173-182`
517
+ - `local_spatial_fusion_mode`
518
+ - `local_spatial_fusion_layers`
519
+ - `local_spatial_fusion_heads`
520
+ - `local_spatial_fusion_dropout`
521
+ - `local_spatial_fusion_gate_bias`
522
+ - `local_spatial_fusion_direct_gate_bias`
523
+
524
+ ### 11.3 改 fused token 构造
525
+
526
+ - `spatial_beats.py:1104-1118`
527
+ - 从 `semantic + local_update`
528
+ - 改成支持 `local_spatial_fuser(...)`
529
+
530
+ ### 11.4 新增 v8 preset
531
+
532
+ - `train_spatial_beats.py:1536-1549`
533
+ - 继承 `v7h`
534
+ - 打开 `cross_attn_gated`
535
+ - 打开 two-stage spatial warmup
536
+ - 输出目录改为 `v8_ov123_exp/03_ov123_top4`
537
+
538
+ ### 11.5 训练侧接线
539
+
540
+ - `train_spatial_beats.py:2528-2535`
541
+ - `local_spatial_fuser` 加入 `always_train_prefixes`
542
+ - `train_spatial_beats.py:2646-2653`
543
+ - `local_spatial_fuser.` 加入 `_SPATIAL_PREFIXES`
544
+
545
+ ### 11.6 新增脚本
546
+
547
+ - `run_ov1_v8_ov123_top4.sh:1-68`
548
+
549
+ ## 12. 下一步建议
550
+
551
+ 当前建议不改结构,先继续训练 `v8`:
552
+
553
+ 1. 至少跑到 `epoch 3` 之后,确认 stage 2 开启后的趋势
554
+ 2. 优先看 `ov3` 是否开始摆脱 `tool` collapse
555
+ 3. 如果 `epoch 3-5` 之后仍然:
556
+ - `ov3` 继续单类塌缩
557
+ - `ocls` 不升
558
+ - `oazi` 不降
559
+ - `F20` 没有明显抬升
560
+ 再考虑下一轮结构修改
561
+
562
+ 当前最合理的工作顺序是:
563
+
564
+ - 先把 `v8` 跑穿 stage 1 / stage 2
565
+ - 再根据 `ov23` 的 class collapse 是否缓解,决定下一轮改:
566
+ - query decoder
567
+ - matching
568
+ - finer token rate
569
+ - 或额外的 class-preserving auxiliary
docs/0423.md ADDED
@@ -0,0 +1,969 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 2026-04-23 — v9_ov123_top4:class-first 针对性修复(A→D→E→B→C→F)
2
+
3
+ ## 0. 背景与本轮任务
4
+
5
+ v8 / v8a 在 `03_ov123_top4` 上完成了 10+ 个 epoch 的训练,整体 spatial 指标比 v7h 有小幅改善,但 `class_ok` 一直卡在 **~45%** 左右。用户要求:
6
+
7
+ 1. 专注 frame 级预测,不引入任何 clip 级监督;
8
+ 2. 分析 v8 / v8a 的 val CSV(epoch 9 / epoch 11),找出 class 准确率上不去的真正瓶颈;
9
+ 3. 在不破坏现有代码框架和训练逻辑的前提下,按顺序落地 Fix A→D→E→B→C→F;
10
+ 4. 全部作为 v9 新 preset + 新脚本,从 v8a `best.pt` 热启动(保证 epoch0 前向输出与 v8a 完全相同)。
11
+
12
+ 本文档记录 2026-04-23 这一轮的 **所有代码修改细节**,以及每个修改背后的 CSV 诊断证据。
13
+
14
+ 相关旧文档:
15
+ - `docs/0422.md`:v7h → v8 架构升级(cross-attention fusion)
16
+ - `docs/0422_v7h_v7j.md`:v7h / v7j / v7i 的 per-frame 多源诊断与 class-weighted CE 的引入
17
+ - `docs/0421.md`:v7f → ov123 per-frame 扩展与 frame-track CSV dump
18
+
19
+ ---
20
+
21
+ ## 1. CSV 诊断:v8 ep9 / v8a ep11 的错误模式
22
+
23
+ ### 1.1 整体准确率(按 "activity ≥ 0.5 的 active track 里 DOA 最近的一条" 取 class)
24
+
25
+ | 指标 | v8 ep9 | v8a ep11 |
26
+ |---|---|---|
27
+ | overall `cls_ok` | 933/2051 = **45.5%** | 934/2051 = **45.5%** |
28
+ | DOA≤20° 命中内 `cls_ok` | 48.1% | 51.9% |
29
+ | **Oracle cls**(无视 activity,取 DOA 最近 track 的 class) | **38.7%** | **46.4%** |
30
+
31
+ 两个关键数字几乎相等:`cls_ok(nearest active) ≈ oracle_cls`。这说明:
32
+
33
+ > **activity 选的 track 和 DOA 选的 track 语义上一致**,K=4 的 track binding 是 ok 的;真正错的是 **"那条被选中的 track 自己的 class_logits 就预测错了"**。
34
+
35
+ 换句话说:**瓶颈不在 matching,不在 activity,而在 class head 本身的输出分布**。
36
+
37
+ ### 1.2 按 ov 分组
38
+
39
+ v8 ep9:
40
+ ```
41
+ ov2 : gt= 682 DOA_ok=51.6% cls_ok=37.1% any_track_cls_ok=38.9% cls&DOA=23.9%
42
+ ov3 : gt=1158 DOA_ok=42.5% cls_ok=47.1% any_track_cls_ok=59.6% cls&DOA=18.0%
43
+ other: gt= 211 DOA_ok=97.6% cls_ok=64.0% any_track_cls_ok=64.0% cls&DOA=63.0%
44
+ ```
45
+
46
+ v8a ep11 类似,ov3 略退:
47
+ ```
48
+ ov2 : cls_ok=44.0% cls&DOA=33.7%
49
+ ov3 : cls_ok=43.1% cls&DOA=14.2%
50
+ other: cls_ok=64.0% cls&DOA=63.0%
51
+ ```
52
+
53
+ `other`(近似 ov1 单源)是 64%,ov2 是 37-44%,ov3 降到 43% 且 `cls&DOA` 只有 14%。**多源重叠帧的 class 比单源帧低 20 个点**,这是 ov3 demixing 失败的直接证据。
54
+
55
+ ### 1.3 每类错误模式(Oracle:无视 activity 取 DOA 最近)
56
+
57
+ ```
58
+ aircraft (n=100): speech(50%) human_vocalization(50%) → 永远 0% 正确
59
+ vehicle (n= 68): machine(74%) aircraft(13%) train(10%) → 永远 0% 正确
60
+ frog (n= 50): bird(98~100%) → 永远预测成 bird
61
+ speech (n= 53): human_vocalization(94%) breathing(6%) → 永远 0% 正确
62
+ crackle (n= 51): rain(53%) machine(41%) → 永远 0% 正确
63
+ wind (n= 16): fire(50~88%) vehicle/wood → 永远 0% 正确
64
+ drawer_cab(n= 50): tool(74~84%) → 永远 0% 正确
65
+ tape (n= 50): human_vocalization(88%) typing(46%) → 永远 0% 正确
66
+ knock (n= 36): home_sound(64%) human_vocalization → 永远 0% 正确
67
+ train (n=115): train(43%) crushing(37%) vehicle(15%) → ~10%
68
+ ```
69
+
70
+ 错误全都是 **同父类 "sibling collapse"**:
71
+
72
+ - `aircraft / vehicle / train` 同属 transportation;
73
+ - `speech / human_vocalization / breathing / laughter` 同属 human-voice;
74
+ - `frog / bird / insect` 同属 animal-vocal;
75
+ - `drawer_cabinet / tool / home_sound / door` 同属 indoor-mechanical。
76
+
77
+ ### 1.4 Label bug 复核:frog→bird 是不是数据映射错了?
78
+
79
+ 查了 `build_ov{1,23}_foa_dataset.py`、`final_vocabulary.csv`、`spatial_dataset.py:_resolve_class_index`,以及 jsonl 里具体样本:
80
+
81
+ ```
82
+ ov1 train frog: 113 ov1 train bird: 3270 → 1:29
83
+ ov1 valid frog: 9 ov1 valid bird: 56
84
+ ov1 test frog: 3 ov1 test bird: 51
85
+ ov2 train frog:1078 ov2 train bird: 1255
86
+ ov3 train frog:1384 ov3 train bird: 1432
87
+ ```
88
+
89
+ **frog 标签完全正确**,不是 label bug。100% 预测成 bird 的根因是 ov1 训练集里 bird 比 frog 多 **29 倍**,纯粹的 class imbalance;其他两个 manifest (ov2/ov3) 已经平衡,但 ov1 训练数据量占比仍然不小,整体 prior 偏向 bird。
90
+
91
+ ## 2. 六个 Fix 的整体设计原则
92
+
93
+ 1. **全部 additive**:v9 只 **增加** 新 config 字段与新子模块,从不删除或覆盖 v8a 已有的路径;
94
+ 2. **全部 zero-init 或 identity-init**:新参数在 ckpt 加载时贡献 0(可验证 `v9(v8a.pt) - v8a(v8a.pt)` 前向最大 abs diff = 0);
95
+ 3. **strict=False 兼容**:v9 的 18 个新参数在 v8a ckpt 中缺失,走现有 `_load_spatial_init_checkpoint` / `load_state_dict(..., strict=False)` 流程自然初始化;
96
+ 4. **不改 forward signature 的兼容性**:`FrameTrackPredictionHeads.forward` 新增的几个关键字参数默认 `None`,旧调用链(如 v7 / v8 非-track readout)不受影响;
97
+ 5. **所有 LR / schedule 默认行为等价于 v8a**:`class_head_lr_scale=1.0` 时走原 3-group 快速路径,`frame_class_ontology_smoothing=0.0` 时走原 `F.cross_entropy`。
98
+
99
+ ## 3. 文件级修改清单
100
+
101
+ | 文件 | 修改内容 |
102
+ |---|---|
103
+ | `spatial_loss.py` | 新增 `frame_class_ontology_smoothing`、`frame_class_ontology_groups` 字段;CE 分支支持本体软标签 |
104
+ | `spatial_modules.py` | `FrameTrackPredictionHeads` 新增 6 个构造参数 + 新增 `ClassHeadSpectralDemixer` 模块 |
105
+ | `spatial_beats.py` | `SpatialBEATsConfig` 新增 8 个字段;两处 `FrameTrackPredictionHeads` 构造传入新参数;forward 两处 call 传入 `pre_pool_features`;新增 `_derive_pre_pool_time_mask` helper |
106
+ | `train_spatial_beats.py` | 新增 `class_head_lr_scale`、`class_head_freeze_during_ramp_epochs`、`class_head_lr_scale_during_ramp` 字段;`build_optimizer` 拆出 `cls_head` group;epoch loop 动态写 cls_head LR;新增 `_V9_CLASS_WEIGHTS`、`_V9_ONTOLOGY_GROUPS`、`make_ov1_local_spatial_v9_ov123_top4_config`;preset dispatch 和 `--preset` choices 注册 `v9_ov123_top4` |
107
+ | `run_ov1_v9_ov123_top4.sh` | 新增启动脚本(chmod +x) |
108
+
109
+ ---
110
+
111
+ ## 4. Fix A —— frog/稀有类的诊断(无代码改动)
112
+
113
+ Fix A 是诊断性质的,没有代码落地。结论:frog 不是 label bug,是 ov1 train 的 29:1 imbalance。解决方案被折进 Fix D:
114
+
115
+ - `bird` 权重:1.0 → **0.6**(压 catch-all)
116
+ - `frog` 权重:1.0 → **3.0**(提 minority)
117
+ - `insect` 权重:从 v7I 的 4.0 → **1.0**(v8/v8a 已经 100%,不需要加权)
118
+
119
+ ## 5. Fix D —— 重新设计 class 权重 `_V9_CLASS_WEIGHTS`
120
+
121
+ ### 5.1 数据证据
122
+
123
+ v7I 的权重表给了 aircraft / vehicle / insect **4×** 权重:
124
+
125
+ ```
126
+ v8 ep9: aircraft 0%, vehicle 0%, insect 100%
127
+ v8a ep11: aircraft 0%, vehicle 0%, insect 100%, printer 100%→59%(退化!)
128
+ ```
129
+
130
+ - aircraft / vehicle 的 4× 没有任何效果,它们的声学特征与 speech / machine 真实接近;
131
+ - 4× 让误分类(aircraft→speech)的 loss 放大 4 倍,模型为了降 loss 把 **speech 的预测分布也拉保守**,导致 speech 也掉到 0%(双输);
132
+ - v8a ep11 还有一个异常:printer 从 v8 ep9 的 100% 掉到 59%,原因见 Fix E。
133
+
134
+ ### 5.2 设计规则
135
+
136
+ - **"catch-all" 类**(GT frame 上被当万金油预测的类)→ 权重下调:
137
+ - `human_vocalization` 0.4(被 speech / tape / typing / knock 当靶子)
138
+ - `bird` 0.6(frog 几乎全部坍缩到 bird)
139
+ - `machine` 0.5(vehicle / crackle 坍缩到 machine)
140
+ - `rain` 0.5(crackle / singing 的 collapse 目标)
141
+ - `breathing` 0.5(speech 94% 错分到这里)
142
+ - `home_sound` 0.6(knock / printer 的 collapse)
143
+ - **易被 collapse 的稀有类** → 权重上调(但不过分,≤ 3×):
144
+ - `frog` 3.0
145
+ - `crackle` 2.0、`tape` 2.0、`knock` 2.0、`drawer_cabinet` 2.0、`speech` 2.0
146
+ - `aircraft` / `vehicle` / `train` 回到 1.0-1.5(4× 已证实无效且伤 sibling)
147
+ - **过度自信的稳健类** → 略压:
148
+ - `singing` 0.7、`printer` 0.7(在 ov123 任务里吸收错 FP)
149
+
150
+ ### 5.3 代码改动
151
+
152
+ 位置:`train_spatial_beats.py`(紧挨 `_V7I_CLASS_WEIGHTS` 之后)
153
+
154
+ ```python
155
+ _V9_CLASS_WEIGHTS: List[float] = [
156
+ # 0 wind_instrument 1 string_instrument 2 guitar 3 body_sound
157
+ 1.0, 1.0, 1.0, 1.0,
158
+ # 4 drum 5 water 6 human_vocalization 7 keyboard_instrument
159
+ 1.0, 1.0, 0.4, 1.0,
160
+ # 8 bird 9 tool 10 machine 11 war_sound
161
+ 0.6, 1.0, 0.5, 1.0,
162
+ # 12 metal_clink 13 breathing 14 laughter 15 percussion
163
+ 1.0, 0.5, 1.0, 1.0,
164
+ # 16 speech 17 bell 18 dog 19 vehicle
165
+ 2.0, 1.0, 1.0, 1.5,
166
+ # 20 alarm 21 footsteps 22 train 23 telephone_alarm
167
+ 1.0, 1.0, 1.5, 1.0,
168
+ # 24 glass 25 wind 26 kitchenware 27 animal
169
+ 1.0, 1.5, 1.0, 1.0,
170
+ # 28 musical_instrument 29 thunderstorm 30 door 31 male_speech
171
+ 1.0, 1.0, 1.0, 1.0,
172
+ # 32 female_speech 33 cat 34 home_sound 35 insect
173
+ 1.0, 1.0, 0.6, 1.0,
174
+ # 36 typing 37 zipper 38 camera 39 clock
175
+ 1.0, 1.0, 1.0, 1.0,
176
+ # 40 fire 41 singing 42 tearing 43 writing
177
+ 1.0, 0.7, 1.0, 1.0,
178
+ # 44 car 45 rain 46 scratch 47 gong
179
+ 1.0, 0.5, 1.0, 1.0,
180
+ # 48 appliance 49 paper 50 drawer_cabinet 51 ocean
181
+ 1.0, 1.0, 2.0, 1.0,
182
+ # 52 knock 53 crackle 54 finger_snapping 55 aircraft
183
+ 2.0, 2.0, 1.0, 1.0,
184
+ # 56 crushing 57 printer 58 tape 59 wood
185
+ 1.0, 0.7, 2.0, 1.0,
186
+ # 60 crack 61 cooking 62 frog
187
+ 1.0, 1.0, 3.0,
188
+ ]
189
+ assert len(_V9_CLASS_WEIGHTS) == 63
190
+ ```
191
+
192
+ v9 preset 里:`cfg.loss.frame_class_loss_weights = list(_V9_CLASS_WEIGHTS)`。
193
+
194
+ ## 6. Fix E —— class head LR 单独分组 + DOA ramp 期冻结
195
+
196
+ ### 6.1 数据证据
197
+
198
+ v8a ep5 vs ep11(stage 2 DOA ramp 打开前后):
199
+
200
+ ```
201
+ ep5 ov3: ocls=44.4% printer=100%
202
+ ep11 ov3: ocls=44.4% printer=59% ← class 被 DOA 梯度扰动掉了
203
+ ```
204
+
205
+ 打开 dir/dist 的 Hungarian cost 和 loss 之后,class binding 被扰动。传统做法是整体降 LR,但那会连带把 trunk / decoder 的学习也拖慢。更好的做法是 **单独把 class_head 从 optimizer 拉出来,DOA ramp 期间冻结**。
206
+
207
+ ### 6.2 代码改动
208
+
209
+ #### 6.2.1 新增 config 字段(`train_spatial_beats.py`)
210
+
211
+ ```python
212
+ trunk_lr_scale: float = 1.0
213
+ spatial_lr_scale: float = 1.0
214
+ # v9: isolated LR multiplier for the class_head inside
215
+ # frame_track_prediction_heads. When < 1.0 the class head is put in its
216
+ # own param group with lr = base_lr * class_head_lr_scale. Used during
217
+ # DOA ramp (stage 2) to prevent class binding from being perturbed by
218
+ # the newly-unlocked dir/dist gradients. 1.0 = legacy behaviour.
219
+ class_head_lr_scale: float = 1.0
220
+ # Optional epoch-range override that further scales the class head LR
221
+ # specifically during the DOA ramp. When set, between
222
+ # frame_spatial_loss_warmup_epochs and frame_spatial_loss_warmup_epochs
223
+ # + class_head_freeze_during_ramp_epochs the class head LR is set to
224
+ # class_head_lr_scale_during_ramp (defaults to 0.0 = frozen). After the
225
+ # ramp window the LR returns to class_head_lr_scale.
226
+ class_head_freeze_during_ramp_epochs: int = 0
227
+ class_head_lr_scale_during_ramp: float = 0.0
228
+ ```
229
+
230
+ #### 6.2.2 `build_optimizer` 拆出 cls_head group
231
+
232
+ - 新增 `_CLASS_HEAD_PREFIXES`:
233
+ ```python
234
+ _CLASS_HEAD_PREFIXES = (
235
+ "frame_track_prediction_heads.class_head.",
236
+ "frame_track_prediction_heads.class_head_mlp.",
237
+ "frame_track_prediction_heads.class_head_demixer.",
238
+ )
239
+ ```
240
+ - fast path 条件从 `trunk_scale == 1.0 and spatial_scale == 1.0` 改为再加 `and cls_head_scale == 1.0`;
241
+ - 当 `cls_head_scale != 1.0` 时,匹配 `_CLASS_HEAD_PREFIXES` 的参数从 head_params 抽出,放入 `cls_head_params`;
242
+ - 每个 param group 增加 `group_name` 字段(`"trunk"` / `"spatial"` / `"head"` / `"cls_head"`),便于 epoch loop 按 name 定位。
243
+
244
+ 关键代码片段:
245
+ ```python
246
+ for name, param in model.named_parameters():
247
+ if not param.requires_grad:
248
+ continue
249
+ if name.startswith(_CLASS_HEAD_PREFIXES) and cls_head_scale != 1.0:
250
+ cls_head_params.append(param)
251
+ elif name.startswith(_TRUNK_PREFIXES):
252
+ trunk_params.append(param)
253
+ elif name.startswith(_SPATIAL_PREFIXES):
254
+ spatial_params.append(param)
255
+ else:
256
+ head_params.append(param)
257
+
258
+ param_groups = []
259
+ if trunk_params: param_groups.append({"params": trunk_params, "lr": base_lr * trunk_scale, "weight_decay": wd, "group_name": "trunk"})
260
+ if spatial_params: param_groups.append({"params": spatial_params, "lr": base_lr * spatial_scale, "weight_decay": wd, "group_name": "spatial"})
261
+ if head_params: param_groups.append({"params": head_params, "lr": base_lr, "weight_decay": wd, "group_name": "head"})
262
+ if cls_head_params:param_groups.append({"params": cls_head_params,"lr": base_lr * cls_head_scale, "weight_decay": wd, "group_name": "cls_head"})
263
+ ```
264
+
265
+ #### 6.2.3 epoch loop 动态写 cls_head LR
266
+
267
+ 紧跟 spatial loss schedule 之后(在 `_log(f"[Epoch {epoch}] start")` 之前):
268
+
269
+ ```python
270
+ _cls_ramp_len = int(train_cfg.class_head_freeze_during_ramp_epochs)
271
+ if _cls_ramp_len > 0 and _sp_warmup > 0 and train_cfg.class_head_lr_scale != 1.0:
272
+ in_ramp = _sp_warmup <= epoch < _sp_warmup + _cls_ramp_len
273
+ if in_ramp:
274
+ _cls_scale = train_cfg.class_head_lr_scale_during_ramp
275
+ else:
276
+ _cls_scale = train_cfg.class_head_lr_scale
277
+ for _g in optimizer.param_groups:
278
+ if _g.get("group_name") == "cls_head":
279
+ _g["lr"] = train_cfg.learning_rate * _cls_scale
280
+ _log(
281
+ f"[Epoch {epoch}] cls_head_lr scale={_cls_scale:.3f} "
282
+ f"lr={train_cfg.learning_rate * _cls_scale:.2e} "
283
+ f"(ramp_window={_sp_warmup}..{_sp_warmup + _cls_ramp_len - 1})"
284
+ )
285
+ ```
286
+
287
+ #### 6.2.4 v9 preset 设定
288
+
289
+ ```python
290
+ cfg.class_head_lr_scale = 0.3
291
+ cfg.class_head_freeze_during_ramp_epochs = 4
292
+ cfg.class_head_lr_scale_during_ramp = 0.0
293
+ ```
294
+
295
+ v9 的 `SPATIAL_LR=1.5e-5`,各阶段 cls_head LR:
296
+
297
+ | 阶段 | epoch | lambda_dir | cls_head_lr |
298
+ |---|---|---|---|
299
+ | stage 1(class-only warmup) | 0-2 | 0.0 | 4.5e-6 |
300
+ | stage 2(DOA ramp,cls_head 冻结) | 3-6 | ramp 0→1 | **0.0** |
301
+ | stage 3(全放开) | 7+ | 1.0 | 4.5e-6 |
302
+
303
+ ## 7. Fix B —— 本体论(hierarchical)标签平滑
304
+
305
+ ### 7.1 核心思想
306
+
307
+ v8/v8a 的 class 错误 **≥70% 是 sibling collapse**(同 AudioSet 父类)。Hard CE 把 `frog→bird` 和 `frog→aircraft` 一视同仁地惩罚满 log loss,这不合理:
308
+
309
+ - 对下游 LLM 而言 `frog↔bird` 混淆可以靠语义上下文恢复;
310
+ - `aircraft↔speech` 这种跨域错误则完全荒谬。
311
+
312
+ 希望 loss 的惩罚强度 **匹配错误的 "语义距离"**。最简单的实现:在同父类内部做 label smoothing,跨父类保持硬 CE。
313
+
314
+ ### 7.2 代码改动
315
+
316
+ #### 7.2.1 `SpatialLossConfig` 新字段(`spatial_loss.py`)
317
+
318
+ ```python
319
+ # v9 hierarchical label smoothing for the frame-track class head.
320
+ # When frame_class_ontology_smoothing > 0, the CE target becomes a soft
321
+ # label distribution:
322
+ # target[c_gt] = 1 - eps
323
+ # target[c_sib] = eps / |siblings| (for each sibling in same ontology
324
+ # group as c_gt; excludes c_gt itself)
325
+ # target[c_other] = 0
326
+ # ...
327
+ frame_class_ontology_smoothing: float = 0.0
328
+ # Parallel list of sibling groups. Each entry is a list of class indices
329
+ # belonging to the same AudioSet ontology parent. A class may appear in
330
+ # only one group. Empty list = no hierarchical smoothing.
331
+ frame_class_ontology_groups: List[List[int]] = None
332
+ ```
333
+
334
+ `__post_init__` 把 `None` 替换为 `[]` 以防意外。
335
+
336
+ #### 7.2.2 CE 分支改写(`spatial_loss.py:compute_frame_track_losses`)
337
+
338
+ 原有分支:
339
+ ```python
340
+ loss_class = F.cross_entropy(
341
+ class_logits_flat, class_target_flat, weight=_cls_weights
342
+ )
343
+ ```
344
+
345
+ 改为:
346
+ ```python
347
+ eps_onto = float(config.frame_class_ontology_smoothing)
348
+ onto_groups = config.frame_class_ontology_groups
349
+ if eps_onto > 0.0 and onto_groups:
350
+ num_classes = class_logits_flat.size(-1)
351
+ # Build a [C, C] soft-target "mixing" table on first use and
352
+ # cache it on the config object to avoid per-batch rebuild.
353
+ if (
354
+ not hasattr(config, "_onto_mixing_table")
355
+ or config._onto_mixing_table is None
356
+ or config._onto_mixing_table.shape[0] != num_classes
357
+ or config._onto_mixing_table.dtype != class_logits_flat.dtype
358
+ or config._onto_mixing_table.device != device
359
+ ):
360
+ table = torch.zeros((num_classes, num_classes), dtype=class_logits_flat.dtype, device=device)
361
+ table.fill_diagonal_(1.0)
362
+ for group in onto_groups:
363
+ members = [int(c) for c in group if 0 <= int(c) < num_classes]
364
+ if len(members) < 2:
365
+ continue
366
+ for c in members:
367
+ siblings = [s for s in members if s != c]
368
+ table[c].zero_()
369
+ table[c, c] = 1.0 - eps_onto
370
+ sib_mass = eps_onto / len(siblings)
371
+ for s in siblings:
372
+ table[c, s] = sib_mass
373
+ config._onto_mixing_table = table
374
+ soft_target = config._onto_mixing_table[class_target_flat]
375
+ log_probs = F.log_softmax(class_logits_flat, dim=-1)
376
+ if _cls_weights is not None:
377
+ sample_w = _cls_weights[class_target_flat]
378
+ per_sample_loss = -(soft_target * log_probs).sum(dim=-1)
379
+ loss_class = (per_sample_loss * sample_w).sum() / sample_w.sum().clamp_min(1e-8)
380
+ else:
381
+ loss_class = -(soft_target * log_probs).sum(dim=-1).mean)
382
+ else:
383
+ loss_class = F.cross_entropy(class_logits_flat, class_target_flat, weight=_cls_weights)
384
+ ```
385
+
386
+ 实现要点:
387
+ - **mixing table 缓存**:表存在 `config` 对象上(不是模块),第一次构建并缓存,之后按形状/device/dtype 重用,开销可忽略;
388
+ - **per-class weight 兼容**:当同时启用 ontology smoothing 和 class weights 时,正类权重照常生效(按 GT hard class idx 加权每样本 loss);
389
+ - **不在 group 里的类**:table 默认对角线 = 1,所以未列入任何 group 的类自然退化为 hard one-hot,零影响;
390
+ - **完全开关**:`frame_class_ontology_smoothing=0` 或 `frame_class_ontology_groups=[]` 都会走原 `F.cross_entropy`,v8/v8a 训练复现不受影响。
391
+
392
+ ### 7.3 Ontology groups(`_V9_ONTOLOGY_GROUPS`)
393
+
394
+ 位置:`train_spatial_beats.py`,v9 preset 之前。
395
+
396
+ ```python
397
+ _V9_ONTOLOGY_GROUPS: List[List[int]] = [
398
+ # transportation: aircraft, vehicle, train, car
399
+ [55, 19, 22, 44],
400
+ # human voice (non-singing): speech, human_vocalization, male_speech,
401
+ # female_speech, breathing, laughter
402
+ [16, 6, 31, 32, 13, 14],
403
+ # animal vocal: bird, frog, insect, dog, cat, animal
404
+ [8, 62, 35, 18, 33, 27],
405
+ # indoor mechanical + appliances: tool, machine, appliance, printer,
406
+ # home_sound, door, drawer_cabinet, kitchenware, camera, clock, typing,
407
+ # zipper, tape, cooking
408
+ [9, 10, 48, 57, 34, 30, 50, 26, 38, 39, 36, 37, 58, 61],
409
+ # percussive / impact: knock, footsteps, crack, crackle, crushing,
410
+ # scratch, finger_snapping, tearing, writing, paper
411
+ [52, 21, 60, 53, 56, 46, 54, 42, 43, 49],
412
+ # weather / water / ambience: wind, rain, thunderstorm, ocean, water,
413
+ # fire, glass, metal_clink, wood
414
+ [25, 45, 29, 51, 5, 40, 24, 12, 59],
415
+ # musical instruments: wind_instrument, string_instrument, guitar, drum,
416
+ # keyboard_instrument, percussion, musical_instrument, gong, bell,
417
+ # singing
418
+ [0, 1, 2, 4, 7, 15, 28, 47, 17, 41],
419
+ # alarms / signals: alarm, telephone_alarm, war_sound
420
+ [20, 23, 11],
421
+ ]
422
+ ```
423
+
424
+ **8 组,覆盖 62/63 个 class**(只有 `body_sound` 没归组,走 hard CE)。每个 class 仅出现在一个组中。
425
+
426
+ v9 preset:
427
+ ```python
428
+ cfg.loss.frame_class_ontology_smoothing = 0.1
429
+ cfg.loss.frame_class_ontology_groups = [list(g) for g in _V9_ONTOLOGY_GROUPS]
430
+ ```
431
+
432
+ ## 8. Fix C —— 频谱级 demixing cross-attention
433
+
434
+ ### 8.1 动机
435
+
436
+ - `track_time_features[B, K, T_s, D]` 是 `SourceQueryDecoder` 从 `fused_embeddings[B, T_s, D]` 里 decode 出来的;`fused_embeddings` 在 `frequency_pool` 之后,**频率维已经被池化掉了**;
437
+ - DOA 能在多源重叠帧 demix(IV 通道物理上就编码了方向),但 class 没有等价物理解混通路;
438
+ - 需要让每个 track latent 能"回看"池化前的 trunk 输出,从 F_p 个频率 token 里挑自己负责的那部分。
439
+
440
+ ### 8.2 模型结构
441
+
442
+ - 输入:
443
+ - `track_time_features: [B, K, T_s, D]`(已经过 `input_norm`)
444
+ - `pre_pool_features: [B, T_p * F_p, D]`(BEATs trunk 输出,无 task tokens,未经 frequency_pool)
445
+ - `pre_pool_grid_size: (T_p, F_p)`
446
+ - `pre_pool_time_mask: [B, T_p]`(True = 有效时间步)
447
+ - 时间对齐:frame `t ∈ [0, T_s)` → trunk 时间步 `t_p = round(t * T_p / T_s)`,clip 到 `[0, T_p-1]`;
448
+ - KV 构造:`kv_grid[:, t_p, :, :]` → `[B, T_s, F_p, D]`,然后在 K 轴 expand 到 `[B, K, T_s, F_p, D]`,flatten 成 `[B*K*T_s, F_p, D]`;
449
+ - Query:`track_time_features` reshape 成 `[B*K*T_s, 1, D]`;
450
+ - 经 1 层 `nn.MultiheadAttention`(`num_heads=8`, `dropout=0.1`,`batch_first=True`),再 `out_proj(Linear 768→768)`,乘以标量 `gate`,加回 class head 的 `class_input`。
451
+
452
+ ### 8.3 初始化策略(关键)
453
+
454
+ - `out_proj.weight` 全零、`out_proj.bias` 全零 → **加载时 demixer 输出 = 0**,class_logits 与 v8a 完全相同;
455
+ - `gate = 1e-2`(**不是 0**!)→ 前向 = `gate * 0 = 0`(身份保证),但 `∂L/∂out_proj.weight = gate × ...` **非零**,梯度从 step 0 就能流进 demixer 的 attention 权重;这是关键的"gradient-warmup trick",否则两端 zero 会把 demixer 永久冻在 0。
456
+
457
+ ### 8.4 `ClassHeadSpectralDemixer` 源码(`spatial_modules.py`)
458
+
459
+ ```python
460
+ class ClassHeadSpectralDemixer(nn.Module):
461
+ def __init__(self, embed_dim=768, num_layers=1, num_heads=8, dropout=0.1):
462
+ super().__init__()
463
+ self.embed_dim = embed_dim
464
+ self.num_layers = max(1, int(num_layers))
465
+ self.kv_norm = nn.LayerNorm(embed_dim)
466
+ self.q_norm = nn.LayerNorm(embed_dim)
467
+ self.layers = nn.ModuleList([
468
+ nn.MultiheadAttention(embed_dim=embed_dim, num_heads=num_heads,
469
+ dropout=dropout, batch_first=True)
470
+ for _ in range(self.num_layers)
471
+ ])
472
+ self.out_proj = nn.Linear(embed_dim, embed_dim)
473
+ nn.init.zeros_(self.out_proj.weight)
474
+ nn.init.zeros_(self.out_proj.bias)
475
+ self.gate = nn.Parameter(torch.full((1,), 1e-2))
476
+
477
+ def forward(self, track_time_features, pre_pool_features,
478
+ pre_pool_grid_size, pre_pool_time_mask=None):
479
+ B, K, T_s, D = track_time_features.shape
480
+ T_p, F_p = int(pre_pool_grid_size[0]), int(pre_pool_grid_size[1])
481
+ if pre_pool_features.size(-1) != D:
482
+ raise ValueError(...)
483
+ expected = T_p * F_p
484
+ if pre_pool_features.size(1) != expected:
485
+ # Fall back gracefully — demixer is additive & zero-gated.
486
+ return track_time_features.new_zeros(track_time_features.shape)
487
+ kv_grid = pre_pool_features.view(B, T_p, F_p, D)
488
+ if T_s > 0 and T_p > 0:
489
+ time_idx = torch.arange(T_s, device=kv_grid.device).float() * (T_p / max(1, T_s))
490
+ time_idx = time_idx.round().clamp_(0, T_p - 1).long()
491
+ else:
492
+ time_idx = torch.zeros((T_s,), dtype=torch.long, device=kv_grid.device)
493
+ kv_per_frame = kv_grid[:, time_idx, :, :]
494
+ kv_per_frame = kv_per_frame.unsqueeze(1).expand(B, K, T_s, F_p, D).contiguous()
495
+ kv_flat = kv_per_frame.view(B * K * T_s, F_p, D)
496
+ kv_flat = self.kv_norm(kv_flat)
497
+ q_flat = track_time_features.reshape(B * K * T_s, 1, D)
498
+ q_flat = self.q_norm(q_flat)
499
+ key_padding_mask = None
500
+ if pre_pool_time_mask is not None:
501
+ per_frame_valid = pre_pool_time_mask[:, time_idx]
502
+ per_frame_valid = per_frame_valid.unsqueeze(1).expand(B, K, T_s).reshape(-1)
503
+ if not per_frame_valid.all():
504
+ ignore = ~per_frame_valid
505
+ key_padding_mask = ignore.unsqueeze(1).expand(-1, F_p).contiguous()
506
+ attn_out = q_flat
507
+ for layer in self.layers:
508
+ attn_out, _ = layer(attn_out, kv_flat, kv_flat,
509
+ key_padding_mask=key_padding_mask, need_weights=False)
510
+ residual = self.out_proj(attn_out).view(B, K, T_s, D)
511
+ return residual * self.gate
512
+ ```
513
+
514
+ ### 8.5 `_derive_pre_pool_time_mask` helper(`spatial_beats.py`)
515
+
516
+ 紧跟 `_build_patch_padding_mask` 之后新增:
517
+
518
+ ```python
519
+ def _derive_pre_pool_time_mask(
520
+ self,
521
+ patch_padding_mask: Optional[Tensor],
522
+ grid_size: Tuple[int, int],
523
+ ) -> Optional[Tensor]:
524
+ """Return a [B, T_p] boolean mask where True marks *valid* trunk time
525
+ steps. Used by the v9 class-head spectral demixer to ignore padded
526
+ tail frames."""
527
+ if patch_padding_mask is None:
528
+ return None
529
+ t_p, f_p = grid_size
530
+ B = patch_padding_mask.size(0)
531
+ pad_grid = patch_padding_mask.view(B, t_p, f_p)
532
+ time_valid = ~pad_grid.all(dim=-1)
533
+ return time_valid
534
+ ```
535
+
536
+ `patch_padding_mask` 的语义是 `True = padded`,time-valid 是 "某时间步还有非 padded 频率位置" → `~pad_grid.all(dim=-1)`。
537
+
538
+ ### 8.6 forward 两处 call 更新(`spatial_beats.py`)
539
+
540
+ 两处调用 `self.frame_track_prediction_heads(...)` 都扩展:
541
+
542
+ ```python
543
+ _pre_pool_time_mask = self._derive_pre_pool_time_mask(
544
+ patch_padding_mask=patch_padding_mask,
545
+ grid_size=grid_size,
546
+ )
547
+ frame_track_prediction_output = self.frame_track_prediction_heads(
548
+ track_time_features=track_time_features,
549
+ track_latents=track_latents,
550
+ pre_pool_features=encoder_memory,
551
+ pre_pool_grid_size=grid_size,
552
+ pre_pool_time_mask=_pre_pool_time_mask,
553
+ )
554
+ ```
555
+
556
+ - 第 1 处在 `readout_scheme == "local_spatial"` 分支下 frame-track parallel 路径;
557
+ - 第 2 处在 `readout_scheme == "local_spatial_track"` 分支下纯 per-frame 路径(v9 走这里)。
558
+
559
+ 两处都用到的上下文变量:
560
+ - `encoder_memory`:`self.encode_patches(...)` 的输出,`[B, T_p*F_p, D]`,**已经过 trunk 但未 frequency_pool**,正好是 demixer 需要的 pre_pool features;
561
+ - `grid_size`:`self.extract_patch_tokens(...)` 返回的 `(T_p, F_p)`;
562
+ - `patch_padding_mask`:`self._build_patch_padding_mask(...)` 返回。
563
+
564
+ ## 9. Fix F —— 2-layer MLP 残差
565
+
566
+ ### 9.1 动机
567
+
568
+ 当前 class head 是 `nn.Linear(768, 63)`,对多源混合 token 的表达能力可能不够。加一个 2-layer MLP 残差 branch:
569
+
570
+ ```
571
+ class_logits = class_head(x) + gate * class_head_mlp(x)
572
+ class_head_mlp = Linear(768, 1536) → GELU → Dropout → LayerNorm → Linear(1536, 63)
573
+ ```
574
+
575
+ ### 9.2 初始化策略
576
+
577
+ 与 Fix C 的 demixer 同构:
578
+ - `class_head_mlp[-1].weight / bias` 全零 → 残差输出 = 0;
579
+ - `class_head_mlp_gate = 1e-2` → 前向仍然 = 0,但梯度可流进 MLP 最后一层(非零);
580
+ - 经过 1-2 个 step MLP 最后一层有非零权重后,前一层(GELU 前)也开始获得梯度。
581
+
582
+ ### 9.3 `FrameTrackPredictionHeads` 重构(`spatial_modules.py`)
583
+
584
+ 构造签名扩展:
585
+ ```python
586
+ def __init__(
587
+ self,
588
+ embed_dim: int = 768,
589
+ num_classes: int = 63,
590
+ dropout: float = 0.1,
591
+ use_class_head_mlp_residual: bool = False,
592
+ class_head_mlp_hidden_multiplier: int = 2,
593
+ class_head_mlp_dropout: float = 0.1,
594
+ use_class_head_demixer: bool = False,
595
+ class_head_demixer_layers: int = 1,
596
+ class_head_demixer_heads: int = 8,
597
+ class_head_demixer_dropout: float = 0.1,
598
+ ) -> None:
599
+ ```
600
+
601
+ 构造体内新增:
602
+ ```python
603
+ self.use_class_head_mlp_residual = bool(use_class_head_mlp_residual)
604
+ if self.use_class_head_mlp_residual:
605
+ hidden = embed_dim * max(1, int(class_head_mlp_hidden_multiplier))
606
+ self.class_head_mlp = nn.Sequential(
607
+ nn.Linear(embed_dim, hidden),
608
+ nn.GELU(),
609
+ nn.Dropout(class_head_mlp_dropout),
610
+ nn.LayerNorm(hidden),
611
+ nn.Linear(hidden, num_classes),
612
+ )
613
+ nn.init.zeros_(self.class_head_mlp[-1].weight)
614
+ nn.init.zeros_(self.class_head_mlp[-1].bias)
615
+ self.class_head_mlp_gate = nn.Parameter(torch.full((1,), 1e-2))
616
+ else:
617
+ self.class_head_mlp = None
618
+ self.class_head_mlp_gate = None
619
+
620
+ self.use_class_head_demixer = bool(use_class_head_demixer)
621
+ if self.use_class_head_demixer:
622
+ self.class_head_demixer = ClassHeadSpectralDemixer(
623
+ embed_dim=embed_dim,
624
+ num_layers=class_head_demixer_layers,
625
+ num_heads=class_head_demixer_heads,
626
+ dropout=class_head_demixer_dropout,
627
+ )
628
+ else:
629
+ self.class_head_demixer = None
630
+ ```
631
+
632
+ forward 改写:
633
+ ```python
634
+ def forward(
635
+ self,
636
+ track_time_features: Tensor,
637
+ track_latents: Tensor,
638
+ pre_pool_features: Optional[Tensor] = None,
639
+ pre_pool_grid_size: Optional[Tuple[int, int]] = None,
640
+ pre_pool_time_mask: Optional[Tensor] = None,
641
+ ) -> FrameTrackPredictionOutput:
642
+ ...
643
+ x = self.input_norm(track_time_features)
644
+ activity = self.activity_head(x).squeeze(-1)
645
+ class_input = x
646
+ if (
647
+ self.class_head_demixer is not None
648
+ and pre_pool_features is not None
649
+ and pre_pool_grid_size is not None
650
+ ):
651
+ demix_residual = self.class_head_demixer(
652
+ track_time_features=x,
653
+ pre_pool_features=pre_pool_features,
654
+ pre_pool_grid_size=pre_pool_grid_size,
655
+ pre_pool_time_mask=pre_pool_time_mask,
656
+ )
657
+ class_input = class_input + demix_residual
658
+ class_logits = self.class_head(class_input)
659
+ if self.class_head_mlp is not None and self.class_head_mlp_gate is not None:
660
+ class_logits = class_logits + self.class_head_mlp_gate * self.class_head_mlp(class_input)
661
+ direction = F.normalize(self.direction_head(x), dim=-1)
662
+ distance = F.softplus(self.distance_head(x)).squeeze(-1)
663
+ ...
664
+ ```
665
+
666
+ **关键细节**:
667
+ - demixer 的 residual 加到 `class_input` 上(即 class_head 的输入),而不是加到 logits 上;这样 demixer 得到的"纠偏"信号先经过 `class_head` 的共享投影再生成 logits;
668
+ - MLP 分支也看 `class_input`(包含 demixer residual),这样 demixer 的信息同样能进入 MLP 分支;
669
+ - `direction_head` 和 `distance_head` 的输入 `x` 不加 demixer(demixer 是 class-specific),保持 DOA head 对 v8a ckpt 的完全等价。
670
+
671
+ ### 9.4 `SpatialBEATsConfig` 新字段(`spatial_beats.py`)
672
+
673
+ ```python
674
+ self.frame_track_dropout: float = 0.1
675
+ self.frame_accdoa_hidden_dim: int = 256
676
+ self.frame_accdoa_dropout: float = 0.1
677
+
678
+ # v9: optional zero-initialised MLP residual branch inside
679
+ # FrameTrackPredictionHeads. ...
680
+ self.use_class_head_mlp_residual: bool = False
681
+ self.class_head_mlp_hidden_multiplier: int = 2
682
+ self.class_head_mlp_dropout: float = 0.1
683
+ # v9: optional spectral demixing cross-attention branch. ...
684
+ self.use_class_head_demixer: bool = False
685
+ self.class_head_demixer_layers: int = 1
686
+ self.class_head_demixer_heads: int = 8
687
+ self.class_head_demixer_dropout: float = 0.1
688
+ ```
689
+
690
+ ### 9.5 两处构造都传入新参数
691
+
692
+ `spatial_beats.py` 两处 `FrameTrackPredictionHeads(...)` 调用都改为:
693
+
694
+ ```python
695
+ self.frame_track_prediction_heads = FrameTrackPredictionHeads(
696
+ embed_dim=cfg.encoder_embed_dim,
697
+ num_classes=cfg.source_num_classes,
698
+ dropout=cfg.frame_track_dropout,
699
+ use_class_head_mlp_residual=cfg.use_class_head_mlp_residual,
700
+ class_head_mlp_hidden_multiplier=cfg.class_head_mlp_hidden_multiplier,
701
+ class_head_mlp_dropout=cfg.class_head_mlp_dropout,
702
+ use_class_head_demixer=cfg.use_class_head_demixer,
703
+ class_head_demixer_layers=cfg.class_head_demixer_layers,
704
+ class_head_demixer_heads=cfg.class_head_demixer_heads,
705
+ class_head_demixer_dropout=cfg.class_head_demixer_dropout,
706
+ )
707
+ ```
708
+
709
+ ## 10. v9 preset 与启动脚本
710
+
711
+ ### 10.1 `make_ov1_local_spatial_v9_ov123_top4_config`(`train_spatial_beats.py`)
712
+
713
+ 位置:v7k 系列的最后一个 preset 之后,`v3: top-8 unfreeze` 注释分割线之前。
714
+
715
+ ```python
716
+ def make_ov1_local_spatial_v9_ov123_top4_config(
717
+ ov1_manifest_path: str = DEFAULT_OV1_MANIFEST,
718
+ ov2_manifest_path: str = DEFAULT_OV2_MANIFEST,
719
+ ov3_manifest_path: str = DEFAULT_OV3_MANIFEST,
720
+ ) -> TrainSpatialBEATsConfig:
721
+ """v9 = v8a + class-first cleanup (fixes A..F).
722
+
723
+ Inherits v8a (cross-attn fusion + segment matching + 4-epoch DOA ramp),
724
+ applies:
725
+ - _V9_CLASS_WEIGHTS (suppress catch-all classes, boost frog/crackle/tape)
726
+ - ontology-aware label smoothing (eps=0.1)
727
+ - class head residual MLP + spectral demixer (both zero-init)
728
+ - class_head_lr_scale=0.3 with full freeze during the 4-epoch DOA ramp
729
+
730
+ Frontend / trunk / source_query_decoder / activity / dir / dist heads
731
+ are unchanged. Hot-start from v8a best.pt works with strict=False.
732
+ """
733
+ cfg = make_ov1_local_spatial_v8a_ov123_top4_config(
734
+ ov1_manifest_path=ov1_manifest_path,
735
+ ov2_manifest_path=ov2_manifest_path,
736
+ ov3_manifest_path=ov3_manifest_path,
737
+ )
738
+
739
+ # (D) Re-balanced class weights driven by v8/v8a CSV confusion analysis.
740
+ cfg.loss.frame_class_loss_weights = list(_V9_CLASS_WEIGHTS)
741
+
742
+ # (B) Hierarchical (ontology-aware) label smoothing.
743
+ cfg.loss.frame_class_ontology_smoothing = 0.1
744
+ cfg.loss.frame_class_ontology_groups = [list(g) for g in _V9_ONTOLOGY_GROUPS]
745
+
746
+ # (F) Zero-gated MLP residual on the class head.
747
+ cfg.model.use_class_head_mlp_residual = True
748
+ cfg.model.class_head_mlp_hidden_multiplier = 2
749
+ cfg.model.class_head_mlp_dropout = 0.1
750
+
751
+ # (C) Zero-gated spectral demixing cross-attention on the class head.
752
+ cfg.model.use_class_head_demixer = True
753
+ cfg.model.class_head_demixer_layers = 1
754
+ cfg.model.class_head_demixer_heads = 8
755
+ cfg.model.class_head_demixer_dropout = 0.1
756
+
757
+ # (E) Class head gets its own LR group.
758
+ cfg.class_head_lr_scale = 0.3
759
+ cfg.class_head_freeze_during_ramp_epochs = 4
760
+ cfg.class_head_lr_scale_during_ramp = 0.0
761
+
762
+ cfg.num_epochs = 12
763
+ cfg.output_dir = "checkpoints/spatial_beats_ov1_local_spatial_v9_ov123_exp/03_ov123_top4"
764
+ return cfg
765
+ ```
766
+
767
+ ### 10.2 preset 注册
768
+
769
+ `train_spatial_beats.py` 中两处:
770
+
771
+ 1. 在 `args.preset == "ov1_local_spatial_v8a_ov123_top4"` 分支之后,新增:
772
+ ```python
773
+ elif args.preset == "ov1_local_spatial_v9_ov123_top4":
774
+ cfg = make_ov1_local_spatial_v9_ov123_top4_config(
775
+ ov1_manifest_path=args.ov1_manifest,
776
+ ov2_manifest_path=args.ov2_manifest,
777
+ ov3_manifest_path=args.ov3_manifest,
778
+ )
779
+ ```
780
+ 2. argparse `--preset` 的 `choices=(...)` 列表里在 `"ov1_local_spatial_v8a_ov123_top4"` 之后加入 `"ov1_local_spatial_v9_ov123_top4"`。
781
+
782
+ ### 10.3 `run_ov1_v9_ov123_top4.sh`
783
+
784
+ 新建文件(chmod +x):
785
+
786
+ ```bash
787
+ #!/usr/bin/env bash
788
+ set -euo pipefail
789
+
790
+ # v9_ov123_top4: v8a + class-first cleanup (Fix A..F from docs/0423.md analysis)
791
+ # 所有 fix 都是 additive + zero-init,从 v8a best.pt 热启动 epoch-0 输出与 v8a 完全相同
792
+
793
+ GPUS="${GPUS:-8}"
794
+ BATCH_SIZE="${BATCH_SIZE:-8}"
795
+ NUM_WORKERS="${NUM_WORKERS:-8}"
796
+ SPATIAL_EPOCHS="${SPATIAL_EPOCHS:-12}"
797
+ SPATIAL_LR="${SPATIAL_LR:-1.5e-5}"
798
+ AMP="${AMP:-fp32}"
799
+
800
+ OV1_MANIFEST="${OV1_MANIFEST:-/apdcephfs_cq10/.../ov1_foa.jsonl}"
801
+ OV2_MANIFEST="${OV2_MANIFEST:-/apdcephfs_cq10/.../ov2_foa.jsonl}"
802
+ OV3_MANIFEST="${OV3_MANIFEST:-/apdcephfs_cq10/.../ov3_foa.jsonl}"
803
+
804
+ RESUME_CKPT="${RESUME_CKPT:-checkpoints/spatial_beats_ov1_local_spatial_v8a_ov123_exp/03_ov123_top4/best.pt}"
805
+ OUT_DIR="${OUT_DIR:-checkpoints/spatial_beats_ov1_local_spatial_v9_ov123_exp/03_ov123_top4}"
806
+
807
+ torchrun --nproc_per_node="${GPUS}" --master-port="${MASTER_PORT:-29557}" train_spatial_beats.py \
808
+ --preset ov1_local_spatial_v9_ov123_top4 \
809
+ --resume "${RESUME_CKPT}" \
810
+ --output-dir "${OUT_DIR}" \
811
+ --ov1-manifest "${OV1_MANIFEST}" \
812
+ --ov2-manifest "${OV2_MANIFEST}" \
813
+ --ov3-manifest "${OV3_MANIFEST}" \
814
+ --batch-size "${BATCH_SIZE}" \
815
+ --num-workers "${NUM_WORKERS}" \
816
+ --num-epochs "${SPATIAL_EPOCHS}" \
817
+ --learning-rate "${SPATIAL_LR}" \
818
+ --amp "${AMP}" \
819
+ --no-resume-optimizer \
820
+ --reset-epoch-on-resume \
821
+ --reset-best-on-resume
822
+ ```
823
+
824
+ ---
825
+
826
+ ## 11. 正确性验证(已完成)
827
+
828
+ ### 11.1 语法检查
829
+
830
+ 四个 py 文件(`train_spatial_beats.py` / `spatial_loss.py` / `spatial_beats.py` / `spatial_modules.py`)+ `run_ov1_v9_ov123_top4.sh` 全部通过 ast.parse / bash -n。
831
+
832
+ ### 11.2 模块级单测
833
+
834
+ `FrameTrackPredictionHeads` + `ClassHeadSpectralDemixer`:
835
+ - 开启所有 v9 选项后,**max abs diff = 0.00e+00** 相对于无 v9 选项的同一模型;
836
+ - 带 padding mask 时 `pred_class_logits` 无 NaN;
837
+ - 打开 MLP gate / demixer gate + 轻微扰动权重后,logits 差异 ~1e-2(符合预期)。
838
+
839
+ ### 11.3 v9 vs v8a 端到端前向恒等
840
+
841
+ ```python
842
+ torch.manual_seed(42)
843
+ m_v8a = SpatialBEATs(make_ov1_local_spatial_v8a_ov123_top4_config().model).eval()
844
+ torch.manual_seed(42)
845
+ m_v9 = SpatialBEATs(make_ov1_local_spatial_v9_ov123_top4_config().model).eval()
846
+
847
+ # 两个模型都 load v8a/best.pt,strict=False
848
+ # 同一 waveform 输入
849
+ max_abs_diff = (o_v8a - o_v9).abs().max()
850
+ # 实测:0.00e+00
851
+ ```
852
+
853
+ **v9 加载 v8a ckpt 后的 `pred_class_logits` 与 v8a 模型加载同一 ckpt 的输出逐元素完全相等**(0.00e+00)。
854
+
855
+ ### 11.4 v8a ckpt 加载统计
856
+
857
+ ```
858
+ ckpt keys = 425
859
+ loadable (v9 shapes) = 425
860
+ v9 missing params = 18 ← class_head_mlp.* (7 个) + class_head_demixer.* (11 个)
861
+ ckpt unexpected = 0
862
+ ```
863
+
864
+ 18 个新参数通过 `strict=False` 默认初始化(按 Fix C / F 的 zero-out-proj + tiny-gate 策略)。
865
+
866
+ ### 11.5 梯度流
867
+
868
+ 假 CE loss + backward:
869
+ - `class_head.weight`:grad_norm ≈ 9.06(正常)
870
+ - `class_head_mlp.4.weight`(MLP 最后一层,zero-init):grad_norm ≈ 1.32e-1(**非零,因为 gate = 1e-2**)
871
+ - `class_head_mlp.0.weight`(MLP 第一层):grad_norm = 0(正常,要等最后一层非零后才有梯度,1 step 内开解)
872
+ - `class_head_demixer.out_proj.weight`:grad_norm ≈ 1.60e-2(**非零**)
873
+ - `class_head_demixer.layers.0.in_proj_weight`:grad_norm = 0(同理)
874
+
875
+ ### 11.6 Optimizer 分组
876
+
877
+ ```
878
+ group 0: name=trunk lr=3.00e-06 n_params=238
879
+ group 1: name=spatial lr=9.00e-06 n_params= 84
880
+ group 2: name=head lr=3.00e-05 n_params= 91
881
+ group 3: name=cls_head lr=9.00e-06 n_params= 19
882
+ ```
883
+
884
+ (上例 base_lr=3e-5;v9 启动脚本里 SPATIAL_LR=1.5e-5,对应 cls_head lr = 4.5e-6。)
885
+
886
+ ## 12. 关键训练时间线(SPATIAL_EPOCHS=12)
887
+
888
+ 继承 v8a 的 `frame_spatial_loss_warmup_epochs=3`、`frame_spatial_loss_ramp_epochs=4`,叠加 v9 新的 cls_head LR 调��:
889
+
890
+ | epoch | lambda_dir / dist | dir/dist match cost | cls_head lr | 说明 |
891
+ |---|---|---|---|---|
892
+ | 0-2 | 0.0 | 0.0 | 4.5e-6 | Stage 1:class-only warmup,cls_head 低 LR 继续微调(但本来就 v8a 延续) |
893
+ | 3 | ramp 0.25 | 0.25 | **0.0** | Stage 2 起点,cls_head 冻结 |
894
+ | 4 | ramp 0.50 | 0.50 | **0.0** | cls_head 冻结 |
895
+ | 5 | ramp 0.75 | 0.75 | **0.0** | cls_head 冻结 |
896
+ | 6 | ramp 1.00 | 1.00 | **0.0** | cls_head 冻结,DOA 全开 |
897
+ | 7-11 | 1.0 | 1.0 | 4.5e-6 | Stage 3:全部放开,cls_head 低 LR 微调 |
898
+
899
+ ## 13. 验证清单 / 观察优先级
900
+
901
+ 启动后按以下顺序观察指标:
902
+
903
+ 1. **epoch 0 validation metrics 是否与 v8a 的最后一个 epoch 等价**
904
+ - 预期 val loss ≈ v8a best val loss(因为前向 = v8a)
905
+ - 若不等价,说明 hot-start 出问题;
906
+ 2. **epoch 0-2(stage 1)**:
907
+ - `ocls`(oracle class acc)是否比 v8a ep2 同期高?关键指标,主要受 Fix D + B + C + F 驱动;
908
+ - 若 Fix D 生效:aircraft / vehicle 不再 0%,frog 不再 100%→bird;
909
+ - 若 Fix B 生效:smooth CE loss 比 hard CE 降得更快(从 1 - eps 开始);
910
+ - 若 Fix C/F 生效:每 epoch 训完后 `class_head_mlp_gate` / `class_head_demixer.gate` 应从 0.01 慢慢增长;
911
+ 3. **epoch 3-6(stage 2,cls_head 冻结)**:
912
+ - DOA 指标改善(`LE_CD` 下降,`oazi` 下降),`ocls` **不应退化**(cls_head LR=0,梯度不回传);
913
+ - 若 `ocls` 退化:可能是 fusion/trunk 的梯度通过 demixer 影响了 class_head 输入分布,此时需要考虑把 demixer 也一起冻;
914
+ 4. **epoch 7+(stage 3,全开)**:
915
+ - `F20` 是否突破 v8a 的上限(v7h 基线 0.246,v8a ~ 0.22-0.25);
916
+ - ov3 class_ok 是否从 43% 往上走;
917
+ - 若 ov2/ov3 class_ok 都有改善但 ov3 仍然落后:Fix C 的频谱 demixing 还需要再加层数或 heads。
918
+
919
+ ## 14. 代码 diff 总览
920
+
921
+ ### 14.1 `spatial_loss.py`
922
+ - 新增 2 个 `SpatialLossConfig` 字段:`frame_class_ontology_smoothing`、`frame_class_ontology_groups`;
923
+ - `__post_init__` 处理 `frame_class_ontology_groups = None`;
924
+ - `compute_frame_track_losses` 里 CE 分支支持 soft target + class weight 复合。
925
+
926
+ ### 14.2 `spatial_modules.py`
927
+ - `FrameTrackPredictionHeads.__init__` 新增 6 个 kwargs;
928
+ - `FrameTrackPredictionHeads.forward` 新增 3 个 Optional kwargs(`pre_pool_features` / `pre_pool_grid_size` / `pre_pool_time_mask`),内部整合 demixer + MLP residual;
929
+ - 新增 `ClassHeadSpectralDemixer` 模块。
930
+
931
+ ### 14.3 `spatial_beats.py`
932
+ - `SpatialBEATsConfig.__init__` 新增 8 个 `self.*` 字段;
933
+ - 两处 `FrameTrackPredictionHeads(...)` 构造传入全部新参数;
934
+ - 两处 `self.frame_track_prediction_heads(...)` 调用传入 pre-pool 参数;
935
+ - 新增 `SpatialBEATs._derive_pre_pool_time_mask` 实例方法。
936
+
937
+ ### 14.4 `train_spatial_beats.py`
938
+ - `TrainSpatialBEATsConfig` 新增 3 个字段:`class_head_lr_scale`、`class_head_freeze_during_ramp_epochs`、`class_head_lr_scale_during_ramp`;
939
+ - 新增常量 `_V9_CLASS_WEIGHTS`(63 长度)+ `_V9_ONTOLOGY_GROUPS`(8 组,覆盖 62/63 class);
940
+ - 新增 preset 函数 `make_ov1_local_spatial_v9_ov123_top4_config`;
941
+ - `build_optimizer` 新增 `_CLASS_HEAD_PREFIXES`、`cls_head_params` 分组、`group_name` 标签、fast-path 条件更新;
942
+ - epoch loop 动态写 cls_head LR(紧跟 spatial loss schedule 后);
943
+ - preset dispatch 和 `--preset` argparse choices 注册 `ov1_local_spatial_v9_ov123_top4`。
944
+
945
+ ### 14.5 `run_ov1_v9_ov123_top4.sh`
946
+ - 新建 shell 脚本,默认 8 GPU / BS=8 / 12 epoch / LR=1.5e-5 / fp32 / master_port=29557;
947
+ - 默认 RESUME_CKPT 指向 v8a best.pt;
948
+ - 复用 `--no-resume-optimizer --reset-epoch-on-resume --reset-best-on-resume` 三开关。
949
+
950
+ ## 15. 关键文件与行数
951
+
952
+ | 文件 | 新增代码主要位置 |
953
+ |---|---|
954
+ | `spatial_loss.py` | `SpatialLossConfig` 新增字段紧跟 `frame_class_loss_weights` 之后;CE 分支改写在 `compute_frame_track_losses` 内 |
955
+ | `spatial_modules.py` | `FrameTrackPredictionHeads` 整块重写;`ClassHeadSpectralDemixer` 定义在 `FrameTrackPredictionHeads` 之后 |
956
+ | `spatial_beats.py` | `SpatialBEATsConfig.__init__` 的 v9 字段紧跟 `frame_accdoa_dropout`;`_derive_pre_pool_time_mask` 紧跟 `_build_patch_padding_mask` |
957
+ | `train_spatial_beats.py` | `_V9_CLASS_WEIGHTS` 紧跟 `_V7I_CLASS_WEIGHTS` 之后;`_V9_ONTOLOGY_GROUPS` 和 `make_ov1_local_spatial_v9_ov123_top4_config` 紧跟 v7k 系列结束处;`class_head_*_scale` 字段紧跟 `spatial_lr_scale` 之后 |
958
+
959
+ ## 16. 后续计划
960
+
961
+ 如果 v9 ep3 `ocls` 仍不超过 v8a 同期,下一步(v9a/v9b)候选:
962
+
963
+ 1. **demixer 加层**:`class_head_demixer_layers = 2` 或增加 heads 到 16;
964
+ 2. **demixer 冻结共进退**:DOA ramp 期把 `class_head_demixer.*` 也当作 cls_head group 的一部分(目前 `_CLASS_HEAD_PREFIXES` 已经包含它,在 ramp 期也会冻结——已经生效,但需要验证效果);
965
+ 3. **ontology smoothing eps 提升**:0.1 → 0.2,进一步容忍 sibling collapse;
966
+ 4. **source_query_decoder 加正交正则**(前一版建议):`L_orth = ||Q Q^T - I||_F^2`,λ=0.01;
967
+ 5. **重新审视 matching**:如果 cls 瓶颈解了但 F20 仍不涨,回到 `docs/0422.md` 的 track-dead / duplicate 诊断。
968
+
969
+ 但当前 v9 已经把 "class head 本身" 这一块做得比较彻底,应该先跑满 12 epoch 再决定。
docs/0424.md ADDED
@@ -0,0 +1,269 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 2026-04-24 — `v9_real_balanced_10hz` real dump 诊断
2
+
3
+ 本文档记录 `v9_real_balanced_10hz` 在真实数据 dump 上的直接 CSV 诊断结果,不依赖训练日志里的 aggregate `val_metrics`。
4
+
5
+ 相关文件:
6
+ - dump 目录:`checkpoints/v9_10hz_eval_dump/v9_real_balanced_10hz`
7
+ - 统计脚本:[scripts/analyze_csv_dump.py](/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/scripts/analyze_csv_dump.py)
8
+
9
+ ## 1. 背景
10
+
11
+ 用户的核心问题不是 “aggregate 指标多少”,而是:
12
+
13
+ 1. `real_ov1 / real_ov2 / real_ov3` 到底差在哪;
14
+ 2. 是类错、角度错,还是对的 track 没被最终输出;
15
+ 3. `10Hz + real mix` 到底有没有把模型带坏。
16
+
17
+ 为避免继续靠 `oracle_* / F20 / LE_CD` 猜,我们直接分析了导出的 `__pred.csv / __gt.csv`。
18
+
19
+ ## 2. 统计脚本
20
+
21
+ 新增脚本:
22
+
23
+ ```bash
24
+ python3 scripts/analyze_csv_dump.py \
25
+ --dump-dir checkpoints/v9_10hz_eval_dump/v9_real_balanced_10hz
26
+ ```
27
+
28
+ 默认行为:
29
+ - 不做阈值,直接分析 raw `__pred.csv` 的全部 track
30
+
31
+ 分析阈值后的最终输出:
32
+
33
+ ```bash
34
+ python3 scripts/analyze_csv_dump.py \
35
+ --dump-dir checkpoints/v9_10hz_eval_dump/v9_real_balanced_10hz \
36
+ --threshold 0.5 \
37
+ --threshold-sweep 0.3 0.4 0.6
38
+ ```
39
+
40
+ 脚本会输出两类统计:
41
+
42
+ ### 2.1 GT-side
43
+
44
+ 对每个 GT source/frame 看:
45
+
46
+ - `hit_cls_and_angle`
47
+ 含义:至少存在一个同类预测,且最佳角误差 `<=20°`
48
+ - `class_right_angle_wrong`
49
+ 含义:存在同类预测,但最佳角误差 `>20°`
50
+ - `no_same_class_pred_but_other_preds_exist`
51
+ 含义:这帧模型有别的 active 预测,但没有任何同类预测
52
+ - `no_pred_in_frame`
53
+ 含义:这帧一个 active 预测都没有
54
+
55
+ ### 2.2 Pred-side
56
+
57
+ 对 threshold 后的预测看:
58
+
59
+ - `matched_tp`
60
+ 含义:能和某个 GT 做同类且 `<=20°` 的匹配
61
+ - `same_class_angle_wrong_fp`
62
+ 含义:有同类 GT,但角度没进 `20°`
63
+ - `wrong_class_or_spurious_fp`
64
+ 含义:没有任何同类 GT
65
+
66
+ ## 3. 一个重要事实:dump 里的 `pred.csv` 不是最终输出
67
+
68
+ 这次 `v9_real_balanced_10hz` 的 `pred.csv` 保存的是 **每帧 4 条 raw track 输出**,不是已经过 `activity_prob>=0.5` 筛选后的最终预测。
69
+
70
+ 这非常重要,因为它允许我们把问题拆成两层:
71
+
72
+ 1. **raw 4-track 里有没有可用候选**
73
+ 2. **过阈值以后,最终留下来的到底是什么**
74
+
75
+ ## 4. Raw 4-track 结果
76
+
77
+ 命令:
78
+
79
+ ```bash
80
+ python3 scripts/analyze_csv_dump.py \
81
+ --dump-dir checkpoints/v9_10hz_eval_dump/v9_real_balanced_10hz
82
+ ```
83
+
84
+ 核心结果:
85
+
86
+ ### 4.1 `real_ov1`
87
+
88
+ - `avg_gt/frame = 1.00`
89
+ - `avg_pred/frame = 4.00`
90
+ - `hit_cls_and_angle = 54.2%`
91
+ - `class_right_angle_wrong = 45.8%`
92
+ - `no_same_class_pred_but_other_preds_exist = 0.0%`
93
+
94
+ 解释:
95
+ - raw 4 条里,**每个 GT 都能找到同类候选**
96
+ - 其中一半以上角度也已经进了 `20°`
97
+ - 所以单源 real 上,raw 候选并不差
98
+
99
+ ### 4.2 `real_ov2`
100
+
101
+ - `avg_gt/frame = 1.98`
102
+ - `avg_pred/frame = 4.00`
103
+ - `hit_cls_and_angle = 37.4%`
104
+ - `class_right_angle_wrong = 56.9%`
105
+ - `no_same_class_pred_but_other_preds_exist = 5.7%`
106
+
107
+ 解释:
108
+ - raw 4 条里,大多数 GT 还是能找到同类候选
109
+ - 但**主问题已经是角度本身错**
110
+
111
+ ### 4.3 `real_ov3`
112
+
113
+ - `avg_gt/frame = 2.88`
114
+ - `avg_pred/frame = 4.00`
115
+ - `hit_cls_and_angle = 33.9%`
116
+ - `class_right_angle_wrong = 41.6%`
117
+ - `no_same_class_pred_but_other_preds_exist = 24.5%`
118
+
119
+ 解释:
120
+ - 即使给满 4 条 raw 候选,仍有 `24.5%` 的 GT 找不到任何同类预测
121
+ - 所以 `real_ov3` 从 raw 层面就已经有明显 `class/source binding` 问题
122
+
123
+ ## 5. `activity>=0.5` 后的结果
124
+
125
+ 命令:
126
+
127
+ ```bash
128
+ python3 scripts/analyze_csv_dump.py \
129
+ --dump-dir checkpoints/v9_10hz_eval_dump/v9_real_balanced_10hz \
130
+ --threshold 0.5
131
+ ```
132
+
133
+ ### 5.1 `real_ov1`
134
+
135
+ - `avg_gt/frame = 1.00`
136
+ - `avg_pred/frame = 1.14`
137
+ - `hit_cls_and_angle = 22.4%`
138
+ - `class_right_angle_wrong = 40.2%`
139
+ - `no_same_class_pred_but_other_preds_exist = 37.3%`
140
+
141
+ 解释:
142
+ - raw 4-track 时,同类候选是 `100%` 存在的
143
+ - 过阈值后,`37.3%` 的 GT 直接变成 “这帧有别的 active 预测,但没有同类预测”
144
+ - 这说明 `real_ov1` 的主问题不是 “不会预测”,而是:
145
+ - 对的 track 没被留住
146
+ - 或被别的错 track 抢走
147
+ - 也就是 **decode / track ranking / calibration** 问题
148
+
149
+ ### 5.2 `real_ov2`
150
+
151
+ - `avg_gt/frame = 1.98`
152
+ - `avg_pred/frame = 1.93`
153
+ - `hit_cls_and_angle = 17.9%`
154
+ - `class_right_angle_wrong = 73.9%`
155
+ - `no_same_class_pred_but_other_preds_exist = 8.2%`
156
+
157
+ 解释:
158
+ - 轨数和 GT 基本对齐,不是明显少报
159
+ - 主要失败项是 **同类有了,但角度错**
160
+ - 所以 `real_ov2` 主问题不是 threshold,也不是主要类错,而是 **角度本身错**
161
+
162
+ ### 5.3 `real_ov3`
163
+
164
+ - `avg_gt/frame = 2.88`
165
+ - `avg_pred/frame = 1.82`
166
+ - `247` 帧里有 `161` 帧是 `pred < gt`
167
+ - `hit_cls_and_angle = 26.3%`
168
+ - `class_right_angle_wrong = 30.2%`
169
+ - `no_same_class_pred_but_other_preds_exist = 43.5%`
170
+
171
+ 解释:
172
+ - 这里同时有三件事:
173
+ 1. **active 轨数不够**
174
+ 2. **同类 track 经常找不到**
175
+ 3. 即使找到了,同类里也有不少角度不对
176
+
177
+ 因此 `real_ov3` 是:
178
+ - `binding` 错
179
+ - `decode` 少亮轨
180
+ - `angle` 也错
181
+
182
+ 三件事叠在一起。
183
+
184
+ ## 6. Threshold sweep:是不是纯阈值问题
185
+
186
+ 命令:
187
+
188
+ ```bash
189
+ python3 scripts/analyze_csv_dump.py \
190
+ --dump-dir checkpoints/v9_10hz_eval_dump/v9_real_balanced_10hz \
191
+ --threshold 0.5 \
192
+ --threshold-sweep 0.3 0.4 0.6
193
+ ```
194
+
195
+ ### 6.1 `real_ov1`
196
+
197
+ 从 `0.3 -> 0.6`:
198
+
199
+ - `avg_pred/frame` 几乎不变:`1.14 -> 1.05`
200
+ - `hit` 基本只在高阈值 `0.6` 时下降
201
+ - `no_same_cls` 一直很高:`37.3% -> 43.4%`
202
+
203
+ 结论:
204
+ - **不是简单阈值问题**
205
+ - 更像是对的 track 本来就没排到最终输出前面
206
+
207
+ ### 6.2 `real_ov2`
208
+
209
+ 从 `0.3 -> 0.6`:
210
+
211
+ - `avg_pred/frame` 几乎不变:`1.99 -> 1.91`
212
+ - `hit` 几乎不变:`17.9% -> 17.8%`
213
+ - `class_right_angle_wrong` 一直卡在 `73%` 左右
214
+
215
+ 结论:
216
+ - **几乎完全不是 threshold 问题**
217
+ - 就是 **角度头本身错**
218
+
219
+ ### 6.3 `real_ov3`
220
+
221
+ 从 `0.5 -> 0.3`:
222
+
223
+ - `avg_pred/frame` 从 `1.82 -> 2.15`
224
+ - `under_frames` 从 `161 -> 140`
225
+ - `no_same_cls` 从 `43.5% -> 34.7%`
226
+ - 但 `hit` 只从 `26.3% -> 27.0%`
227
+
228
+ 结论:
229
+ - 降阈值确实能缓一点 “少亮轨”
230
+ - 但收益有限,根问题还在
231
+ - 所以 `real_ov3` 不是纯阈值问题
232
+
233
+ ## 7. 最终结论
234
+
235
+ ### 7.1 每个 split 的主问题
236
+
237
+ - `real_ov1`
238
+ - 主问题:**decode / track ranking / calibration**
239
+ - 证据:raw 4-track 同类候选 `100%` 存在,但阈值后大量 GT 找不到同类 track
240
+
241
+ - `real_ov2`
242
+ - 主问题:**角度本身错**
243
+ - 证据:轨数基本对,class 也不是主要问题,但 `73.9%` 变成 “同类有了但角度错”
244
+
245
+ - `real_ov3`
246
+ - 主问题:**binding 错 + 少亮轨 + 角度错**
247
+ - 证据:
248
+ - raw 层 already `24.5%` 找不到同类
249
+ - threshold 后 `avg_pred/frame = 1.82 < 2.88`
250
+ - 同时还有 `30.2%` 的同类角度错
251
+
252
+ ### 7.2 这次问题不是一句 “real 很差” 能说清的
253
+
254
+ 更准确的说法应该是:
255
+
256
+ - `real_ov1`:内部候选还可以,但最终输出选坏了
257
+ - `real_ov2`:主要是 spatial regression 错
258
+ - `real_ov3`:multi-source 下 source binding 和 spatial 一起掉了
259
+
260
+ ### 7.3 这也解释了为什么只看 aggregate 指标会误判
261
+
262
+ 同一个 `LE_CD / F20` 很差,背后可能是三种完全不同的失败机制:
263
+
264
+ - 对的候选存在,但没被输出
265
+ - 同类 track 有了,但角度偏得很远
266
+ - raw 4-track 里就没把 source 绑定出来
267
+
268
+ 所以以后继续看 real dump 时,应该固定用 `scripts/analyze_csv_dump.py`,先把问题拆成这三类,再决定改哪一层。
269
+
docs/SPATIAL_AUDIO_FRAMEWORKS_ANALYSIS.md ADDED
@@ -0,0 +1,724 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Comprehensive Analysis: Spatial Audio Frameworks & Alternative Architectures in Spatial-BEATs Codebase
2
+
3
+ *Last Updated: 2026-04-27*
4
+ *Analysis Scope: Complete codebase survey for spatial audio frameworks, alternative SELD approaches, and experimental architectures*
5
+
6
+ ---
7
+
8
+ ## Executive Summary
9
+
10
+ This codebase implements **Spatial-BEATs**, a spatial sound event localization and detection (SELD) system built on top of the BEATs audio pre-training model. The implementation includes:
11
+
12
+ 1. **Three parallel multi-source supervision routes** (Routes A/B/C) for per-frame spatial prediction
13
+ 2. **Multiple alternative spatial architectures** already implemented and compared
14
+ 3. **Strong references to existing SELD frameworks** from the DCASE challenge series
15
+ 4. **An experimental series (v11) exploring architectural improvements** through spectral demixing and paradigm shifts
16
+
17
+ All architectures coexist through conditional compilation (no destructive changes), allowing side-by-side comparison.
18
+
19
+ ---
20
+
21
+ ## Part 1: Existing Spatial Audio Frameworks Referenced
22
+
23
+ ### 1.1 **Spatial-AST** (Primary Inspiration)
24
+ - **References**: Mentioned extensively throughout codebase
25
+ - **Location**: `.gitignore:9` explicitly lists "Spatial-AST" as a protected directory
26
+ - **Role**: Foundational work for task-token-based spatial audio processing
27
+ - **Influence in code**:
28
+ - `PreTrunkASTPredictionHeads`: Direct implementation of Spatial-AST task-token architecture (lines 1177-1237 in `spatial_modules.py`)
29
+ - Pre-trunk supervision strategy with separate task tokens for distance, DoA, and class
30
+ - Single-source readout design adapted for multi-source scenarios
31
+
32
+ **Key Characteristic**: Task tokens injected **before** the trunk transformer (pre-trunk), requiring separate head predictions after trunk passage
33
+
34
+ ---
35
+
36
+ ### 1.2 **DCASE Challenge SELD Baseline**
37
+ - **References**: Extensively cited throughout codebase
38
+ - **Location**:
39
+ - `spatial_loss.py` lines 3079-3300+ (SELDMetricsAccumulator, OfficialDCASESELDMetrics)
40
+ - Multiple DCASE-style FOA channel ordering conventions documented
41
+ - Official evaluation metrics implemented: ER20, F20, LE_CD, LR_CD, SELD_score
42
+
43
+ **DCASE Metrics Computed**:
44
+ ```
45
+ SELD = (ER + (1-F) + LE/180 + (1-LR)) / 4
46
+ Where:
47
+ - ER: Error Rate (precision/recall weighted)
48
+ - F: F-score
49
+ - LE: Localization Error (great-circle distance)
50
+ - LR: Localization Recall
51
+ ```
52
+
53
+ **Route C directly borrows DCASE paradigm**:
54
+ - Per-class activity-coupled direction (ACCDOA: Activity-Coupled Cartesian Direction of Arrival)
55
+ - No explicit source-to-slot matching required
56
+ - Simple and stable for ov2/ov3 data constraints (same-class overlap ~ 0)
57
+
58
+ **Connection to DCASE Code**:
59
+ ```python
60
+ # Line 3304 references official implementation:
61
+ # https://github.com/sharathadavanne/seld-dcase2023/blob/master/SELD_evaluation_metrics.py
62
+ ```
63
+
64
+ ---
65
+
66
+ ### 1.3 **EINV2 (Event Independent Network V2)**
67
+ - **References**:
68
+ - `docs/spatial_beats_ov123_frame_routes.md` line 6, 36
69
+ - `run_ov123_local_spatial_track.sh` line 4
70
+
71
+ **EINV2 Paradigm Borrowed**:
72
+ - K learnable track queries per clip (K=4 in current implementation)
73
+ - Clip-level Hungarian matching for track-to-source binding
74
+ - Per-track temporal attention to capture source continuity across frames
75
+ - **Implemented as Route B** in this codebase
76
+
77
+ **Route B Architecture** (`local_spatial_track`):
78
+ ```
79
+ SourceQueryDecoder:
80
+ ├─ Stage 1 (track-level): K queries → TransformerDecoder → [B, K, D] track latents
81
+ └─ Stage 2 (per-frame): Expand with temporal positional embeddings → [B, K, T_s, D]
82
+
83
+ FrameTrackPredictionHeads:
84
+ ├─ Activity prediction: [B, K, T_s, 1]
85
+ ├─ Class prediction: [B, K, T_s, num_classes]
86
+ ├─ Direction prediction (L2-norm): [B, K, T_s, 3]
87
+ └─ Distance prediction (softplus): [B, K, T_s, 1]
88
+ ```
89
+
90
+ **Key Innovation from v9→v11a/b**: Added `ClassHeadSpectralDemixer` to break the bottleneck where multiple sources were compressed into a single D-dim vector after frequency pooling
91
+
92
+ ---
93
+
94
+ ## Part 2: Three Parallel Multi-Source Supervision Routes
95
+
96
+ All three routes coexist through conditional compilation (no conflicts):
97
+
98
+ ### 2.1 **Route A: `local_spatial_slot`** (Per-frame K-slot assignment)
99
+
100
+ **Architecture**:
101
+ ```python
102
+ class FrameSlotHead(nn.Module):
103
+ """Route A — per-frame K-slot head for multi-source supervision."""
104
+ # Per time step independently predicts K slots
105
+ # Each slot: class, direction (L2-norm), distance (softplus)
106
+ # Per-step Hungarian matching for source assignment
107
+ ```
108
+
109
+ **Supervision Strategy**:
110
+ - `compute_frame_slot_losses()` (line 2573+ in `spatial_loss.py`)
111
+ - Per-frame independent slot allocation (no temporal continuity assumption)
112
+ - Per-step Hungarian matching to assign ground-truth sources to K slots
113
+ - Loss weighted: `w_act + w_cls + w_dir + w_dist` per (batch, time, slot)
114
+
115
+ **Loss Configuration** (Route A typical):
116
+ ```python
117
+ lambda_frame_activity = 1.0
118
+ lambda_frame_class = 1.0
119
+ lambda_frame_direction = 4.0
120
+ lambda_frame_distance = 1.0
121
+ lambda_clip_aux = 0.1
122
+ frame_num_slots = 4
123
+ ```
124
+
125
+ **When to Use**: Scenarios with frequent source entry/exit and short trajectories
126
+
127
+ **Shell Script**: `run_ov123_local_spatial_slot.sh`
128
+
129
+ ---
130
+
131
+ ### 2.2 **Route B: `local_spatial_track`** (K track queries with temporal self-attention)
132
+
133
+ **Architecture** (Already documented above):
134
+ - Two-stage Transformer decoder (`SourceQueryDecoder`)
135
+ - Learnable source queries with temporal positional embeddings
136
+ - Clip-level Hungarian matching (not per-step)
137
+ - Strong temporal coherence assumption
138
+
139
+ **Supervision Strategy**:
140
+ - `compute_frame_track_losses()` (line 2682+ in `spatial_loss.py`)
141
+ - Clip-level Hungarian: matched track k* ↔ gt source n*
142
+ - Per-matched-track supervision across entire time window
143
+ - Unmatched tracks supervised as "inactive" across all frames
144
+
145
+ **Loss Configuration** (Route B typical):
146
+ ```python
147
+ lambda_frame_activity = 1.0
148
+ lambda_frame_class = 1.0
149
+ lambda_frame_direction = 4.0
150
+ lambda_frame_distance = 1.0
151
+ lambda_clip_aux = 0.1
152
+ frame_num_slots = 4 # via num_queries in SourceQueryDecoder
153
+ ```
154
+
155
+ **When to Use**: Continuous source trajectories, inter-frame identity persistence important
156
+
157
+ **Shell Script**: `run_ov123_local_spatial_track.sh`
158
+
159
+ **EINV2 Connection**: This route is explicitly designed as Spatial-BEATs' interpretation of EINV2's event-independent tracking paradigm
160
+
161
+ ---
162
+
163
+ ### 2.3 **Route C: `local_spatial_accdoa`** (Per-class ACCDOA vector field)
164
+
165
+ **Architecture**:
166
+ ```python
167
+ class ACCDOAHeads(nn.Module):
168
+ """Route C — per-class per-frame ACCDOA head.
169
+
170
+ For each (batch, time, class) emits a 3D vector v whose:
171
+ - Magnitude (||v||) encodes class activity at that frame
172
+ - Direction (v/||v||) encodes DoA (azimuth, elevation)
173
+ - Distance predicted separately per (batch, time, class)
174
+
175
+ Output:
176
+ pred_accdoa: [B, T_s, num_classes, 3]
177
+ pred_distance: [B, T_s, num_classes]
178
+ """
179
+ ```
180
+
181
+ **Key Properties**:
182
+ - **No explicit matching** required (no Hungarian, no query assignment)
183
+ - **Per-class decomposition**: Each class has its own spatial slot → eliminates binding ambiguity
184
+ - **Activity-coupled**: Class activity directly from vector magnitude (||v||)
185
+ - **Assumes**: No same-class overlap within a frame (true for ov2/ov3)
186
+
187
+ **Supervision Strategy**:
188
+ - `compute_frame_accdoa_losses()` (line 2857+ in `spatial_loss.py`)
189
+ - Target construction (lines 2803-2854):
190
+ ```python
191
+ # For each valid source at (b, t, class):
192
+ accdoa_target[b, t, cls, :] = unit_direction_vector
193
+ distance_target[b, t, cls] = distance_value
194
+ # Otherwise: accdoa_target = zero vector, distance masked out
195
+ ```
196
+ - Loss = MSE(predicted_accdoa, target_accdoa) across valid time steps
197
+ - Distance = smooth_l1 loss only for active (b,t,c) locations
198
+
199
+ **Loss Configuration** (Route C - ACCDOA specific):
200
+ ```python
201
+ lambda_frame_activity = 4.0 # ACCDOA MSE dominates
202
+ lambda_frame_class = 0.0 # No separate class CE (implied by per-class slot)
203
+ lambda_frame_direction = 0.0 # No separate direction (in ACCDOA MSE already)
204
+ lambda_frame_distance = 1.0
205
+ lambda_clip_aux = 0.1
206
+ frame_accdoa_activity_threshold = 0.5 # For inference: ||v|| > 0.5 → active
207
+ ```
208
+
209
+ **When to Use**:
210
+ - No same-class overlap constraint (ov2/ov3 data)
211
+ - Simpler topology, less query binding complexity
212
+ - Per-class interpretation more natural for sound events
213
+
214
+ **Shell Script**: `run_ov123_local_spatial_accdoa.sh`
215
+
216
+ **DCASE Connection**: Directly based on DCASE SELD challenge baseline (Activity-Coupled Cartesian DoA)
217
+
218
+ ---
219
+
220
+ ## Part 3: Historical Architecture Evolution (v7 → v11)
221
+
222
+ ### 3.1 **v7 Series: Early Frame-Level Approaches**
223
+
224
+ **v7 baseline**: Clip-level single-source `LocalSpatialPredictionHeads`
225
+ - Works for ov1 (single source per clip)
226
+ - Can't handle multi-source ov2/ov3
227
+
228
+ **v7→v8 jump**: Introduction of per-frame supervision with per-track queries
229
+
230
+ ---
231
+
232
+ ### 3.2 **v9 Series: Frame-Track with Class-Head Spectral Demixer (Current Baseline)**
233
+
234
+ **v9 Core Innovations**:
235
+ 1. **Symmetric attention through class head spectral demixer** (`ClassHeadSpectralDemixer`)
236
+ - Input: Per-track per-frame features `[B, K, T_s, D]`
237
+ - Problem: Multiple sources compressed into single D-vector after frequency pooling
238
+ - Solution: For class head, attend back to BEATs trunk **pre-pool** tokens `[B, T_p*F_p, D]` with class-specific cross-attention
239
+ - Gate mechanism: `out = (class_head(x) + gate * demixer_mlp(x))`
240
+ - Zero-initialized: `demixer_mlp` output layer starts at 0; gate starts at 1e-2
241
+ - Guarantee: epoch-0 is equivalent to non-demixer baseline
242
+
243
+ 2. **Class-weighted CE loss** (`frame_class_loss_weights = _V9_CLASS_WEIGHTS`)
244
+ - Per-class weight matrix to handle dataset imbalance
245
+ - Located: `train_spatial_beats.py` lines 1674-1769
246
+
247
+ 3. **Direction/Distance heads remain bottlenecked**:
248
+ - Still use only post-pooled `track_time_features`
249
+ - **This is the root cause of real_ov2 failures** (73.9% of predictions have right class but wrong angle)
250
+
251
+ **v9 Loss Weights**:
252
+ ```python
253
+ lambda_frame_activity = 1.0
254
+ lambda_frame_class = 1.0
255
+ lambda_frame_direction = 4.0 # Weighted 4x over activity
256
+ lambda_frame_distance = 1.0
257
+ ```
258
+
259
+ **Configuration Factory**: `make_ov1_local_spatial_v9_ov123_top4_config()`
260
+
261
+ ---
262
+
263
+ ### 3.3 **v10 Series: Phase-Wise Training (Activity Re-balancing)**
264
+
265
+ **v10 Phase-1 (`v10_phase1_cls`)**: Pure classification refinement
266
+ - Freeze all spatial prediction sub-heads (direction_head, distance_head)
267
+ - Train only class head + new `num_active_head` (how many sources active at each frame)
268
+ - Rationale: v9's class recall peaked early (ep3) then dropped; spatial kept improving
269
+ - Hyperparameters:
270
+ ```python
271
+ lambda_frame_direction = 0.0 # Freeze
272
+ lambda_frame_distance = 0.0 # Freeze
273
+ lambda_frame_activity = 0.5 # Weakened to not drag class around
274
+ lambda_frame_num_active = 0.5 # New: multi-source count CE
275
+ base_lr = 7.5e-6 # Halved from v9's 1.5e-5
276
+ ```
277
+
278
+ **v10b (`v10b_phase1_activity`)**: Activity re-balancing on top of v10 phase-1
279
+ - Re-enable spatial heads, but with different activity weighting
280
+ - Diagnosed: v10 phase-1's lambda_frame_activity=0.5 was too weak for ov3
281
+ - Fix:
282
+ ```python
283
+ lambda_frame_activity = 1.0 # Restored
284
+ lambda_frame_num_active = 0.8 # Tuned
285
+ ```
286
+
287
+ **Root Finding**: Activity supervision strength varies by split (ov1/ov2/ov3 imbalances)
288
+
289
+ **Shell Scripts**:
290
+ - `run_ov1_v10_phase1_cls.sh`
291
+ - `run_ov1_v10b_phase1_activity.sh`
292
+
293
+ ---
294
+
295
+ ### 3.4 **v11 Series: Architectural Refinements (2026-04-27)**
296
+
297
+ Four independent experiments to isolate failure modes:
298
+
299
+ #### **v11a: Symmetric Spectral Demixer for DOA**
300
+ - **Problem Diagnosed**: v9 added `ClassHeadSpectralDemixer` for class head only
301
+ - **Real_ov2 Symptom**: 73.9% of predictions have `class_right_angle_wrong`
302
+ - **Root Cause**: direction/distance heads still see only post-pooled vectors
303
+ - **Solution**: Add symmetric `spatial_head_demixer` for direction and distance heads
304
+ ```python
305
+ # In FrameTrackPredictionHeads.__init__:
306
+ self.spatial_head_demixer = ClassHeadSpectralDemixer(...)
307
+ # Attend to BEATs trunk pre-pool tokens just like class_demixer
308
+ ```
309
+ - **Initialization**: Zero-gated (epoch-0 identical to v9)
310
+ - **Configuration Factory**: `make_ov1_local_spatial_v11a_ov123_top4_config()`
311
+ - **Shell Script**: `run_ov1_v11a_ov123_top4.sh`
312
+ - **Expected Outcome**: real_ov2 angle errors should decrease significantly
313
+
314
+ #### **v11b: DOA Demixer with LocalSpatial Pre-Pool KV**
315
+ - **Question**: v11a demixer attends to BEATs mono fbank pre-pool (no direction info)
316
+ - **Hypothesis**: If demixer attends to LocalSpatial's 7-channel (4-FOA + 3-IV) pre-pool, might be better
317
+ - **Implementation**:
318
+ ```python
319
+ LocalSpatialEncoder.forward(return_pre_pool=True)
320
+ # Returns 4D CNN feature before frequency pooling: [B, D_s, T_f, F_cnn]
321
+ # Reshape to [B, T_f*F_cnn, D_s] + grid info
322
+ # Project with local_spatial_pre_pool_proj: Linear(D_s → D=768)
323
+ # Pass to spatial_head_demixer as alternative KV source
324
+ ```
325
+ - **Hyperparameters**:
326
+ - `spatial_demixer_use_local_spatial_kv = True`
327
+ - Demixer gate still 1e-2, output layer still 0
328
+ - **Configuration Factory**: `make_ov1_local_spatial_v11b_ov123_top4_config()`
329
+ - **Shell Script**: `run_ov1_v11b_ov123_top4.sh`
330
+ - **Expected Comparison**:
331
+ - v11b >> v11a → Physical IV signal crucial for DOA (BEATs pre-pool insufficient)
332
+ - v11b ≈ v11a → Already enough spatial context in fuser (IV mixed back in)
333
+ - v11b < v11a → New KV too noisy or proj under-trained
334
+
335
+ #### **v11c: Paradigm Shift to ACCDOA**
336
+ - **Problem Addressed**: real_ov3 24.5% raw GT layer without same-class candidates
337
+ - **Root Cause**: K-track binding (Hungarian matching) failure for ov3
338
+ - **Hypothesis**: Query-binding stage is bottleneck, not head improvements
339
+ - **Solution**: Replace entire Route B topology with Route C (ACCDOA)
340
+ - No queries, no Hungarian, per-class vector slots
341
+ - Each class inherently has its own "slot" → binding non-issue
342
+ - **Initialization**: From ov1 local_spatial warmup checkpoint (strict=False)
343
+ - Reuses: BEATs trunk + LocalSpatialEncoder + fusion stack
344
+ - Replaces: SourceQueryDecoder + FrameTrackPredictionHeads → ACCDOAHeads
345
+ - **Hyperparameters**:
346
+ ```python
347
+ lambda_frame_activity = 4.0 # ACCDOA MSE dominates
348
+ lambda_frame_class = 0.0
349
+ lambda_frame_direction = 0.0
350
+ lambda_frame_distance = 1.0
351
+ num_epochs = 24
352
+ learning_rate = 3e-5 # Conservative (not tuned on multi-source)
353
+ ```
354
+ - **Configuration Factory**: `make_ov1_local_spatial_v11c_ov123_accdoa()`
355
+ - **Shell Script**: `run_ov1_v11c_ov123_accdoa.sh`
356
+ - **Expected Outcome**:
357
+ - real_ov3 `no_same_class_pred_but_other_preds_exist` drops → query binding proven as bottleneck
358
+ - real_ov2 may improve (per-class vector naturally separates sources)
359
+ - sim_ov1 class accuracy may drop slightly (activity-coupling with DOA reduces class signal)
360
+
361
+ #### **v11d: Decode-Time Activity Calibration**
362
+ - **Problem**: real_ov1 loses 37% of same-class candidates post-activity-thresholding
363
+ - **Root Cause**: Threshold (0.5) vs. actual activity probability distribution mismatch
364
+ - **Solution**: Post-hoc decode recalibration (no retraining)
365
+ ```python
366
+ # Three decode strategies:
367
+ 1. threshold: Fixed thr in {0.3, 0.4, 0.5, 0.6}
368
+ 2. topk_hat: Per-frame top-K̂ by activity, K̂ = v10's num_active_head argmax
369
+ 3. topk_hat_min: (K̂ membership) AND (thr > min_thr)
370
+ ```
371
+ - **Tool**: `scripts/calibrate_activity.py` (new, stdlib-only)
372
+ - **Inputs**: Pre-computed `__pred.csv` and `__gt.csv` with `activity_prob` and `num_active_pred` columns
373
+ - **Outputs**: Per-split optimal decode config
374
+ - **Property**: Pure post-processing, no model change, reproducible for all checkpoints
375
+ - **Expected Outcome**: real_ov1 no_same_class drops significantly; real_ov2/ov3 limited gains (their problems are not ranking)
376
+
377
+ **v11 Diagnostic Summary**:
378
+ | Split | Symptom | Candidate Root Cause | Experiment |
379
+ |-------|---------|----------------------|------------|
380
+ | real_ov1 | 37% drop post-thresholding | Ranking/calibration | v11d |
381
+ | real_ov2 | 73.9% class_right_angle_wrong | DOA head bottleneck | v11a/b |
382
+ | real_ov3 | 24.5% no_same_class_candidate | Query binding | v11c |
383
+
384
+ ---
385
+
386
+ ## Part 4: Key Implementation Patterns
387
+
388
+ ### 4.1 **Shared Preprocessing & Fusion Stack**
389
+
390
+ ```python
391
+ # All routes use identical front-end:
392
+ FOA waveform (16kHz, 4ch)
393
+
394
+ SpatialBEATsPreprocessor (mel-spectrogram + log)
395
+
396
+ SpatialPatchEmbedding (patch tokenization)
397
+
398
+ BEATs TransformerEncoder (frozen or LoRA)
399
+
400
+ FrequencyPool (mean across frequency)
401
+
402
+ TemporalResampler (→ 2.5 Hz)
403
+
404
+ LocalSpatialEncoder (FOA-specific spatial encoding)
405
+
406
+ LocalSpatialFusion (semantic + spatial projection)
407
+
408
+ fused_spatial_embeddings: [B, T_s, D] at 2.5 Hz
409
+
410
+ Route-specific readout head (A/B/C/original)
411
+ ```
412
+
413
+ **Fusion Mechanism**:
414
+ ```python
415
+ local_spatial_out = LocalSpatialEncoder(foa_features)
416
+ fused = LayerNorm(semantic_seq + LocalSpatialProjector(local_spatial_out))
417
+ ```
418
+
419
+ **Shared Clip Auxiliary Head** (all routes):
420
+ - `LocalSpatialPredictionHeads` runs in parallel
421
+ - Clip-level single-source supervisions
422
+ - Weight: `lambda_clip_aux = 0.1`
423
+ - Provides stable classification signal for all routes
424
+
425
+ ---
426
+
427
+ ### 4.2 **Spatial Loss Dispatch (spatial_loss.py)**
428
+
429
+ **Conditional Loss Computation**:
430
+ ```python
431
+ if supervision_mode == "local_spatial_slot":
432
+ loss_out = compute_frame_slot_losses(
433
+ prediction=model_output.frame_slot_prediction_output,
434
+ batch=batch, cfg=loss_config)
435
+ elif supervision_mode == "local_spatial_track":
436
+ loss_out = compute_frame_track_losses(...)
437
+ elif supervision_mode == "local_spatial_accdoa":
438
+ loss_out = compute_frame_accdoa_losses(...)
439
+ ```
440
+
441
+ **Loss Output Fields** (reused via semantic mapping):
442
+ ```python
443
+ @dataclass
444
+ class SpatialLossOutput:
445
+ loss_total: Tensor # Weighted sum of components
446
+ loss_activity: Tensor # BCE / ACCDOA magnitude / etc.
447
+ loss_cls: Tensor # Per-source class CE
448
+ loss_dir: Tensor # 1 - cos(direction)
449
+ loss_dist: Tensor # smooth_l1(distance)
450
+ loss_cls_aux: Tensor # Track/slot matched class (route B/A specific)
451
+ loss_temp: Tensor # Clip aux head loss × 0.1
452
+ # No changes to dataclass structure; repurpose fields per route
453
+ ```
454
+
455
+ ---
456
+
457
+ ### 4.3 **Checkpoint Hot-Starting Strategy**
458
+
459
+ **Typical Flow** (for routes A/B/C):
460
+ 1. Initialize from `ov1_local_spatial_run1/best.pt` (ov1 single-source baseline)
461
+ - Carries: BEATs trunk, LocalSpatialEncoder, fusion stack
462
+ - Frozen trunk ensures warm-start stability
463
+ 2. Load with `strict=False` to skip incompatible heads (Route B/C have different head topology)
464
+ 3. New parameters initialized with:
465
+ - LayerNorm: default
466
+ - Linear: trunc_normal_(std=2e-5) for light initialization
467
+ - **Spectral demixer gate**: 1e-2 (near-zero residual)
468
+ - **Spectral demixer output**: zeros (bit-equivalent to baseline at epoch 0)
469
+
470
+ **Route C Special Case** (v11c):
471
+ - v9 best.pt not compatible (no ACCDOAHeads)
472
+ - Hot-start from ov1 local_spatial instead
473
+ - Trade-off: Less pre-training, but topology matches by default
474
+
475
+ ---
476
+
477
+ ## Part 5: Experimental Configurations Summary
478
+
479
+ ### Available Presets:
480
+ ```python
481
+ # Legacy single-source routes (unchanged):
482
+ "ov1_ast" # Spatial-AST style pre-trunk
483
+ "ov1_local_spatial" # Original ov1 baseline
484
+ "ov1_pretrunk_ast" # Pre-trunk task tokens
485
+
486
+ # Multi-source frame-level routes (new):
487
+ "ov123_local_spatial_slot" # Route A
488
+ "ov123_local_spatial_track" # Route B (EINV2-style)
489
+ "ov123_local_spatial_accdoa" # Route C (DCASE SELD style)
490
+
491
+ # v9 series (current production):
492
+ "ov1_local_spatial_v9_ov123_top4"
493
+
494
+ # v10 series (phase-wise):
495
+ "ov1_local_spatial_v10_phase1_cls"
496
+ "ov1_local_spatial_v10b_phase1_activity"
497
+
498
+ # v11 series (architectural refinements):
499
+ "ov1_local_spatial_v11a_ov123_top4" # v9 + spatial demixer
500
+ "ov1_local_spatial_v11b_ov123_top4" # v11a + local spatial KV
501
+ "ov1_local_spatial_v11c_ov123_accdoa" # ACCDOA paradigm
502
+ ```
503
+
504
+ ### Loss Weight Comparison Table:
505
+
506
+ | Preset | `lambda_activity` | `lambda_class` | `lambda_direction` | `lambda_distance` | `lambda_clip_aux` | Notes |
507
+ |--------|-----|-----|-----|-----|-----|---|
508
+ | ov123_local_spatial_slot | 1.0 | 1.0 | 4.0 | 1.0 | 0.1 | Route A (DETR-style) |
509
+ | ov123_local_spatial_track | 1.0 | 1.0 | 4.0 | 1.0 | 0.1 | Route B (EINV2-style) |
510
+ | ov123_local_spatial_accdoa | 4.0 | 0.0 | 0.0 | 1.0 | 0.1 | Route C (DCASE style) |
511
+ | v9_ov123_top4 | 1.0 | 1.0 | 4.0 | 1.0 | 0.1 | + class spectral demixer |
512
+ | v11a_ov123_top4 | 1.0 | 1.0 | 4.0 | 1.0 | 0.1 | v9 + spatial demixer |
513
+ | v11b_ov123_top4 | 1.0 | 1.0 | 4.0 | 1.0 | 0.1 | v11a + local spatial KV |
514
+ | v11c_accdoa | 4.0 | 0.0 | 0.0 | 1.0 | 0.1 | ACCDOA with 24 ep, lr=3e-5 |
515
+
516
+ ---
517
+
518
+ ## Part 6: Code Organization Reference
519
+
520
+ ### Key Files & Line Ranges:
521
+
522
+ **`spatial_modules.py`**:
523
+ - Lines 1177-1237: `PreTrunkASTPredictionHeads` (Spatial-AST single-source)
524
+ - Lines 1240-1310: `FixedSlotReadout` (auxiliary multi-source readout)
525
+ - Lines 1467-1482: `FrameACCDOAPredictionOutput` (dataclass, Route C)
526
+ - Lines 1484-1568: `FrameSlotHead` (Route A)
527
+ - Lines 1569-1684: `SourceQueryDecoder` (Route B, EINV2-style)
528
+ - Lines 1685-2130: `FrameTrackPredictionHeads` (Route B heads)
529
+ - Lines 2132-2198: `ACCDOAHeads` (Route C)
530
+ - Lines 2226-2350+: `FrameWisePredictionHeads` (legacy ov1 frame-wise)
531
+
532
+ **`spatial_loss.py`**:
533
+ - Lines 2573-2650: `compute_frame_slot_losses()` (Route A)
534
+ - Lines 2682-2750: `compute_frame_track_losses()` (Route B)
535
+ - Lines 2803-2854: `_build_accdoa_targets()` (Route C target construction)
536
+ - Lines 2857-2945: `compute_frame_accdoa_losses()` (Route C)
537
+ - Lines 3079-3300: `SELDMetricsAccumulator` + `OfficialDCASESELDMetrics` (DCASE)
538
+ - Lines 3528-3580: `OfficialDCASEMetricsAccumulator` (Route B evaluation)
539
+
540
+ **`spatial_beats.py`**:
541
+ - Lines 347-362: Spatial-AST-style supervision documentation
542
+ - Lines 673: `PreTrunkASTPredictionHeads` instantiation
543
+ - Lines 760-810: `ACCDOAHeads` and route selection logic
544
+ - Lines 1119: Spatial-AST task token encoding in trunk
545
+ - Lines 1260-1350: Single-source Spatial-AST-style output building
546
+
547
+ **`train_spatial_beats.py`**:
548
+ - Lines 570-650: `make_ov1_ast_config()` (Spatial-AST factory)
549
+ - Lines 675-750: BAT/Spatial-AST-style warmup
550
+ - Lines 760-910: `make_ov1_local_spatial_*()` factories
551
+ - Lines 2228-2280: `make_ov1_local_spatial_v9_ov123_top4_config()` (v9 baseline)
552
+ - Lines 2286-2390: `make_ov1_local_spatial_v11a_ov123_top4_config()` (v11a with demixer)
553
+ - Lines 2394-2545: v10 phase-1 and v10b configs
554
+ - Lines 2987-3011: `make_ov123_local_spatial_accdoa_config()` (Route C)
555
+
556
+ **Documentation**:
557
+ - `docs/spatial_beats_ov123_frame_routes.md`: Complete Route A/B/C design spec (36KB)
558
+ - `docs/0427_v11_series.md`: v11 experiments diagnostic (15KB)
559
+ - `docs/spatial_beats_design_guide.md`: Spatial-AST comparison
560
+ - `docs/spatial_beats_implementation_spec.md`: Implementation details
561
+
562
+ ---
563
+
564
+ ## Part 7: Research References & Connections
565
+
566
+ ### Explicit Code References:
567
+ 1. **BEATs** (foundational):
568
+ - https://arxiv.org/abs/2212.09058
569
+ - https://github.com/microsoft/unilm/tree/master/beats
570
+
571
+ 2. **DCASE SELD Evaluation**:
572
+ - https://github.com/sharathadavanne/seld-dcase2023/blob/master/SELD_evaluation_metrics.py
573
+ - Metrics: ER20, F20, LE_CD, LR_CD, SELD_score
574
+
575
+ 3. **SELD Metrics**:
576
+ - Reference implementation: scipy.optimize.linear_sum_assignment (Hungarian)
577
+ - Great-circle distance formula for localization error
578
+ - DCASE gt/pred row format: `[frame_idx, class_id, azi_deg, ele_deg, distance_m]`
579
+
580
+ 4. **AudioMAE** (inspiration for BEATs pre-training):
581
+ - Modified with binaural + IPD front-end in early Spatial-AST work
582
+
583
+ ### Implicit References:
584
+ - **DETR** (Detection Transformer): Influences Route A slot-based design
585
+ - **Transformer Decoders**: Standard PyTorch modules used in Route B (SourceQueryDecoder)
586
+ - **FairSeq**: Referenced in code headers for fairness/best-practice attribution
587
+
588
+ ---
589
+
590
+ ## Part 8: Validation & Evaluation Framework
591
+
592
+ ### Metrics Computed Across All Routes:
593
+
594
+ **Per-epoch validation**:
595
+ - `class_acc`: Matched-source class top-1 accuracy
596
+ - `azi_mae_deg`: Azimuth mean absolute error
597
+ - `ele_mae_deg`: Elevation mean absolute error
598
+ - `dist_mae_m`: Distance mean absolute error
599
+ - `activity_f1`: Per-frame source activity F1-score
600
+ - `num_active_mae`: Mean absolute error in number of active sources
601
+
602
+ **Official DCASE metrics** (when applicable):
603
+ - `ER`: Error Rate (0=perfect, 1=worst)
604
+ - `F`: F-score (0=worst, 1=perfect)
605
+ - `LE_CD`: Localization Error in degrees (0=perfect)
606
+ - `LR_CD`: Localization Recall (0=worst, 1=perfect)
607
+ - `SELD_score`: Joint score = (ER + (1-F) + LE/180 + (1-LR)) / 4
608
+
609
+ **Best metric strategy**:
610
+ - `best_metric_name = "class_acc"` (primary)
611
+ - `minimize_best_metric = False` (maximize accuracy)
612
+ - Fallback: direction error (azimuth MAE)
613
+
614
+ ### Validation Examples:
615
+ All routes produce per-sample JSONL dumps for offline analysis:
616
+ ```python
617
+ build_frame_{slot,track,accdoa}_validation_examples()
618
+ # Outputs: per-sample predictions vs ground-truth for manual inspection
619
+ ```
620
+
621
+ ---
622
+
623
+ ## Part 9: Practical Comparison Guide
624
+
625
+ ### When to Use Each Route:
626
+
627
+ **Route A (Slot)**:
628
+ - ✓ Frequent source entry/exit
629
+ - ✓ Short trajectories
630
+ - ✓ Minimal temporal coherence assumption
631
+ - ✗ Heavy Hungarian per-frame (compute cost)
632
+
633
+ **Route B (Track - EINV2 style)**:
634
+ - ✓ Continuous source trajectories
635
+ - ✓ Strong temporal coherence
636
+ - ✓ Identity persistence across frames important
637
+ - ✓ Current production baseline (v9)
638
+ - ✗ Query binding complexity in crowded ov3 scenarios
639
+
640
+ **Route C (ACCDOA)**:
641
+ - ✓ Simple, no matching required
642
+ - ✓ Per-class decomposition naturally separates sources
643
+ - ✓ Assumes no same-class overlap (ov2/ov3 satisfied)
644
+ - ✓ More interpretable output
645
+ - ✗ Activity and DOA coupled (mag/direction trade-off)
646
+ - ✗ Slightly lower ov1 class accuracy (known trade-off)
647
+
648
+ ### Architecture Progression for Model Development:
649
+
650
+ 1. **Baseline** → Start with v9 (current production)
651
+ 2. **Diagnosis** → Run v11a (is DOA the bottleneck?)
652
+ 3. **Refinement** → Based on v11a results, pick v11b or v11c
653
+ 4. **Post-hoc Tuning** → v11d (activity calibration, if needed)
654
+
655
+ ---
656
+
657
+ ## Part 10: Future Investigation Directions
658
+
659
+ Based on current code exploration:
660
+
661
+ 1. **Hybrid Routes**:
662
+ - Could combine Route B's temporal coherence with Route C's per-class decomposition
663
+ - E.g., per-class track queries (K track queries × num_classes classes)
664
+
665
+ 2. **Demixer Expansion**:
666
+ - v11a/b only address class/direction heads; what about other bottlenecks?
667
+ - Could add demixer to activity head for multi-source activity separation
668
+
669
+ 3. **Loss Reweighting**:
670
+ - Current `lambda_frame_direction=4.0` fixed; could be data/split adaptive
671
+ - v10's phase-wise training shows promise; more sophisticated scheduling?
672
+
673
+ 4. **Temporal Aggregation**:
674
+ - All routes do per-frame independent supervision; temporal smoothing loss could help
675
+ - Route B's temporal decoders unused for loss computation (only forward pass)
676
+
677
+ 5. **Multi-Modal Fusion**:
678
+ - Current: FOA only; could inject synthetic room geometry or source priors
679
+ - BEATs backbone frozen; LoRA tuning on spatial-specific parameters
680
+
681
+ ---
682
+
683
+ ## Appendix: Common Command Reference
684
+
685
+ ```bash
686
+ # Route A training
687
+ ./run_ov123_local_spatial_slot.sh
688
+
689
+ # Route B training (v9 baseline with enhancements)
690
+ ./run_ov1_v9_ov123_top4.sh
691
+ ./run_ov1_v11a_ov123_top4.sh # + spatial demixer
692
+ ./run_ov1_v11b_ov123_top4.sh # + local spatial KV
693
+
694
+ # Route C training (ACCDOA)
695
+ ./run_ov123_local_spatial_accdoa.sh
696
+ ./run_ov1_v11c_ov123_accdoa.sh
697
+
698
+ # v11d: Post-hoc activity calibration
699
+ python3 scripts/calibrate_activity.py --dump-dir <csv_dir>
700
+
701
+ # Evaluation on real splits
702
+ python3 scripts/eval_v7k_real_valid.py \
703
+ --ckpt <ckpt_path> \
704
+ --dump-pred-dir <dump_dir> \
705
+ --dump-splits real_ov1,real_ov2,real_ov3
706
+ ```
707
+
708
+ ---
709
+
710
+ ## Summary of Findings
711
+
712
+ This codebase represents a comprehensive, well-engineered exploration of spatial audio architectures:
713
+
714
+ 1. **Three coexisting paradigms** (Routes A/B/C) allow direct comparison
715
+ 2. **Strong DCASE SELD foundation** with official evaluation metrics
716
+ 3. **Spatial-AST influence** visible in task-token and pre-trunk designs
717
+ 4. **EINV2 adaptation** in Route B's track-query approach
718
+ 5. **Systematic v11 experiments** to isolate architectural failure modes
719
+ 6. **Zero-initialized residuals** enable safe architectural extension without breaking baselines
720
+ 7. **Per-split diagnostics** guide targeted improvements
721
+ 8. **Checkpoint reuse strategy** allows efficient transfer across related tasks
722
+
723
+ The codebase prioritizes **safety** (strict=False loading, zero-init demixers) and **interpretability** (per-route metrics, JSONL dumps) while maintaining experimental rigor (fixed random seeds, official DCASE evaluation).
724
+
docs/SPATIAL_FRAMEWORKS_QUICK_REFERENCE.md ADDED
@@ -0,0 +1,192 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Spatial Audio Frameworks — Quick Reference Card
2
+
3
+ ## Frameworks Found in Codebase
4
+
5
+ ### 1. **Spatial-AST** (Pre-trunk Task Tokens)
6
+ - **File**: `spatial_modules.py` lines 1177-1237
7
+ - **Class**: `PreTrunkASTPredictionHeads`
8
+ - **Strategy**: Task tokens (distance, DoA, class) injected **before** trunk
9
+ - **Single-source only**: Yes (ov1)
10
+ - **Status**: Legacy (can coexist with multi-source routes)
11
+
12
+ ### 2. **DCASE SELD Baseline** (Per-Class ACCDOA)
13
+ - **File**: `spatial_modules.py` lines 2132-2198 (`ACCDOAHeads`)
14
+ - **File**: `spatial_loss.py` lines 2803-2945
15
+ - **Strategy**: Activity-Coupled Cartesian DoA vector field per class
16
+ - **No matching required**: Yes (implicit per-class slots)
17
+ - **Status**: Route C (production alternative)
18
+ - **Metrics**: ER20, F20, LE_CD, LR_CD, SELD_score
19
+
20
+ ### 3. **EINV2** (Event Independent Network)
21
+ - **File**: `spatial_modules.py` lines 1569-2130
22
+ - **Classes**: `SourceQueryDecoder` + `FrameTrackPredictionHeads`
23
+ - **Strategy**: K learnable track queries with clip-level Hungarian
24
+ - **Temporal coherence**: Yes (strong)
25
+ - **Status**: Route B (current production baseline v9)
26
+ - **Variants**: v9 (+ class demixer), v11a (+ spatial demixer), v11b (+ local spatial KV)
27
+
28
+ ## Three Parallel Routes at a Glance
29
+
30
+ | Route | Name | Paradigm | Matching | Temporal | When to Use |
31
+ |-------|------|----------|----------|----------|------------|
32
+ | A | `local_spatial_slot` | DETR-style slots | Per-frame Hungarian | Weak | Frequent entry/exit |
33
+ | B | `local_spatial_track` | EINV2-style queries | Clip-level Hungarian | Strong | Continuous trajectories |
34
+ | C | `local_spatial_accdoa` | DCASE ACCDOA | None | Implicit | Simple, no overlap |
35
+
36
+ ## Version Series Quick Compare
37
+
38
+ | Version | Route | Key Innovation | Loss Weights | Status |
39
+ |---------|-------|-----------------|--------------|--------|
40
+ | v7 | B | Clip-level single-source | — | Legacy |
41
+ | v8a | B | Per-frame frame-track | 1/1/4/1 | Legacy |
42
+ | v9 | B | Class spectral demixer | 1/1/4/1 | **Production** |
43
+ | v10 | B | Phase-1 class focus | 0.5/1/0/0 → 1/1/4/1 | Staging |
44
+ | v10b | B | Activity rebalancing | 1/0.8 adjustments | Staging |
45
+ | v11a | B | Spatial demixer | 1/1/4/1 + DOA demixer | Testing |
46
+ | v11b | B | Local spatial KV | 1/1/4/1 + local KV | Testing |
47
+ | v11c | C | ACCDOA paradigm | 4/0/0/1 | Testing |
48
+ | v11d | — | Activity calibration | Post-hoc decode only | Tool |
49
+
50
+ ## Key Code Locations
51
+
52
+ ### Architecture Classes
53
+ - **Spatial-AST**: `PreTrunkASTPredictionHeads` (line 1177)
54
+ - **EINV2 queries**: `SourceQueryDecoder` (line 1569)
55
+ - **EINV2 heads**: `FrameTrackPredictionHeads` (line 1685)
56
+ - **DCASE ACCDOA**: `ACCDOAHeads` (line 2132)
57
+ - **DETR slots**: `FrameSlotHead` (line 1484)
58
+
59
+ ### Loss Functions
60
+ - **Route A losses**: `compute_frame_slot_losses()` (line 2573)
61
+ - **Route B losses**: `compute_frame_track_losses()` (line 2682)
62
+ - **Route C losses**: `compute_frame_accdoa_losses()` (line 2857)
63
+ - **DCASE metrics**: `OfficialDCASESELDMetrics` (line 3300)
64
+
65
+ ### Configuration Factories
66
+ - **Spatial-AST**: `make_ov1_ast_config()` (line 570)
67
+ - **v9 Route B**: `make_ov1_local_spatial_v9_ov123_top4_config()` (line 2228)
68
+ - **v11a demixer**: `make_ov1_local_spatial_v11a_ov123_top4_config()` (line 2286)
69
+ - **v11c ACCDOA**: `make_ov123_local_spatial_accdoa_config()` (line 2987)
70
+
71
+ ## Common Loss Weight Patterns
72
+
73
+ ```python
74
+ # Route A (Slot) / Route B (Track)
75
+ lambda_frame_activity = 1.0
76
+ lambda_frame_class = 1.0
77
+ lambda_frame_direction = 4.0 # 4x weighted
78
+ lambda_frame_distance = 1.0
79
+ lambda_clip_aux = 0.1
80
+
81
+ # Route C (ACCDOA)
82
+ lambda_frame_activity = 4.0 # MSE dominates
83
+ lambda_frame_class = 0.0 # (implicit in per-class slot)
84
+ lambda_frame_direction = 0.0 # (implicit in ACCDOA)
85
+ lambda_frame_distance = 1.0
86
+ lambda_clip_aux = 0.1
87
+ ```
88
+
89
+ ## Hot-Start Checkpoint Pattern
90
+
91
+ All routes (A/B/C) typically start from:
92
+ ```
93
+ checkpoints/spatial_beats_ov1_local_spatial_run1/best.pt
94
+ ```
95
+
96
+ Load with `strict=False`:
97
+ - ✓ Reuse: BEATs trunk, LocalSpatialEncoder, fusion stack
98
+ - ✗ Skip: Incompatible prediction heads
99
+ - New params: zero-initialized (demixer gate=1e-2)
100
+ - Guarantee: epoch-0 identical to baseline
101
+
102
+ ## Shell Scripts for Running Experiments
103
+
104
+ ```bash
105
+ # Route A
106
+ ./run_ov123_local_spatial_slot.sh
107
+
108
+ # Route B (v9 current production)
109
+ ./run_ov1_v9_ov123_top4.sh
110
+
111
+ # Route B (v11a with spatial demixer)
112
+ ./run_ov1_v11a_ov123_top4.sh
113
+
114
+ # Route B (v11b with local spatial KV)
115
+ ./run_ov1_v11b_ov123_top4.sh
116
+
117
+ # Route C (ACCDOA)
118
+ ./run_ov1_v11c_ov123_accdoa.sh
119
+
120
+ # v11d (activity calibration, post-hoc)
121
+ python3 scripts/calibrate_activity.py --dump-dir <csv_dir>
122
+ ```
123
+
124
+ ## Failure Mode → Experiment Mapping (v11 Series)
125
+
126
+ | Split | Symptom | Root Cause | Experiment |
127
+ |-------|---------|-----------|------------|
128
+ | real_ov1 | 37% loss post-threshold | Ranking/activity calibration | v11d |
129
+ | real_ov2 | 73.9% class_right_angle_wrong | DOA head bottleneck | v11a / v11b |
130
+ | real_ov3 | 24.5% no_same_class_candidate | Query-to-source binding | v11c |
131
+
132
+ ## Key Constraints & Design Decisions
133
+
134
+ �� **All coexist** through conditional compilation (readout_scheme selection)
135
+ ✓ **Zero-initialized demixers** ensure epoch-0 bit-equivalence to baselines
136
+ ✓ **Shared clip aux head** provides stable classification signal for all routes
137
+ ✓ **No matching** for Route C (ACCDOA) — eliminates binding complexity
138
+ ✓ **Frozen trunk** during stage 1 training (warm-start stability)
139
+ ✓ **official DCASE evaluator** for reproducible cross-framework comparison
140
+
141
+ ## References in Code
142
+
143
+ - **Spatial-AST inspiration**: `.gitignore:9` (protected directory)
144
+ - **DCASE SELD baseline**: `https://github.com/sharathadavanne/seld-dcase2023/`
145
+ - **BEATs foundational model**: `https://arxiv.org/abs/2212.09058`
146
+ - **EINV2 paradigm**: Docs lines mention "EINV2 track-wise" in route comparisons
147
+
148
+ ## For Comparative Studies
149
+
150
+ Use this table to rapidly compare framework properties:
151
+
152
+ ```python
153
+ FRAMEWORKS = {
154
+ "Spatial-AST": {
155
+ "class": "PreTrunkASTPredictionHeads",
156
+ "paradigm": "pre-trunk task tokens",
157
+ "sources": 1, # single-source only
158
+ "matching": None,
159
+ "temporal": "none",
160
+ "file": "spatial_modules.py:1177",
161
+ },
162
+ "DCASE-ACCDOA": {
163
+ "class": "ACCDOAHeads",
164
+ "paradigm": "per-class vector field",
165
+ "sources": "multi (ov2/ov3)",
166
+ "matching": "none",
167
+ "temporal": "implicit per-class",
168
+ "file": "spatial_modules.py:2132",
169
+ },
170
+ "EINV2": {
171
+ "class": "SourceQueryDecoder + FrameTrackPredictionHeads",
172
+ "paradigm": "learnable track queries",
173
+ "sources": "multi (ov2/ov3)",
174
+ "matching": "clip-level Hungarian",
175
+ "temporal": "strong (query persistence)",
176
+ "file": "spatial_modules.py:1569,1685",
177
+ },
178
+ "DETR-inspired": {
179
+ "class": "FrameSlotHead",
180
+ "paradigm": "per-frame slot allocation",
181
+ "sources": "multi (ov2/ov3)",
182
+ "matching": "per-frame Hungarian",
183
+ "temporal": "weak (per-step independent)",
184
+ "file": "spatial_modules.py:1484",
185
+ },
186
+ }
187
+ ```
188
+
189
+ ---
190
+
191
+ **Last Updated**: 2026-04-27
192
+ **For full analysis**: See `docs/SPATIAL_AUDIO_FRAMEWORKS_ANALYSIS.md`
docs/spatial_beats_design_guide.md ADDED
@@ -0,0 +1,603 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Spatial-BEATs 设计与训练指南
2
+
3
+ ## 1. 文档目标
4
+
5
+ 本文档用于整理本项目中 `Spatial-BEATs` 的任务定义、模型改造方向、保留与替换的模块、训练方法,以及后续接入 LLM 的接口约定。
6
+
7
+ 目标是基于公开的 BEATs 框架,构建一个独立的 `Spatial Encoder`:
8
+
9
+ - 输入为 `FOA 音频` 及其派生的 `FOA 空间特征`
10
+ - 主干尽可能复用 `BEATs backbone` 和其预训练权重
11
+ - 输出为一组 `Spatial Tokens`
12
+ - 这些 `Spatial Tokens` 作为独立模态输入给 LLM
13
+ - 原有的语义 audio encoder 保持不动,避免直接与空间 encoder 混合后产生职责不清或语义冲突
14
+
15
+ 本设计不是在原有 LLM audio encoder 上强行加入空间分支,而是单独训练一个 `Spatial-BEATs`,让其专注于空间感知和空间结构建模。
16
+
17
+ ## 2. 任务定义
18
+
19
+ ### 2.1 核心任务
20
+
21
+ `Spatial-BEATs` 的核心任务不是通用音频语义分类,而是:
22
+
23
+ 1. 从 `FOA` 输入中提取与空间位置相关的结构化表示
24
+ 2. 在多源场景中输出 `source-level spatial tokens`
25
+ 3. 每个 token 尽量对应一个潜在声源,编码其空间信息
26
+ 4. 后续由 LLM 使用这些 token 完成空间关系理解和推理
27
+
28
+ ### 2.2 输入与输出
29
+
30
+ 输入:
31
+
32
+ - 原始 `FOA waveform`
33
+ - 或由 `FOA waveform` 计算得到的 `FOA 特征图`
34
+
35
+ 推荐特征:
36
+
37
+ - `W, X, Y, Z` 的 log-mel
38
+ - `IV (Intensity Vector)`,例如 `IVx, IVy, IVz`
39
+ - 可选的 `diffuseness / coherence / phase-related` 特征
40
+
41
+ 输出:
42
+
43
+ - `K` 个 `Spatial Tokens`
44
+ - 每个 token 对应一个潜在声源或一个空间实体
45
+ - 每个 token 供下游预测:
46
+ - `objectness`
47
+ - `azimuth`
48
+ - `elevation`
49
+ - `distance`
50
+ - 可选的 `class embedding / source type embedding`
51
+
52
+ ### 2.3 为什么不是只用 W
53
+
54
+ 只让 `W` 通道经过 backbone,本质上更像单通道语义编码,空间线索主要被放到外挂 adapter 中。
55
+ 这不符合本项目目标,因为这里希望:
56
+
57
+ - 整个 `FOA` 特征都经过主干
58
+ - 主干本身学习空间结构
59
+ - `Spatial-BEATs` 成为一个真正的空间 encoder,而不是一个“语义 encoder + 小空间补丁”
60
+
61
+ 因此,本项目的推荐路线是:
62
+
63
+ - `整套 FOA 特征 -> patch embedding -> BEATs backbone -> source-level spatial tokens`
64
+
65
+ 而不是:
66
+
67
+ - `W-only -> BEATs`
68
+ - `W-only BEATs + 外挂小 adapter`
69
+
70
+ ## 3. 与原始 BEATs 的关系
71
+
72
+ ### 3.1 BEATs 中值得最大化复用的部分
73
+
74
+ 当前仓库中的 BEATs 主干主要包括:
75
+
76
+ - `post_extract_proj`
77
+ - `TransformerEncoder`
78
+ - `Transformer layers`
79
+ - `conv_pos`
80
+ - `LayerNorm / FFN / attention`
81
+
82
+ 这些模块位于:
83
+
84
+ - `BEATs.py`
85
+ - `backbone.py`
86
+
87
+ 这些部分是最应该保留并加载预训练权重的。
88
+
89
+ ### 3.2 BEATs 中不适合直接保留的部分
90
+
91
+ 原始 BEATs 代码是单通道设计,关键假设包括:
92
+
93
+ - `preprocess()` 只生成单通道 `fbank`
94
+ - `patch_embedding` 是 `Conv2d(1, embed_dim, ...)`
95
+ - 下游输出默认是整段时间序列平均后的分类预测
96
+
97
+ 因此,下列部分不应直接照搬:
98
+
99
+ 1. 单通道 `preprocess`
100
+ 2. 单通道 `patch_embedding`
101
+ 3. 最终的 clip-level 平均池化分类输出方式
102
+ 4. 原始 `predictor` 作为最终目标头
103
+
104
+ ### 3.3 对 BEATs 的总体改造原则
105
+
106
+ 原则是:
107
+
108
+ - **尽量保留 trunk**
109
+ - **必要时重做 stem**
110
+ - **完全重做 spatial head**
111
+
112
+ 也就是:
113
+
114
+ - `输入端` 改
115
+ - `输出端` 改
116
+ - `中间主干` 尽量不改
117
+
118
+ ## 4. Spatial-AST 相比 AudioMAE 的改造经验
119
+
120
+ Spatial-AST 对本项目最有借鉴价值的不是其 binaural 细节,而是其改造模式。
121
+
122
+ ### 4.1 Spatial-AST 做了什么
123
+
124
+ 相对于原始 AudioMAE/ViT,Spatial-AST 主要改了四类模块:
125
+
126
+ 1. **输入前端**
127
+ - 从原始单通道 spectrogram 输入,改成 `双耳 log-mel + IPD`
128
+ - 在输入前端加入 `STFT / LogMel / IPD / conv_downsample`
129
+
130
+ 2. **token 设计**
131
+ - 把原来的单个 `cls token` 改为 `3 个任务专用 token`
132
+ - 分别对应:
133
+ - 分类
134
+ - 距离
135
+ - 方向
136
+
137
+ 3. **输出头**
138
+ - 除原分类 head 外,新增:
139
+ - `distance_head`
140
+ - `azimuth_head`
141
+ - `elevation_head`
142
+
143
+ 4. **训练目标**
144
+ - 从单任务分类,改成多任务训练
145
+ - 同时训练:
146
+ - sound event detection
147
+ - distance prediction
148
+ - direction prediction
149
+
150
+ ### 4.2 Spatial-AST 没有怎么改
151
+
152
+ Spatial-AST 没有重写 Transformer block 本体。
153
+ 它保留了 AudioMAE/ViT 的核心 encoder 结构,而把改动集中在:
154
+
155
+ - front-end
156
+ - tokens
157
+ - heads
158
+ - objectives
159
+
160
+ ### 4.3 对本项目的可迁移结论
161
+
162
+ 可直接借鉴的思想:
163
+
164
+ 1. 用预训练音频主干初始化空间 encoder
165
+ 2. 重新设计输入前端,让空间特征真正进入 backbone
166
+ 3. 使用专门的空间 token,而不是只做全局池化
167
+ 4. 使用多任务监督训练空间能力
168
+
169
+ 不能直接照搬的部分:
170
+
171
+ 1. Spatial-AST 的 `binaural + IPD` 前端
172
+ 2. 只面向单/双耳的空间 cue 设计
173
+ 3. 只输出全局 token 的思路
174
+
175
+ 本项目是 `FOA`,因此应该把输入前端换成 `FOA 专属空间特征`。
176
+
177
+ ## 5. Spatial-BEATs 的推荐任务形式
178
+
179
+ ### 5.1 单场景 token 不够
180
+
181
+ 如果只输出一个全局 spatial token,它只能表示整个 scene 的压缩摘要,不适合做:
182
+
183
+ - 多声源关系理解
184
+ - “谁在谁左边”
185
+ - “某个类对应的声源在什么位置”
186
+ - source-wise grounding
187
+
188
+ 既然数据中已经有多源标注,推荐直接把任务定义为:
189
+
190
+ - `multi-source set prediction`
191
+
192
+ ### 5.2 推荐输出形式
193
+
194
+ 令模型输出固定数量的 `K` 个 spatial queries/tokens。
195
+
196
+ 每个 token 预测:
197
+
198
+ - `p(obj)`
199
+ - `azimuth`
200
+ - `elevation`
201
+ - `distance`
202
+ - 可选 `class logits` 或 `class embedding`
203
+
204
+ 训练时使用:
205
+
206
+ - `Hungarian matching`
207
+ - 或者其他 set prediction matching
208
+
209
+ 把 `K` 个预测 token 与当前样本中的 `N` 个 GT 声源做一一匹配。
210
+
211
+ 这会比单一 scene token 更适合后续接入 LLM 做空间关系推理。
212
+
213
+ ## 6. Spatial-BEATs 的推荐模型结构
214
+
215
+ 推荐结构如下:
216
+
217
+ ```text
218
+ FOA waveform
219
+ -> FOA front-end
220
+ -> FOA feature map
221
+ -> FOA patch embedding
222
+ -> BEATs Transformer trunk
223
+ -> source queries / spatial decoder
224
+ -> K spatial tokens
225
+ -> spatial heads
226
+ ```
227
+
228
+ ### 6.1 FOA front-end
229
+
230
+ 输入可以是:
231
+
232
+ - `WXYZ log-mel`
233
+ - `WXYZ log-mel + IVx/IVy/IVz`
234
+
235
+ 推荐第一版就至少使用:
236
+
237
+ - `WXYZ`
238
+ - `IV`
239
+
240
+ 原因:
241
+
242
+ - 只用 `WXYZ` 仍然需要模型自己从通道关系中恢复空间线索
243
+ - `IV` 直接提供有物理意义的方向信息
244
+ - 对空间收敛会更稳
245
+
246
+ ### 6.2 FOA patch embedding
247
+
248
+ 这一层应替换原始 BEATs 的单通道 patch stem。
249
+
250
+ 原始:
251
+
252
+ - `Conv2d(1, embed_dim, kernel_size=patch, stride=patch)`
253
+
254
+ 新的思路:
255
+
256
+ - `Conv2d(C_foa, embed_dim, kernel_size=patch, stride=patch)`
257
+
258
+ 其中 `C_foa` 可以是:
259
+
260
+ - `4`,如果只用 `WXYZ`
261
+ - `7`,如果用 `WXYZ + IVxyz`
262
+ - 更大,如果加入更多派生空间特征
263
+
264
+ ### 6.3 BEATs trunk
265
+
266
+ 尽量保留以下模块:
267
+
268
+ - `post_extract_proj`
269
+ - `TransformerEncoder`
270
+ - `attention`
271
+ - `FFN`
272
+ - `conv_pos`
273
+ - `LayerNorm`
274
+
275
+ 这是整个“最大化复用预训练权重”的核心。
276
+
277
+ ### 6.4 Spatial token 模块
278
+
279
+ 不要继续使用原始 BEATs 的:
280
+
281
+ - mean pooling
282
+ - clip-level predictor
283
+
284
+ 推荐改为:
285
+
286
+ - `K` 个 learnable source queries
287
+ - queries 对 trunk 输出做 attention
288
+ - 得到 `K` 个 source-level spatial tokens
289
+
290
+ 如果实现上希望更简单,第一版也可以:
291
+
292
+ - 先直接在 trunk 输出后接一个轻量 decoder
293
+ - 再输出 `K` 个 tokens
294
+
295
+ ### 6.5 Spatial heads
296
+
297
+ 每个 token 对应:
298
+
299
+ - `objectness head`
300
+ - `azimuth head`
301
+ - `elevation head`
302
+ - `distance head`
303
+ - 可选 `class head`
304
+
305
+ 如果担心与原 LLM audio encoder 产生语义冲突,则建议:
306
+
307
+ - 把 `class head` 只作为辅助监督
308
+ - 不把其输出作为最终送入 LLM 的主要表示
309
+
310
+ ## 7. 保留的部分
311
+
312
+ 下面这些建议尽量保留:
313
+
314
+ ### 7.1 保留原有 LLM audio encoder
315
+
316
+ 原始语义 audio encoder 不动,继续负责:
317
+
318
+ - 音频内容语义
319
+ - 事件类别理解
320
+ - 与现有 LLM 接口保持兼容
321
+
322
+ ### 7.2 保留 Spatial-BEATs 作为独立 encoder
323
+
324
+ `Spatial-BEATs` 单独负责:
325
+
326
+ - 方向
327
+ - 距离
328
+ - 多源空间结构
329
+ - 可选 source-wise 辅助类别信息
330
+
331
+ ### 7.3 保留 BEATs 主干参数初始化
332
+
333
+ 建议保留:
334
+
335
+ - trunk 的预训练参数
336
+ - 尽量避免从零训练整个 spatial encoder
337
+
338
+ ## 8. 需要替换或新增的部分
339
+
340
+ ### 8.1 必改模块
341
+
342
+ 必须修改:
343
+
344
+ 1. `preprocess`
345
+ 2. `patch_embedding`
346
+ 3. `forward / extract_features` 的输出方式
347
+ 4. 下游 `predictor`
348
+
349
+ ### 8.2 必增模块
350
+
351
+ 必须新增:
352
+
353
+ 1. `FOA spatial front-end`
354
+ 2. `spatial query / token module`
355
+ 3. `multi-head spatial prediction heads`
356
+ 4. `set matching / multi-source loss`
357
+
358
+ ### 8.3 建议新增模块
359
+
360
+ 建议新增:
361
+
362
+ 1. `source confidence / objectness`
363
+ 2. `auxiliary class supervision`
364
+ 3. `LLM projection head`
365
+
366
+ ## 9. 训练方法
367
+
368
+ ## 9.1 第一阶段是否需要 SSL
369
+
370
+ 当前结论是:
371
+
372
+ - **第一版不需要重新做 BEATs 式 SSL**
373
+
374
+ 原因:
375
+
376
+ 1. 已经有多源 `GT relative positions`
377
+ 2. 目标不是再学通用音频语义,而是让模型学空间结构
378
+ 3. 已有 BEATs 预训练权重可作为稳定初始化
379
+ 4. 先做监督式空间学习,工程收益最高
380
+
381
+ 因此,推荐第一阶段直接做 `supervised multi-task training`。
382
+
383
+ ### 9.2 第一阶段训练目标
384
+
385
+ 基础目标:
386
+
387
+ - `L_obj`
388
+ - `L_azimuth`
389
+ - `L_elevation`
390
+ - `L_distance`
391
+
392
+ 可选目标:
393
+
394
+ - `L_class_aux`
395
+
396
+ 总损失可写为:
397
+
398
+ ```text
399
+ L = lambda_obj * L_obj
400
+ + lambda_azi * L_azimuth
401
+ + lambda_ele * L_elevation
402
+ + lambda_dist * L_distance
403
+ + lambda_cls * L_class_aux
404
+ ```
405
+
406
+ 这里建议:
407
+
408
+ - 空间任务作为主目标
409
+ - 类别只做辅助目标
410
+
411
+ 因为本项目中语义主责已经由原始 audio encoder 承担。
412
+
413
+ ### 9.3 多源匹配训练
414
+
415
+ 如果每个样本有多个声源标注,推荐:
416
+
417
+ 1. 模型输出固定数量 `K` 个 tokens
418
+ 2. 用 Hungarian matching 在 token 与 GT 源之间做匹配
419
+ 3. 对 matched token 计算位置损失
420
+ 4. 对 unmatched token 计算 no-object loss
421
+
422
+ 这是比“对所有 token 平均做 scene 监督”更合适的做法。
423
+
424
+ ### 9.4 训练阶段建议
425
+
426
+ 推荐三步走:
427
+
428
+ #### Stage A: Stem + Head Warmup
429
+
430
+ - 冻结大部分 BEATs trunk
431
+ - 只训练:
432
+ - FOA front-end
433
+ - FOA patch embedding
434
+ - spatial token/query module
435
+ - spatial heads
436
+
437
+ 目的:
438
+
439
+ - 让新输入 stem 和新 heads 先适配预训练 trunk
440
+
441
+ #### Stage B: Upper Trunk Finetune
442
+
443
+ - 解冻 BEATs 上层若干层
444
+ - 使用较小学习率微调
445
+ - 使用 layer-wise lr decay
446
+
447
+ 目的:
448
+
449
+ - 让 trunk 逐步适配 FOA 分布和空间任务
450
+
451
+ #### Stage C: Full or Near-Full Finetune
452
+
453
+ - 在稳定后解冻更多层
454
+ - 继续以空间目标微调
455
+
456
+ 目的:
457
+
458
+ - 提升空间 token 的表达能力
459
+
460
+ ### 9.5 训练数据组织
461
+
462
+ 每个样本应包含:
463
+
464
+ - `foa waveform`
465
+ - `num_sources`
466
+ - `per-source azimuth`
467
+ - `per-source elevation`
468
+ - `per-source distance`
469
+ - 可选 `per-source class`
470
+
471
+ 推荐统一成:
472
+
473
+ ```text
474
+ sample = {
475
+ "audio": ...,
476
+ "sources": [
477
+ {"azimuth": ..., "elevation": ..., "distance": ..., "label": ...},
478
+ ...
479
+ ]
480
+ }
481
+ ```
482
+
483
+ ## 10. 与 LLM 的接口
484
+
485
+ ### 10.1 推荐输入形式
486
+
487
+ 最终不要把 Spatial-BEATs 的全部 dense patch tokens 都喂给 LLM。
488
+ 推荐只输出:
489
+
490
+ - `K` 个 `Spatial Tokens`
491
+
492
+ 每个 token 代表一个潜在空间实体。
493
+
494
+ ### 10.2 避免语义冲突的策略
495
+
496
+ 本项目中“避免语义冲突”的关键不是完全不学类别,而是:
497
+
498
+ 1. 原始 audio encoder 继续承担主要语义理解
499
+ 2. Spatial-BEATs 主要承担空间结构建模
500
+ 3. Spatial-BEATs 输出给 LLM 的是 `source-level spatial tokens`
501
+ 4. 辅助类别监督只用于训练,不一定直接暴露为最终模态表示
502
+
503
+ 这样两套 encoder 的职责边界更清晰:
504
+
505
+ - 原语义 encoder:`what`
506
+ - Spatial-BEATs:`where / relation / spatial structure`
507
+
508
+ ## 11. 当前推荐方案总结
509
+
510
+ 当前最推荐的路线不是:
511
+
512
+ - `W-only BEATs`
513
+ - `W-only + adapter`
514
+
515
+ 而是:
516
+
517
+ - `FOA full-feature Spatial-BEATs`
518
+ - `独立空间 encoder`
519
+ - `最大化复用 BEATs trunk`
520
+ - `重做输入 stem`
521
+ - `重做多源 spatial token heads`
522
+
523
+ 用一句话总结就是:
524
+
525
+ > 用 BEATs 的主干做 FOA 空间建模,而不是只拿 BEATs 当单通道语义骨干,再在旁边打一个空间补丁。
526
+
527
+ ## 12. 推荐实施顺序
528
+
529
+ 建议按以下顺序推进:
530
+
531
+ 1. 明确 `FOA feature schema`
532
+ - 是否使用 `WXYZ`
533
+ - 是否加入 `IV`
534
+ - 是否加入其他物理特征
535
+
536
+ 2. 设计 `Spatial-BEATs` 的新输入 stem
537
+ - 替换单通道 preprocess
538
+ - 替换 patch embedding
539
+
540
+ 3. 设计 `K-source spatial tokens`
541
+ - 确定 token 数量
542
+ - 确定 query 机制
543
+
544
+ 4. 实现多头空间预测
545
+ - objectness
546
+ - distance
547
+ - azimuth
548
+ - elevation
549
+ - optional class
550
+
551
+ 5. 实现多源匹配训练
552
+ - Hungarian matching
553
+ - no-object loss
554
+
555
+ 6. 先做监督训练
556
+ - 不急于加入 SSL
557
+
558
+ 7. 训练稳定后,再评估是否需要第二阶段自监督
559
+ - masked spatial cue prediction
560
+ - view consistency
561
+ - teacher distillation
562
+
563
+ ## 13. 第二阶段可选方向
564
+
565
+ 在第一版监督训练稳定后,可考虑加入:
566
+
567
+ 1. `Spatial SSL`
568
+ - masked FOA cue prediction
569
+ - spatial consistency loss
570
+ - teacher-student distillation
571
+
572
+ 2. `source-conditioned tokens`
573
+ - 类别条件的 source token
574
+
575
+ 3. `LLM-side alignment`
576
+ - 将 spatial token 投影到 LLM hidden space
577
+ - 与文本空间词汇进行弱对齐
578
+
579
+ 4. `更复杂的多源推理训练`
580
+ - source relation supervision
581
+ - pairwise spatial relation labels
582
+
583
+ ## 14. 结论
584
+
585
+ 本项目的推荐方向已经比较明确:
586
+
587
+ - 使用 `FOA 全特征`
588
+ - 让 `FOA 特征` 真正经过 `BEATs backbone`
589
+ - 将 `BEATs` 改造成独立的 `Spatial-BEATs`
590
+ - 保留原语义 audio encoder 不动
591
+ - 以 `多源 spatial token prediction` 为核心任务
592
+ - 第一阶段采用 `监督式空间训练`
593
+ - 最大化复用 `BEATs trunk` 的预训练权重
594
+
595
+ 如果后续开始实现,建议优先落地以下最小可行版本:
596
+
597
+ 1. `WXYZ + IV` 输入
598
+ 2. 多通道 patch embedding
599
+ 3. BEATs trunk 复用
600
+ 4. `K` 个 spatial queries
601
+ 5. `objectness + azimuth + elevation + distance` 多头监督
602
+
603
+ 这会比任何 `W-only` 或“仅外挂 adapter”的方案更符合项目目标,也更适合最终作为 LLM 的空间模态输入。
docs/spatial_beats_token_interface_note.md ADDED
@@ -0,0 +1,176 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Spatial-BEATs Token Interface Clarification
2
+
3
+ ## 1. Why `25 * 4 = 100` Is Not the Right Final Token Count
4
+
5
+ The previous discussion mixed two different concepts:
6
+
7
+ - internal multi-source slot capacity
8
+ - final LLM-visible token rate
9
+
10
+ These should be separated.
11
+
12
+ For the current design:
13
+
14
+ - `2.5 Hz` means the **final spatial token rate visible to the LLM**
15
+ - for a `10 s` clip, this means:
16
+ - `T_s = 10 * 2.5 = 25`
17
+
18
+ So the correct final token count is:
19
+
20
+ - `25 spatial tokens`
21
+
22
+ not:
23
+
24
+ - `25 * 4 = 100`
25
+
26
+ The `4` only refers to:
27
+
28
+ - internal source slots per time step
29
+
30
+ It is an internal modeling capacity, not an external token-rate multiplier.
31
+
32
+ ## 2. Corrected Design
33
+
34
+ The corrected interface is:
35
+
36
+ ```text
37
+ FOA waveform
38
+ -> FOA features
39
+ -> BEATs trunk
40
+ -> temporal memory at 2.5 Hz [B, T_s, D]
41
+ -> per-step source slots (K=4) [B, T_s, K, D]
42
+ -> objectness-weighted slot pooling [B, T_s, D]
43
+ -> MLP projector
44
+ -> final LLM spatial tokens [B, T_s, d_llm]
45
+ ```
46
+
47
+ With the default setup:
48
+
49
+ - `T_s = 25`
50
+ - `K = 4`
51
+
52
+ So:
53
+
54
+ - internal representation: `[B, 25, 4, D]`
55
+ - final LLM tokens: `[B, 25, d_llm]`
56
+
57
+ ## 3. What `objectness-weighted pooling + MLP projector` Means
58
+
59
+ At each time step `t`, the model first predicts `K=4` source slots:
60
+
61
+ - `z_{t,1}, z_{t,2}, z_{t,3}, z_{t,4}`
62
+
63
+ Each slot also has an objectness score:
64
+
65
+ - `o_{t,1}, o_{t,2}, o_{t,3}, o_{t,4}`
66
+
67
+ These objectness scores are normalized across the `K` slots:
68
+
69
+ ```text
70
+ alpha_{t,k} = softmax(o_{t,:})_k
71
+ ```
72
+
73
+ Then the slot latents are pooled:
74
+
75
+ ```text
76
+ h_t = sum_{k=1..K} alpha_{t,k} * z_{t,k}
77
+ ```
78
+
79
+ This produces one pooled latent for this time step:
80
+
81
+ - `h_t`
82
+
83
+ The same idea is used to pool the structured slot-level predictions:
84
+
85
+ ```text
86
+ c_t = sum_k alpha_{t,k} * c_{t,k}
87
+ u_t = sum_k alpha_{t,k} * u_{t,k}
88
+ d_t = sum_k alpha_{t,k} * d_{t,k}
89
+ o_t = sum_k alpha_{t,k} * e_{obj,t,k}
90
+ ```
91
+
92
+ where:
93
+
94
+ - `c_{t,k}` is the slot-level class-context embedding
95
+ - `u_{t,k}` is the slot-level direction embedding/vector
96
+ - `d_{t,k}` is the slot-level distance embedding
97
+ - `e_{obj,t,k}` is the slot-level confidence embedding
98
+
99
+ Then the final per-step spatial token is formed as:
100
+
101
+ ```text
102
+ s_t = Proj([h_t ; c_t ; u_t ; d_t ; o_t])
103
+ ```
104
+
105
+ where:
106
+
107
+ - `Proj` is an MLP projector into the LLM hidden space
108
+
109
+ So the final sequence is:
110
+
111
+ ```text
112
+ S = [s_1, s_2, ..., s_{T_s}]
113
+ ```
114
+
115
+ For a `10 s` clip:
116
+
117
+ - `S` has `25` tokens
118
+
119
+ ## 4. Why This Is Better
120
+
121
+ This corrected design keeps both goals:
122
+
123
+ 1. multi-source capacity inside the model
124
+ 2. fixed low-rate spatial tokens outside the model
125
+
126
+ Advantages:
127
+
128
+ - the model can still represent up to `4` sources at each time step
129
+ - the final LLM token count stays fixed at `2.5 Hz`
130
+ - the external token interface is simpler and easier to scale
131
+ - it avoids unnecessarily inflating the LLM token count by `K`
132
+
133
+ ## 5. Corrected Tensor Shapes
134
+
135
+ Recommended tensor shapes:
136
+
137
+ - `temporal_memory`: `[B, T_s, D]`
138
+ - `slot_tokens`: `[B, T_s, K, D]`
139
+ - `pred_obj`: `[B, T_s, K]`
140
+ - `pred_azi_logits`: `[B, T_s, K, 360]`
141
+ - `pred_ele_logits`: `[B, T_s, K, 180]`
142
+ - `pred_dist`: `[B, T_s, K, 1]`
143
+ - `pred_class_logits`: `[B, T_s, K, C_cls]`
144
+ - `pooled_spatial_latents`: `[B, T_s, D]`
145
+ - `llm_spatial_tokens`: `[B, T_s, d_llm]`
146
+
147
+ For the default setup:
148
+
149
+ - `T_s = 25`
150
+ - `K = 4`
151
+
152
+ Therefore:
153
+
154
+ - internal slots: `[B, 25, 4, D]`
155
+ - final LLM tokens: `[B, 25, d_llm]`
156
+
157
+ ## 6. What Should Be Updated in the Main Design
158
+
159
+ The main design should be interpreted as:
160
+
161
+ - internal `4` slots
162
+ - external fixed `25` spatial tokens for a `10 s` clip
163
+
164
+ So any previous statement implying:
165
+
166
+ - `2.5 Hz * 4 = 10 tokens / second`
167
+
168
+ should be considered obsolete for the final LLM interface.
169
+
170
+ The correct statement is:
171
+
172
+ - final LLM-visible spatial tokens are `2.5 tokens / second`
173
+
174
+ and:
175
+
176
+ - `K=4` is only internal source-slot capacity.
docs/v13d_full_hyperparameters.md ADDED
@@ -0,0 +1,230 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Spatial-BEATs v13d 完整超参数与实现细节附录
2
+
3
+ > 适用于 NeurIPS 论文附录。本附录详尽地列出 v13d 模型的全部架构超参数、训练超参数、损失函数权重、数据预处理参数以及优化器配置。所有数值均与 `train_spatial_beats.py::make_ov1_unified_v13d_config()` 以及 `run_ov1_unified_v13d.sh` 中的代码一致。
4
+
5
+ ---
6
+
7
+ ## A. 输入与特征提取
8
+
9
+ | 参数 | 取值 | 说明 |
10
+ |---|---|---|
11
+ | 采样率 | 16 kHz | FOA 4 通道,顺序 [W, X, Y, Z] |
12
+ | 单 clip 时长 | 10 s | 输入波形形状 [B, 4, 160000] |
13
+ | STFT n_fft | 400 | Qwen-2.5-Omni 对齐 |
14
+ | STFT hop_length | 160 | 时间步长 10 ms |
15
+ | STFT win_length | 400 | 窗长 25 ms |
16
+ | 窗函数 | Hann | — |
17
+ | Mel 滤波器组数 | 128 | f_min=0, f_max=8000 |
18
+ | 时间帧数 T_f | 1000 | 10 s × 100 帧/s |
19
+ | 输入特征通道数 | 7 | 4 个 mel (W/X/Y/Z) + 3 个 IV (x/y/z) |
20
+ | IV 公式 | `IV_d = Re[W · conj(X_d)] / (\|W\|² + ε)` | ε=1e-8,IV 经 mel 投影后 clamp 到 ±10 |
21
+ | W 通道归一化 | mean=15.41663, std=6.55582 | BEATs 预训练统计量 |
22
+ | SpecAugment(仅 W 通道) | 2 个时间 mask × 100 帧, 2 个频率 mask × 27 bin | 训练时启用 |
23
+
24
+ ---
25
+
26
+ ## B. 模型架构超参数
27
+
28
+ ### B.1 SpatialDeltaPatchAdapter (v1)
29
+ | 参数 | 取值 |
30
+ |---|---|
31
+ | 输入通道数 | 7 |
32
+ | 隐藏通道数 | 32 |
33
+ | 输出维度 | 512(patch embedding 维度) |
34
+ | Patch size | (16, 16), stride=16 |
35
+ | 残差缩放 α 初始化 | 0.1(可学习) |
36
+ | 结构 | Conv2d(7→32, 1×1) → GELU → DWConv(32, 3×3) → GELU → Conv2d(32→512, 16×16, s=16) |
37
+
38
+ ### B.2 SpatialPatchEmbedding(继承 BEATs)
39
+ - 单通道(W)patch embedding,预训练权重不修改
40
+ - 输出 token 数 = 496(10 s clip)
41
+ - Hidden = 512,再投影至 768
42
+
43
+ ### B.3 BEATs Transformer Trunk
44
+ | 参数 | 取值 |
45
+ |---|---|
46
+ | Layer 数 | 12 |
47
+ | Hidden 维度 | 768 |
48
+ | 注意力头数 | 12 |
49
+ | FFN 维度 | 3072 |
50
+ | 相对位置偏置 | sinusoidal + GRU gating |
51
+ | Trunk adapter | 1 层 spectral demixer,零门控初始化(继承 v11a 的 `use_spatial_head_demixer=True`) |
52
+
53
+ ### B.4 LocalSpatialEncoder(并行空间分支)
54
+ | 参数 | 取值 |
55
+ |---|---|
56
+ | 输入 | 7 通道 FOA 特征 [B, 7, T_f, 128] |
57
+ | CNN block 1 | Conv2d(7→64, 3×3) + GroupNorm(8) + GELU |
58
+ | CNN block 2 | Conv2d(64→128, 3×3, stride=(1,2)) + GroupNorm(8) + GELU |
59
+ | CNN block 3 | Conv2d(128→256, 3×3, stride=(1,2)) + GroupNorm(16) + GELU |
60
+ | 频率维度处理 | 在最终 GN 后对频率轴做 mean → [B, T_f, 256] |
61
+ | Transformer 层数 | 2 |
62
+ | Transformer hidden | 256 |
63
+ | Transformer heads | 4 |
64
+ | Norm 顺序 | norm_first = True (pre-LN) |
65
+ | Dropout | 0.1 |
66
+ | 输出投影 | Linear(256 → 768) |
67
+
68
+ ### B.5 FrequencyPool + TemporalResampler
69
+ - FrequencyPool:reshape [B, 496, 768] → [B, 62, 8, 768],频率轴均值 → [B, 62, 768]
70
+ - TemporalResampler:线性插值到 10 Hz 网格 → [B, T_s=100, 768]
71
+ - **Token 频率 = 10 Hz**(继承自 v9_real_balanced_10hz)
72
+
73
+ ### B.6 LocalSpatialCrossFuser(语义-空间融合)
74
+ | 参数 | 取值 |
75
+ |---|---|
76
+ | 模式 | `cross_attn_gated` |
77
+ | 层数 | 2 |
78
+ | Embed 维度 | 768 |
79
+ | 注意力头数 | 8 |
80
+ | Gate bias | -2.0(即 sigmoid(-2.0)≈0.119 初始化) |
81
+ | Direct gate bias | -1.5(sigmoid≈0.182) |
82
+ | ShallowTemporalReadout | 1 层 Transformer + LayerNorm |
83
+ | 输出 | fused_tokens [B, T_s=100, 768] |
84
+
85
+ ### B.7 SourceQueryDecoder(多源解耦)
86
+ | 参数 | 取值 |
87
+ |---|---|
88
+ | Track query 数 K | 4 |
89
+ | Stage-1 层数 | 2(TransformerDecoder) |
90
+ | Stage-2 层数 | 1(per-frame refinement + LN) |
91
+ | 注意力头数 | 8 |
92
+ | FFN 维度 | 3072 |
93
+ | 时间位置编码 | 可学习 [T_s, 768] |
94
+ | 输出 | [B, K=4, T_s=100, 768] |
95
+
96
+ ### B.8 FrameTrackPredictionHeads(每个 (track, frame) 4 个预测头)
97
+ | Head | 结构 | 输出 |
98
+ |---|---|---|
99
+ | Activity | LayerNorm + Linear(768→1) | logit ℓ ∈ ℝ |
100
+ | Class | MLP + 残差 + spectral demixer | 63 类 logits |
101
+ | Direction | MLP(768→768→3) + L2 normalize | 单位向量 ∈ ℝ³ |
102
+ | Distance | MLP(768→768→1) + softplus | 距离(米) |
103
+
104
+ ---
105
+
106
+ ## C. 损失函数与权重
107
+
108
+ ### C.1 损失项与权重
109
+ | 损失项 | 权重 | 备注 |
110
+ |---|---|---|
111
+ | `lambda_frame_class` | 1.0 | 63 类 cross-entropy |
112
+ | `lambda_frame_activity` | 1.0 | **Top-K rank loss**(v13d 核心改动) |
113
+ | `lambda_frame_direction` | 1.0 | 1 - cos(pred, gt) |
114
+ | `lambda_frame_distance` | 1.0 | smooth-L1 |
115
+ | `lambda_frame_hemisphere` | 1.0 | 半球 BCE(继承 v11a) |
116
+
117
+ ### C.2 Top-K Rank Activity Loss(D-2)
118
+ $$\mathcal{L}_{\text{rank}} = \frac{1}{|P|}\sum_{(i,j)\in P}\max(0, m + \ell_j - \ell_i),\quad \mathcal{L}_{\text{act}} = \mathcal{L}_{\text{rank}} + 0.1 \cdot \mathcal{L}_{\text{BCE}}$$
119
+
120
+ | 超参数 | 取值 |
121
+ |---|---|
122
+ | `frame_activity_loss_type` | `topk_rank` |
123
+ | margin m | 2.0 |
124
+ | BCE anchor 权重 | 0.1 |
125
+
126
+ ### C.3 Spatial loss warmup / ramp(D-1)
127
+ | 阶段 | Epoch 范围 | 空间 loss 权重 |
128
+ |---|---|---|
129
+ | cls-only warmup | 0 – 7(共 8 ep) | 0 |
130
+ | linear ramp | 8 – 9(共 2 ep) | 0 → 1 |
131
+ | full joint training | 10 – 24 | 1 |
132
+
133
+ 对应 cfg:`frame_spatial_loss_warmup_epochs=8`, `frame_spatial_loss_ramp_epochs=2`.
134
+
135
+ ---
136
+
137
+ ## D. 训练超参数
138
+
139
+ ### D.1 优化器
140
+ | 参数 | 取值 |
141
+ |---|---|
142
+ | Optimizer | AdamW |
143
+ | β₁, β₂ | 0.9, 0.999 |
144
+ | ε | 1e-8 |
145
+ | Weight decay | 0.01 |
146
+ | Gradient clipping | 1.0(global L2 norm) |
147
+ | Resume optimizer state | True(D-5:从 v12 best.pt 继承 Adam momentum) |
148
+
149
+ ### D.2 学习率(Cosine schedule,D-1)
150
+ | 参数 | 取值 |
151
+ |---|---|
152
+ | Peak LR | 1.5e-5 |
153
+ | Linear warmup epochs | 3(LR 从 0 → peak) |
154
+ | Cosine decay epochs | 22(peak → peak × min_ratio) |
155
+ | Min LR ratio | 0.05(最低 LR = 7.5e-7) |
156
+ | `use_cosine_lr` | True |
157
+
158
+ ### D.3 训练规模
159
+ | 参数 | 取值 |
160
+ |---|---|
161
+ | 总 epoch 数 | 25 |
162
+ | GPUs | 8 × A100 |
163
+ | 单 GPU batch size | 8 |
164
+ | 等效 batch size | 64 |
165
+ | 数据并行 | torchrun + DDP |
166
+ | 精度 | fp32 |
167
+ | Num workers | 8 / GPU |
168
+ | Hot-start checkpoint | v12 best.pt(strict=False,missing=0/unexpected=0) |
169
+
170
+ ### D.4 EMA shadow weights(D-6)
171
+ | 参数 | 取值 |
172
+ |---|---|
173
+ | `use_ema` | True |
174
+ | EMA decay | 0.9995 |
175
+ | 启动 epoch | 3(避开 LR warmup 噪声) |
176
+ | 应用范围 | 验证、保存 best.pt 时使用 EMA 权重;训练 forward/backward 仍用原权重 |
177
+ | 实现方式 | swap → evaluate → restore(不污染训练梯度) |
178
+
179
+ ---
180
+
181
+ ## E. 数据集与采样
182
+
183
+ | 参数 | 取值 |
184
+ |---|---|
185
+ | 训练 manifest | `unified_spatial_foa_fsd63_all/train.jsonl` |
186
+ | 训练样本总数 | 约 329 K |
187
+ | - sim_static | 304 K |
188
+ | - dcase_real | 20 K |
189
+ | - qa_sim | 74 K |
190
+ | Manifest replication | (1,)(v13d 不做真实数据加权) |
191
+ | 词表 | FSD50K 衍生 63 类(`final_vocabulary.csv`) |
192
+ | 验证集 | ov1/ov2/ov3 sim + ov1/ov2/ov3 real + dcase_starss_valid + unified_valid(约 35 K) |
193
+ | 数据增广 | 仅 W 通道 SpecAugment;不开启 v13b 的 random gain / channel dropout / lowpass |
194
+
195
+ ---
196
+
197
+ ## F. Hungarian 匹配与推理
198
+
199
+ | 参数 | 取值 |
200
+ |---|---|
201
+ | 匹配粒度 | 段级(segment-level,相同 active set 窗口内稳定分配) |
202
+ | 匹配代价 | activity + class CE + direction cosine + distance L1 加权和 |
203
+ | 推理时活跃 track 选择 | top-K̂(DCASE SELD evaluator 统一标准),与训练 Top-K rank loss 对齐 |
204
+
205
+ ---
206
+
207
+ ## G. 实际训练曲线(参考)
208
+
209
+ | Epoch | F20 | oracle_cls | azi MAE |
210
+ |---|---|---|---|
211
+ | 0 | 0.311 | 0.650 | 28.6° |
212
+ | 7(cls warmup 末) | 0.193 | 0.786 | 31.0° |
213
+ | 8(spatial 启动) | 0.397 | 0.876 | 18.5° |
214
+ | 10(当前最佳) | 0.402 | 0.864 | 17.2° |
215
+ | 25(预期) | 0.43 ~ 0.46 | ~0.88 | 17~19° |
216
+
217
+ ep1→ep7 期间 F20 下降是 **预期行为**:cls warmup 中 trunk 逐步适配类别学习,但空间梯度被 mask 为 0,方向头无监督信号导致 azi 漂移。ep8 空间 loss 解锁后 F20 单 epoch 跃升 +107%(0.193 → 0.397),证明 D-1 ~ D-6 的训练机制改造工作正常。
218
+
219
+ ---
220
+
221
+ ## H. 复现命令
222
+
223
+ ```bash
224
+ # 默认 8 GPU、bs=8/GPU、peak LR=1.5e-5、25 epochs
225
+ GPUS=8 BATCH_SIZE=8 SPATIAL_EPOCHS=25 SPATIAL_LR=1.5e-5 \
226
+ RESUME_CKPT=checkpoints/spatial_beats_ov1_unified_v12_exp/03_ov123_top4/best.pt \
227
+ ./run_ov1_unified_v13d.sh
228
+ ```
229
+
230
+ 所有改动通过 cfg flag 控制,默认 False,因此 v12 / v13b / v13c 实验不受影响。
eval_voxaudio_ood_results/dacvae/per_sample.json ADDED
@@ -0,0 +1,2096 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "s1_rank0_opensource_emilia_zh_rawdata_English_003050": {
3
+ "gt_top_class": "speech",
4
+ "rc_top_class": "speech",
5
+ "gt_frames_preview": [
6
+ [
7
+ {
8
+ "track": 0,
9
+ "activity": 0.573,
10
+ "class_idx": 16,
11
+ "class_name": "speech",
12
+ "class_conf": 0.45,
13
+ "azi_deg": -42.47,
14
+ "ele_deg": 43.03,
15
+ "dist_m": 1.291
16
+ }
17
+ ],
18
+ [
19
+ {
20
+ "track": 0,
21
+ "activity": 0.779,
22
+ "class_idx": 16,
23
+ "class_name": "speech",
24
+ "class_conf": 0.503,
25
+ "azi_deg": -42.38,
26
+ "ele_deg": 42.74,
27
+ "dist_m": 1.258
28
+ }
29
+ ],
30
+ [
31
+ {
32
+ "track": 0,
33
+ "activity": 0.784,
34
+ "class_idx": 16,
35
+ "class_name": "speech",
36
+ "class_conf": 0.523,
37
+ "azi_deg": -42.73,
38
+ "ele_deg": 42.45,
39
+ "dist_m": 1.252
40
+ }
41
+ ],
42
+ [
43
+ {
44
+ "track": 0,
45
+ "activity": 0.771,
46
+ "class_idx": 16,
47
+ "class_name": "speech",
48
+ "class_conf": 0.549,
49
+ "azi_deg": -43.1,
50
+ "ele_deg": 42.33,
51
+ "dist_m": 1.256
52
+ }
53
+ ],
54
+ [
55
+ {
56
+ "track": 0,
57
+ "activity": 0.756,
58
+ "class_idx": 16,
59
+ "class_name": "speech",
60
+ "class_conf": 0.568,
61
+ "azi_deg": -43.15,
62
+ "ele_deg": 42.18,
63
+ "dist_m": 1.258
64
+ }
65
+ ]
66
+ ],
67
+ "rc_frames_preview": [
68
+ [
69
+ {
70
+ "track": 0,
71
+ "activity": 0.623,
72
+ "class_idx": 16,
73
+ "class_name": "speech",
74
+ "class_conf": 0.521,
75
+ "azi_deg": 34.03,
76
+ "ele_deg": 37.12,
77
+ "dist_m": 1.241
78
+ }
79
+ ],
80
+ [
81
+ {
82
+ "track": 0,
83
+ "activity": 0.817,
84
+ "class_idx": 16,
85
+ "class_name": "speech",
86
+ "class_conf": 0.592,
87
+ "azi_deg": 32.3,
88
+ "ele_deg": 37.82,
89
+ "dist_m": 1.175
90
+ }
91
+ ],
92
+ [
93
+ {
94
+ "track": 0,
95
+ "activity": 0.826,
96
+ "class_idx": 16,
97
+ "class_name": "speech",
98
+ "class_conf": 0.616,
99
+ "azi_deg": 33.55,
100
+ "ele_deg": 37.57,
101
+ "dist_m": 1.164
102
+ }
103
+ ],
104
+ [
105
+ {
106
+ "track": 0,
107
+ "activity": 0.816,
108
+ "class_idx": 16,
109
+ "class_name": "speech",
110
+ "class_conf": 0.64,
111
+ "azi_deg": 34.84,
112
+ "ele_deg": 37.71,
113
+ "dist_m": 1.173
114
+ }
115
+ ],
116
+ [
117
+ {
118
+ "track": 0,
119
+ "activity": 0.805,
120
+ "class_idx": 16,
121
+ "class_name": "speech",
122
+ "class_conf": 0.66,
123
+ "azi_deg": 35.57,
124
+ "ele_deg": 37.47,
125
+ "dist_m": 1.179
126
+ }
127
+ ]
128
+ ],
129
+ "comparison": {
130
+ "T_s": 56,
131
+ "activity_gt_frac": 0.14732142857142858,
132
+ "activity_rc_frac": 0.10267857142857142,
133
+ "activity_jaccard": 0.696969696969697,
134
+ "activity_precision_rc_vs_gt": 1.0,
135
+ "activity_recall_rc_vs_gt": 0.696969696969697,
136
+ "activity_f1_rc_vs_gt": 0.8214285714285715,
137
+ "class_match_rate": 1.0,
138
+ "doa_angular_error_deg_mean": 59.86446613244225,
139
+ "doa_angular_error_deg_median": 60.656924189839735,
140
+ "distance_mae_m": 0.056358031928539276,
141
+ "top_class_agreement": 1,
142
+ "gt_top_class": "speech",
143
+ "rc_top_class": "speech"
144
+ },
145
+ "sample": "s1_rank0_opensource_emilia_zh_rawdata_English_003050"
146
+ },
147
+ "s1_rank10_fsd50k_000123": {
148
+ "gt_top_class": "insect",
149
+ "rc_top_class": "insect",
150
+ "gt_frames_preview": [
151
+ [
152
+ {
153
+ "track": 0,
154
+ "activity": 0.919,
155
+ "class_idx": 35,
156
+ "class_name": "insect",
157
+ "class_conf": 0.876,
158
+ "azi_deg": 175.31,
159
+ "ele_deg": -4.01,
160
+ "dist_m": 3.163
161
+ }
162
+ ],
163
+ [
164
+ {
165
+ "track": 0,
166
+ "activity": 0.942,
167
+ "class_idx": 35,
168
+ "class_name": "insect",
169
+ "class_conf": 0.87,
170
+ "azi_deg": 175.91,
171
+ "ele_deg": -3.56,
172
+ "dist_m": 3.156
173
+ }
174
+ ],
175
+ [
176
+ {
177
+ "track": 0,
178
+ "activity": 0.948,
179
+ "class_idx": 35,
180
+ "class_name": "insect",
181
+ "class_conf": 0.869,
182
+ "azi_deg": 176.06,
183
+ "ele_deg": -3.29,
184
+ "dist_m": 3.154
185
+ }
186
+ ],
187
+ [
188
+ {
189
+ "track": 0,
190
+ "activity": 0.949,
191
+ "class_idx": 35,
192
+ "class_name": "insect",
193
+ "class_conf": 0.871,
194
+ "azi_deg": 176.09,
195
+ "ele_deg": -2.86,
196
+ "dist_m": 3.15
197
+ }
198
+ ],
199
+ [
200
+ {
201
+ "track": 0,
202
+ "activity": 0.95,
203
+ "class_idx": 35,
204
+ "class_name": "insect",
205
+ "class_conf": 0.87,
206
+ "azi_deg": 176.3,
207
+ "ele_deg": -2.76,
208
+ "dist_m": 3.163
209
+ }
210
+ ]
211
+ ],
212
+ "rc_frames_preview": [
213
+ [
214
+ {
215
+ "track": 0,
216
+ "activity": 0.774,
217
+ "class_idx": 35,
218
+ "class_name": "insect",
219
+ "class_conf": 0.819,
220
+ "azi_deg": -9.79,
221
+ "ele_deg": -0.5,
222
+ "dist_m": 3.845
223
+ }
224
+ ],
225
+ [
226
+ {
227
+ "track": 0,
228
+ "activity": 0.814,
229
+ "class_idx": 35,
230
+ "class_name": "insect",
231
+ "class_conf": 0.809,
232
+ "azi_deg": -15.55,
233
+ "ele_deg": 1.56,
234
+ "dist_m": 3.876
235
+ }
236
+ ],
237
+ [
238
+ {
239
+ "track": 0,
240
+ "activity": 0.831,
241
+ "class_idx": 35,
242
+ "class_name": "insect",
243
+ "class_conf": 0.806,
244
+ "azi_deg": -18.77,
245
+ "ele_deg": 0.67,
246
+ "dist_m": 3.847
247
+ }
248
+ ],
249
+ [
250
+ {
251
+ "track": 0,
252
+ "activity": 0.841,
253
+ "class_idx": 35,
254
+ "class_name": "insect",
255
+ "class_conf": 0.81,
256
+ "azi_deg": -18.84,
257
+ "ele_deg": 0.81,
258
+ "dist_m": 3.83
259
+ }
260
+ ],
261
+ [
262
+ {
263
+ "track": 0,
264
+ "activity": 0.849,
265
+ "class_idx": 35,
266
+ "class_name": "insect",
267
+ "class_conf": 0.807,
268
+ "azi_deg": -19.82,
269
+ "ele_deg": 0.35,
270
+ "dist_m": 3.857
271
+ }
272
+ ]
273
+ ],
274
+ "comparison": {
275
+ "T_s": 59,
276
+ "activity_gt_frac": 0.25,
277
+ "activity_rc_frac": 0.25,
278
+ "activity_jaccard": 1.0,
279
+ "activity_precision_rc_vs_gt": 1.0,
280
+ "activity_recall_rc_vs_gt": 1.0,
281
+ "activity_f1_rc_vs_gt": 1.0,
282
+ "class_match_rate": 1.0,
283
+ "doa_angular_error_deg_mean": 156.0560686538037,
284
+ "doa_angular_error_deg_median": 155.71115908405488,
285
+ "distance_mae_m": 0.6611307263374329,
286
+ "top_class_agreement": 1,
287
+ "gt_top_class": "insect",
288
+ "rc_top_class": "insect"
289
+ },
290
+ "sample": "s1_rank10_fsd50k_000123"
291
+ },
292
+ "s1_rank10_insectset_000529": {
293
+ "gt_top_class": "metal_clink",
294
+ "rc_top_class": "insect",
295
+ "gt_frames_preview": [
296
+ [
297
+ {
298
+ "track": 0,
299
+ "activity": 0.598,
300
+ "class_idx": 35,
301
+ "class_name": "insect",
302
+ "class_conf": 0.279,
303
+ "azi_deg": -80.4,
304
+ "ele_deg": 23.47,
305
+ "dist_m": 1.418
306
+ }
307
+ ],
308
+ [
309
+ {
310
+ "track": 0,
311
+ "activity": 0.598,
312
+ "class_idx": 35,
313
+ "class_name": "insect",
314
+ "class_conf": 0.28,
315
+ "azi_deg": -80.17,
316
+ "ele_deg": 23.68,
317
+ "dist_m": 1.402
318
+ }
319
+ ],
320
+ [
321
+ {
322
+ "track": 0,
323
+ "activity": 0.6,
324
+ "class_idx": 35,
325
+ "class_name": "insect",
326
+ "class_conf": 0.28,
327
+ "azi_deg": -80.23,
328
+ "ele_deg": 23.71,
329
+ "dist_m": 1.402
330
+ }
331
+ ],
332
+ [
333
+ {
334
+ "track": 0,
335
+ "activity": 0.618,
336
+ "class_idx": 35,
337
+ "class_name": "insect",
338
+ "class_conf": 0.285,
339
+ "azi_deg": -80.66,
340
+ "ele_deg": 23.91,
341
+ "dist_m": 1.4
342
+ }
343
+ ],
344
+ [
345
+ {
346
+ "track": 0,
347
+ "activity": 0.639,
348
+ "class_idx": 12,
349
+ "class_name": "metal_clink",
350
+ "class_conf": 0.283,
351
+ "azi_deg": -81.02,
352
+ "ele_deg": 24.07,
353
+ "dist_m": 1.401
354
+ }
355
+ ]
356
+ ],
357
+ "rc_frames_preview": [
358
+ [
359
+ {
360
+ "track": 0,
361
+ "activity": 0.507,
362
+ "class_idx": 35,
363
+ "class_name": "insect",
364
+ "class_conf": 0.46,
365
+ "azi_deg": 111.58,
366
+ "ele_deg": 20.34,
367
+ "dist_m": 1.732
368
+ }
369
+ ],
370
+ [
371
+ {
372
+ "track": 0,
373
+ "activity": 0.507,
374
+ "class_idx": 35,
375
+ "class_name": "insect",
376
+ "class_conf": 0.46,
377
+ "azi_deg": 111.26,
378
+ "ele_deg": 20.38,
379
+ "dist_m": 1.732
380
+ }
381
+ ],
382
+ [
383
+ {
384
+ "track": 0,
385
+ "activity": 0.508,
386
+ "class_idx": 35,
387
+ "class_name": "insect",
388
+ "class_conf": 0.46,
389
+ "azi_deg": 111.3,
390
+ "ele_deg": 20.37,
391
+ "dist_m": 1.731
392
+ }
393
+ ],
394
+ [
395
+ {
396
+ "track": 0,
397
+ "activity": 0.516,
398
+ "class_idx": 35,
399
+ "class_name": "insect",
400
+ "class_conf": 0.465,
401
+ "azi_deg": 111.77,
402
+ "ele_deg": 20.48,
403
+ "dist_m": 1.726
404
+ }
405
+ ],
406
+ [
407
+ {
408
+ "track": 0,
409
+ "activity": 0.53,
410
+ "class_idx": 35,
411
+ "class_name": "insect",
412
+ "class_conf": 0.464,
413
+ "azi_deg": 112.0,
414
+ "ele_deg": 20.43,
415
+ "dist_m": 1.717
416
+ }
417
+ ]
418
+ ],
419
+ "comparison": {
420
+ "T_s": 303,
421
+ "activity_gt_frac": 0.18976897689768976,
422
+ "activity_rc_frac": 0.08745874587458746,
423
+ "activity_jaccard": 0.4608695652173913,
424
+ "activity_precision_rc_vs_gt": 1.0,
425
+ "activity_recall_rc_vs_gt": 0.4608695652173913,
426
+ "activity_f1_rc_vs_gt": 0.6309523809523809,
427
+ "class_match_rate": 0.05660377358490566,
428
+ "doa_angular_error_deg_mean": 136.71160597941594,
429
+ "doa_angular_error_deg_median": 137.4092032601551,
430
+ "distance_mae_m": 0.27179428935050964,
431
+ "top_class_agreement": 0,
432
+ "gt_top_class": "metal_clink",
433
+ "rc_top_class": "insect"
434
+ },
435
+ "sample": "s1_rank10_insectset_000529"
436
+ },
437
+ "s1_rank10_laion_630k_002480": {
438
+ "gt_top_class": "keyboard_instrument",
439
+ "rc_top_class": "keyboard_instrument",
440
+ "gt_frames_preview": [
441
+ [],
442
+ [],
443
+ [],
444
+ [],
445
+ []
446
+ ],
447
+ "rc_frames_preview": [
448
+ [],
449
+ [],
450
+ [],
451
+ [],
452
+ []
453
+ ],
454
+ "comparison": {
455
+ "T_s": 300,
456
+ "activity_gt_frac": 0.23416666666666666,
457
+ "activity_rc_frac": 0.0725,
458
+ "activity_jaccard": 0.3096085409252669,
459
+ "activity_precision_rc_vs_gt": 1.0,
460
+ "activity_recall_rc_vs_gt": 0.3096085409252669,
461
+ "activity_f1_rc_vs_gt": 0.47282608695652173,
462
+ "class_match_rate": 1.0,
463
+ "doa_angular_error_deg_mean": 138.44985927817157,
464
+ "doa_angular_error_deg_median": 140.29241128549629,
465
+ "distance_mae_m": 0.7546095848083496,
466
+ "top_class_agreement": 1,
467
+ "gt_top_class": "keyboard_instrument",
468
+ "rc_top_class": "keyboard_instrument"
469
+ },
470
+ "sample": "s1_rank10_laion_630k_002480"
471
+ },
472
+ "s1_rank10_temporal_order_001229": {
473
+ "gt_top_class": "human_vocalization",
474
+ "rc_top_class": "human_vocalization",
475
+ "gt_frames_preview": [
476
+ [],
477
+ [],
478
+ [],
479
+ [],
480
+ [
481
+ {
482
+ "track": 0,
483
+ "activity": 0.529,
484
+ "class_idx": 6,
485
+ "class_name": "human_vocalization",
486
+ "class_conf": 0.807,
487
+ "azi_deg": 90.28,
488
+ "ele_deg": 20.51,
489
+ "dist_m": 1.839
490
+ }
491
+ ]
492
+ ],
493
+ "rc_frames_preview": [
494
+ [
495
+ {
496
+ "track": 0,
497
+ "activity": 0.689,
498
+ "class_idx": 6,
499
+ "class_name": "human_vocalization",
500
+ "class_conf": 0.348,
501
+ "azi_deg": 89.27,
502
+ "ele_deg": 13.42,
503
+ "dist_m": 2.255
504
+ }
505
+ ],
506
+ [
507
+ {
508
+ "track": 0,
509
+ "activity": 0.843,
510
+ "class_idx": 6,
511
+ "class_name": "human_vocalization",
512
+ "class_conf": 0.539,
513
+ "azi_deg": 89.49,
514
+ "ele_deg": 13.74,
515
+ "dist_m": 2.25
516
+ }
517
+ ],
518
+ [
519
+ {
520
+ "track": 0,
521
+ "activity": 0.865,
522
+ "class_idx": 6,
523
+ "class_name": "human_vocalization",
524
+ "class_conf": 0.548,
525
+ "azi_deg": 89.13,
526
+ "ele_deg": 14.13,
527
+ "dist_m": 2.258
528
+ }
529
+ ],
530
+ [
531
+ {
532
+ "track": 0,
533
+ "activity": 0.879,
534
+ "class_idx": 6,
535
+ "class_name": "human_vocalization",
536
+ "class_conf": 0.569,
537
+ "azi_deg": 89.23,
538
+ "ele_deg": 14.32,
539
+ "dist_m": 2.269
540
+ }
541
+ ],
542
+ [
543
+ {
544
+ "track": 0,
545
+ "activity": 0.895,
546
+ "class_idx": 6,
547
+ "class_name": "human_vocalization",
548
+ "class_conf": 0.573,
549
+ "azi_deg": 89.42,
550
+ "ele_deg": 14.41,
551
+ "dist_m": 2.277
552
+ }
553
+ ]
554
+ ],
555
+ "comparison": {
556
+ "T_s": 29,
557
+ "activity_gt_frac": 0.15517241379310345,
558
+ "activity_rc_frac": 0.20689655172413793,
559
+ "activity_jaccard": 0.75,
560
+ "activity_precision_rc_vs_gt": 0.75,
561
+ "activity_recall_rc_vs_gt": 1.0,
562
+ "activity_f1_rc_vs_gt": 0.8571428571428571,
563
+ "class_match_rate": 1.0,
564
+ "doa_angular_error_deg_mean": 6.153626667733724,
565
+ "doa_angular_error_deg_median": 6.147921418235693,
566
+ "distance_mae_m": 0.45835474133491516,
567
+ "top_class_agreement": 1,
568
+ "gt_top_class": "human_vocalization",
569
+ "rc_top_class": "human_vocalization"
570
+ },
571
+ "sample": "s1_rank10_temporal_order_001229"
572
+ },
573
+ "s1_rank14_audioset_keyword_000653": {
574
+ "gt_top_class": "human_vocalization",
575
+ "rc_top_class": "singing",
576
+ "gt_frames_preview": [
577
+ [],
578
+ [],
579
+ [],
580
+ [],
581
+ []
582
+ ],
583
+ "rc_frames_preview": [
584
+ [
585
+ {
586
+ "track": 2,
587
+ "activity": 0.697,
588
+ "class_idx": 41,
589
+ "class_name": "singing",
590
+ "class_conf": 0.405,
591
+ "azi_deg": 123.85,
592
+ "ele_deg": -8.07,
593
+ "dist_m": 2.299
594
+ }
595
+ ],
596
+ [
597
+ {
598
+ "track": 2,
599
+ "activity": 0.722,
600
+ "class_idx": 41,
601
+ "class_name": "singing",
602
+ "class_conf": 0.546,
603
+ "azi_deg": 126.55,
604
+ "ele_deg": -7.12,
605
+ "dist_m": 2.28
606
+ }
607
+ ],
608
+ [
609
+ {
610
+ "track": 2,
611
+ "activity": 0.768,
612
+ "class_idx": 41,
613
+ "class_name": "singing",
614
+ "class_conf": 0.54,
615
+ "azi_deg": 131.08,
616
+ "ele_deg": -6.14,
617
+ "dist_m": 2.281
618
+ }
619
+ ],
620
+ [
621
+ {
622
+ "track": 2,
623
+ "activity": 0.797,
624
+ "class_idx": 41,
625
+ "class_name": "singing",
626
+ "class_conf": 0.549,
627
+ "azi_deg": 132.51,
628
+ "ele_deg": -5.47,
629
+ "dist_m": 2.275
630
+ }
631
+ ],
632
+ [
633
+ {
634
+ "track": 2,
635
+ "activity": 0.824,
636
+ "class_idx": 41,
637
+ "class_name": "singing",
638
+ "class_conf": 0.572,
639
+ "azi_deg": 133.35,
640
+ "ele_deg": -5.2,
641
+ "dist_m": 2.276
642
+ }
643
+ ]
644
+ ],
645
+ "comparison": {
646
+ "T_s": 103,
647
+ "activity_gt_frac": 0.2087378640776699,
648
+ "activity_rc_frac": 0.24029126213592233,
649
+ "activity_jaccard": 0.8686868686868687,
650
+ "activity_precision_rc_vs_gt": 0.8686868686868687,
651
+ "activity_recall_rc_vs_gt": 1.0,
652
+ "activity_f1_rc_vs_gt": 0.9297297297297298,
653
+ "class_match_rate": 0.0,
654
+ "doa_angular_error_deg_mean": 6.5160168715399385,
655
+ "doa_angular_error_deg_median": 6.497438991141886,
656
+ "distance_mae_m": 0.2764527499675751,
657
+ "top_class_agreement": 0,
658
+ "gt_top_class": "human_vocalization",
659
+ "rc_top_class": "singing"
660
+ },
661
+ "sample": "s1_rank14_audioset_keyword_000653"
662
+ },
663
+ "s1_rank14_fsd50k_000024": {
664
+ "gt_top_class": "keyboard_instrument",
665
+ "rc_top_class": "musical_instrument",
666
+ "gt_frames_preview": [
667
+ [
668
+ {
669
+ "track": 0,
670
+ "activity": 0.741,
671
+ "class_idx": 7,
672
+ "class_name": "keyboard_instrument",
673
+ "class_conf": 0.85,
674
+ "azi_deg": 106.65,
675
+ "ele_deg": 15.69,
676
+ "dist_m": 1.944
677
+ }
678
+ ],
679
+ [
680
+ {
681
+ "track": 0,
682
+ "activity": 0.833,
683
+ "class_idx": 7,
684
+ "class_name": "keyboard_instrument",
685
+ "class_conf": 0.853,
686
+ "azi_deg": 108.18,
687
+ "ele_deg": 16.01,
688
+ "dist_m": 1.926
689
+ }
690
+ ],
691
+ [
692
+ {
693
+ "track": 0,
694
+ "activity": 0.83,
695
+ "class_idx": 7,
696
+ "class_name": "keyboard_instrument",
697
+ "class_conf": 0.849,
698
+ "azi_deg": 108.66,
699
+ "ele_deg": 15.48,
700
+ "dist_m": 1.927
701
+ }
702
+ ],
703
+ [
704
+ {
705
+ "track": 0,
706
+ "activity": 0.837,
707
+ "class_idx": 7,
708
+ "class_name": "keyboard_instrument",
709
+ "class_conf": 0.851,
710
+ "azi_deg": 108.29,
711
+ "ele_deg": 15.24,
712
+ "dist_m": 1.927
713
+ }
714
+ ],
715
+ [
716
+ {
717
+ "track": 0,
718
+ "activity": 0.844,
719
+ "class_idx": 7,
720
+ "class_name": "keyboard_instrument",
721
+ "class_conf": 0.849,
722
+ "azi_deg": 108.11,
723
+ "ele_deg": 14.97,
724
+ "dist_m": 1.931
725
+ }
726
+ ]
727
+ ],
728
+ "rc_frames_preview": [
729
+ [
730
+ {
731
+ "track": 0,
732
+ "activity": 0.894,
733
+ "class_idx": 28,
734
+ "class_name": "musical_instrument",
735
+ "class_conf": 0.458,
736
+ "azi_deg": 58.25,
737
+ "ele_deg": -1.86,
738
+ "dist_m": 1.559
739
+ }
740
+ ],
741
+ [
742
+ {
743
+ "track": 0,
744
+ "activity": 0.909,
745
+ "class_idx": 28,
746
+ "class_name": "musical_instrument",
747
+ "class_conf": 0.479,
748
+ "azi_deg": 58.86,
749
+ "ele_deg": 4.65,
750
+ "dist_m": 1.595
751
+ }
752
+ ],
753
+ [
754
+ {
755
+ "track": 0,
756
+ "activity": 0.886,
757
+ "class_idx": 28,
758
+ "class_name": "musical_instrument",
759
+ "class_conf": 0.491,
760
+ "azi_deg": 62.04,
761
+ "ele_deg": 2.91,
762
+ "dist_m": 1.601
763
+ }
764
+ ],
765
+ [
766
+ {
767
+ "track": 0,
768
+ "activity": 0.883,
769
+ "class_idx": 28,
770
+ "class_name": "musical_instrument",
771
+ "class_conf": 0.491,
772
+ "azi_deg": 62.44,
773
+ "ele_deg": -0.01,
774
+ "dist_m": 1.588
775
+ }
776
+ ],
777
+ [
778
+ {
779
+ "track": 0,
780
+ "activity": 0.877,
781
+ "class_idx": 28,
782
+ "class_name": "musical_instrument",
783
+ "class_conf": 0.5,
784
+ "azi_deg": 62.67,
785
+ "ele_deg": -1.44,
786
+ "dist_m": 1.594
787
+ }
788
+ ]
789
+ ],
790
+ "comparison": {
791
+ "T_s": 24,
792
+ "activity_gt_frac": 0.25,
793
+ "activity_rc_frac": 0.25,
794
+ "activity_jaccard": 1.0,
795
+ "activity_precision_rc_vs_gt": 1.0,
796
+ "activity_recall_rc_vs_gt": 1.0,
797
+ "activity_f1_rc_vs_gt": 1.0,
798
+ "class_match_rate": 0.0,
799
+ "doa_angular_error_deg_mean": 48.053440319441144,
800
+ "doa_angular_error_deg_median": 47.67819369056817,
801
+ "distance_mae_m": 0.35104572772979736,
802
+ "top_class_agreement": 0,
803
+ "gt_top_class": "keyboard_instrument",
804
+ "rc_top_class": "musical_instrument"
805
+ },
806
+ "sample": "s1_rank14_fsd50k_000024"
807
+ },
808
+ "s1_rank14_temporal_order_003256": {
809
+ "gt_top_class": "keyboard_instrument",
810
+ "rc_top_class": "keyboard_instrument",
811
+ "gt_frames_preview": [
812
+ [],
813
+ [],
814
+ [],
815
+ [],
816
+ []
817
+ ],
818
+ "rc_frames_preview": [
819
+ [],
820
+ [],
821
+ [],
822
+ [],
823
+ []
824
+ ],
825
+ "comparison": {
826
+ "T_s": 13,
827
+ "activity_gt_frac": 0.0,
828
+ "activity_rc_frac": 0.0,
829
+ "activity_jaccard": 0.0,
830
+ "activity_precision_rc_vs_gt": 0.0,
831
+ "activity_recall_rc_vs_gt": 0.0,
832
+ "activity_f1_rc_vs_gt": 0.0,
833
+ "class_match_rate": NaN,
834
+ "doa_angular_error_deg_mean": NaN,
835
+ "doa_angular_error_deg_median": NaN,
836
+ "distance_mae_m": NaN,
837
+ "top_class_agreement": 1,
838
+ "gt_top_class": "keyboard_instrument",
839
+ "rc_top_class": "keyboard_instrument"
840
+ },
841
+ "sample": "s1_rank14_temporal_order_003256"
842
+ },
843
+ "s1_rank15_fsd50k_000489": {
844
+ "gt_top_class": "telephone_alarm",
845
+ "rc_top_class": "telephone_alarm",
846
+ "gt_frames_preview": [
847
+ [],
848
+ [
849
+ {
850
+ "track": 0,
851
+ "activity": 0.512,
852
+ "class_idx": 23,
853
+ "class_name": "telephone_alarm",
854
+ "class_conf": 0.862,
855
+ "azi_deg": 48.36,
856
+ "ele_deg": 28.03,
857
+ "dist_m": 1.952
858
+ }
859
+ ],
860
+ [
861
+ {
862
+ "track": 0,
863
+ "activity": 0.702,
864
+ "class_idx": 23,
865
+ "class_name": "telephone_alarm",
866
+ "class_conf": 0.868,
867
+ "azi_deg": 48.63,
868
+ "ele_deg": 28.02,
869
+ "dist_m": 1.937
870
+ }
871
+ ],
872
+ [
873
+ {
874
+ "track": 0,
875
+ "activity": 0.846,
876
+ "class_idx": 23,
877
+ "class_name": "telephone_alarm",
878
+ "class_conf": 0.871,
879
+ "azi_deg": 49.05,
880
+ "ele_deg": 28.02,
881
+ "dist_m": 1.925
882
+ }
883
+ ],
884
+ [
885
+ {
886
+ "track": 0,
887
+ "activity": 0.875,
888
+ "class_idx": 23,
889
+ "class_name": "telephone_alarm",
890
+ "class_conf": 0.874,
891
+ "azi_deg": 49.06,
892
+ "ele_deg": 27.97,
893
+ "dist_m": 1.918
894
+ }
895
+ ]
896
+ ],
897
+ "rc_frames_preview": [
898
+ [],
899
+ [],
900
+ [],
901
+ [],
902
+ []
903
+ ],
904
+ "comparison": {
905
+ "T_s": 155,
906
+ "activity_gt_frac": 0.22258064516129034,
907
+ "activity_rc_frac": 0.21935483870967742,
908
+ "activity_jaccard": 0.9571428571428572,
909
+ "activity_precision_rc_vs_gt": 0.9852941176470589,
910
+ "activity_recall_rc_vs_gt": 0.9710144927536232,
911
+ "activity_f1_rc_vs_gt": 0.9781021897810219,
912
+ "class_match_rate": 1.0,
913
+ "doa_angular_error_deg_mean": 10.624633151373759,
914
+ "doa_angular_error_deg_median": 10.627009159697835,
915
+ "distance_mae_m": 0.258139431476593,
916
+ "top_class_agreement": 1,
917
+ "gt_top_class": "telephone_alarm",
918
+ "rc_top_class": "telephone_alarm"
919
+ },
920
+ "sample": "s1_rank15_fsd50k_000489"
921
+ },
922
+ "s1_rank17_audioset_keyword_001725": {
923
+ "gt_top_class": "guitar",
924
+ "rc_top_class": "guitar",
925
+ "gt_frames_preview": [
926
+ [
927
+ {
928
+ "track": 0,
929
+ "activity": 0.978,
930
+ "class_idx": 2,
931
+ "class_name": "guitar",
932
+ "class_conf": 0.871,
933
+ "azi_deg": -6.63,
934
+ "ele_deg": 1.21,
935
+ "dist_m": 2.677
936
+ }
937
+ ],
938
+ [
939
+ {
940
+ "track": 0,
941
+ "activity": 0.979,
942
+ "class_idx": 2,
943
+ "class_name": "guitar",
944
+ "class_conf": 0.871,
945
+ "azi_deg": -6.29,
946
+ "ele_deg": 0.95,
947
+ "dist_m": 2.66
948
+ }
949
+ ],
950
+ [
951
+ {
952
+ "track": 0,
953
+ "activity": 0.982,
954
+ "class_idx": 2,
955
+ "class_name": "guitar",
956
+ "class_conf": 0.876,
957
+ "azi_deg": -6.28,
958
+ "ele_deg": 0.53,
959
+ "dist_m": 2.64
960
+ }
961
+ ],
962
+ [
963
+ {
964
+ "track": 0,
965
+ "activity": 0.982,
966
+ "class_idx": 2,
967
+ "class_name": "guitar",
968
+ "class_conf": 0.874,
969
+ "azi_deg": -7.43,
970
+ "ele_deg": 0.61,
971
+ "dist_m": 2.621
972
+ }
973
+ ],
974
+ [
975
+ {
976
+ "track": 0,
977
+ "activity": 0.983,
978
+ "class_idx": 2,
979
+ "class_name": "guitar",
980
+ "class_conf": 0.879,
981
+ "azi_deg": -8.48,
982
+ "ele_deg": 0.63,
983
+ "dist_m": 2.606
984
+ }
985
+ ]
986
+ ],
987
+ "rc_frames_preview": [
988
+ [
989
+ {
990
+ "track": 0,
991
+ "activity": 0.965,
992
+ "class_idx": 2,
993
+ "class_name": "guitar",
994
+ "class_conf": 0.785,
995
+ "azi_deg": 7.39,
996
+ "ele_deg": 5.51,
997
+ "dist_m": 2.516
998
+ }
999
+ ],
1000
+ [
1001
+ {
1002
+ "track": 0,
1003
+ "activity": 0.963,
1004
+ "class_idx": 2,
1005
+ "class_name": "guitar",
1006
+ "class_conf": 0.793,
1007
+ "azi_deg": 8.29,
1008
+ "ele_deg": 5.46,
1009
+ "dist_m": 2.503
1010
+ }
1011
+ ],
1012
+ [
1013
+ {
1014
+ "track": 0,
1015
+ "activity": 0.964,
1016
+ "class_idx": 2,
1017
+ "class_name": "guitar",
1018
+ "class_conf": 0.809,
1019
+ "azi_deg": 9.0,
1020
+ "ele_deg": 5.33,
1021
+ "dist_m": 2.483
1022
+ }
1023
+ ],
1024
+ [
1025
+ {
1026
+ "track": 0,
1027
+ "activity": 0.966,
1028
+ "class_idx": 2,
1029
+ "class_name": "guitar",
1030
+ "class_conf": 0.813,
1031
+ "azi_deg": 8.13,
1032
+ "ele_deg": 5.62,
1033
+ "dist_m": 2.465
1034
+ }
1035
+ ],
1036
+ [
1037
+ {
1038
+ "track": 0,
1039
+ "activity": 0.969,
1040
+ "class_idx": 2,
1041
+ "class_name": "guitar",
1042
+ "class_conf": 0.826,
1043
+ "azi_deg": 7.11,
1044
+ "ele_deg": 5.77,
1045
+ "dist_m": 2.453
1046
+ }
1047
+ ]
1048
+ ],
1049
+ "comparison": {
1050
+ "T_s": 104,
1051
+ "activity_gt_frac": 0.24759615384615385,
1052
+ "activity_rc_frac": 0.25,
1053
+ "activity_jaccard": 0.9903846153846154,
1054
+ "activity_precision_rc_vs_gt": 0.9903846153846154,
1055
+ "activity_recall_rc_vs_gt": 1.0,
1056
+ "activity_f1_rc_vs_gt": 0.9951690821256038,
1057
+ "class_match_rate": 1.0,
1058
+ "doa_angular_error_deg_mean": 13.613160991148467,
1059
+ "doa_angular_error_deg_median": 13.479843693995544,
1060
+ "distance_mae_m": 0.14917439222335815,
1061
+ "top_class_agreement": 1,
1062
+ "gt_top_class": "guitar",
1063
+ "rc_top_class": "guitar"
1064
+ },
1065
+ "sample": "s1_rank17_audioset_keyword_001725"
1066
+ },
1067
+ "s1_rank18_opensource_emilia_zh_rawdata_English_000545": {
1068
+ "gt_top_class": "speech",
1069
+ "rc_top_class": "speech",
1070
+ "gt_frames_preview": [
1071
+ [
1072
+ {
1073
+ "track": 0,
1074
+ "activity": 0.616,
1075
+ "class_idx": 16,
1076
+ "class_name": "speech",
1077
+ "class_conf": 0.859,
1078
+ "azi_deg": 54.28,
1079
+ "ele_deg": 32.99,
1080
+ "dist_m": 1.793
1081
+ }
1082
+ ],
1083
+ [
1084
+ {
1085
+ "track": 0,
1086
+ "activity": 0.644,
1087
+ "class_idx": 16,
1088
+ "class_name": "speech",
1089
+ "class_conf": 0.864,
1090
+ "azi_deg": 54.3,
1091
+ "ele_deg": 32.91,
1092
+ "dist_m": 1.788
1093
+ }
1094
+ ],
1095
+ [
1096
+ {
1097
+ "track": 0,
1098
+ "activity": 0.729,
1099
+ "class_idx": 16,
1100
+ "class_name": "speech",
1101
+ "class_conf": 0.87,
1102
+ "azi_deg": 54.21,
1103
+ "ele_deg": 32.44,
1104
+ "dist_m": 1.792
1105
+ }
1106
+ ],
1107
+ [
1108
+ {
1109
+ "track": 0,
1110
+ "activity": 0.809,
1111
+ "class_idx": 16,
1112
+ "class_name": "speech",
1113
+ "class_conf": 0.876,
1114
+ "azi_deg": 54.15,
1115
+ "ele_deg": 32.04,
1116
+ "dist_m": 1.808
1117
+ }
1118
+ ],
1119
+ [
1120
+ {
1121
+ "track": 0,
1122
+ "activity": 0.824,
1123
+ "class_idx": 16,
1124
+ "class_name": "speech",
1125
+ "class_conf": 0.877,
1126
+ "azi_deg": 53.89,
1127
+ "ele_deg": 31.84,
1128
+ "dist_m": 1.814
1129
+ }
1130
+ ]
1131
+ ],
1132
+ "rc_frames_preview": [
1133
+ [
1134
+ {
1135
+ "track": 0,
1136
+ "activity": 0.577,
1137
+ "class_idx": 16,
1138
+ "class_name": "speech",
1139
+ "class_conf": 0.868,
1140
+ "azi_deg": 53.63,
1141
+ "ele_deg": 32.63,
1142
+ "dist_m": 1.75
1143
+ }
1144
+ ],
1145
+ [
1146
+ {
1147
+ "track": 0,
1148
+ "activity": 0.606,
1149
+ "class_idx": 16,
1150
+ "class_name": "speech",
1151
+ "class_conf": 0.874,
1152
+ "azi_deg": 53.62,
1153
+ "ele_deg": 32.51,
1154
+ "dist_m": 1.746
1155
+ }
1156
+ ],
1157
+ [
1158
+ {
1159
+ "track": 0,
1160
+ "activity": 0.696,
1161
+ "class_idx": 16,
1162
+ "class_name": "speech",
1163
+ "class_conf": 0.878,
1164
+ "azi_deg": 53.58,
1165
+ "ele_deg": 32.12,
1166
+ "dist_m": 1.745
1167
+ }
1168
+ ],
1169
+ [
1170
+ {
1171
+ "track": 0,
1172
+ "activity": 0.784,
1173
+ "class_idx": 16,
1174
+ "class_name": "speech",
1175
+ "class_conf": 0.881,
1176
+ "azi_deg": 53.63,
1177
+ "ele_deg": 31.87,
1178
+ "dist_m": 1.748
1179
+ }
1180
+ ],
1181
+ [
1182
+ {
1183
+ "track": 0,
1184
+ "activity": 0.801,
1185
+ "class_idx": 16,
1186
+ "class_name": "speech",
1187
+ "class_conf": 0.882,
1188
+ "azi_deg": 53.5,
1189
+ "ele_deg": 31.77,
1190
+ "dist_m": 1.749
1191
+ }
1192
+ ]
1193
+ ],
1194
+ "comparison": {
1195
+ "T_s": 147,
1196
+ "activity_gt_frac": 0.12585034013605442,
1197
+ "activity_rc_frac": 0.11394557823129252,
1198
+ "activity_jaccard": 0.9054054054054054,
1199
+ "activity_precision_rc_vs_gt": 1.0,
1200
+ "activity_recall_rc_vs_gt": 0.9054054054054054,
1201
+ "activity_f1_rc_vs_gt": 0.950354609929078,
1202
+ "class_match_rate": 1.0,
1203
+ "doa_angular_error_deg_mean": 0.7895429014465694,
1204
+ "doa_angular_error_deg_median": 0.843487291291565,
1205
+ "distance_mae_m": 0.07034817337989807,
1206
+ "top_class_agreement": 1,
1207
+ "gt_top_class": "speech",
1208
+ "rc_top_class": "speech"
1209
+ },
1210
+ "sample": "s1_rank18_opensource_emilia_zh_rawdata_English_000545"
1211
+ },
1212
+ "s1_rank20_laion_630k_002181": {
1213
+ "gt_top_class": "drum",
1214
+ "rc_top_class": "drum",
1215
+ "gt_frames_preview": [
1216
+ [
1217
+ {
1218
+ "track": 0,
1219
+ "activity": 0.895,
1220
+ "class_idx": 4,
1221
+ "class_name": "drum",
1222
+ "class_conf": 0.562,
1223
+ "azi_deg": -117.81,
1224
+ "ele_deg": 27.03,
1225
+ "dist_m": 1.466
1226
+ }
1227
+ ],
1228
+ [
1229
+ {
1230
+ "track": 0,
1231
+ "activity": 0.896,
1232
+ "class_idx": 4,
1233
+ "class_name": "drum",
1234
+ "class_conf": 0.568,
1235
+ "azi_deg": -118.0,
1236
+ "ele_deg": 26.75,
1237
+ "dist_m": 1.479
1238
+ }
1239
+ ],
1240
+ [
1241
+ {
1242
+ "track": 0,
1243
+ "activity": 0.908,
1244
+ "class_idx": 4,
1245
+ "class_name": "drum",
1246
+ "class_conf": 0.578,
1247
+ "azi_deg": -118.28,
1248
+ "ele_deg": 26.29,
1249
+ "dist_m": 1.475
1250
+ }
1251
+ ],
1252
+ [
1253
+ {
1254
+ "track": 0,
1255
+ "activity": 0.922,
1256
+ "class_idx": 4,
1257
+ "class_name": "drum",
1258
+ "class_conf": 0.576,
1259
+ "azi_deg": -118.63,
1260
+ "ele_deg": 25.93,
1261
+ "dist_m": 1.462
1262
+ }
1263
+ ],
1264
+ [
1265
+ {
1266
+ "track": 0,
1267
+ "activity": 0.933,
1268
+ "class_idx": 4,
1269
+ "class_name": "drum",
1270
+ "class_conf": 0.572,
1271
+ "azi_deg": -118.84,
1272
+ "ele_deg": 25.37,
1273
+ "dist_m": 1.459
1274
+ }
1275
+ ]
1276
+ ],
1277
+ "rc_frames_preview": [
1278
+ [
1279
+ {
1280
+ "track": 0,
1281
+ "activity": 0.664,
1282
+ "class_idx": 4,
1283
+ "class_name": "drum",
1284
+ "class_conf": 0.71,
1285
+ "azi_deg": -115.78,
1286
+ "ele_deg": 5.0,
1287
+ "dist_m": 1.49
1288
+ }
1289
+ ],
1290
+ [
1291
+ {
1292
+ "track": 0,
1293
+ "activity": 0.675,
1294
+ "class_idx": 4,
1295
+ "class_name": "drum",
1296
+ "class_conf": 0.711,
1297
+ "azi_deg": -115.98,
1298
+ "ele_deg": 4.51,
1299
+ "dist_m": 1.502
1300
+ }
1301
+ ],
1302
+ [
1303
+ {
1304
+ "track": 0,
1305
+ "activity": 0.736,
1306
+ "class_idx": 4,
1307
+ "class_name": "drum",
1308
+ "class_conf": 0.716,
1309
+ "azi_deg": -116.66,
1310
+ "ele_deg": 4.57,
1311
+ "dist_m": 1.487
1312
+ },
1313
+ {
1314
+ "track": 1,
1315
+ "activity": 0.571,
1316
+ "class_idx": 49,
1317
+ "class_name": "paper",
1318
+ "class_conf": 0.264,
1319
+ "azi_deg": 43.47,
1320
+ "ele_deg": 33.66,
1321
+ "dist_m": 1.097
1322
+ }
1323
+ ],
1324
+ [
1325
+ {
1326
+ "track": 0,
1327
+ "activity": 0.78,
1328
+ "class_idx": 4,
1329
+ "class_name": "drum",
1330
+ "class_conf": 0.709,
1331
+ "azi_deg": -117.42,
1332
+ "ele_deg": 5.16,
1333
+ "dist_m": 1.461
1334
+ },
1335
+ {
1336
+ "track": 1,
1337
+ "activity": 0.701,
1338
+ "class_idx": 49,
1339
+ "class_name": "paper",
1340
+ "class_conf": 0.277,
1341
+ "azi_deg": 43.15,
1342
+ "ele_deg": 35.27,
1343
+ "dist_m": 1.045
1344
+ }
1345
+ ],
1346
+ [
1347
+ {
1348
+ "track": 0,
1349
+ "activity": 0.8,
1350
+ "class_idx": 4,
1351
+ "class_name": "drum",
1352
+ "class_conf": 0.705,
1353
+ "azi_deg": -117.79,
1354
+ "ele_deg": 5.13,
1355
+ "dist_m": 1.454
1356
+ },
1357
+ {
1358
+ "track": 1,
1359
+ "activity": 0.76,
1360
+ "class_idx": 49,
1361
+ "class_name": "paper",
1362
+ "class_conf": 0.27,
1363
+ "azi_deg": 42.93,
1364
+ "ele_deg": 35.7,
1365
+ "dist_m": 1.039
1366
+ }
1367
+ ]
1368
+ ],
1369
+ "comparison": {
1370
+ "T_s": 174,
1371
+ "activity_gt_frac": 0.27873563218390807,
1372
+ "activity_rc_frac": 0.3620689655172414,
1373
+ "activity_jaccard": 0.6766917293233082,
1374
+ "activity_precision_rc_vs_gt": 0.7142857142857143,
1375
+ "activity_recall_rc_vs_gt": 0.9278350515463918,
1376
+ "activity_f1_rc_vs_gt": 0.8071748878923768,
1377
+ "class_match_rate": 0.5555555555555556,
1378
+ "doa_angular_error_deg_mean": 20.903164025298974,
1379
+ "doa_angular_error_deg_median": 21.441705235349964,
1380
+ "distance_mae_m": 0.06737590581178665,
1381
+ "top_class_agreement": 1,
1382
+ "gt_top_class": "drum",
1383
+ "rc_top_class": "drum"
1384
+ },
1385
+ "sample": "s1_rank20_laion_630k_002181"
1386
+ },
1387
+ "s1_rank20_vocalsound_000310": {
1388
+ "gt_top_class": "laughter",
1389
+ "rc_top_class": "laughter",
1390
+ "gt_frames_preview": [
1391
+ [],
1392
+ [
1393
+ {
1394
+ "track": 0,
1395
+ "activity": 0.514,
1396
+ "class_idx": 14,
1397
+ "class_name": "laughter",
1398
+ "class_conf": 0.735,
1399
+ "azi_deg": -54.88,
1400
+ "ele_deg": 6.41,
1401
+ "dist_m": 2.726
1402
+ }
1403
+ ],
1404
+ [
1405
+ {
1406
+ "track": 0,
1407
+ "activity": 0.505,
1408
+ "class_idx": 14,
1409
+ "class_name": "laughter",
1410
+ "class_conf": 0.779,
1411
+ "azi_deg": -59.56,
1412
+ "ele_deg": 7.71,
1413
+ "dist_m": 2.714
1414
+ }
1415
+ ],
1416
+ [
1417
+ {
1418
+ "track": 0,
1419
+ "activity": 0.532,
1420
+ "class_idx": 14,
1421
+ "class_name": "laughter",
1422
+ "class_conf": 0.788,
1423
+ "azi_deg": -63.85,
1424
+ "ele_deg": 9.31,
1425
+ "dist_m": 2.698
1426
+ }
1427
+ ],
1428
+ [
1429
+ {
1430
+ "track": 0,
1431
+ "activity": 0.535,
1432
+ "class_idx": 14,
1433
+ "class_name": "laughter",
1434
+ "class_conf": 0.81,
1435
+ "azi_deg": -66.25,
1436
+ "ele_deg": 10.24,
1437
+ "dist_m": 2.685
1438
+ }
1439
+ ]
1440
+ ],
1441
+ "rc_frames_preview": [
1442
+ [
1443
+ {
1444
+ "track": 1,
1445
+ "activity": 0.702,
1446
+ "class_idx": 9,
1447
+ "class_name": "tool",
1448
+ "class_conf": 0.658,
1449
+ "azi_deg": -39.89,
1450
+ "ele_deg": 8.84,
1451
+ "dist_m": 1.331
1452
+ }
1453
+ ],
1454
+ [
1455
+ {
1456
+ "track": 1,
1457
+ "activity": 0.559,
1458
+ "class_idx": 9,
1459
+ "class_name": "tool",
1460
+ "class_conf": 0.707,
1461
+ "azi_deg": -43.23,
1462
+ "ele_deg": 9.31,
1463
+ "dist_m": 1.336
1464
+ }
1465
+ ],
1466
+ [],
1467
+ [],
1468
+ []
1469
+ ],
1470
+ "comparison": {
1471
+ "T_s": 53,
1472
+ "activity_gt_frac": 0.37735849056603776,
1473
+ "activity_rc_frac": 0.4009433962264151,
1474
+ "activity_jaccard": 0.27906976744186046,
1475
+ "activity_precision_rc_vs_gt": 0.4235294117647059,
1476
+ "activity_recall_rc_vs_gt": 0.45,
1477
+ "activity_f1_rc_vs_gt": 0.43636363636363634,
1478
+ "class_match_rate": 0.9722222222222222,
1479
+ "doa_angular_error_deg_mean": 11.065543586032767,
1480
+ "doa_angular_error_deg_median": 6.664019736793584,
1481
+ "distance_mae_m": 0.4840873181819916,
1482
+ "top_class_agreement": 1,
1483
+ "gt_top_class": "laughter",
1484
+ "rc_top_class": "laughter"
1485
+ },
1486
+ "sample": "s1_rank20_vocalsound_000310"
1487
+ },
1488
+ "s1_rank21_insectset_000328": {
1489
+ "gt_top_class": "water",
1490
+ "rc_top_class": "water",
1491
+ "gt_frames_preview": [
1492
+ [
1493
+ {
1494
+ "track": 0,
1495
+ "activity": 0.578,
1496
+ "class_idx": 5,
1497
+ "class_name": "water",
1498
+ "class_conf": 0.565,
1499
+ "azi_deg": 143.21,
1500
+ "ele_deg": 5.5,
1501
+ "dist_m": 2.413
1502
+ }
1503
+ ],
1504
+ [
1505
+ {
1506
+ "track": 0,
1507
+ "activity": 0.578,
1508
+ "class_idx": 5,
1509
+ "class_name": "water",
1510
+ "class_conf": 0.542,
1511
+ "azi_deg": 142.53,
1512
+ "ele_deg": 5.38,
1513
+ "dist_m": 2.417
1514
+ }
1515
+ ],
1516
+ [
1517
+ {
1518
+ "track": 0,
1519
+ "activity": 0.581,
1520
+ "class_idx": 5,
1521
+ "class_name": "water",
1522
+ "class_conf": 0.542,
1523
+ "azi_deg": 142.57,
1524
+ "ele_deg": 5.38,
1525
+ "dist_m": 2.416
1526
+ }
1527
+ ],
1528
+ [
1529
+ {
1530
+ "track": 0,
1531
+ "activity": 0.604,
1532
+ "class_idx": 5,
1533
+ "class_name": "water",
1534
+ "class_conf": 0.534,
1535
+ "azi_deg": 143.0,
1536
+ "ele_deg": 5.6,
1537
+ "dist_m": 2.409
1538
+ }
1539
+ ],
1540
+ [
1541
+ {
1542
+ "track": 0,
1543
+ "activity": 0.629,
1544
+ "class_idx": 5,
1545
+ "class_name": "water",
1546
+ "class_conf": 0.533,
1547
+ "azi_deg": 143.29,
1548
+ "ele_deg": 5.62,
1549
+ "dist_m": 2.402
1550
+ }
1551
+ ]
1552
+ ],
1553
+ "rc_frames_preview": [
1554
+ [
1555
+ {
1556
+ "track": 0,
1557
+ "activity": 0.7,
1558
+ "class_idx": 5,
1559
+ "class_name": "water",
1560
+ "class_conf": 0.529,
1561
+ "azi_deg": 11.86,
1562
+ "ele_deg": 9.44,
1563
+ "dist_m": 1.891
1564
+ }
1565
+ ],
1566
+ [
1567
+ {
1568
+ "track": 0,
1569
+ "activity": 0.7,
1570
+ "class_idx": 5,
1571
+ "class_name": "water",
1572
+ "class_conf": 0.535,
1573
+ "azi_deg": 18.39,
1574
+ "ele_deg": 5.93,
1575
+ "dist_m": 1.854
1576
+ }
1577
+ ],
1578
+ [
1579
+ {
1580
+ "track": 0,
1581
+ "activity": 0.702,
1582
+ "class_idx": 5,
1583
+ "class_name": "water",
1584
+ "class_conf": 0.535,
1585
+ "azi_deg": 18.02,
1586
+ "ele_deg": 6.05,
1587
+ "dist_m": 1.852
1588
+ }
1589
+ ],
1590
+ [
1591
+ {
1592
+ "track": 0,
1593
+ "activity": 0.719,
1594
+ "class_idx": 5,
1595
+ "class_name": "water",
1596
+ "class_conf": 0.529,
1597
+ "azi_deg": 15.45,
1598
+ "ele_deg": 9.66,
1599
+ "dist_m": 1.843
1600
+ }
1601
+ ],
1602
+ [
1603
+ {
1604
+ "track": 0,
1605
+ "activity": 0.739,
1606
+ "class_idx": 5,
1607
+ "class_name": "water",
1608
+ "class_conf": 0.526,
1609
+ "azi_deg": 13.27,
1610
+ "ele_deg": 10.83,
1611
+ "dist_m": 1.831
1612
+ }
1613
+ ]
1614
+ ],
1615
+ "comparison": {
1616
+ "T_s": 303,
1617
+ "activity_gt_frac": 0.2433993399339934,
1618
+ "activity_rc_frac": 0.25,
1619
+ "activity_jaccard": 0.9735973597359736,
1620
+ "activity_precision_rc_vs_gt": 0.9735973597359736,
1621
+ "activity_recall_rc_vs_gt": 1.0,
1622
+ "activity_f1_rc_vs_gt": 0.9866220735785952,
1623
+ "class_match_rate": 0.8033898305084746,
1624
+ "doa_angular_error_deg_mean": 115.9973936791736,
1625
+ "doa_angular_error_deg_median": 119.49698684207382,
1626
+ "distance_mae_m": 0.6184173822402954,
1627
+ "top_class_agreement": 1,
1628
+ "gt_top_class": "water",
1629
+ "rc_top_class": "water"
1630
+ },
1631
+ "sample": "s1_rank21_insectset_000328"
1632
+ },
1633
+ "s1_rank21_opensource_emilia_zh_rawdata_English_002504": {
1634
+ "gt_top_class": "speech",
1635
+ "rc_top_class": "speech",
1636
+ "gt_frames_preview": [
1637
+ [],
1638
+ [],
1639
+ [],
1640
+ [
1641
+ {
1642
+ "track": 0,
1643
+ "activity": 0.754,
1644
+ "class_idx": 16,
1645
+ "class_name": "speech",
1646
+ "class_conf": 0.898,
1647
+ "azi_deg": -177.3,
1648
+ "ele_deg": 2.6,
1649
+ "dist_m": 3.281
1650
+ }
1651
+ ],
1652
+ [
1653
+ {
1654
+ "track": 0,
1655
+ "activity": 0.846,
1656
+ "class_idx": 16,
1657
+ "class_name": "speech",
1658
+ "class_conf": 0.899,
1659
+ "azi_deg": -176.82,
1660
+ "ele_deg": 2.84,
1661
+ "dist_m": 3.314
1662
+ }
1663
+ ]
1664
+ ],
1665
+ "rc_frames_preview": [
1666
+ [],
1667
+ [],
1668
+ [
1669
+ {
1670
+ "track": 2,
1671
+ "activity": 0.51,
1672
+ "class_idx": 16,
1673
+ "class_name": "speech",
1674
+ "class_conf": 0.884,
1675
+ "azi_deg": 8.96,
1676
+ "ele_deg": 13.06,
1677
+ "dist_m": 5.013
1678
+ }
1679
+ ],
1680
+ [
1681
+ {
1682
+ "track": 2,
1683
+ "activity": 0.594,
1684
+ "class_idx": 16,
1685
+ "class_name": "speech",
1686
+ "class_conf": 0.885,
1687
+ "azi_deg": 7.9,
1688
+ "ele_deg": 13.47,
1689
+ "dist_m": 5.131
1690
+ }
1691
+ ],
1692
+ [
1693
+ {
1694
+ "track": 2,
1695
+ "activity": 0.621,
1696
+ "class_idx": 16,
1697
+ "class_name": "speech",
1698
+ "class_conf": 0.886,
1699
+ "azi_deg": 6.98,
1700
+ "ele_deg": 13.78,
1701
+ "dist_m": 5.132
1702
+ }
1703
+ ]
1704
+ ],
1705
+ "comparison": {
1706
+ "T_s": 166,
1707
+ "activity_gt_frac": 0.23795180722891565,
1708
+ "activity_rc_frac": 0.03765060240963856,
1709
+ "activity_jaccard": 0.0,
1710
+ "activity_precision_rc_vs_gt": 0.0,
1711
+ "activity_recall_rc_vs_gt": 0.0,
1712
+ "activity_f1_rc_vs_gt": 0.0,
1713
+ "class_match_rate": NaN,
1714
+ "doa_angular_error_deg_mean": NaN,
1715
+ "doa_angular_error_deg_median": NaN,
1716
+ "distance_mae_m": NaN,
1717
+ "top_class_agreement": 1,
1718
+ "gt_top_class": "speech",
1719
+ "rc_top_class": "speech"
1720
+ },
1721
+ "sample": "s1_rank21_opensource_emilia_zh_rawdata_English_002504"
1722
+ },
1723
+ "s1_rank22_audiosl_000699": {
1724
+ "gt_top_class": "water",
1725
+ "rc_top_class": "metal_clink",
1726
+ "gt_frames_preview": [
1727
+ [
1728
+ {
1729
+ "track": 0,
1730
+ "activity": 0.552,
1731
+ "class_idx": 5,
1732
+ "class_name": "water",
1733
+ "class_conf": 0.635,
1734
+ "azi_deg": -136.67,
1735
+ "ele_deg": 6.51,
1736
+ "dist_m": 1.162
1737
+ }
1738
+ ],
1739
+ [
1740
+ {
1741
+ "track": 0,
1742
+ "activity": 0.667,
1743
+ "class_idx": 5,
1744
+ "class_name": "water",
1745
+ "class_conf": 0.481,
1746
+ "azi_deg": -137.17,
1747
+ "ele_deg": 6.84,
1748
+ "dist_m": 1.152
1749
+ }
1750
+ ],
1751
+ [
1752
+ {
1753
+ "track": 0,
1754
+ "activity": 0.676,
1755
+ "class_idx": 5,
1756
+ "class_name": "water",
1757
+ "class_conf": 0.503,
1758
+ "azi_deg": -137.0,
1759
+ "ele_deg": 7.0,
1760
+ "dist_m": 1.152
1761
+ }
1762
+ ],
1763
+ [
1764
+ {
1765
+ "track": 0,
1766
+ "activity": 0.686,
1767
+ "class_idx": 5,
1768
+ "class_name": "water",
1769
+ "class_conf": 0.485,
1770
+ "azi_deg": -136.81,
1771
+ "ele_deg": 7.29,
1772
+ "dist_m": 1.165
1773
+ }
1774
+ ],
1775
+ [
1776
+ {
1777
+ "track": 0,
1778
+ "activity": 0.701,
1779
+ "class_idx": 5,
1780
+ "class_name": "water",
1781
+ "class_conf": 0.477,
1782
+ "azi_deg": -136.63,
1783
+ "ele_deg": 7.32,
1784
+ "dist_m": 1.168
1785
+ }
1786
+ ]
1787
+ ],
1788
+ "rc_frames_preview": [
1789
+ [
1790
+ {
1791
+ "track": 0,
1792
+ "activity": 0.522,
1793
+ "class_idx": 5,
1794
+ "class_name": "water",
1795
+ "class_conf": 0.351,
1796
+ "azi_deg": -165.62,
1797
+ "ele_deg": 2.62,
1798
+ "dist_m": 1.905
1799
+ }
1800
+ ],
1801
+ [
1802
+ {
1803
+ "track": 0,
1804
+ "activity": 0.532,
1805
+ "class_idx": 12,
1806
+ "class_name": "metal_clink",
1807
+ "class_conf": 0.33,
1808
+ "azi_deg": -172.48,
1809
+ "ele_deg": 4.14,
1810
+ "dist_m": 1.919
1811
+ }
1812
+ ],
1813
+ [
1814
+ {
1815
+ "track": 0,
1816
+ "activity": 0.545,
1817
+ "class_idx": 12,
1818
+ "class_name": "metal_clink",
1819
+ "class_conf": 0.335,
1820
+ "azi_deg": -174.27,
1821
+ "ele_deg": 4.09,
1822
+ "dist_m": 1.946
1823
+ }
1824
+ ],
1825
+ [
1826
+ {
1827
+ "track": 0,
1828
+ "activity": 0.567,
1829
+ "class_idx": 12,
1830
+ "class_name": "metal_clink",
1831
+ "class_conf": 0.325,
1832
+ "azi_deg": -176.62,
1833
+ "ele_deg": 2.58,
1834
+ "dist_m": 1.986
1835
+ }
1836
+ ],
1837
+ [
1838
+ {
1839
+ "track": 0,
1840
+ "activity": 0.601,
1841
+ "class_idx": 12,
1842
+ "class_name": "metal_clink",
1843
+ "class_conf": 0.318,
1844
+ "azi_deg": -177.65,
1845
+ "ele_deg": 3.23,
1846
+ "dist_m": 1.989
1847
+ }
1848
+ ]
1849
+ ],
1850
+ "comparison": {
1851
+ "T_s": 18,
1852
+ "activity_gt_frac": 0.25,
1853
+ "activity_rc_frac": 0.25,
1854
+ "activity_jaccard": 1.0,
1855
+ "activity_precision_rc_vs_gt": 1.0,
1856
+ "activity_recall_rc_vs_gt": 1.0,
1857
+ "activity_f1_rc_vs_gt": 1.0,
1858
+ "class_match_rate": 0.05555555555555555,
1859
+ "doa_angular_error_deg_mean": 41.03007833276686,
1860
+ "doa_angular_error_deg_median": 42.283789633071905,
1861
+ "distance_mae_m": 0.8085865378379822,
1862
+ "top_class_agreement": 0,
1863
+ "gt_top_class": "water",
1864
+ "rc_top_class": "metal_clink"
1865
+ },
1866
+ "sample": "s1_rank22_audiosl_000699"
1867
+ },
1868
+ "s1_rank23_vocalsound_000569": {
1869
+ "gt_top_class": "breathing",
1870
+ "rc_top_class": "breathing",
1871
+ "gt_frames_preview": [
1872
+ [],
1873
+ [],
1874
+ [],
1875
+ [],
1876
+ []
1877
+ ],
1878
+ "rc_frames_preview": [
1879
+ [],
1880
+ [],
1881
+ [],
1882
+ [],
1883
+ []
1884
+ ],
1885
+ "comparison": {
1886
+ "T_s": 43,
1887
+ "activity_gt_frac": 0.18023255813953487,
1888
+ "activity_rc_frac": 0.1744186046511628,
1889
+ "activity_jaccard": 0.967741935483871,
1890
+ "activity_precision_rc_vs_gt": 1.0,
1891
+ "activity_recall_rc_vs_gt": 0.967741935483871,
1892
+ "activity_f1_rc_vs_gt": 0.9836065573770492,
1893
+ "class_match_rate": 1.0,
1894
+ "doa_angular_error_deg_mean": 23.05399986579469,
1895
+ "doa_angular_error_deg_median": 23.140233324503665,
1896
+ "distance_mae_m": 0.6998323202133179,
1897
+ "top_class_agreement": 1,
1898
+ "gt_top_class": "breathing",
1899
+ "rc_top_class": "breathing"
1900
+ },
1901
+ "sample": "s1_rank23_vocalsound_000569"
1902
+ },
1903
+ "s1_rank4_opensource_emilia_zh_rawdata_Chinese_003160": {
1904
+ "gt_top_class": "speech",
1905
+ "rc_top_class": "speech",
1906
+ "gt_frames_preview": [
1907
+ [],
1908
+ [],
1909
+ [],
1910
+ [],
1911
+ []
1912
+ ],
1913
+ "rc_frames_preview": [
1914
+ [],
1915
+ [],
1916
+ [],
1917
+ [],
1918
+ []
1919
+ ],
1920
+ "comparison": {
1921
+ "T_s": 134,
1922
+ "activity_gt_frac": 0.055970149253731345,
1923
+ "activity_rc_frac": 0.0037313432835820895,
1924
+ "activity_jaccard": 0.0,
1925
+ "activity_precision_rc_vs_gt": 0.0,
1926
+ "activity_recall_rc_vs_gt": 0.0,
1927
+ "activity_f1_rc_vs_gt": 0.0,
1928
+ "class_match_rate": NaN,
1929
+ "doa_angular_error_deg_mean": NaN,
1930
+ "doa_angular_error_deg_median": NaN,
1931
+ "distance_mae_m": NaN,
1932
+ "top_class_agreement": 1,
1933
+ "gt_top_class": "speech",
1934
+ "rc_top_class": "speech"
1935
+ },
1936
+ "sample": "s1_rank4_opensource_emilia_zh_rawdata_Chinese_003160"
1937
+ },
1938
+ "s1_rank5_opensource_emilia_zh_rawdata_English_001914": {
1939
+ "gt_top_class": "speech",
1940
+ "rc_top_class": "speech",
1941
+ "gt_frames_preview": [
1942
+ [
1943
+ {
1944
+ "track": 0,
1945
+ "activity": 0.556,
1946
+ "class_idx": 16,
1947
+ "class_name": "speech",
1948
+ "class_conf": 0.867,
1949
+ "azi_deg": 14.18,
1950
+ "ele_deg": 9.65,
1951
+ "dist_m": 1.336
1952
+ }
1953
+ ],
1954
+ [
1955
+ {
1956
+ "track": 0,
1957
+ "activity": 0.748,
1958
+ "class_idx": 16,
1959
+ "class_name": "speech",
1960
+ "class_conf": 0.879,
1961
+ "azi_deg": 14.36,
1962
+ "ele_deg": 9.37,
1963
+ "dist_m": 1.305
1964
+ }
1965
+ ],
1966
+ [
1967
+ {
1968
+ "track": 0,
1969
+ "activity": 0.792,
1970
+ "class_idx": 16,
1971
+ "class_name": "speech",
1972
+ "class_conf": 0.881,
1973
+ "azi_deg": 15.14,
1974
+ "ele_deg": 9.25,
1975
+ "dist_m": 1.301
1976
+ }
1977
+ ],
1978
+ [
1979
+ {
1980
+ "track": 0,
1981
+ "activity": 0.816,
1982
+ "class_idx": 16,
1983
+ "class_name": "speech",
1984
+ "class_conf": 0.882,
1985
+ "azi_deg": 15.62,
1986
+ "ele_deg": 9.07,
1987
+ "dist_m": 1.298
1988
+ }
1989
+ ],
1990
+ [
1991
+ {
1992
+ "track": 0,
1993
+ "activity": 0.831,
1994
+ "class_idx": 16,
1995
+ "class_name": "speech",
1996
+ "class_conf": 0.883,
1997
+ "azi_deg": 15.93,
1998
+ "ele_deg": 8.96,
1999
+ "dist_m": 1.303
2000
+ }
2001
+ ]
2002
+ ],
2003
+ "rc_frames_preview": [
2004
+ [],
2005
+ [],
2006
+ [],
2007
+ [],
2008
+ []
2009
+ ],
2010
+ "comparison": {
2011
+ "T_s": 46,
2012
+ "activity_gt_frac": 0.25,
2013
+ "activity_rc_frac": 0.0,
2014
+ "activity_jaccard": 0.0,
2015
+ "activity_precision_rc_vs_gt": 0.0,
2016
+ "activity_recall_rc_vs_gt": 0.0,
2017
+ "activity_f1_rc_vs_gt": 0.0,
2018
+ "class_match_rate": NaN,
2019
+ "doa_angular_error_deg_mean": NaN,
2020
+ "doa_angular_error_deg_median": NaN,
2021
+ "distance_mae_m": NaN,
2022
+ "top_class_agreement": 1,
2023
+ "gt_top_class": "speech",
2024
+ "rc_top_class": "speech"
2025
+ },
2026
+ "sample": "s1_rank5_opensource_emilia_zh_rawdata_English_001914"
2027
+ },
2028
+ "s1_rank9_opensource_emilia_zh_rawdata_English_001143": {
2029
+ "gt_top_class": "speech",
2030
+ "rc_top_class": "speech",
2031
+ "gt_frames_preview": [
2032
+ [],
2033
+ [],
2034
+ [
2035
+ {
2036
+ "track": 0,
2037
+ "activity": 0.638,
2038
+ "class_idx": 16,
2039
+ "class_name": "speech",
2040
+ "class_conf": 0.889,
2041
+ "azi_deg": 28.91,
2042
+ "ele_deg": -18.71,
2043
+ "dist_m": 1.646
2044
+ }
2045
+ ],
2046
+ [
2047
+ {
2048
+ "track": 0,
2049
+ "activity": 0.754,
2050
+ "class_idx": 16,
2051
+ "class_name": "speech",
2052
+ "class_conf": 0.894,
2053
+ "azi_deg": 29.12,
2054
+ "ele_deg": -18.26,
2055
+ "dist_m": 1.635
2056
+ }
2057
+ ],
2058
+ [
2059
+ {
2060
+ "track": 0,
2061
+ "activity": 0.8,
2062
+ "class_idx": 16,
2063
+ "class_name": "speech",
2064
+ "class_conf": 0.895,
2065
+ "azi_deg": 29.48,
2066
+ "ele_deg": -18.06,
2067
+ "dist_m": 1.616
2068
+ }
2069
+ ]
2070
+ ],
2071
+ "rc_frames_preview": [
2072
+ [],
2073
+ [],
2074
+ [],
2075
+ [],
2076
+ []
2077
+ ],
2078
+ "comparison": {
2079
+ "T_s": 121,
2080
+ "activity_gt_frac": 0.2190082644628099,
2081
+ "activity_rc_frac": 0.04338842975206612,
2082
+ "activity_jaccard": 0.0,
2083
+ "activity_precision_rc_vs_gt": 0.0,
2084
+ "activity_recall_rc_vs_gt": 0.0,
2085
+ "activity_f1_rc_vs_gt": 0.0,
2086
+ "class_match_rate": NaN,
2087
+ "doa_angular_error_deg_mean": NaN,
2088
+ "doa_angular_error_deg_median": NaN,
2089
+ "distance_mae_m": NaN,
2090
+ "top_class_agreement": 1,
2091
+ "gt_top_class": "speech",
2092
+ "rc_top_class": "speech"
2093
+ },
2094
+ "sample": "s1_rank9_opensource_emilia_zh_rawdata_English_001143"
2095
+ }
2096
+ }
eval_voxaudio_ood_results/dacvae/summary.json ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "mean_activity_jaccard": 0.5918084170858557,
3
+ "n_valid_activity_jaccard": 20,
4
+ "mean_activity_precision_rc_vs_gt": 0.6852889043752468,
5
+ "n_valid_activity_precision_rc_vs_gt": 20,
6
+ "mean_activity_recall_rc_vs_gt": 0.6344722344150824,
7
+ "n_valid_activity_recall_rc_vs_gt": 20,
8
+ "mean_activity_f1_rc_vs_gt": 0.6424736331628711,
9
+ "n_valid_activity_f1_rc_vs_gt": 20,
10
+ "mean_class_match_rate": 0.6962217958284476,
11
+ "n_valid_class_match_rate": 15,
12
+ "mean_doa_angular_error_deg_mean": 52.59217336237226,
13
+ "n_valid_doa_angular_error_deg_mean": 15,
14
+ "mean_doa_angular_error_deg_median": 52.82468845575132,
15
+ "n_valid_doa_angular_error_deg_median": 15,
16
+ "mean_distance_mae_m": 0.3990471541881561,
17
+ "n_valid_distance_mae_m": 15,
18
+ "mean_top_class_agreement": 0.8,
19
+ "n_valid_top_class_agreement": 20,
20
+ "mean_activity_gt_frac": 0.20619253654594938,
21
+ "n_valid_activity_gt_frac": 20,
22
+ "mean_activity_rc_frac": 0.16576634449721478,
23
+ "n_valid_activity_rc_frac": 20,
24
+ "n_samples": 20
25
+ }
eval_voxaudio_ood_results/foa_vae/per_sample.json ADDED
The diff for this file is too large to render. See raw diff
 
eval_voxaudio_ood_results/foa_vae/summary.json ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "mean_activity_jaccard": 0.2869139591647025,
3
+ "n_valid_activity_jaccard": 70,
4
+ "mean_activity_precision_rc_vs_gt": 0.3842437781867924,
5
+ "n_valid_activity_precision_rc_vs_gt": 70,
6
+ "mean_activity_recall_rc_vs_gt": 0.3355311172735717,
7
+ "n_valid_activity_recall_rc_vs_gt": 70,
8
+ "mean_activity_f1_rc_vs_gt": 0.33179939006604536,
9
+ "n_valid_activity_f1_rc_vs_gt": 70,
10
+ "mean_class_match_rate": 0.7050047775153738,
11
+ "n_valid_class_match_rate": 39,
12
+ "mean_doa_angular_error_deg_mean": 47.81001474877972,
13
+ "n_valid_doa_angular_error_deg_mean": 39,
14
+ "mean_doa_angular_error_deg_median": 48.616234655597715,
15
+ "n_valid_doa_angular_error_deg_median": 39,
16
+ "mean_distance_mae_m": 0.4801142644137144,
17
+ "n_valid_distance_mae_m": 39,
18
+ "mean_top_class_agreement": 0.6857142857142857,
19
+ "n_valid_top_class_agreement": 70,
20
+ "mean_activity_gt_frac": 0.21816713600161056,
21
+ "n_valid_activity_gt_frac": 70,
22
+ "mean_activity_rc_frac": 0.15041837313585474,
23
+ "n_valid_activity_rc_frac": 70,
24
+ "n_samples": 70
25
+ }
eval_voxaudio_ood_results/mono_vae/per_sample.json ADDED
@@ -0,0 +1,2216 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "s1_rank0_opensource_emilia_zh_rawdata_English_003050": {
3
+ "gt_top_class": "speech",
4
+ "rc_top_class": "speech",
5
+ "gt_frames_preview": [
6
+ [
7
+ {
8
+ "track": 0,
9
+ "activity": 0.564,
10
+ "class_idx": 16,
11
+ "class_name": "speech",
12
+ "class_conf": 0.458,
13
+ "azi_deg": -41.81,
14
+ "ele_deg": 40.52,
15
+ "dist_m": 1.332
16
+ }
17
+ ],
18
+ [
19
+ {
20
+ "track": 0,
21
+ "activity": 0.776,
22
+ "class_idx": 16,
23
+ "class_name": "speech",
24
+ "class_conf": 0.512,
25
+ "azi_deg": -41.79,
26
+ "ele_deg": 40.34,
27
+ "dist_m": 1.3
28
+ }
29
+ ],
30
+ [
31
+ {
32
+ "track": 0,
33
+ "activity": 0.783,
34
+ "class_idx": 16,
35
+ "class_name": "speech",
36
+ "class_conf": 0.532,
37
+ "azi_deg": -42.09,
38
+ "ele_deg": 40.04,
39
+ "dist_m": 1.293
40
+ }
41
+ ],
42
+ [
43
+ {
44
+ "track": 0,
45
+ "activity": 0.769,
46
+ "class_idx": 16,
47
+ "class_name": "speech",
48
+ "class_conf": 0.558,
49
+ "azi_deg": -42.43,
50
+ "ele_deg": 39.88,
51
+ "dist_m": 1.298
52
+ }
53
+ ],
54
+ [
55
+ {
56
+ "track": 0,
57
+ "activity": 0.754,
58
+ "class_idx": 16,
59
+ "class_name": "speech",
60
+ "class_conf": 0.576,
61
+ "azi_deg": -42.44,
62
+ "ele_deg": 39.7,
63
+ "dist_m": 1.299
64
+ }
65
+ ]
66
+ ],
67
+ "rc_frames_preview": [
68
+ [],
69
+ [
70
+ {
71
+ "track": 0,
72
+ "activity": 0.623,
73
+ "class_idx": 32,
74
+ "class_name": "female_speech",
75
+ "class_conf": 0.588,
76
+ "azi_deg": 47.27,
77
+ "ele_deg": 20.26,
78
+ "dist_m": 1.751
79
+ },
80
+ {
81
+ "track": 1,
82
+ "activity": 0.602,
83
+ "class_idx": 16,
84
+ "class_name": "speech",
85
+ "class_conf": 0.756,
86
+ "azi_deg": 33.75,
87
+ "ele_deg": 34.18,
88
+ "dist_m": 1.073
89
+ }
90
+ ],
91
+ [
92
+ {
93
+ "track": 0,
94
+ "activity": 0.622,
95
+ "class_idx": 32,
96
+ "class_name": "female_speech",
97
+ "class_conf": 0.578,
98
+ "azi_deg": 47.44,
99
+ "ele_deg": 22.41,
100
+ "dist_m": 1.726
101
+ },
102
+ {
103
+ "track": 1,
104
+ "activity": 0.629,
105
+ "class_idx": 16,
106
+ "class_name": "speech",
107
+ "class_conf": 0.768,
108
+ "azi_deg": 35.32,
109
+ "ele_deg": 36.23,
110
+ "dist_m": 1.076
111
+ }
112
+ ],
113
+ [
114
+ {
115
+ "track": 0,
116
+ "activity": 0.61,
117
+ "class_idx": 32,
118
+ "class_name": "female_speech",
119
+ "class_conf": 0.557,
120
+ "azi_deg": 47.51,
121
+ "ele_deg": 23.64,
122
+ "dist_m": 1.757
123
+ },
124
+ {
125
+ "track": 1,
126
+ "activity": 0.62,
127
+ "class_idx": 16,
128
+ "class_name": "speech",
129
+ "class_conf": 0.779,
130
+ "azi_deg": 36.76,
131
+ "ele_deg": 37.92,
132
+ "dist_m": 1.1
133
+ }
134
+ ],
135
+ [
136
+ {
137
+ "track": 0,
138
+ "activity": 0.594,
139
+ "class_idx": 32,
140
+ "class_name": "female_speech",
141
+ "class_conf": 0.534,
142
+ "azi_deg": 46.67,
143
+ "ele_deg": 24.12,
144
+ "dist_m": 1.771
145
+ },
146
+ {
147
+ "track": 1,
148
+ "activity": 0.615,
149
+ "class_idx": 16,
150
+ "class_name": "speech",
151
+ "class_conf": 0.789,
152
+ "azi_deg": 37.67,
153
+ "ele_deg": 38.75,
154
+ "dist_m": 1.105
155
+ }
156
+ ]
157
+ ],
158
+ "comparison": {
159
+ "T_s": 56,
160
+ "activity_gt_frac": 0.14732142857142858,
161
+ "activity_rc_frac": 0.0625,
162
+ "activity_jaccard": 0.175,
163
+ "activity_precision_rc_vs_gt": 0.5,
164
+ "activity_recall_rc_vs_gt": 0.21212121212121213,
165
+ "activity_f1_rc_vs_gt": 0.2978723404255319,
166
+ "class_match_rate": 0.0,
167
+ "doa_angular_error_deg_mean": 74.55371361509434,
168
+ "doa_angular_error_deg_median": 74.22053995719097,
169
+ "distance_mae_m": 0.47506183385849,
170
+ "top_class_agreement": 1,
171
+ "gt_top_class": "speech",
172
+ "rc_top_class": "speech"
173
+ },
174
+ "sample": "s1_rank0_opensource_emilia_zh_rawdata_English_003050"
175
+ },
176
+ "s1_rank10_fsd50k_000123": {
177
+ "gt_top_class": "insect",
178
+ "rc_top_class": "insect",
179
+ "gt_frames_preview": [
180
+ [
181
+ {
182
+ "track": 0,
183
+ "activity": 0.961,
184
+ "class_idx": 35,
185
+ "class_name": "insect",
186
+ "class_conf": 0.878,
187
+ "azi_deg": 67.07,
188
+ "ele_deg": -8.42,
189
+ "dist_m": 2.868
190
+ }
191
+ ],
192
+ [
193
+ {
194
+ "track": 0,
195
+ "activity": 0.975,
196
+ "class_idx": 35,
197
+ "class_name": "insect",
198
+ "class_conf": 0.874,
199
+ "azi_deg": 101.76,
200
+ "ele_deg": -23.16,
201
+ "dist_m": 2.837
202
+ }
203
+ ],
204
+ [
205
+ {
206
+ "track": 0,
207
+ "activity": 0.979,
208
+ "class_idx": 35,
209
+ "class_name": "insect",
210
+ "class_conf": 0.873,
211
+ "azi_deg": 128.2,
212
+ "ele_deg": -28.73,
213
+ "dist_m": 2.826
214
+ }
215
+ ],
216
+ [
217
+ {
218
+ "track": 0,
219
+ "activity": 0.981,
220
+ "class_idx": 35,
221
+ "class_name": "insect",
222
+ "class_conf": 0.872,
223
+ "azi_deg": 136.34,
224
+ "ele_deg": -12.68,
225
+ "dist_m": 2.818
226
+ }
227
+ ],
228
+ [
229
+ {
230
+ "track": 0,
231
+ "activity": 0.982,
232
+ "class_idx": 35,
233
+ "class_name": "insect",
234
+ "class_conf": 0.871,
235
+ "azi_deg": 146.37,
236
+ "ele_deg": -10.89,
237
+ "dist_m": 2.817
238
+ }
239
+ ]
240
+ ],
241
+ "rc_frames_preview": [
242
+ [],
243
+ [],
244
+ [],
245
+ [],
246
+ []
247
+ ],
248
+ "comparison": {
249
+ "T_s": 59,
250
+ "activity_gt_frac": 0.25,
251
+ "activity_rc_frac": 0.0,
252
+ "activity_jaccard": 0.0,
253
+ "activity_precision_rc_vs_gt": 0.0,
254
+ "activity_recall_rc_vs_gt": 0.0,
255
+ "activity_f1_rc_vs_gt": 0.0,
256
+ "class_match_rate": NaN,
257
+ "doa_angular_error_deg_mean": NaN,
258
+ "doa_angular_error_deg_median": NaN,
259
+ "distance_mae_m": NaN,
260
+ "top_class_agreement": 1,
261
+ "gt_top_class": "insect",
262
+ "rc_top_class": "insect"
263
+ },
264
+ "sample": "s1_rank10_fsd50k_000123"
265
+ },
266
+ "s1_rank10_insectset_000529": {
267
+ "gt_top_class": "metal_clink",
268
+ "rc_top_class": "tool",
269
+ "gt_frames_preview": [
270
+ [
271
+ {
272
+ "track": 0,
273
+ "activity": 0.6,
274
+ "class_idx": 35,
275
+ "class_name": "insect",
276
+ "class_conf": 0.279,
277
+ "azi_deg": -78.82,
278
+ "ele_deg": 23.04,
279
+ "dist_m": 1.427
280
+ }
281
+ ],
282
+ [
283
+ {
284
+ "track": 0,
285
+ "activity": 0.6,
286
+ "class_idx": 35,
287
+ "class_name": "insect",
288
+ "class_conf": 0.28,
289
+ "azi_deg": -78.61,
290
+ "ele_deg": 23.24,
291
+ "dist_m": 1.41
292
+ }
293
+ ],
294
+ [
295
+ {
296
+ "track": 0,
297
+ "activity": 0.603,
298
+ "class_idx": 35,
299
+ "class_name": "insect",
300
+ "class_conf": 0.28,
301
+ "azi_deg": -78.66,
302
+ "ele_deg": 23.27,
303
+ "dist_m": 1.41
304
+ }
305
+ ],
306
+ [
307
+ {
308
+ "track": 0,
309
+ "activity": 0.621,
310
+ "class_idx": 35,
311
+ "class_name": "insect",
312
+ "class_conf": 0.285,
313
+ "azi_deg": -79.05,
314
+ "ele_deg": 23.46,
315
+ "dist_m": 1.408
316
+ }
317
+ ],
318
+ [
319
+ {
320
+ "track": 0,
321
+ "activity": 0.641,
322
+ "class_idx": 35,
323
+ "class_name": "insect",
324
+ "class_conf": 0.282,
325
+ "azi_deg": -79.36,
326
+ "ele_deg": 23.62,
327
+ "dist_m": 1.408
328
+ }
329
+ ]
330
+ ],
331
+ "rc_frames_preview": [
332
+ [],
333
+ [],
334
+ [],
335
+ [],
336
+ []
337
+ ],
338
+ "comparison": {
339
+ "T_s": 303,
340
+ "activity_gt_frac": 0.1905940594059406,
341
+ "activity_rc_frac": 0.0,
342
+ "activity_jaccard": 0.0,
343
+ "activity_precision_rc_vs_gt": 0.0,
344
+ "activity_recall_rc_vs_gt": 0.0,
345
+ "activity_f1_rc_vs_gt": 0.0,
346
+ "class_match_rate": NaN,
347
+ "doa_angular_error_deg_mean": NaN,
348
+ "doa_angular_error_deg_median": NaN,
349
+ "distance_mae_m": NaN,
350
+ "top_class_agreement": 0,
351
+ "gt_top_class": "metal_clink",
352
+ "rc_top_class": "tool"
353
+ },
354
+ "sample": "s1_rank10_insectset_000529"
355
+ },
356
+ "s1_rank10_laion_630k_002480": {
357
+ "gt_top_class": "keyboard_instrument",
358
+ "rc_top_class": "keyboard_instrument",
359
+ "gt_frames_preview": [
360
+ [],
361
+ [],
362
+ [],
363
+ [],
364
+ []
365
+ ],
366
+ "rc_frames_preview": [
367
+ [],
368
+ [],
369
+ [],
370
+ [],
371
+ []
372
+ ],
373
+ "comparison": {
374
+ "T_s": 300,
375
+ "activity_gt_frac": 0.23416666666666666,
376
+ "activity_rc_frac": 0.1825,
377
+ "activity_jaccard": 0.7793594306049823,
378
+ "activity_precision_rc_vs_gt": 1.0,
379
+ "activity_recall_rc_vs_gt": 0.7793594306049823,
380
+ "activity_f1_rc_vs_gt": 0.876,
381
+ "class_match_rate": 1.0,
382
+ "doa_angular_error_deg_mean": 131.0347148858392,
383
+ "doa_angular_error_deg_median": 126.96155147876038,
384
+ "distance_mae_m": 1.121482014656067,
385
+ "top_class_agreement": 1,
386
+ "gt_top_class": "keyboard_instrument",
387
+ "rc_top_class": "keyboard_instrument"
388
+ },
389
+ "sample": "s1_rank10_laion_630k_002480"
390
+ },
391
+ "s1_rank10_temporal_order_001229": {
392
+ "gt_top_class": "human_vocalization",
393
+ "rc_top_class": "human_vocalization",
394
+ "gt_frames_preview": [
395
+ [],
396
+ [],
397
+ [],
398
+ [],
399
+ [
400
+ {
401
+ "track": 0,
402
+ "activity": 0.532,
403
+ "class_idx": 6,
404
+ "class_name": "human_vocalization",
405
+ "class_conf": 0.808,
406
+ "azi_deg": 90.28,
407
+ "ele_deg": 20.53,
408
+ "dist_m": 1.838
409
+ }
410
+ ]
411
+ ],
412
+ "rc_frames_preview": [
413
+ [
414
+ {
415
+ "track": 0,
416
+ "activity": 0.694,
417
+ "class_idx": 6,
418
+ "class_name": "human_vocalization",
419
+ "class_conf": 0.778,
420
+ "azi_deg": 88.41,
421
+ "ele_deg": 8.83,
422
+ "dist_m": 1.051
423
+ }
424
+ ],
425
+ [
426
+ {
427
+ "track": 0,
428
+ "activity": 0.873,
429
+ "class_idx": 6,
430
+ "class_name": "human_vocalization",
431
+ "class_conf": 0.745,
432
+ "azi_deg": 89.6,
433
+ "ele_deg": 8.43,
434
+ "dist_m": 1.028
435
+ }
436
+ ],
437
+ [
438
+ {
439
+ "track": 0,
440
+ "activity": 0.898,
441
+ "class_idx": 6,
442
+ "class_name": "human_vocalization",
443
+ "class_conf": 0.742,
444
+ "azi_deg": 89.71,
445
+ "ele_deg": 8.38,
446
+ "dist_m": 1.011
447
+ }
448
+ ],
449
+ [
450
+ {
451
+ "track": 0,
452
+ "activity": 0.913,
453
+ "class_idx": 6,
454
+ "class_name": "human_vocalization",
455
+ "class_conf": 0.734,
456
+ "azi_deg": 89.98,
457
+ "ele_deg": 8.42,
458
+ "dist_m": 0.994
459
+ }
460
+ ],
461
+ [
462
+ {
463
+ "track": 0,
464
+ "activity": 0.93,
465
+ "class_idx": 6,
466
+ "class_name": "human_vocalization",
467
+ "class_conf": 0.725,
468
+ "azi_deg": 90.21,
469
+ "ele_deg": 8.42,
470
+ "dist_m": 0.997
471
+ }
472
+ ]
473
+ ],
474
+ "comparison": {
475
+ "T_s": 29,
476
+ "activity_gt_frac": 0.15517241379310345,
477
+ "activity_rc_frac": 0.1896551724137931,
478
+ "activity_jaccard": 0.8181818181818182,
479
+ "activity_precision_rc_vs_gt": 0.8181818181818182,
480
+ "activity_recall_rc_vs_gt": 1.0,
481
+ "activity_f1_rc_vs_gt": 0.9,
482
+ "class_match_rate": 1.0,
483
+ "doa_angular_error_deg_mean": 11.89599920735741,
484
+ "doa_angular_error_deg_median": 11.875431948942609,
485
+ "distance_mae_m": 0.8219536542892456,
486
+ "top_class_agreement": 1,
487
+ "gt_top_class": "human_vocalization",
488
+ "rc_top_class": "human_vocalization"
489
+ },
490
+ "sample": "s1_rank10_temporal_order_001229"
491
+ },
492
+ "s1_rank14_audioset_keyword_000653": {
493
+ "gt_top_class": "human_vocalization",
494
+ "rc_top_class": "singing",
495
+ "gt_frames_preview": [
496
+ [],
497
+ [],
498
+ [],
499
+ [],
500
+ []
501
+ ],
502
+ "rc_frames_preview": [
503
+ [],
504
+ [],
505
+ [],
506
+ [],
507
+ []
508
+ ],
509
+ "comparison": {
510
+ "T_s": 103,
511
+ "activity_gt_frac": 0.2087378640776699,
512
+ "activity_rc_frac": 0.0825242718446602,
513
+ "activity_jaccard": 0.3953488372093023,
514
+ "activity_precision_rc_vs_gt": 1.0,
515
+ "activity_recall_rc_vs_gt": 0.3953488372093023,
516
+ "activity_f1_rc_vs_gt": 0.5666666666666667,
517
+ "class_match_rate": 0.0,
518
+ "doa_angular_error_deg_mean": 158.1389025850092,
519
+ "doa_angular_error_deg_median": 158.05901087896916,
520
+ "distance_mae_m": 0.2706669867038727,
521
+ "top_class_agreement": 0,
522
+ "gt_top_class": "human_vocalization",
523
+ "rc_top_class": "singing"
524
+ },
525
+ "sample": "s1_rank14_audioset_keyword_000653"
526
+ },
527
+ "s1_rank14_fsd50k_000024": {
528
+ "gt_top_class": "keyboard_instrument",
529
+ "rc_top_class": "water",
530
+ "gt_frames_preview": [
531
+ [
532
+ {
533
+ "track": 0,
534
+ "activity": 0.742,
535
+ "class_idx": 7,
536
+ "class_name": "keyboard_instrument",
537
+ "class_conf": 0.85,
538
+ "azi_deg": 106.65,
539
+ "ele_deg": 15.68,
540
+ "dist_m": 1.945
541
+ }
542
+ ],
543
+ [
544
+ {
545
+ "track": 0,
546
+ "activity": 0.833,
547
+ "class_idx": 7,
548
+ "class_name": "keyboard_instrument",
549
+ "class_conf": 0.853,
550
+ "azi_deg": 108.18,
551
+ "ele_deg": 15.99,
552
+ "dist_m": 1.927
553
+ }
554
+ ],
555
+ [
556
+ {
557
+ "track": 0,
558
+ "activity": 0.83,
559
+ "class_idx": 7,
560
+ "class_name": "keyboard_instrument",
561
+ "class_conf": 0.849,
562
+ "azi_deg": 108.66,
563
+ "ele_deg": 15.47,
564
+ "dist_m": 1.928
565
+ }
566
+ ],
567
+ [
568
+ {
569
+ "track": 0,
570
+ "activity": 0.837,
571
+ "class_idx": 7,
572
+ "class_name": "keyboard_instrument",
573
+ "class_conf": 0.851,
574
+ "azi_deg": 108.29,
575
+ "ele_deg": 15.23,
576
+ "dist_m": 1.928
577
+ }
578
+ ],
579
+ [
580
+ {
581
+ "track": 0,
582
+ "activity": 0.844,
583
+ "class_idx": 7,
584
+ "class_name": "keyboard_instrument",
585
+ "class_conf": 0.849,
586
+ "azi_deg": 108.11,
587
+ "ele_deg": 14.96,
588
+ "dist_m": 1.932
589
+ }
590
+ ]
591
+ ],
592
+ "rc_frames_preview": [
593
+ [
594
+ {
595
+ "track": 0,
596
+ "activity": 0.939,
597
+ "class_idx": 7,
598
+ "class_name": "keyboard_instrument",
599
+ "class_conf": 0.87,
600
+ "azi_deg": 38.55,
601
+ "ele_deg": 1.47,
602
+ "dist_m": 1.649
603
+ },
604
+ {
605
+ "track": 1,
606
+ "activity": 0.685,
607
+ "class_idx": 5,
608
+ "class_name": "water",
609
+ "class_conf": 0.291,
610
+ "azi_deg": 27.75,
611
+ "ele_deg": -31.03,
612
+ "dist_m": 1.963
613
+ }
614
+ ],
615
+ [
616
+ {
617
+ "track": 0,
618
+ "activity": 0.916,
619
+ "class_idx": 7,
620
+ "class_name": "keyboard_instrument",
621
+ "class_conf": 0.893,
622
+ "azi_deg": 38.07,
623
+ "ele_deg": 2.53,
624
+ "dist_m": 1.633
625
+ },
626
+ {
627
+ "track": 1,
628
+ "activity": 0.705,
629
+ "class_idx": 7,
630
+ "class_name": "keyboard_instrument",
631
+ "class_conf": 0.362,
632
+ "azi_deg": -134.58,
633
+ "ele_deg": -44.36,
634
+ "dist_m": 1.892
635
+ }
636
+ ],
637
+ [
638
+ {
639
+ "track": 0,
640
+ "activity": 0.851,
641
+ "class_idx": 7,
642
+ "class_name": "keyboard_instrument",
643
+ "class_conf": 0.905,
644
+ "azi_deg": 38.57,
645
+ "ele_deg": 3.16,
646
+ "dist_m": 1.633
647
+ },
648
+ {
649
+ "track": 1,
650
+ "activity": 0.674,
651
+ "class_idx": 7,
652
+ "class_name": "keyboard_instrument",
653
+ "class_conf": 0.341,
654
+ "azi_deg": -154.14,
655
+ "ele_deg": -17.61,
656
+ "dist_m": 1.9
657
+ }
658
+ ],
659
+ [
660
+ {
661
+ "track": 0,
662
+ "activity": 0.814,
663
+ "class_idx": 7,
664
+ "class_name": "keyboard_instrument",
665
+ "class_conf": 0.912,
666
+ "azi_deg": 38.6,
667
+ "ele_deg": 3.49,
668
+ "dist_m": 1.649
669
+ },
670
+ {
671
+ "track": 1,
672
+ "activity": 0.686,
673
+ "class_idx": 7,
674
+ "class_name": "keyboard_instrument",
675
+ "class_conf": 0.343,
676
+ "azi_deg": -148.69,
677
+ "ele_deg": -17.26,
678
+ "dist_m": 1.946
679
+ }
680
+ ],
681
+ [
682
+ {
683
+ "track": 0,
684
+ "activity": 0.773,
685
+ "class_idx": 7,
686
+ "class_name": "keyboard_instrument",
687
+ "class_conf": 0.913,
688
+ "azi_deg": 38.91,
689
+ "ele_deg": 4.05,
690
+ "dist_m": 1.654
691
+ },
692
+ {
693
+ "track": 1,
694
+ "activity": 0.686,
695
+ "class_idx": 7,
696
+ "class_name": "keyboard_instrument",
697
+ "class_conf": 0.333,
698
+ "azi_deg": -149.23,
699
+ "ele_deg": -19.44,
700
+ "dist_m": 1.959
701
+ }
702
+ ]
703
+ ],
704
+ "comparison": {
705
+ "T_s": 24,
706
+ "activity_gt_frac": 0.25,
707
+ "activity_rc_frac": 0.375,
708
+ "activity_jaccard": 0.25,
709
+ "activity_precision_rc_vs_gt": 0.3333333333333333,
710
+ "activity_recall_rc_vs_gt": 0.5,
711
+ "activity_f1_rc_vs_gt": 0.4,
712
+ "class_match_rate": 1.0,
713
+ "doa_angular_error_deg_mean": 67.23609243670141,
714
+ "doa_angular_error_deg_median": 67.39671260216033,
715
+ "distance_mae_m": 0.2839207947254181,
716
+ "top_class_agreement": 0,
717
+ "gt_top_class": "keyboard_instrument",
718
+ "rc_top_class": "water"
719
+ },
720
+ "sample": "s1_rank14_fsd50k_000024"
721
+ },
722
+ "s1_rank14_temporal_order_003256": {
723
+ "gt_top_class": "musical_instrument",
724
+ "rc_top_class": "keyboard_instrument",
725
+ "gt_frames_preview": [
726
+ [],
727
+ [],
728
+ [],
729
+ [],
730
+ []
731
+ ],
732
+ "rc_frames_preview": [
733
+ [
734
+ {
735
+ "track": 0,
736
+ "activity": 0.599,
737
+ "class_idx": 7,
738
+ "class_name": "keyboard_instrument",
739
+ "class_conf": 0.395,
740
+ "azi_deg": 75.42,
741
+ "ele_deg": 6.0,
742
+ "dist_m": 1.999
743
+ }
744
+ ],
745
+ [
746
+ {
747
+ "track": 0,
748
+ "activity": 0.614,
749
+ "class_idx": 7,
750
+ "class_name": "keyboard_instrument",
751
+ "class_conf": 0.402,
752
+ "azi_deg": 77.8,
753
+ "ele_deg": 8.12,
754
+ "dist_m": 1.987
755
+ }
756
+ ],
757
+ [
758
+ {
759
+ "track": 0,
760
+ "activity": 0.575,
761
+ "class_idx": 7,
762
+ "class_name": "keyboard_instrument",
763
+ "class_conf": 0.401,
764
+ "azi_deg": 78.54,
765
+ "ele_deg": 7.52,
766
+ "dist_m": 1.973
767
+ }
768
+ ],
769
+ [
770
+ {
771
+ "track": 0,
772
+ "activity": 0.569,
773
+ "class_idx": 7,
774
+ "class_name": "keyboard_instrument",
775
+ "class_conf": 0.41,
776
+ "azi_deg": 78.66,
777
+ "ele_deg": 7.48,
778
+ "dist_m": 1.967
779
+ }
780
+ ],
781
+ [
782
+ {
783
+ "track": 0,
784
+ "activity": 0.572,
785
+ "class_idx": 7,
786
+ "class_name": "keyboard_instrument",
787
+ "class_conf": 0.413,
788
+ "azi_deg": 78.57,
789
+ "ele_deg": 7.05,
790
+ "dist_m": 1.966
791
+ }
792
+ ]
793
+ ],
794
+ "comparison": {
795
+ "T_s": 13,
796
+ "activity_gt_frac": 0.0,
797
+ "activity_rc_frac": 0.23076923076923078,
798
+ "activity_jaccard": 0.0,
799
+ "activity_precision_rc_vs_gt": 0.0,
800
+ "activity_recall_rc_vs_gt": 0.0,
801
+ "activity_f1_rc_vs_gt": 0.0,
802
+ "class_match_rate": NaN,
803
+ "doa_angular_error_deg_mean": NaN,
804
+ "doa_angular_error_deg_median": NaN,
805
+ "distance_mae_m": NaN,
806
+ "top_class_agreement": 0,
807
+ "gt_top_class": "musical_instrument",
808
+ "rc_top_class": "keyboard_instrument"
809
+ },
810
+ "sample": "s1_rank14_temporal_order_003256"
811
+ },
812
+ "s1_rank15_fsd50k_000489": {
813
+ "gt_top_class": "telephone_alarm",
814
+ "rc_top_class": "insect",
815
+ "gt_frames_preview": [
816
+ [],
817
+ [
818
+ {
819
+ "track": 0,
820
+ "activity": 0.514,
821
+ "class_idx": 23,
822
+ "class_name": "telephone_alarm",
823
+ "class_conf": 0.862,
824
+ "azi_deg": 48.29,
825
+ "ele_deg": 27.98,
826
+ "dist_m": 1.946
827
+ }
828
+ ],
829
+ [
830
+ {
831
+ "track": 0,
832
+ "activity": 0.703,
833
+ "class_idx": 23,
834
+ "class_name": "telephone_alarm",
835
+ "class_conf": 0.868,
836
+ "azi_deg": 48.56,
837
+ "ele_deg": 27.97,
838
+ "dist_m": 1.932
839
+ }
840
+ ],
841
+ [
842
+ {
843
+ "track": 0,
844
+ "activity": 0.847,
845
+ "class_idx": 23,
846
+ "class_name": "telephone_alarm",
847
+ "class_conf": 0.871,
848
+ "azi_deg": 48.98,
849
+ "ele_deg": 27.98,
850
+ "dist_m": 1.919
851
+ }
852
+ ],
853
+ [
854
+ {
855
+ "track": 0,
856
+ "activity": 0.875,
857
+ "class_idx": 23,
858
+ "class_name": "telephone_alarm",
859
+ "class_conf": 0.874,
860
+ "azi_deg": 48.99,
861
+ "ele_deg": 27.92,
862
+ "dist_m": 1.913
863
+ }
864
+ ]
865
+ ],
866
+ "rc_frames_preview": [
867
+ [
868
+ {
869
+ "track": 2,
870
+ "activity": 0.539,
871
+ "class_idx": 52,
872
+ "class_name": "knock",
873
+ "class_conf": 0.502,
874
+ "azi_deg": -172.43,
875
+ "ele_deg": -25.56,
876
+ "dist_m": 2.656
877
+ }
878
+ ],
879
+ [
880
+ {
881
+ "track": 2,
882
+ "activity": 0.543,
883
+ "class_idx": 52,
884
+ "class_name": "knock",
885
+ "class_conf": 0.486,
886
+ "azi_deg": -168.97,
887
+ "ele_deg": -25.49,
888
+ "dist_m": 2.671
889
+ }
890
+ ],
891
+ [
892
+ {
893
+ "track": 2,
894
+ "activity": 0.547,
895
+ "class_idx": 52,
896
+ "class_name": "knock",
897
+ "class_conf": 0.486,
898
+ "azi_deg": -161.56,
899
+ "ele_deg": -22.67,
900
+ "dist_m": 2.711
901
+ }
902
+ ],
903
+ [
904
+ {
905
+ "track": 2,
906
+ "activity": 0.555,
907
+ "class_idx": 52,
908
+ "class_name": "knock",
909
+ "class_conf": 0.489,
910
+ "azi_deg": -157.76,
911
+ "ele_deg": -20.51,
912
+ "dist_m": 2.731
913
+ }
914
+ ],
915
+ [
916
+ {
917
+ "track": 2,
918
+ "activity": 0.526,
919
+ "class_idx": 52,
920
+ "class_name": "knock",
921
+ "class_conf": 0.488,
922
+ "azi_deg": -157.31,
923
+ "ele_deg": -19.91,
924
+ "dist_m": 2.718
925
+ }
926
+ ]
927
+ ],
928
+ "comparison": {
929
+ "T_s": 155,
930
+ "activity_gt_frac": 0.22258064516129034,
931
+ "activity_rc_frac": 0.3790322580645161,
932
+ "activity_jaccard": 0.3814814814814815,
933
+ "activity_precision_rc_vs_gt": 0.43829787234042555,
934
+ "activity_recall_rc_vs_gt": 0.7463768115942029,
935
+ "activity_f1_rc_vs_gt": 0.5522788203753352,
936
+ "class_match_rate": 1.0,
937
+ "doa_angular_error_deg_mean": 90.65873059085607,
938
+ "doa_angular_error_deg_median": 91.4724381595999,
939
+ "distance_mae_m": 0.1063886359333992,
940
+ "top_class_agreement": 0,
941
+ "gt_top_class": "telephone_alarm",
942
+ "rc_top_class": "insect"
943
+ },
944
+ "sample": "s1_rank15_fsd50k_000489"
945
+ },
946
+ "s1_rank17_audioset_keyword_001725": {
947
+ "gt_top_class": "guitar",
948
+ "rc_top_class": "guitar",
949
+ "gt_frames_preview": [
950
+ [
951
+ {
952
+ "track": 0,
953
+ "activity": 0.978,
954
+ "class_idx": 2,
955
+ "class_name": "guitar",
956
+ "class_conf": 0.869,
957
+ "azi_deg": -7.08,
958
+ "ele_deg": 1.27,
959
+ "dist_m": 2.662
960
+ }
961
+ ],
962
+ [
963
+ {
964
+ "track": 0,
965
+ "activity": 0.979,
966
+ "class_idx": 2,
967
+ "class_name": "guitar",
968
+ "class_conf": 0.869,
969
+ "azi_deg": -6.71,
970
+ "ele_deg": 1.01,
971
+ "dist_m": 2.645
972
+ }
973
+ ],
974
+ [
975
+ {
976
+ "track": 0,
977
+ "activity": 0.982,
978
+ "class_idx": 2,
979
+ "class_name": "guitar",
980
+ "class_conf": 0.874,
981
+ "azi_deg": -6.67,
982
+ "ele_deg": 0.57,
983
+ "dist_m": 2.623
984
+ }
985
+ ],
986
+ [
987
+ {
988
+ "track": 0,
989
+ "activity": 0.982,
990
+ "class_idx": 2,
991
+ "class_name": "guitar",
992
+ "class_conf": 0.872,
993
+ "azi_deg": -7.83,
994
+ "ele_deg": 0.64,
995
+ "dist_m": 2.604
996
+ }
997
+ ],
998
+ [
999
+ {
1000
+ "track": 0,
1001
+ "activity": 0.983,
1002
+ "class_idx": 2,
1003
+ "class_name": "guitar",
1004
+ "class_conf": 0.878,
1005
+ "azi_deg": -8.91,
1006
+ "ele_deg": 0.66,
1007
+ "dist_m": 2.589
1008
+ }
1009
+ ]
1010
+ ],
1011
+ "rc_frames_preview": [
1012
+ [
1013
+ {
1014
+ "track": 0,
1015
+ "activity": 0.774,
1016
+ "class_idx": 41,
1017
+ "class_name": "singing",
1018
+ "class_conf": 0.348,
1019
+ "azi_deg": 22.64,
1020
+ "ele_deg": 7.04,
1021
+ "dist_m": 2.347
1022
+ }
1023
+ ],
1024
+ [
1025
+ {
1026
+ "track": 0,
1027
+ "activity": 0.73,
1028
+ "class_idx": 41,
1029
+ "class_name": "singing",
1030
+ "class_conf": 0.333,
1031
+ "azi_deg": 23.98,
1032
+ "ele_deg": 7.07,
1033
+ "dist_m": 2.347
1034
+ }
1035
+ ],
1036
+ [
1037
+ {
1038
+ "track": 0,
1039
+ "activity": 0.634,
1040
+ "class_idx": 2,
1041
+ "class_name": "guitar",
1042
+ "class_conf": 0.382,
1043
+ "azi_deg": 25.59,
1044
+ "ele_deg": 7.1,
1045
+ "dist_m": 2.335
1046
+ }
1047
+ ],
1048
+ [
1049
+ {
1050
+ "track": 0,
1051
+ "activity": 0.584,
1052
+ "class_idx": 2,
1053
+ "class_name": "guitar",
1054
+ "class_conf": 0.437,
1055
+ "azi_deg": 25.17,
1056
+ "ele_deg": 7.23,
1057
+ "dist_m": 2.317
1058
+ }
1059
+ ],
1060
+ [
1061
+ {
1062
+ "track": 0,
1063
+ "activity": 0.567,
1064
+ "class_idx": 2,
1065
+ "class_name": "guitar",
1066
+ "class_conf": 0.491,
1067
+ "azi_deg": 24.76,
1068
+ "ele_deg": 7.35,
1069
+ "dist_m": 2.308
1070
+ }
1071
+ ]
1072
+ ],
1073
+ "comparison": {
1074
+ "T_s": 104,
1075
+ "activity_gt_frac": 0.24759615384615385,
1076
+ "activity_rc_frac": 0.03125,
1077
+ "activity_jaccard": 0.1262135922330097,
1078
+ "activity_precision_rc_vs_gt": 1.0,
1079
+ "activity_recall_rc_vs_gt": 0.1262135922330097,
1080
+ "activity_f1_rc_vs_gt": 0.22413793103448276,
1081
+ "class_match_rate": 0.8461538461538461,
1082
+ "doa_angular_error_deg_mean": 34.422865995490916,
1083
+ "doa_angular_error_deg_median": 35.16672869426235,
1084
+ "distance_mae_m": 0.25046706199645996,
1085
+ "top_class_agreement": 1,
1086
+ "gt_top_class": "guitar",
1087
+ "rc_top_class": "guitar"
1088
+ },
1089
+ "sample": "s1_rank17_audioset_keyword_001725"
1090
+ },
1091
+ "s1_rank18_opensource_emilia_zh_rawdata_English_000545": {
1092
+ "gt_top_class": "speech",
1093
+ "rc_top_class": "speech",
1094
+ "gt_frames_preview": [
1095
+ [
1096
+ {
1097
+ "track": 0,
1098
+ "activity": 0.615,
1099
+ "class_idx": 16,
1100
+ "class_name": "speech",
1101
+ "class_conf": 0.858,
1102
+ "azi_deg": 54.36,
1103
+ "ele_deg": 32.93,
1104
+ "dist_m": 1.773
1105
+ }
1106
+ ],
1107
+ [
1108
+ {
1109
+ "track": 0,
1110
+ "activity": 0.644,
1111
+ "class_idx": 16,
1112
+ "class_name": "speech",
1113
+ "class_conf": 0.863,
1114
+ "azi_deg": 54.38,
1115
+ "ele_deg": 32.83,
1116
+ "dist_m": 1.769
1117
+ }
1118
+ ],
1119
+ [
1120
+ {
1121
+ "track": 0,
1122
+ "activity": 0.729,
1123
+ "class_idx": 16,
1124
+ "class_name": "speech",
1125
+ "class_conf": 0.87,
1126
+ "azi_deg": 54.29,
1127
+ "ele_deg": 32.37,
1128
+ "dist_m": 1.772
1129
+ }
1130
+ ],
1131
+ [
1132
+ {
1133
+ "track": 0,
1134
+ "activity": 0.809,
1135
+ "class_idx": 16,
1136
+ "class_name": "speech",
1137
+ "class_conf": 0.875,
1138
+ "azi_deg": 54.23,
1139
+ "ele_deg": 31.96,
1140
+ "dist_m": 1.787
1141
+ }
1142
+ ],
1143
+ [
1144
+ {
1145
+ "track": 0,
1146
+ "activity": 0.824,
1147
+ "class_idx": 16,
1148
+ "class_name": "speech",
1149
+ "class_conf": 0.876,
1150
+ "azi_deg": 53.96,
1151
+ "ele_deg": 31.76,
1152
+ "dist_m": 1.793
1153
+ }
1154
+ ]
1155
+ ],
1156
+ "rc_frames_preview": [
1157
+ [],
1158
+ [],
1159
+ [],
1160
+ [
1161
+ {
1162
+ "track": 1,
1163
+ "activity": 0.532,
1164
+ "class_idx": 16,
1165
+ "class_name": "speech",
1166
+ "class_conf": 0.814,
1167
+ "azi_deg": 69.6,
1168
+ "ele_deg": 18.12,
1169
+ "dist_m": 1.181
1170
+ }
1171
+ ],
1172
+ [
1173
+ {
1174
+ "track": 1,
1175
+ "activity": 0.543,
1176
+ "class_idx": 16,
1177
+ "class_name": "speech",
1178
+ "class_conf": 0.822,
1179
+ "azi_deg": 70.36,
1180
+ "ele_deg": 17.33,
1181
+ "dist_m": 1.174
1182
+ }
1183
+ ]
1184
+ ],
1185
+ "comparison": {
1186
+ "T_s": 147,
1187
+ "activity_gt_frac": 0.12585034013605442,
1188
+ "activity_rc_frac": 0.07993197278911565,
1189
+ "activity_jaccard": 0.0,
1190
+ "activity_precision_rc_vs_gt": 0.0,
1191
+ "activity_recall_rc_vs_gt": 0.0,
1192
+ "activity_f1_rc_vs_gt": 0.0,
1193
+ "class_match_rate": NaN,
1194
+ "doa_angular_error_deg_mean": NaN,
1195
+ "doa_angular_error_deg_median": NaN,
1196
+ "distance_mae_m": NaN,
1197
+ "top_class_agreement": 1,
1198
+ "gt_top_class": "speech",
1199
+ "rc_top_class": "speech"
1200
+ },
1201
+ "sample": "s1_rank18_opensource_emilia_zh_rawdata_English_000545"
1202
+ },
1203
+ "s1_rank20_laion_630k_002181": {
1204
+ "gt_top_class": "drum",
1205
+ "rc_top_class": "drum",
1206
+ "gt_frames_preview": [
1207
+ [
1208
+ {
1209
+ "track": 0,
1210
+ "activity": 0.895,
1211
+ "class_idx": 4,
1212
+ "class_name": "drum",
1213
+ "class_conf": 0.562,
1214
+ "azi_deg": -117.83,
1215
+ "ele_deg": 27.07,
1216
+ "dist_m": 1.464
1217
+ }
1218
+ ],
1219
+ [
1220
+ {
1221
+ "track": 0,
1222
+ "activity": 0.896,
1223
+ "class_idx": 4,
1224
+ "class_name": "drum",
1225
+ "class_conf": 0.568,
1226
+ "azi_deg": -118.02,
1227
+ "ele_deg": 26.8,
1228
+ "dist_m": 1.478
1229
+ }
1230
+ ],
1231
+ [
1232
+ {
1233
+ "track": 0,
1234
+ "activity": 0.908,
1235
+ "class_idx": 4,
1236
+ "class_name": "drum",
1237
+ "class_conf": 0.578,
1238
+ "azi_deg": -118.29,
1239
+ "ele_deg": 26.34,
1240
+ "dist_m": 1.473
1241
+ }
1242
+ ],
1243
+ [
1244
+ {
1245
+ "track": 0,
1246
+ "activity": 0.922,
1247
+ "class_idx": 4,
1248
+ "class_name": "drum",
1249
+ "class_conf": 0.576,
1250
+ "azi_deg": -118.65,
1251
+ "ele_deg": 25.98,
1252
+ "dist_m": 1.461
1253
+ }
1254
+ ],
1255
+ [
1256
+ {
1257
+ "track": 0,
1258
+ "activity": 0.933,
1259
+ "class_idx": 4,
1260
+ "class_name": "drum",
1261
+ "class_conf": 0.573,
1262
+ "azi_deg": -118.86,
1263
+ "ele_deg": 25.42,
1264
+ "dist_m": 1.458
1265
+ }
1266
+ ]
1267
+ ],
1268
+ "rc_frames_preview": [
1269
+ [
1270
+ {
1271
+ "track": 0,
1272
+ "activity": 0.741,
1273
+ "class_idx": 4,
1274
+ "class_name": "drum",
1275
+ "class_conf": 0.673,
1276
+ "azi_deg": -95.62,
1277
+ "ele_deg": -12.13,
1278
+ "dist_m": 2.057
1279
+ },
1280
+ {
1281
+ "track": 1,
1282
+ "activity": 0.66,
1283
+ "class_idx": 4,
1284
+ "class_name": "drum",
1285
+ "class_conf": 0.587,
1286
+ "azi_deg": 17.81,
1287
+ "ele_deg": 42.29,
1288
+ "dist_m": 1.222
1289
+ }
1290
+ ],
1291
+ [
1292
+ {
1293
+ "track": 0,
1294
+ "activity": 0.743,
1295
+ "class_idx": 4,
1296
+ "class_name": "drum",
1297
+ "class_conf": 0.681,
1298
+ "azi_deg": -95.68,
1299
+ "ele_deg": -12.49,
1300
+ "dist_m": 2.07
1301
+ },
1302
+ {
1303
+ "track": 1,
1304
+ "activity": 0.677,
1305
+ "class_idx": 4,
1306
+ "class_name": "drum",
1307
+ "class_conf": 0.6,
1308
+ "azi_deg": 20.36,
1309
+ "ele_deg": 42.29,
1310
+ "dist_m": 1.248
1311
+ }
1312
+ ],
1313
+ [
1314
+ {
1315
+ "track": 0,
1316
+ "activity": 0.754,
1317
+ "class_idx": 4,
1318
+ "class_name": "drum",
1319
+ "class_conf": 0.688,
1320
+ "azi_deg": -97.51,
1321
+ "ele_deg": -11.47,
1322
+ "dist_m": 2.08
1323
+ },
1324
+ {
1325
+ "track": 1,
1326
+ "activity": 0.768,
1327
+ "class_idx": 4,
1328
+ "class_name": "drum",
1329
+ "class_conf": 0.612,
1330
+ "azi_deg": 31.56,
1331
+ "ele_deg": 51.95,
1332
+ "dist_m": 1.221
1333
+ }
1334
+ ],
1335
+ [
1336
+ {
1337
+ "track": 0,
1338
+ "activity": 0.761,
1339
+ "class_idx": 4,
1340
+ "class_name": "drum",
1341
+ "class_conf": 0.685,
1342
+ "azi_deg": -99.17,
1343
+ "ele_deg": -10.93,
1344
+ "dist_m": 2.064
1345
+ },
1346
+ {
1347
+ "track": 1,
1348
+ "activity": 0.823,
1349
+ "class_idx": 4,
1350
+ "class_name": "drum",
1351
+ "class_conf": 0.617,
1352
+ "azi_deg": 41.36,
1353
+ "ele_deg": 57.8,
1354
+ "dist_m": 1.17
1355
+ }
1356
+ ],
1357
+ [
1358
+ {
1359
+ "track": 0,
1360
+ "activity": 0.763,
1361
+ "class_idx": 4,
1362
+ "class_name": "drum",
1363
+ "class_conf": 0.681,
1364
+ "azi_deg": -99.82,
1365
+ "ele_deg": -10.75,
1366
+ "dist_m": 2.075
1367
+ },
1368
+ {
1369
+ "track": 1,
1370
+ "activity": 0.845,
1371
+ "class_idx": 4,
1372
+ "class_name": "drum",
1373
+ "class_conf": 0.609,
1374
+ "azi_deg": 47.64,
1375
+ "ele_deg": 58.23,
1376
+ "dist_m": 1.159
1377
+ }
1378
+ ]
1379
+ ],
1380
+ "comparison": {
1381
+ "T_s": 174,
1382
+ "activity_gt_frac": 0.27873563218390807,
1383
+ "activity_rc_frac": 0.257183908045977,
1384
+ "activity_jaccard": 0.3970037453183521,
1385
+ "activity_precision_rc_vs_gt": 0.5921787709497207,
1386
+ "activity_recall_rc_vs_gt": 0.5463917525773195,
1387
+ "activity_f1_rc_vs_gt": 0.5683646112600536,
1388
+ "class_match_rate": 0.2358490566037736,
1389
+ "doa_angular_error_deg_mean": 27.102211614582803,
1390
+ "doa_angular_error_deg_median": 22.093031445824906,
1391
+ "distance_mae_m": 0.2159106582403183,
1392
+ "top_class_agreement": 1,
1393
+ "gt_top_class": "drum",
1394
+ "rc_top_class": "drum"
1395
+ },
1396
+ "sample": "s1_rank20_laion_630k_002181"
1397
+ },
1398
+ "s1_rank20_vocalsound_000310": {
1399
+ "gt_top_class": "laughter",
1400
+ "rc_top_class": "laughter",
1401
+ "gt_frames_preview": [
1402
+ [],
1403
+ [
1404
+ {
1405
+ "track": 0,
1406
+ "activity": 0.51,
1407
+ "class_idx": 14,
1408
+ "class_name": "laughter",
1409
+ "class_conf": 0.73,
1410
+ "azi_deg": -54.9,
1411
+ "ele_deg": 6.32,
1412
+ "dist_m": 2.723
1413
+ }
1414
+ ],
1415
+ [
1416
+ {
1417
+ "track": 0,
1418
+ "activity": 0.5,
1419
+ "class_idx": 14,
1420
+ "class_name": "laughter",
1421
+ "class_conf": 0.776,
1422
+ "azi_deg": -59.68,
1423
+ "ele_deg": 7.66,
1424
+ "dist_m": 2.71
1425
+ }
1426
+ ],
1427
+ [
1428
+ {
1429
+ "track": 0,
1430
+ "activity": 0.527,
1431
+ "class_idx": 14,
1432
+ "class_name": "laughter",
1433
+ "class_conf": 0.786,
1434
+ "azi_deg": -64.05,
1435
+ "ele_deg": 9.3,
1436
+ "dist_m": 2.694
1437
+ }
1438
+ ],
1439
+ [
1440
+ {
1441
+ "track": 0,
1442
+ "activity": 0.531,
1443
+ "class_idx": 14,
1444
+ "class_name": "laughter",
1445
+ "class_conf": 0.809,
1446
+ "azi_deg": -66.48,
1447
+ "ele_deg": 10.24,
1448
+ "dist_m": 2.681
1449
+ }
1450
+ ]
1451
+ ],
1452
+ "rc_frames_preview": [
1453
+ [
1454
+ {
1455
+ "track": 1,
1456
+ "activity": 0.736,
1457
+ "class_idx": 9,
1458
+ "class_name": "tool",
1459
+ "class_conf": 0.418,
1460
+ "azi_deg": -20.49,
1461
+ "ele_deg": 67.02,
1462
+ "dist_m": 1.491
1463
+ },
1464
+ {
1465
+ "track": 2,
1466
+ "activity": 0.577,
1467
+ "class_idx": 36,
1468
+ "class_name": "typing",
1469
+ "class_conf": 0.371,
1470
+ "azi_deg": -30.13,
1471
+ "ele_deg": 40.13,
1472
+ "dist_m": 1.734
1473
+ }
1474
+ ],
1475
+ [
1476
+ {
1477
+ "track": 3,
1478
+ "activity": 0.719,
1479
+ "class_idx": 14,
1480
+ "class_name": "laughter",
1481
+ "class_conf": 0.827,
1482
+ "azi_deg": -54.38,
1483
+ "ele_deg": 10.57,
1484
+ "dist_m": 2.292
1485
+ }
1486
+ ],
1487
+ [
1488
+ {
1489
+ "track": 3,
1490
+ "activity": 0.831,
1491
+ "class_idx": 14,
1492
+ "class_name": "laughter",
1493
+ "class_conf": 0.834,
1494
+ "azi_deg": -47.86,
1495
+ "ele_deg": 8.67,
1496
+ "dist_m": 2.276
1497
+ }
1498
+ ],
1499
+ [
1500
+ {
1501
+ "track": 3,
1502
+ "activity": 0.895,
1503
+ "class_idx": 14,
1504
+ "class_name": "laughter",
1505
+ "class_conf": 0.82,
1506
+ "azi_deg": -41.0,
1507
+ "ele_deg": 9.06,
1508
+ "dist_m": 2.272
1509
+ }
1510
+ ],
1511
+ [
1512
+ {
1513
+ "track": 3,
1514
+ "activity": 0.919,
1515
+ "class_idx": 14,
1516
+ "class_name": "laughter",
1517
+ "class_conf": 0.826,
1518
+ "azi_deg": -29.83,
1519
+ "ele_deg": 9.62,
1520
+ "dist_m": 2.253
1521
+ }
1522
+ ]
1523
+ ],
1524
+ "comparison": {
1525
+ "T_s": 53,
1526
+ "activity_gt_frac": 0.3867924528301887,
1527
+ "activity_rc_frac": 0.42924528301886794,
1528
+ "activity_jaccard": 0.2814814814814815,
1529
+ "activity_precision_rc_vs_gt": 0.4175824175824176,
1530
+ "activity_recall_rc_vs_gt": 0.4634146341463415,
1531
+ "activity_f1_rc_vs_gt": 0.4393063583815029,
1532
+ "class_match_rate": 1.0,
1533
+ "doa_angular_error_deg_mean": 148.37263579773634,
1534
+ "doa_angular_error_deg_median": 148.62451307406513,
1535
+ "distance_mae_m": 0.994830310344696,
1536
+ "top_class_agreement": 1,
1537
+ "gt_top_class": "laughter",
1538
+ "rc_top_class": "laughter"
1539
+ },
1540
+ "sample": "s1_rank20_vocalsound_000310"
1541
+ },
1542
+ "s1_rank21_insectset_000328": {
1543
+ "gt_top_class": "water",
1544
+ "rc_top_class": "tool",
1545
+ "gt_frames_preview": [
1546
+ [
1547
+ {
1548
+ "track": 0,
1549
+ "activity": 0.574,
1550
+ "class_idx": 5,
1551
+ "class_name": "water",
1552
+ "class_conf": 0.569,
1553
+ "azi_deg": 138.37,
1554
+ "ele_deg": 5.76,
1555
+ "dist_m": 2.279
1556
+ }
1557
+ ],
1558
+ [
1559
+ {
1560
+ "track": 0,
1561
+ "activity": 0.574,
1562
+ "class_idx": 5,
1563
+ "class_name": "water",
1564
+ "class_conf": 0.547,
1565
+ "azi_deg": 137.61,
1566
+ "ele_deg": 5.59,
1567
+ "dist_m": 2.278
1568
+ }
1569
+ ],
1570
+ [
1571
+ {
1572
+ "track": 0,
1573
+ "activity": 0.577,
1574
+ "class_idx": 5,
1575
+ "class_name": "water",
1576
+ "class_conf": 0.547,
1577
+ "azi_deg": 137.66,
1578
+ "ele_deg": 5.6,
1579
+ "dist_m": 2.277
1580
+ }
1581
+ ],
1582
+ [
1583
+ {
1584
+ "track": 0,
1585
+ "activity": 0.599,
1586
+ "class_idx": 5,
1587
+ "class_name": "water",
1588
+ "class_conf": 0.538,
1589
+ "azi_deg": 138.21,
1590
+ "ele_deg": 5.83,
1591
+ "dist_m": 2.271
1592
+ }
1593
+ ],
1594
+ [
1595
+ {
1596
+ "track": 0,
1597
+ "activity": 0.624,
1598
+ "class_idx": 5,
1599
+ "class_name": "water",
1600
+ "class_conf": 0.538,
1601
+ "azi_deg": 138.61,
1602
+ "ele_deg": 5.86,
1603
+ "dist_m": 2.265
1604
+ }
1605
+ ]
1606
+ ],
1607
+ "rc_frames_preview": [
1608
+ [],
1609
+ [],
1610
+ [],
1611
+ [],
1612
+ []
1613
+ ],
1614
+ "comparison": {
1615
+ "T_s": 303,
1616
+ "activity_gt_frac": 0.2433993399339934,
1617
+ "activity_rc_frac": 0.0,
1618
+ "activity_jaccard": 0.0,
1619
+ "activity_precision_rc_vs_gt": 0.0,
1620
+ "activity_recall_rc_vs_gt": 0.0,
1621
+ "activity_f1_rc_vs_gt": 0.0,
1622
+ "class_match_rate": NaN,
1623
+ "doa_angular_error_deg_mean": NaN,
1624
+ "doa_angular_error_deg_median": NaN,
1625
+ "distance_mae_m": NaN,
1626
+ "top_class_agreement": 0,
1627
+ "gt_top_class": "water",
1628
+ "rc_top_class": "tool"
1629
+ },
1630
+ "sample": "s1_rank21_insectset_000328"
1631
+ },
1632
+ "s1_rank21_opensource_emilia_zh_rawdata_English_002504": {
1633
+ "gt_top_class": "speech",
1634
+ "rc_top_class": "speech",
1635
+ "gt_frames_preview": [
1636
+ [],
1637
+ [],
1638
+ [
1639
+ {
1640
+ "track": 0,
1641
+ "activity": 0.598,
1642
+ "class_idx": 16,
1643
+ "class_name": "speech",
1644
+ "class_conf": 0.9,
1645
+ "azi_deg": -176.91,
1646
+ "ele_deg": 0.86,
1647
+ "dist_m": 3.275
1648
+ }
1649
+ ],
1650
+ [
1651
+ {
1652
+ "track": 0,
1653
+ "activity": 0.823,
1654
+ "class_idx": 16,
1655
+ "class_name": "speech",
1656
+ "class_conf": 0.901,
1657
+ "azi_deg": -175.78,
1658
+ "ele_deg": 1.28,
1659
+ "dist_m": 3.333
1660
+ }
1661
+ ],
1662
+ [
1663
+ {
1664
+ "track": 0,
1665
+ "activity": 0.889,
1666
+ "class_idx": 16,
1667
+ "class_name": "speech",
1668
+ "class_conf": 0.901,
1669
+ "azi_deg": -175.28,
1670
+ "ele_deg": 1.55,
1671
+ "dist_m": 3.354
1672
+ }
1673
+ ]
1674
+ ],
1675
+ "rc_frames_preview": [
1676
+ [],
1677
+ [],
1678
+ [],
1679
+ [
1680
+ {
1681
+ "track": 0,
1682
+ "activity": 0.586,
1683
+ "class_idx": 16,
1684
+ "class_name": "speech",
1685
+ "class_conf": 0.854,
1686
+ "azi_deg": -78.27,
1687
+ "ele_deg": 21.7,
1688
+ "dist_m": 5.139
1689
+ }
1690
+ ],
1691
+ [
1692
+ {
1693
+ "track": 0,
1694
+ "activity": 0.668,
1695
+ "class_idx": 16,
1696
+ "class_name": "speech",
1697
+ "class_conf": 0.856,
1698
+ "azi_deg": -76.07,
1699
+ "ele_deg": 21.79,
1700
+ "dist_m": 5.066
1701
+ }
1702
+ ]
1703
+ ],
1704
+ "comparison": {
1705
+ "T_s": 166,
1706
+ "activity_gt_frac": 0.24096385542168675,
1707
+ "activity_rc_frac": 0.1927710843373494,
1708
+ "activity_jaccard": 0.8,
1709
+ "activity_precision_rc_vs_gt": 1.0,
1710
+ "activity_recall_rc_vs_gt": 0.8,
1711
+ "activity_f1_rc_vs_gt": 0.888888888888889,
1712
+ "class_match_rate": 1.0,
1713
+ "doa_angular_error_deg_mean": 103.12276361635858,
1714
+ "doa_angular_error_deg_median": 103.52123227313189,
1715
+ "distance_mae_m": 1.1880497932434082,
1716
+ "top_class_agreement": 1,
1717
+ "gt_top_class": "speech",
1718
+ "rc_top_class": "speech"
1719
+ },
1720
+ "sample": "s1_rank21_opensource_emilia_zh_rawdata_English_002504"
1721
+ },
1722
+ "s1_rank22_audiosl_000699": {
1723
+ "gt_top_class": "water",
1724
+ "rc_top_class": "war_sound",
1725
+ "gt_frames_preview": [
1726
+ [
1727
+ {
1728
+ "track": 0,
1729
+ "activity": 0.553,
1730
+ "class_idx": 5,
1731
+ "class_name": "water",
1732
+ "class_conf": 0.649,
1733
+ "azi_deg": -136.51,
1734
+ "ele_deg": 6.92,
1735
+ "dist_m": 1.167
1736
+ }
1737
+ ],
1738
+ [
1739
+ {
1740
+ "track": 0,
1741
+ "activity": 0.668,
1742
+ "class_idx": 5,
1743
+ "class_name": "water",
1744
+ "class_conf": 0.503,
1745
+ "azi_deg": -137.02,
1746
+ "ele_deg": 7.26,
1747
+ "dist_m": 1.156
1748
+ }
1749
+ ],
1750
+ [
1751
+ {
1752
+ "track": 0,
1753
+ "activity": 0.678,
1754
+ "class_idx": 5,
1755
+ "class_name": "water",
1756
+ "class_conf": 0.525,
1757
+ "azi_deg": -136.84,
1758
+ "ele_deg": 7.42,
1759
+ "dist_m": 1.156
1760
+ }
1761
+ ],
1762
+ [
1763
+ {
1764
+ "track": 0,
1765
+ "activity": 0.688,
1766
+ "class_idx": 5,
1767
+ "class_name": "water",
1768
+ "class_conf": 0.508,
1769
+ "azi_deg": -136.64,
1770
+ "ele_deg": 7.71,
1771
+ "dist_m": 1.168
1772
+ }
1773
+ ],
1774
+ [
1775
+ {
1776
+ "track": 0,
1777
+ "activity": 0.703,
1778
+ "class_idx": 5,
1779
+ "class_name": "water",
1780
+ "class_conf": 0.5,
1781
+ "azi_deg": -136.46,
1782
+ "ele_deg": 7.75,
1783
+ "dist_m": 1.171
1784
+ }
1785
+ ]
1786
+ ],
1787
+ "rc_frames_preview": [
1788
+ [
1789
+ {
1790
+ "track": 0,
1791
+ "activity": 0.569,
1792
+ "class_idx": 11,
1793
+ "class_name": "war_sound",
1794
+ "class_conf": 0.517,
1795
+ "azi_deg": 51.47,
1796
+ "ele_deg": 10.91,
1797
+ "dist_m": 2.405
1798
+ }
1799
+ ],
1800
+ [
1801
+ {
1802
+ "track": 0,
1803
+ "activity": 0.514,
1804
+ "class_idx": 11,
1805
+ "class_name": "war_sound",
1806
+ "class_conf": 0.491,
1807
+ "azi_deg": 53.41,
1808
+ "ele_deg": 11.56,
1809
+ "dist_m": 2.371
1810
+ }
1811
+ ],
1812
+ [
1813
+ {
1814
+ "track": 0,
1815
+ "activity": 0.514,
1816
+ "class_idx": 11,
1817
+ "class_name": "war_sound",
1818
+ "class_conf": 0.505,
1819
+ "azi_deg": 54.52,
1820
+ "ele_deg": 11.57,
1821
+ "dist_m": 2.384
1822
+ }
1823
+ ],
1824
+ [
1825
+ {
1826
+ "track": 0,
1827
+ "activity": 0.534,
1828
+ "class_idx": 11,
1829
+ "class_name": "war_sound",
1830
+ "class_conf": 0.462,
1831
+ "azi_deg": 55.12,
1832
+ "ele_deg": 11.62,
1833
+ "dist_m": 2.408
1834
+ }
1835
+ ],
1836
+ [
1837
+ {
1838
+ "track": 0,
1839
+ "activity": 0.563,
1840
+ "class_idx": 11,
1841
+ "class_name": "war_sound",
1842
+ "class_conf": 0.488,
1843
+ "azi_deg": 55.43,
1844
+ "ele_deg": 11.45,
1845
+ "dist_m": 2.38
1846
+ }
1847
+ ]
1848
+ ],
1849
+ "comparison": {
1850
+ "T_s": 18,
1851
+ "activity_gt_frac": 0.25,
1852
+ "activity_rc_frac": 0.25,
1853
+ "activity_jaccard": 1.0,
1854
+ "activity_precision_rc_vs_gt": 1.0,
1855
+ "activity_recall_rc_vs_gt": 1.0,
1856
+ "activity_f1_rc_vs_gt": 1.0,
1857
+ "class_match_rate": 0.0,
1858
+ "doa_angular_error_deg_mean": 158.0126151635061,
1859
+ "doa_angular_error_deg_median": 157.80501566802064,
1860
+ "distance_mae_m": 1.176613688468933,
1861
+ "top_class_agreement": 0,
1862
+ "gt_top_class": "water",
1863
+ "rc_top_class": "war_sound"
1864
+ },
1865
+ "sample": "s1_rank22_audiosl_000699"
1866
+ },
1867
+ "s1_rank23_vocalsound_000569": {
1868
+ "gt_top_class": "breathing",
1869
+ "rc_top_class": "breathing",
1870
+ "gt_frames_preview": [
1871
+ [],
1872
+ [],
1873
+ [],
1874
+ [],
1875
+ []
1876
+ ],
1877
+ "rc_frames_preview": [
1878
+ [],
1879
+ [],
1880
+ [],
1881
+ [],
1882
+ []
1883
+ ],
1884
+ "comparison": {
1885
+ "T_s": 43,
1886
+ "activity_gt_frac": 0.18023255813953487,
1887
+ "activity_rc_frac": 0.18604651162790697,
1888
+ "activity_jaccard": 0.6578947368421053,
1889
+ "activity_precision_rc_vs_gt": 0.78125,
1890
+ "activity_recall_rc_vs_gt": 0.8064516129032258,
1891
+ "activity_f1_rc_vs_gt": 0.7936507936507936,
1892
+ "class_match_rate": 1.0,
1893
+ "doa_angular_error_deg_mean": 25.577542631147775,
1894
+ "doa_angular_error_deg_median": 25.48267970568861,
1895
+ "distance_mae_m": 0.9324265122413635,
1896
+ "top_class_agreement": 1,
1897
+ "gt_top_class": "breathing",
1898
+ "rc_top_class": "breathing"
1899
+ },
1900
+ "sample": "s1_rank23_vocalsound_000569"
1901
+ },
1902
+ "s1_rank4_opensource_emilia_zh_rawdata_Chinese_003160": {
1903
+ "gt_top_class": "speech",
1904
+ "rc_top_class": "speech",
1905
+ "gt_frames_preview": [
1906
+ [],
1907
+ [],
1908
+ [],
1909
+ [],
1910
+ []
1911
+ ],
1912
+ "rc_frames_preview": [
1913
+ [
1914
+ {
1915
+ "track": 2,
1916
+ "activity": 0.504,
1917
+ "class_idx": 16,
1918
+ "class_name": "speech",
1919
+ "class_conf": 0.85,
1920
+ "azi_deg": 7.45,
1921
+ "ele_deg": 3.25,
1922
+ "dist_m": 5.727
1923
+ }
1924
+ ],
1925
+ [
1926
+ {
1927
+ "track": 2,
1928
+ "activity": 0.527,
1929
+ "class_idx": 16,
1930
+ "class_name": "speech",
1931
+ "class_conf": 0.858,
1932
+ "azi_deg": 7.82,
1933
+ "ele_deg": 3.39,
1934
+ "dist_m": 5.743
1935
+ }
1936
+ ],
1937
+ [
1938
+ {
1939
+ "track": 2,
1940
+ "activity": 0.55,
1941
+ "class_idx": 16,
1942
+ "class_name": "speech",
1943
+ "class_conf": 0.866,
1944
+ "azi_deg": 7.71,
1945
+ "ele_deg": 3.69,
1946
+ "dist_m": 5.816
1947
+ }
1948
+ ],
1949
+ [
1950
+ {
1951
+ "track": 2,
1952
+ "activity": 0.555,
1953
+ "class_idx": 16,
1954
+ "class_name": "speech",
1955
+ "class_conf": 0.869,
1956
+ "azi_deg": 7.39,
1957
+ "ele_deg": 3.96,
1958
+ "dist_m": 5.895
1959
+ }
1960
+ ],
1961
+ [
1962
+ {
1963
+ "track": 2,
1964
+ "activity": 0.548,
1965
+ "class_idx": 16,
1966
+ "class_name": "speech",
1967
+ "class_conf": 0.867,
1968
+ "azi_deg": 7.35,
1969
+ "ele_deg": 3.94,
1970
+ "dist_m": 5.874
1971
+ }
1972
+ ]
1973
+ ],
1974
+ "comparison": {
1975
+ "T_s": 134,
1976
+ "activity_gt_frac": 0.15111940298507462,
1977
+ "activity_rc_frac": 0.014925373134328358,
1978
+ "activity_jaccard": 0.0,
1979
+ "activity_precision_rc_vs_gt": 0.0,
1980
+ "activity_recall_rc_vs_gt": 0.0,
1981
+ "activity_f1_rc_vs_gt": 0.0,
1982
+ "class_match_rate": NaN,
1983
+ "doa_angular_error_deg_mean": NaN,
1984
+ "doa_angular_error_deg_median": NaN,
1985
+ "distance_mae_m": NaN,
1986
+ "top_class_agreement": 1,
1987
+ "gt_top_class": "speech",
1988
+ "rc_top_class": "speech"
1989
+ },
1990
+ "sample": "s1_rank4_opensource_emilia_zh_rawdata_Chinese_003160"
1991
+ },
1992
+ "s1_rank5_opensource_emilia_zh_rawdata_English_001914": {
1993
+ "gt_top_class": "speech",
1994
+ "rc_top_class": "speech",
1995
+ "gt_frames_preview": [
1996
+ [
1997
+ {
1998
+ "track": 0,
1999
+ "activity": 0.553,
2000
+ "class_idx": 16,
2001
+ "class_name": "speech",
2002
+ "class_conf": 0.869,
2003
+ "azi_deg": 13.72,
2004
+ "ele_deg": 12.41,
2005
+ "dist_m": 1.348
2006
+ }
2007
+ ],
2008
+ [
2009
+ {
2010
+ "track": 0,
2011
+ "activity": 0.743,
2012
+ "class_idx": 16,
2013
+ "class_name": "speech",
2014
+ "class_conf": 0.88,
2015
+ "azi_deg": 13.84,
2016
+ "ele_deg": 11.95,
2017
+ "dist_m": 1.318
2018
+ }
2019
+ ],
2020
+ [
2021
+ {
2022
+ "track": 0,
2023
+ "activity": 0.787,
2024
+ "class_idx": 16,
2025
+ "class_name": "speech",
2026
+ "class_conf": 0.882,
2027
+ "azi_deg": 14.6,
2028
+ "ele_deg": 11.81,
2029
+ "dist_m": 1.314
2030
+ }
2031
+ ],
2032
+ [
2033
+ {
2034
+ "track": 0,
2035
+ "activity": 0.81,
2036
+ "class_idx": 16,
2037
+ "class_name": "speech",
2038
+ "class_conf": 0.883,
2039
+ "azi_deg": 15.07,
2040
+ "ele_deg": 11.63,
2041
+ "dist_m": 1.311
2042
+ }
2043
+ ],
2044
+ [
2045
+ {
2046
+ "track": 0,
2047
+ "activity": 0.825,
2048
+ "class_idx": 16,
2049
+ "class_name": "speech",
2050
+ "class_conf": 0.885,
2051
+ "azi_deg": 15.36,
2052
+ "ele_deg": 11.5,
2053
+ "dist_m": 1.317
2054
+ }
2055
+ ]
2056
+ ],
2057
+ "rc_frames_preview": [
2058
+ [],
2059
+ [],
2060
+ [
2061
+ {
2062
+ "track": 0,
2063
+ "activity": 0.517,
2064
+ "class_idx": 16,
2065
+ "class_name": "speech",
2066
+ "class_conf": 0.844,
2067
+ "azi_deg": 9.65,
2068
+ "ele_deg": 14.2,
2069
+ "dist_m": 1.282
2070
+ }
2071
+ ],
2072
+ [
2073
+ {
2074
+ "track": 0,
2075
+ "activity": 0.547,
2076
+ "class_idx": 16,
2077
+ "class_name": "speech",
2078
+ "class_conf": 0.853,
2079
+ "azi_deg": 10.72,
2080
+ "ele_deg": 14.96,
2081
+ "dist_m": 1.259
2082
+ }
2083
+ ],
2084
+ [
2085
+ {
2086
+ "track": 0,
2087
+ "activity": 0.57,
2088
+ "class_idx": 16,
2089
+ "class_name": "speech",
2090
+ "class_conf": 0.86,
2091
+ "azi_deg": 11.48,
2092
+ "ele_deg": 15.47,
2093
+ "dist_m": 1.253
2094
+ }
2095
+ ]
2096
+ ],
2097
+ "comparison": {
2098
+ "T_s": 46,
2099
+ "activity_gt_frac": 0.25,
2100
+ "activity_rc_frac": 0.07065217391304347,
2101
+ "activity_jaccard": 0.2826086956521739,
2102
+ "activity_precision_rc_vs_gt": 1.0,
2103
+ "activity_recall_rc_vs_gt": 0.2826086956521739,
2104
+ "activity_f1_rc_vs_gt": 0.4406779661016949,
2105
+ "class_match_rate": 1.0,
2106
+ "doa_angular_error_deg_mean": 6.089056468647589,
2107
+ "doa_angular_error_deg_median": 6.163415867663726,
2108
+ "distance_mae_m": 0.0694989487528801,
2109
+ "top_class_agreement": 1,
2110
+ "gt_top_class": "speech",
2111
+ "rc_top_class": "speech"
2112
+ },
2113
+ "sample": "s1_rank5_opensource_emilia_zh_rawdata_English_001914"
2114
+ },
2115
+ "s1_rank9_opensource_emilia_zh_rawdata_English_001143": {
2116
+ "gt_top_class": "speech",
2117
+ "rc_top_class": "speech",
2118
+ "gt_frames_preview": [
2119
+ [],
2120
+ [],
2121
+ [
2122
+ {
2123
+ "track": 0,
2124
+ "activity": 0.636,
2125
+ "class_idx": 16,
2126
+ "class_name": "speech",
2127
+ "class_conf": 0.889,
2128
+ "azi_deg": 29.79,
2129
+ "ele_deg": -18.96,
2130
+ "dist_m": 1.704
2131
+ }
2132
+ ],
2133
+ [
2134
+ {
2135
+ "track": 0,
2136
+ "activity": 0.752,
2137
+ "class_idx": 16,
2138
+ "class_name": "speech",
2139
+ "class_conf": 0.894,
2140
+ "azi_deg": 29.98,
2141
+ "ele_deg": -18.52,
2142
+ "dist_m": 1.694
2143
+ }
2144
+ ],
2145
+ [
2146
+ {
2147
+ "track": 0,
2148
+ "activity": 0.798,
2149
+ "class_idx": 16,
2150
+ "class_name": "speech",
2151
+ "class_conf": 0.895,
2152
+ "azi_deg": 30.34,
2153
+ "ele_deg": -18.31,
2154
+ "dist_m": 1.677
2155
+ }
2156
+ ]
2157
+ ],
2158
+ "rc_frames_preview": [
2159
+ [],
2160
+ [],
2161
+ [
2162
+ {
2163
+ "track": 1,
2164
+ "activity": 0.647,
2165
+ "class_idx": 16,
2166
+ "class_name": "speech",
2167
+ "class_conf": 0.851,
2168
+ "azi_deg": 35.77,
2169
+ "ele_deg": 26.09,
2170
+ "dist_m": 1.346
2171
+ }
2172
+ ],
2173
+ [
2174
+ {
2175
+ "track": 1,
2176
+ "activity": 0.783,
2177
+ "class_idx": 16,
2178
+ "class_name": "speech",
2179
+ "class_conf": 0.862,
2180
+ "azi_deg": 36.15,
2181
+ "ele_deg": 25.67,
2182
+ "dist_m": 1.35
2183
+ }
2184
+ ],
2185
+ [
2186
+ {
2187
+ "track": 1,
2188
+ "activity": 0.829,
2189
+ "class_idx": 16,
2190
+ "class_name": "speech",
2191
+ "class_conf": 0.865,
2192
+ "azi_deg": 36.62,
2193
+ "ele_deg": 25.73,
2194
+ "dist_m": 1.342
2195
+ }
2196
+ ]
2197
+ ],
2198
+ "comparison": {
2199
+ "T_s": 121,
2200
+ "activity_gt_frac": 0.2190082644628099,
2201
+ "activity_rc_frac": 0.24586776859504134,
2202
+ "activity_jaccard": 0.0,
2203
+ "activity_precision_rc_vs_gt": 0.0,
2204
+ "activity_recall_rc_vs_gt": 0.0,
2205
+ "activity_f1_rc_vs_gt": 0.0,
2206
+ "class_match_rate": NaN,
2207
+ "doa_angular_error_deg_mean": NaN,
2208
+ "doa_angular_error_deg_median": NaN,
2209
+ "distance_mae_m": NaN,
2210
+ "top_class_agreement": 1,
2211
+ "gt_top_class": "speech",
2212
+ "rc_top_class": "speech"
2213
+ },
2214
+ "sample": "s1_rank9_opensource_emilia_zh_rawdata_English_001143"
2215
+ }
2216
+ }
eval_voxaudio_ood_results/mono_vae/summary.json ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "mean_activity_jaccard": 0.31722869095023537,
3
+ "n_valid_activity_jaccard": 20,
4
+ "mean_activity_precision_rc_vs_gt": 0.4940412106193858,
5
+ "n_valid_activity_precision_rc_vs_gt": 20,
6
+ "mean_activity_recall_rc_vs_gt": 0.3829143289520885,
7
+ "n_valid_activity_recall_rc_vs_gt": 20,
8
+ "mean_activity_f1_rc_vs_gt": 0.39739221883924747,
9
+ "n_valid_activity_f1_rc_vs_gt": 20,
10
+ "mean_class_match_rate": 0.6986156079044322,
11
+ "n_valid_class_match_rate": 13,
12
+ "mean_doa_angular_error_deg_mean": 79.70906496987138,
13
+ "n_valid_doa_angular_error_deg_mean": 13,
14
+ "mean_doa_angular_error_deg_median": 79.14171551956005,
15
+ "n_valid_doa_angular_error_deg_median": 13,
16
+ "mean_distance_mae_m": 0.6082516071888117,
17
+ "n_valid_distance_mae_m": 13,
18
+ "mean_top_class_agreement": 0.65,
19
+ "n_valid_top_class_agreement": 20,
20
+ "mean_activity_gt_frac": 0.2116135538807752,
21
+ "n_valid_activity_gt_frac": 20,
22
+ "mean_activity_rc_frac": 0.1629927504276915,
23
+ "n_valid_activity_rc_frac": 20,
24
+ "n_samples": 20
25
+ }
results/v13d_test_dcase_starss.json ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "checkpoint": "checkpoints/spatial_beats_ov1_unified_v13d_exp/03_ov123_top4/best.pt",
3
+ "preset": "ov1_unified_v13d",
4
+ "split": "test",
5
+ "activity_threshold": 0.5,
6
+ "per_subset": [
7
+ {
8
+ "oracle_class_acc": 0.7304948906094069,
9
+ "oracle_azi_mae_deg": 34.44487453252077,
10
+ "oracle_ele_mae_deg": 11.19228895008564,
11
+ "oracle_dist_mae": 1.0144560723565519,
12
+ "class_acc": 0.884446004871279,
13
+ "azi_mae_deg": 28.73322555422783,
14
+ "ele_mae_deg": 9.473692879080772,
15
+ "dist_mae": 1.011748286895454,
16
+ "activity_precision": 0.524139404296875,
17
+ "activity_recall": 0.08432960510253906,
18
+ "activity_acc": 0.439788818359375,
19
+ "matched_count": 706.25,
20
+ "ER20": 0.8175,
21
+ "F20": 0.075,
22
+ "LE_CD": 133.91,
23
+ "LR_CD": 0.1355,
24
+ "SELD_score": 0.8377,
25
+ "subset": "dcase_starss",
26
+ "manifest": "/apdcephfs_cq10/share_1603164/user/schmittzhu/data/metadata/dcase_starss_foa.test.jsonl",
27
+ "size": 505
28
+ }
29
+ ]
30
+ }
results/v13d_test_dcase_starss.log ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
0
 
1
 
2
 
3
 
 
 
 
 
4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /opt/conda/lib/python3.11/site-packages/torch/nn/utils/weight_norm.py:143: FutureWarning: `torch.nn.utils.weight_norm` is deprecated in favor of `torch.nn.utils.parametrizations.weight_norm`.
2
+ WeightNorm.apply(module, name, dim)
3
+ /opt/conda/lib/python3.11/site-packages/torch/nn/modules/transformer.py:379: UserWarning: enable_nested_tensor is True, but self.use_nested_tensor is False because encoder_layer.norm_first was True
4
+ warnings.warn(
5
+ [Eval] Device: cuda
6
+ [Eval] Checkpoint: checkpoints/spatial_beats_ov1_unified_v13d_exp/03_ov123_top4/best.pt
7
+ [Eval] Preset: ov1_unified_v13d
8
+ [Eval] Split: test
9
+ [SpatialDataset] Initialize from /apdcephfs_cq10/share_1603164/user/schmittzhu/data/metadata/dcase_starss_foa.test.jsonl
10
+
11
 
12
 
13
 
14
 
15
+
16
+ [Eval][dcase_starss] manifest=/apdcephfs_cq10/share_1603164/user/schmittzhu/data/metadata/dcase_starss_foa.test.jsonl
17
+ [Eval][dcase_starss] split=('test',) size=505
18
+
19
 
20
+
21
+ ================================================================================================
22
+ v12 per-subset (test split)
23
+ ================================================================================================
24
+ subset N F20 ER20 LE_CD LR_CD SELD o_cls o_azi o_ele o_dst a_P a_R
25
+ -----------------------------------------------------------------------------------------------------
26
+ dcase_starss 505 0.0750 0.8175 133.91 0.1355 0.8377 0.7305 34.44 11.19 1.0145 0.524 0.084
27
+ ================================================================================================
28
+ legend: F20↑ ER20↓ LE_CD↓ LR_CD↑ SELD↓ o_cls=oracle_class_acc o_azi/ele=oracle doa MAE (deg) a_P/a_R=activity precision/recall
29
+ ================================================================================================
30
+
31
+ [Eval] Summary saved to results/v13d_test_dcase_starss.json
results/v13d_test_unified.json ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "checkpoint": "checkpoints/spatial_beats_ov1_unified_v13d_exp/03_ov123_top4/best.pt",
3
+ "preset": "ov1_unified_v13d",
4
+ "split": "test",
5
+ "activity_threshold": 0.5,
6
+ "per_subset": [
7
+ {
8
+ "oracle_class_acc": 0.7837179984777259,
9
+ "oracle_azi_mae_deg": 12.592206098633284,
10
+ "oracle_ele_mae_deg": 5.67435007226348,
11
+ "oracle_dist_mae": 0.4022363679437855,
12
+ "class_acc": 0.860446607692338,
13
+ "azi_mae_deg": 9.436391388904388,
14
+ "ele_mae_deg": 4.500656277421764,
15
+ "dist_mae": 0.38138905987075844,
16
+ "activity_precision": 0.8045251830722071,
17
+ "activity_recall": 0.05630378134135871,
18
+ "activity_acc": 0.7482400144045186,
19
+ "matched_count": 785.8321980018166,
20
+ "ER20": 0.5265,
21
+ "F20": 0.4871,
22
+ "LE_CD": 13.35,
23
+ "LR_CD": 0.5696,
24
+ "SELD_score": 0.386,
25
+ "subset": "unified",
26
+ "manifest": "/apdcephfs_cq12/share_302080740/user/schmittzhu/data/unified_spatial_foa_fsd63_all/test.jsonl",
27
+ "size": 35231
28
+ }
29
+ ]
30
+ }
results/v13d_test_unified.log ADDED
The diff for this file is too large to render. See raw diff
 
results/v13d_valid_dcase_starss.json ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "checkpoint": "checkpoints/spatial_beats_ov1_unified_v13d_exp/03_ov123_top4/best.pt",
3
+ "preset": "ov1_unified_v13d",
4
+ "split": "valid",
5
+ "activity_threshold": 0.5,
6
+ "per_subset": [
7
+ {
8
+ "oracle_class_acc": 0.7087607669715541,
9
+ "oracle_azi_mae_deg": 33.16232564825761,
10
+ "oracle_ele_mae_deg": 11.2290494040439,
11
+ "oracle_dist_mae": 1.0284199475980642,
12
+ "class_acc": 0.8441169418950092,
13
+ "azi_mae_deg": 26.882637571870234,
14
+ "ele_mae_deg": 9.890066773117635,
15
+ "dist_mae": 1.028246155276633,
16
+ "activity_precision": 0.506396484375,
17
+ "activity_recall": 0.07933697616844847,
18
+ "activity_acc": 0.42705163788377193,
19
+ "matched_count": 690.7456140350877,
20
+ "ER20": 0.8213,
21
+ "F20": 0.0799,
22
+ "LE_CD": 129.39,
23
+ "LR_CD": 0.1395,
24
+ "SELD_score": 0.8302,
25
+ "subset": "dcase_starss",
26
+ "manifest": "/apdcephfs_cq10/share_1603164/user/schmittzhu/data/metadata/dcase_starss_foa.valid.jsonl",
27
+ "size": 4560
28
+ }
29
+ ]
30
+ }
results/v13d_valid_dcase_starss.log ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
0
 
1
 
2
 
3
 
 
 
 
 
4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /opt/conda/lib/python3.11/site-packages/torch/nn/utils/weight_norm.py:143: FutureWarning: `torch.nn.utils.weight_norm` is deprecated in favor of `torch.nn.utils.parametrizations.weight_norm`.
2
+ WeightNorm.apply(module, name, dim)
3
+ /opt/conda/lib/python3.11/site-packages/torch/nn/modules/transformer.py:379: UserWarning: enable_nested_tensor is True, but self.use_nested_tensor is False because encoder_layer.norm_first was True
4
+ warnings.warn(
5
+ [Eval] Device: cuda
6
+ [Eval] Checkpoint: checkpoints/spatial_beats_ov1_unified_v13d_exp/03_ov123_top4/best.pt
7
+ [Eval] Preset: ov1_unified_v13d
8
+ [Eval] Split: valid
9
+ [SpatialDataset] Initialize from /apdcephfs_cq10/share_1603164/user/schmittzhu/data/metadata/dcase_starss_foa.valid.jsonl
10
+
11
 
12
 
13
 
14
 
15
+
16
+ [Eval][dcase_starss] manifest=/apdcephfs_cq10/share_1603164/user/schmittzhu/data/metadata/dcase_starss_foa.valid.jsonl
17
+ [Eval][dcase_starss] split=('valid',) size=4560
18
+
19
 
20
+
21
+ ================================================================================================
22
+ v12 per-subset (valid split)
23
+ ================================================================================================
24
+ subset N F20 ER20 LE_CD LR_CD SELD o_cls o_azi o_ele o_dst a_P a_R
25
+ -----------------------------------------------------------------------------------------------------
26
+ dcase_starss 4560 0.0799 0.8213 129.39 0.1395 0.8302 0.7088 33.16 11.23 1.0284 0.506 0.079
27
+ ================================================================================================
28
+ legend: F20↑ ER20↓ LE_CD↓ LR_CD↑ SELD↓ o_cls=oracle_class_acc o_azi/ele=oracle doa MAE (deg) a_P/a_R=activity precision/recall
29
+ ================================================================================================
30
+
31
+ [Eval] Summary saved to results/v13d_valid_dcase_starss.json
results/v13d_valid_ov1_real.log ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
0
 
1
 
2
 
3
 
 
 
 
 
4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /opt/conda/lib/python3.11/site-packages/torch/nn/utils/weight_norm.py:143: FutureWarning: `torch.nn.utils.weight_norm` is deprecated in favor of `torch.nn.utils.parametrizations.weight_norm`.
2
+ WeightNorm.apply(module, name, dim)
3
+ /opt/conda/lib/python3.11/site-packages/torch/nn/modules/transformer.py:379: UserWarning: enable_nested_tensor is True, but self.use_nested_tensor is False because encoder_layer.norm_first was True
4
+ warnings.warn(
5
+ [Eval] Device: cuda
6
+ [Eval] Checkpoint: checkpoints/spatial_beats_ov1_unified_v13d_exp/03_ov123_top4/best.pt
7
+ [Eval] Preset: ov1_unified_v13d
8
+ [Eval] Split: valid
9
+ [SpatialDataset] Initialize from /apdcephfs_cq10/share_1603164/user/schmittzhu/data/metadata/ov1_real_static_foa_mapped.jsonl
10
+
11
 
12
 
13
 
14
 
15
+
16
+ [Eval][ov1_real] manifest=/apdcephfs_cq10/share_1603164/user/schmittzhu/data/metadata/ov1_real_static_foa_mapped.jsonl
17
+ [Eval][ov1_real] split=('valid',) size=3374
18
+
19
 
20
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/eval_v12_per_subset.py", line 470, in <module>
21
+ main()
22
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/eval_v12_per_subset.py", line 420, in main
23
+ m = eval_one_subset(
24
+ ^^^^^^^^^^^^^^^^
25
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/eval_v12_per_subset.py", line 312, in eval_one_subset
26
+ for batch in tqdm(loader, desc=f"Eval {subset_name}", leave=False):
27
+ File "/opt/conda/lib/python3.11/site-packages/tqdm/std.py", line 1181, in __iter__
28
+ for obj in iterable:
29
+ File "/opt/conda/lib/python3.11/site-packages/torch/utils/data/dataloader.py", line 701, in __next__
30
+ data = self._next_data()
31
+ ^^^^^^^^^^^^^^^^^
32
+ File "/opt/conda/lib/python3.11/site-packages/torch/utils/data/dataloader.py", line 1465, in _next_data
33
+ return self._process_data(data)
34
+ ^^^^^^^^^^^^^^^^^^^^^^^^
35
+ File "/opt/conda/lib/python3.11/site-packages/torch/utils/data/dataloader.py", line 1491, in _process_data
36
+ data.reraise()
37
+ File "/opt/conda/lib/python3.11/site-packages/torch/_utils.py", line 715, in reraise
38
+ raise exception
39
+ RuntimeError: Caught RuntimeError in DataLoader worker process 0.
40
+ Original Traceback (most recent call last):
41
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/spatial_dataset.py", line 378, in _load_audio_file
42
+ waveform, sample_rate = sf.read(path, always_2d=True)
43
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
44
+ File "/opt/conda/lib/python3.11/site-packages/soundfile.py", line 305, in read
45
+ with SoundFile(file, 'r', samplerate, channels,
46
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
47
+ File "/opt/conda/lib/python3.11/site-packages/soundfile.py", line 690, in __init__
48
+ self._file = self._open(file, mode_int, closefd)
49
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
50
+ File "/opt/conda/lib/python3.11/site-packages/soundfile.py", line 1265, in _open
51
+ raise LibsndfileError(err, prefix="Error opening {0!r}: ".format(self.name))
52
+ soundfile.LibsndfileError: Error opening '/apdcephfs_cq10/share_1603164/user/schmittzhu/data/ov1_real_static_foa/valid/ov1_real_static_foa_006985.wav': System error.
53
+
54
+ During handling of the above exception, another exception occurred:
55
+
56
+ Traceback (most recent call last):
57
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/spatial_dataset.py", line 384, in _load_audio_file
58
+ sample_rate, waveform_np = wavfile.read(path)
59
+ ^^^^^^^^^^^^^^^^^^
60
+ File "/opt/conda/lib/python3.11/site-packages/scipy/io/wavfile.py", line 674, in read
61
+ fid = open(filename, 'rb')
62
+ ^^^^^^^^^^^^^^^^^^^^
63
+ FileNotFoundError: [Errno 2] No such file or directory: '/apdcephfs_cq10/share_1603164/user/schmittzhu/data/ov1_real_static_foa/valid/ov1_real_static_foa_006985.wav'
64
+
65
+ During handling of the above exception, another exception occurred:
66
+
67
+ Traceback (most recent call last):
68
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/spatial_dataset.py", line 397, in _load_audio_file
69
+ with wave.open(path, "rb") as handle:
70
+ ^^^^^^^^^^^^^^^^^^^^^
71
+ File "/opt/conda/lib/python3.11/wave.py", line 631, in open
72
+ return Wave_read(f)
73
+ ^^^^^^^^^^^^
74
+ File "/opt/conda/lib/python3.11/wave.py", line 279, in __init__
75
+ f = builtins.open(f, 'rb')
76
+ ^^^^^^^^^^^^^^^^^^^^^^
77
+ FileNotFoundError: [Errno 2] No such file or directory: '/apdcephfs_cq10/share_1603164/user/schmittzhu/data/ov1_real_static_foa/valid/ov1_real_static_foa_006985.wav'
78
+
79
+ The above exception was the direct cause of the following exception:
80
+
81
+ Traceback (most recent call last):
82
+ File "/opt/conda/lib/python3.11/site-packages/torch/utils/data/_utils/worker.py", line 351, in _worker_loop
83
+ data = fetcher.fetch(index) # type: ignore[possibly-undefined]
84
+ ^^^^^^^^^^^^^^^^^^^^
85
+ File "/opt/conda/lib/python3.11/site-packages/torch/utils/data/_utils/fetch.py", line 52, in fetch
86
+ data = [self.dataset[idx] for idx in possibly_batched_index]
87
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
88
+ File "/opt/conda/lib/python3.11/site-packages/torch/utils/data/_utils/fetch.py", line 52, in <listcomp>
89
+ data = [self.dataset[idx] for idx in possibly_batched_index]
90
+ ~~~~~~~~~~~~^^^^^
91
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/spatial_dataset.py", line 1310, in __getitem__
92
+ waveform = _load_audio_file(str(waveform_path), self.config.mel_config.sample_rate)
93
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
94
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/spatial_dataset.py", line 416, in _load_audio_file
95
+ raise RuntimeError(
96
+ RuntimeError: Failed to load audio file '/apdcephfs_cq10/share_1603164/user/schmittzhu/data/ov1_real_static_foa/valid/ov1_real_static_foa_006985.wav'. Install soundfile/scipy or provide PCM wav.
97
+
results/v13d_valid_ov1_sim.json ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "checkpoint": "checkpoints/spatial_beats_ov1_unified_v13d_exp/03_ov123_top4/best.pt",
3
+ "preset": "ov1_unified_v13d",
4
+ "split": "valid",
5
+ "activity_threshold": 0.5,
6
+ "per_subset": [
7
+ {
8
+ "oracle_class_acc": 0.7937788535902898,
9
+ "oracle_azi_mae_deg": 25.076975057125093,
10
+ "oracle_ele_mae_deg": 9.14060350239277,
11
+ "oracle_dist_mae": 0.6071755435566107,
12
+ "class_acc": 0.879228694178164,
13
+ "azi_mae_deg": 21.48522803256909,
14
+ "ele_mae_deg": 7.427904010117054,
15
+ "dist_mae": 0.5744369750159483,
16
+ "activity_precision": 0.8104524739583333,
17
+ "activity_recall": 0.04147186279296875,
18
+ "activity_acc": 0.7690266927083333,
19
+ "matched_count": 391.64,
20
+ "ER20": 0.6422,
21
+ "F20": 0.387,
22
+ "LE_CD": 26.11,
23
+ "LR_CD": 0.6079,
24
+ "SELD_score": 0.4481,
25
+ "subset": "ov1_sim",
26
+ "manifest": "/apdcephfs_cq10/share_1603164/user/schmittzhu/data/metadata/ov1_foa.jsonl",
27
+ "size": 4800
28
+ }
29
+ ]
30
+ }
results/v13d_valid_ov1_sim.log ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
0
 
1
 
2
 
3
 
 
 
 
 
4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /opt/conda/lib/python3.11/site-packages/torch/nn/utils/weight_norm.py:143: FutureWarning: `torch.nn.utils.weight_norm` is deprecated in favor of `torch.nn.utils.parametrizations.weight_norm`.
2
+ WeightNorm.apply(module, name, dim)
3
+ /opt/conda/lib/python3.11/site-packages/torch/nn/modules/transformer.py:379: UserWarning: enable_nested_tensor is True, but self.use_nested_tensor is False because encoder_layer.norm_first was True
4
+ warnings.warn(
5
+ [Eval] Device: cuda
6
+ [Eval] Checkpoint: checkpoints/spatial_beats_ov1_unified_v13d_exp/03_ov123_top4/best.pt
7
+ [Eval] Preset: ov1_unified_v13d
8
+ [Eval] Split: valid
9
+ [SpatialDataset] Initialize from /apdcephfs_cq10/share_1603164/user/schmittzhu/data/metadata/ov1_foa.jsonl
10
+
11
 
12
 
13
 
14
 
15
+
16
+ [Eval][ov1_sim] manifest=/apdcephfs_cq10/share_1603164/user/schmittzhu/data/metadata/ov1_foa.jsonl
17
+ [Eval][ov1_sim] split=('valid',) size=4800
18
+
19
 
20
+
21
+ ================================================================================================
22
+ v12 per-subset (valid split)
23
+ ================================================================================================
24
+ subset N F20 ER20 LE_CD LR_CD SELD o_cls o_azi o_ele o_dst a_P a_R
25
+ -----------------------------------------------------------------------------------------------------
26
+ ov1_sim 4800 0.3870 0.6422 26.11 0.6079 0.4481 0.7938 25.08 9.14 0.6072 0.810 0.041
27
+ ================================================================================================
28
+ legend: F20↑ ER20↓ LE_CD↓ LR_CD↑ SELD↓ o_cls=oracle_class_acc o_azi/ele=oracle doa MAE (deg) a_P/a_R=activity precision/recall
29
+ ================================================================================================
30
+
31
+ [Eval] Summary saved to results/v13d_valid_ov1_sim.json
results/v13d_valid_ov2_real.log ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
0
 
1
 
2
 
3
 
 
 
 
 
4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /opt/conda/lib/python3.11/site-packages/torch/nn/utils/weight_norm.py:143: FutureWarning: `torch.nn.utils.weight_norm` is deprecated in favor of `torch.nn.utils.parametrizations.weight_norm`.
2
+ WeightNorm.apply(module, name, dim)
3
+ /opt/conda/lib/python3.11/site-packages/torch/nn/modules/transformer.py:379: UserWarning: enable_nested_tensor is True, but self.use_nested_tensor is False because encoder_layer.norm_first was True
4
+ warnings.warn(
5
+ [Eval] Device: cuda
6
+ [Eval] Checkpoint: checkpoints/spatial_beats_ov1_unified_v13d_exp/03_ov123_top4/best.pt
7
+ [Eval] Preset: ov1_unified_v13d
8
+ [Eval] Split: valid
9
+ [SpatialDataset] Initialize from /apdcephfs_cq10/share_1603164/user/schmittzhu/data/metadata/ov2_real_static_foa_mapped.jsonl
10
+
11
 
12
 
13
 
14
 
15
+
16
+ [Eval][ov2_real] manifest=/apdcephfs_cq10/share_1603164/user/schmittzhu/data/metadata/ov2_real_static_foa_mapped.jsonl
17
+ [Eval][ov2_real] split=('valid',) size=2230
18
+
19
 
20
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/eval_v12_per_subset.py", line 470, in <module>
21
+ main()
22
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/eval_v12_per_subset.py", line 420, in main
23
+ m = eval_one_subset(
24
+ ^^^^^^^^^^^^^^^^
25
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/eval_v12_per_subset.py", line 312, in eval_one_subset
26
+ for batch in tqdm(loader, desc=f"Eval {subset_name}", leave=False):
27
+ File "/opt/conda/lib/python3.11/site-packages/tqdm/std.py", line 1181, in __iter__
28
+ for obj in iterable:
29
+ File "/opt/conda/lib/python3.11/site-packages/torch/utils/data/dataloader.py", line 701, in __next__
30
+ data = self._next_data()
31
+ ^^^^^^^^^^^^^^^^^
32
+ File "/opt/conda/lib/python3.11/site-packages/torch/utils/data/dataloader.py", line 1465, in _next_data
33
+ return self._process_data(data)
34
+ ^^^^^^^^^^^^^^^^^^^^^^^^
35
+ File "/opt/conda/lib/python3.11/site-packages/torch/utils/data/dataloader.py", line 1491, in _process_data
36
+ data.reraise()
37
+ File "/opt/conda/lib/python3.11/site-packages/torch/_utils.py", line 715, in reraise
38
+ raise exception
39
+ RuntimeError: Caught RuntimeError in DataLoader worker process 0.
40
+ Original Traceback (most recent call last):
41
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/spatial_dataset.py", line 378, in _load_audio_file
42
+ waveform, sample_rate = sf.read(path, always_2d=True)
43
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
44
+ File "/opt/conda/lib/python3.11/site-packages/soundfile.py", line 305, in read
45
+ with SoundFile(file, 'r', samplerate, channels,
46
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
47
+ File "/opt/conda/lib/python3.11/site-packages/soundfile.py", line 690, in __init__
48
+ self._file = self._open(file, mode_int, closefd)
49
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
50
+ File "/opt/conda/lib/python3.11/site-packages/soundfile.py", line 1265, in _open
51
+ raise LibsndfileError(err, prefix="Error opening {0!r}: ".format(self.name))
52
+ soundfile.LibsndfileError: Error opening '/apdcephfs_cq10/share_1603164/user/schmittzhu/data/ov2_real_static_foa/valid/ov2_real_static_foa_004035.wav': System error.
53
+
54
+ During handling of the above exception, another exception occurred:
55
+
56
+ Traceback (most recent call last):
57
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/spatial_dataset.py", line 384, in _load_audio_file
58
+ sample_rate, waveform_np = wavfile.read(path)
59
+ ^^^^^^^^^^^^^^^^^^
60
+ File "/opt/conda/lib/python3.11/site-packages/scipy/io/wavfile.py", line 674, in read
61
+ fid = open(filename, 'rb')
62
+ ^^^^^^^^^^^^^^^^^^^^
63
+ FileNotFoundError: [Errno 2] No such file or directory: '/apdcephfs_cq10/share_1603164/user/schmittzhu/data/ov2_real_static_foa/valid/ov2_real_static_foa_004035.wav'
64
+
65
+ During handling of the above exception, another exception occurred:
66
+
67
+ Traceback (most recent call last):
68
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/spatial_dataset.py", line 397, in _load_audio_file
69
+ with wave.open(path, "rb") as handle:
70
+ ^^^^^^^^^^^^^^^^^^^^^
71
+ File "/opt/conda/lib/python3.11/wave.py", line 631, in open
72
+ return Wave_read(f)
73
+ ^^^^^^^^^^^^
74
+ File "/opt/conda/lib/python3.11/wave.py", line 279, in __init__
75
+ f = builtins.open(f, 'rb')
76
+ ^^^^^^^^^^^^^^^^^^^^^^
77
+ FileNotFoundError: [Errno 2] No such file or directory: '/apdcephfs_cq10/share_1603164/user/schmittzhu/data/ov2_real_static_foa/valid/ov2_real_static_foa_004035.wav'
78
+
79
+ The above exception was the direct cause of the following exception:
80
+
81
+ Traceback (most recent call last):
82
+ File "/opt/conda/lib/python3.11/site-packages/torch/utils/data/_utils/worker.py", line 351, in _worker_loop
83
+ data = fetcher.fetch(index) # type: ignore[possibly-undefined]
84
+ ^^^^^^^^^^^^^^^^^^^^
85
+ File "/opt/conda/lib/python3.11/site-packages/torch/utils/data/_utils/fetch.py", line 52, in fetch
86
+ data = [self.dataset[idx] for idx in possibly_batched_index]
87
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
88
+ File "/opt/conda/lib/python3.11/site-packages/torch/utils/data/_utils/fetch.py", line 52, in <listcomp>
89
+ data = [self.dataset[idx] for idx in possibly_batched_index]
90
+ ~~~~~~~~~~~~^^^^^
91
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/spatial_dataset.py", line 1310, in __getitem__
92
+ waveform = _load_audio_file(str(waveform_path), self.config.mel_config.sample_rate)
93
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
94
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/spatial_dataset.py", line 416, in _load_audio_file
95
+ raise RuntimeError(
96
+ RuntimeError: Failed to load audio file '/apdcephfs_cq10/share_1603164/user/schmittzhu/data/ov2_real_static_foa/valid/ov2_real_static_foa_004035.wav'. Install soundfile/scipy or provide PCM wav.
97
+
results/v13d_valid_ov2_sim.log ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
0
 
1
 
2
 
3
 
 
 
 
 
4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /opt/conda/lib/python3.11/site-packages/torch/nn/utils/weight_norm.py:143: FutureWarning: `torch.nn.utils.weight_norm` is deprecated in favor of `torch.nn.utils.parametrizations.weight_norm`.
2
+ WeightNorm.apply(module, name, dim)
3
+ /opt/conda/lib/python3.11/site-packages/torch/nn/modules/transformer.py:379: UserWarning: enable_nested_tensor is True, but self.use_nested_tensor is False because encoder_layer.norm_first was True
4
+ warnings.warn(
5
+ [Eval] Device: cuda
6
+ [Eval] Checkpoint: checkpoints/spatial_beats_ov1_unified_v13d_exp/03_ov123_top4/best.pt
7
+ [Eval] Preset: ov1_unified_v13d
8
+ [Eval] Split: valid
9
+ [SpatialDataset] Initialize from /apdcephfs_cq10/share_1603164/user/schmittzhu/data/metadata/ov2_foa.jsonl
10
+
11
 
12
 
13
 
14
 
15
+
16
+ [Eval][ov2_sim] manifest=/apdcephfs_cq10/share_1603164/user/schmittzhu/data/metadata/ov2_foa.jsonl
17
+ [Eval][ov2_sim] split=('valid',) size=1718
18
+
19
 
20
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/eval_v12_per_subset.py", line 470, in <module>
21
+ main()
22
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/eval_v12_per_subset.py", line 420, in main
23
+ m = eval_one_subset(
24
+ ^^^^^^^^^^^^^^^^
25
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/eval_v12_per_subset.py", line 312, in eval_one_subset
26
+ for batch in tqdm(loader, desc=f"Eval {subset_name}", leave=False):
27
+ File "/opt/conda/lib/python3.11/site-packages/tqdm/std.py", line 1181, in __iter__
28
+ for obj in iterable:
29
+ File "/opt/conda/lib/python3.11/site-packages/torch/utils/data/dataloader.py", line 701, in __next__
30
+ data = self._next_data()
31
+ ^^^^^^^^^^^^^^^^^
32
+ File "/opt/conda/lib/python3.11/site-packages/torch/utils/data/dataloader.py", line 1465, in _next_data
33
+ return self._process_data(data)
34
+ ^^^^^^^^^^^^^^^^^^^^^^^^
35
+ File "/opt/conda/lib/python3.11/site-packages/torch/utils/data/dataloader.py", line 1491, in _process_data
36
+ data.reraise()
37
+ File "/opt/conda/lib/python3.11/site-packages/torch/_utils.py", line 715, in reraise
38
+ raise exception
39
+ RuntimeError: Caught RuntimeError in DataLoader worker process 0.
40
+ Original Traceback (most recent call last):
41
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/spatial_dataset.py", line 378, in _load_audio_file
42
+ waveform, sample_rate = sf.read(path, always_2d=True)
43
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
44
+ File "/opt/conda/lib/python3.11/site-packages/soundfile.py", line 305, in read
45
+ with SoundFile(file, 'r', samplerate, channels,
46
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
47
+ File "/opt/conda/lib/python3.11/site-packages/soundfile.py", line 690, in __init__
48
+ self._file = self._open(file, mode_int, closefd)
49
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
50
+ File "/opt/conda/lib/python3.11/site-packages/soundfile.py", line 1265, in _open
51
+ raise LibsndfileError(err, prefix="Error opening {0!r}: ".format(self.name))
52
+ soundfile.LibsndfileError: Error opening '/apdcephfs_cq10/share_1603164/user/schmittzhu/data/ov2_foa/valid/ov2_000000.wav': System error.
53
+
54
+ During handling of the above exception, another exception occurred:
55
+
56
+ Traceback (most recent call last):
57
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/spatial_dataset.py", line 384, in _load_audio_file
58
+ sample_rate, waveform_np = wavfile.read(path)
59
+ ^^^^^^^^^^^^^^^^^^
60
+ File "/opt/conda/lib/python3.11/site-packages/scipy/io/wavfile.py", line 674, in read
61
+ fid = open(filename, 'rb')
62
+ ^^^^^^^^^^^^^^^^^^^^
63
+ FileNotFoundError: [Errno 2] No such file or directory: '/apdcephfs_cq10/share_1603164/user/schmittzhu/data/ov2_foa/valid/ov2_000000.wav'
64
+
65
+ During handling of the above exception, another exception occurred:
66
+
67
+ Traceback (most recent call last):
68
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/spatial_dataset.py", line 397, in _load_audio_file
69
+ with wave.open(path, "rb") as handle:
70
+ ^^^^^^^^^^^^^^^^^^^^^
71
+ File "/opt/conda/lib/python3.11/wave.py", line 631, in open
72
+ return Wave_read(f)
73
+ ^^^^^^^^^^^^
74
+ File "/opt/conda/lib/python3.11/wave.py", line 279, in __init__
75
+ f = builtins.open(f, 'rb')
76
+ ^^^^^^^^^^^^^^^^^^^^^^
77
+ FileNotFoundError: [Errno 2] No such file or directory: '/apdcephfs_cq10/share_1603164/user/schmittzhu/data/ov2_foa/valid/ov2_000000.wav'
78
+
79
+ The above exception was the direct cause of the following exception:
80
+
81
+ Traceback (most recent call last):
82
+ File "/opt/conda/lib/python3.11/site-packages/torch/utils/data/_utils/worker.py", line 351, in _worker_loop
83
+ data = fetcher.fetch(index) # type: ignore[possibly-undefined]
84
+ ^^^^^^^^^^^^^^^^^^^^
85
+ File "/opt/conda/lib/python3.11/site-packages/torch/utils/data/_utils/fetch.py", line 52, in fetch
86
+ data = [self.dataset[idx] for idx in possibly_batched_index]
87
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
88
+ File "/opt/conda/lib/python3.11/site-packages/torch/utils/data/_utils/fetch.py", line 52, in <listcomp>
89
+ data = [self.dataset[idx] for idx in possibly_batched_index]
90
+ ~~~~~~~~~~~~^^^^^
91
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/spatial_dataset.py", line 1310, in __getitem__
92
+ waveform = _load_audio_file(str(waveform_path), self.config.mel_config.sample_rate)
93
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
94
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/spatial_dataset.py", line 416, in _load_audio_file
95
+ raise RuntimeError(
96
+ RuntimeError: Failed to load audio file '/apdcephfs_cq10/share_1603164/user/schmittzhu/data/ov2_foa/valid/ov2_000000.wav'. Install soundfile/scipy or provide PCM wav.
97
+
results/v13d_valid_ov3_real.log ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
0
 
1
 
2
 
3
 
 
 
 
 
4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /opt/conda/lib/python3.11/site-packages/torch/nn/utils/weight_norm.py:143: FutureWarning: `torch.nn.utils.weight_norm` is deprecated in favor of `torch.nn.utils.parametrizations.weight_norm`.
2
+ WeightNorm.apply(module, name, dim)
3
+ /opt/conda/lib/python3.11/site-packages/torch/nn/modules/transformer.py:379: UserWarning: enable_nested_tensor is True, but self.use_nested_tensor is False because encoder_layer.norm_first was True
4
+ warnings.warn(
5
+ [Eval] Device: cuda
6
+ [Eval] Checkpoint: checkpoints/spatial_beats_ov1_unified_v13d_exp/03_ov123_top4/best.pt
7
+ [Eval] Preset: ov1_unified_v13d
8
+ [Eval] Split: valid
9
+ [SpatialDataset] Initialize from /apdcephfs_cq10/share_1603164/user/schmittzhu/data/metadata/ov3_real_static_foa_mapped.jsonl
10
+
11
 
12
 
13
 
14
 
15
+
16
+ [Eval][ov3_real] manifest=/apdcephfs_cq10/share_1603164/user/schmittzhu/data/metadata/ov3_real_static_foa_mapped.jsonl
17
+ [Eval][ov3_real] split=('valid',) size=740
18
+
19
 
20
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/eval_v12_per_subset.py", line 470, in <module>
21
+ main()
22
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/eval_v12_per_subset.py", line 420, in main
23
+ m = eval_one_subset(
24
+ ^^^^^^^^^^^^^^^^
25
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/eval_v12_per_subset.py", line 312, in eval_one_subset
26
+ for batch in tqdm(loader, desc=f"Eval {subset_name}", leave=False):
27
+ File "/opt/conda/lib/python3.11/site-packages/tqdm/std.py", line 1181, in __iter__
28
+ for obj in iterable:
29
+ File "/opt/conda/lib/python3.11/site-packages/torch/utils/data/dataloader.py", line 701, in __next__
30
+ data = self._next_data()
31
+ ^^^^^^^^^^^^^^^^^
32
+ File "/opt/conda/lib/python3.11/site-packages/torch/utils/data/dataloader.py", line 1465, in _next_data
33
+ return self._process_data(data)
34
+ ^^^^^^^^^^^^^^^^^^^^^^^^
35
+ File "/opt/conda/lib/python3.11/site-packages/torch/utils/data/dataloader.py", line 1491, in _process_data
36
+ data.reraise()
37
+ File "/opt/conda/lib/python3.11/site-packages/torch/_utils.py", line 715, in reraise
38
+ raise exception
39
+ RuntimeError: Caught RuntimeError in DataLoader worker process 0.
40
+ Original Traceback (most recent call last):
41
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/spatial_dataset.py", line 378, in _load_audio_file
42
+ waveform, sample_rate = sf.read(path, always_2d=True)
43
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
44
+ File "/opt/conda/lib/python3.11/site-packages/soundfile.py", line 305, in read
45
+ with SoundFile(file, 'r', samplerate, channels,
46
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
47
+ File "/opt/conda/lib/python3.11/site-packages/soundfile.py", line 690, in __init__
48
+ self._file = self._open(file, mode_int, closefd)
49
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
50
+ File "/opt/conda/lib/python3.11/site-packages/soundfile.py", line 1265, in _open
51
+ raise LibsndfileError(err, prefix="Error opening {0!r}: ".format(self.name))
52
+ soundfile.LibsndfileError: Error opening '/apdcephfs_cq10/share_1603164/user/schmittzhu/data/ov3_real_static_foa/valid/ov3_real_static_foa_000845.wav': System error.
53
+
54
+ During handling of the above exception, another exception occurred:
55
+
56
+ Traceback (most recent call last):
57
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/spatial_dataset.py", line 384, in _load_audio_file
58
+ sample_rate, waveform_np = wavfile.read(path)
59
+ ^^^^^^^^^^^^^^^^^^
60
+ File "/opt/conda/lib/python3.11/site-packages/scipy/io/wavfile.py", line 674, in read
61
+ fid = open(filename, 'rb')
62
+ ^^^^^^^^^^^^^^^^^^^^
63
+ FileNotFoundError: [Errno 2] No such file or directory: '/apdcephfs_cq10/share_1603164/user/schmittzhu/data/ov3_real_static_foa/valid/ov3_real_static_foa_000845.wav'
64
+
65
+ During handling of the above exception, another exception occurred:
66
+
67
+ Traceback (most recent call last):
68
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/spatial_dataset.py", line 397, in _load_audio_file
69
+ with wave.open(path, "rb") as handle:
70
+ ^^^^^^^^^^^^^^^^^^^^^
71
+ File "/opt/conda/lib/python3.11/wave.py", line 631, in open
72
+ return Wave_read(f)
73
+ ^^^^^^^^^^^^
74
+ File "/opt/conda/lib/python3.11/wave.py", line 279, in __init__
75
+ f = builtins.open(f, 'rb')
76
+ ^^^^^^^^^^^^^^^^^^^^^^
77
+ FileNotFoundError: [Errno 2] No such file or directory: '/apdcephfs_cq10/share_1603164/user/schmittzhu/data/ov3_real_static_foa/valid/ov3_real_static_foa_000845.wav'
78
+
79
+ The above exception was the direct cause of the following exception:
80
+
81
+ Traceback (most recent call last):
82
+ File "/opt/conda/lib/python3.11/site-packages/torch/utils/data/_utils/worker.py", line 351, in _worker_loop
83
+ data = fetcher.fetch(index) # type: ignore[possibly-undefined]
84
+ ^^^^^^^^^^^^^^^^^^^^
85
+ File "/opt/conda/lib/python3.11/site-packages/torch/utils/data/_utils/fetch.py", line 52, in fetch
86
+ data = [self.dataset[idx] for idx in possibly_batched_index]
87
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
88
+ File "/opt/conda/lib/python3.11/site-packages/torch/utils/data/_utils/fetch.py", line 52, in <listcomp>
89
+ data = [self.dataset[idx] for idx in possibly_batched_index]
90
+ ~~~~~~~~~~~~^^^^^
91
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/spatial_dataset.py", line 1310, in __getitem__
92
+ waveform = _load_audio_file(str(waveform_path), self.config.mel_config.sample_rate)
93
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
94
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/spatial_dataset.py", line 416, in _load_audio_file
95
+ raise RuntimeError(
96
+ RuntimeError: Failed to load audio file '/apdcephfs_cq10/share_1603164/user/schmittzhu/data/ov3_real_static_foa/valid/ov3_real_static_foa_000845.wav'. Install soundfile/scipy or provide PCM wav.
97
+
results/v13d_valid_ov3_sim.log ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
0
 
1
 
2
 
3
 
 
 
 
 
4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /opt/conda/lib/python3.11/site-packages/torch/nn/utils/weight_norm.py:143: FutureWarning: `torch.nn.utils.weight_norm` is deprecated in favor of `torch.nn.utils.parametrizations.weight_norm`.
2
+ WeightNorm.apply(module, name, dim)
3
+ /opt/conda/lib/python3.11/site-packages/torch/nn/modules/transformer.py:379: UserWarning: enable_nested_tensor is True, but self.use_nested_tensor is False because encoder_layer.norm_first was True
4
+ warnings.warn(
5
+ [Eval] Device: cuda
6
+ [Eval] Checkpoint: checkpoints/spatial_beats_ov1_unified_v13d_exp/03_ov123_top4/best.pt
7
+ [Eval] Preset: ov1_unified_v13d
8
+ [Eval] Split: valid
9
+ [SpatialDataset] Initialize from /apdcephfs_cq10/share_1603164/user/schmittzhu/data/metadata/ov3_foa.jsonl
10
+
11
 
12
 
13
 
14
 
15
+
16
+ [Eval][ov3_sim] manifest=/apdcephfs_cq10/share_1603164/user/schmittzhu/data/metadata/ov3_foa.jsonl
17
+ [Eval][ov3_sim] split=('valid',) size=1612
18
+
19
 
20
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/eval_v12_per_subset.py", line 470, in <module>
21
+ main()
22
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/eval_v12_per_subset.py", line 420, in main
23
+ m = eval_one_subset(
24
+ ^^^^^^^^^^^^^^^^
25
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/eval_v12_per_subset.py", line 312, in eval_one_subset
26
+ for batch in tqdm(loader, desc=f"Eval {subset_name}", leave=False):
27
+ File "/opt/conda/lib/python3.11/site-packages/tqdm/std.py", line 1181, in __iter__
28
+ for obj in iterable:
29
+ File "/opt/conda/lib/python3.11/site-packages/torch/utils/data/dataloader.py", line 701, in __next__
30
+ data = self._next_data()
31
+ ^^^^^^^^^^^^^^^^^
32
+ File "/opt/conda/lib/python3.11/site-packages/torch/utils/data/dataloader.py", line 1465, in _next_data
33
+ return self._process_data(data)
34
+ ^^^^^^^^^^^^^^^^^^^^^^^^
35
+ File "/opt/conda/lib/python3.11/site-packages/torch/utils/data/dataloader.py", line 1491, in _process_data
36
+ data.reraise()
37
+ File "/opt/conda/lib/python3.11/site-packages/torch/_utils.py", line 715, in reraise
38
+ raise exception
39
+ RuntimeError: Caught RuntimeError in DataLoader worker process 0.
40
+ Original Traceback (most recent call last):
41
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/spatial_dataset.py", line 378, in _load_audio_file
42
+ waveform, sample_rate = sf.read(path, always_2d=True)
43
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
44
+ File "/opt/conda/lib/python3.11/site-packages/soundfile.py", line 305, in read
45
+ with SoundFile(file, 'r', samplerate, channels,
46
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
47
+ File "/opt/conda/lib/python3.11/site-packages/soundfile.py", line 690, in __init__
48
+ self._file = self._open(file, mode_int, closefd)
49
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
50
+ File "/opt/conda/lib/python3.11/site-packages/soundfile.py", line 1265, in _open
51
+ raise LibsndfileError(err, prefix="Error opening {0!r}: ".format(self.name))
52
+ soundfile.LibsndfileError: Error opening '/apdcephfs_cq10/share_1603164/user/schmittzhu/data/ov3_foa/valid/ov3_000001.wav': System error.
53
+
54
+ During handling of the above exception, another exception occurred:
55
+
56
+ Traceback (most recent call last):
57
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/spatial_dataset.py", line 384, in _load_audio_file
58
+ sample_rate, waveform_np = wavfile.read(path)
59
+ ^^^^^^^^^^^^^^^^^^
60
+ File "/opt/conda/lib/python3.11/site-packages/scipy/io/wavfile.py", line 674, in read
61
+ fid = open(filename, 'rb')
62
+ ^^^^^^^^^^^^^^^^^^^^
63
+ FileNotFoundError: [Errno 2] No such file or directory: '/apdcephfs_cq10/share_1603164/user/schmittzhu/data/ov3_foa/valid/ov3_000001.wav'
64
+
65
+ During handling of the above exception, another exception occurred:
66
+
67
+ Traceback (most recent call last):
68
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/spatial_dataset.py", line 397, in _load_audio_file
69
+ with wave.open(path, "rb") as handle:
70
+ ^^^^^^^^^^^^^^^^^^^^^
71
+ File "/opt/conda/lib/python3.11/wave.py", line 631, in open
72
+ return Wave_read(f)
73
+ ^^^^^^^^^^^^
74
+ File "/opt/conda/lib/python3.11/wave.py", line 279, in __init__
75
+ f = builtins.open(f, 'rb')
76
+ ^^^^^^^^^^^^^^^^^^^^^^
77
+ FileNotFoundError: [Errno 2] No such file or directory: '/apdcephfs_cq10/share_1603164/user/schmittzhu/data/ov3_foa/valid/ov3_000001.wav'
78
+
79
+ The above exception was the direct cause of the following exception:
80
+
81
+ Traceback (most recent call last):
82
+ File "/opt/conda/lib/python3.11/site-packages/torch/utils/data/_utils/worker.py", line 351, in _worker_loop
83
+ data = fetcher.fetch(index) # type: ignore[possibly-undefined]
84
+ ^^^^^^^^^^^^^^^^^^^^
85
+ File "/opt/conda/lib/python3.11/site-packages/torch/utils/data/_utils/fetch.py", line 52, in fetch
86
+ data = [self.dataset[idx] for idx in possibly_batched_index]
87
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
88
+ File "/opt/conda/lib/python3.11/site-packages/torch/utils/data/_utils/fetch.py", line 52, in <listcomp>
89
+ data = [self.dataset[idx] for idx in possibly_batched_index]
90
+ ~~~~~~~~~~~~^^^^^
91
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/spatial_dataset.py", line 1310, in __getitem__
92
+ waveform = _load_audio_file(str(waveform_path), self.config.mel_config.sample_rate)
93
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
94
+ File "/apdcephfs_cq10/share_1603164/user/schmittzhu/code/unilm/beats/spatial_dataset.py", line 416, in _load_audio_file
95
+ raise RuntimeError(
96
+ RuntimeError: Failed to load audio file '/apdcephfs_cq10/share_1603164/user/schmittzhu/data/ov3_foa/valid/ov3_000001.wav'. Install soundfile/scipy or provide PCM wav.
97
+
results/v13d_valid_unified.json ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "checkpoint": "checkpoints/spatial_beats_ov1_unified_v13d_exp/03_ov123_top4/best.pt",
3
+ "preset": "ov1_unified_v13d",
4
+ "split": "valid",
5
+ "activity_threshold": 0.5,
6
+ "per_subset": [
7
+ {
8
+ "oracle_class_acc": 0.7986697095998104,
9
+ "oracle_azi_mae_deg": 15.619765282153757,
10
+ "oracle_ele_mae_deg": 6.781703096456646,
11
+ "oracle_dist_mae": 0.47289481620372786,
12
+ "class_acc": 0.8735275138492873,
13
+ "azi_mae_deg": 12.024803064106642,
14
+ "ele_mae_deg": 5.486542534098445,
15
+ "dist_mae": 0.4547080461109417,
16
+ "activity_precision": 0.7795697905364892,
17
+ "activity_recall": 0.06645036734855028,
18
+ "activity_acc": 0.7131156938813386,
19
+ "matched_count": 876.207857469164,
20
+ "ER20": 0.5535,
21
+ "F20": 0.4425,
22
+ "LE_CD": 18.81,
23
+ "LR_CD": 0.5468,
24
+ "SELD_score": 0.4172,
25
+ "subset": "unified",
26
+ "manifest": "/apdcephfs_cq12/share_302080740/user/schmittzhu/data/unified_spatial_foa_fsd63_all/valid.jsonl",
27
+ "size": 35021
28
+ }
29
+ ]
30
+ }
results/v13d_valid_unified.log ADDED
The diff for this file is too large to render. See raw diff