fix(api): keep per-object smoke_type in sequence-to-detection propagation - #150
Conversation
…tion auto_create_detection_annotations stamped smoke_types[0] on every pre-populated detection box, so a sequence containing objects of different smoke types (e.g. wildfire + industrial) was mislabeled at the detection level. Each prediction now takes the type of the sequences_bbox object whose box matches it (exact coordinates first, best IoU as fallback); the sequence-wide first type remains the fallback for predictions matching no object box. Regression tests fail before the fix. Fixes #142
The workflow test asserted the pre-#142 behavior (every detection box stamped with smoke_types[0]); it now checks that each detection's pre-populated box carries the type of the object annotated on it.
Chouffe
left a comment
There was a problem hiding this comment.
Overall LGTM! Have you verified this empirically with some sequences? Is there a way for me to reproduce it?
|
Yes — verified empirically against the local dev stack ( Reading back On On this branch: Two ways to reproduce:
There is also a unit test covering the matching paths (exact coordinates / best-IoU fallback / no-overlap fallback to |
auto_create_detection_annotationsappliedsmoke_types[0]to every pre-populated detection box, so sequences containing objects of different smoke types (e.g. one wildfire + one industrial) were mislabeled at the detection level.sequences_bboxobject whose box matches it: exact coordinate match first (object boxes come fromalgo_predictionsuntouched), best IoU as a robustness fallback, and the sequence-wide first type only when a prediction overlaps no object box.convert_algo_predictions_to_annotation(exact / IoU / no-overlap paths) and an end-to-end regression test (mixed wildfire+industrial sequence); both fail before the fix.Fixes #142