All notable changes to this project will be documented in this file.
- WBF 1D variant for line segments was added. It was reported that 1D variant can be useful in Named-entity recognition (NER) type of tasks for Natural Language Processing (NLP) problems. Check discussion here.
- Small comments/syntax fixes, removed unused functions, removed unused numba dependency. Slightly increased speed for default 'avg' method.
- Added new version of WBF, which works faster because of more vectorized structure. It's avoiding cycles and if-statements. Changes are allowed to increase speed 20-30%. Score on test data a little bit decreased from 0.598214 to 0.597297.
To use:
from ensemble_boxes.ensemble_boxes_wbf_experimental import weighted_boxes_fusion_experimental
- NLP benchmark was added. It's used for WBF 1D variant. Credits for benchmarks and idea of using WBF for NLP task goes to Chris Deotte and Udbhav Bamba.
- Benchmarks moved into separate folders (benchmark_oid, benchmark_coco, benchmark_nlp)
- Speed up of find_matching_box function. See details here. OID benchmark: 285 sec -> 242 sec. COCO benchmark: 1055 sec -> 643 sec
- Fixed incorrect values after WBF for allows_overflow = False mode. See details here.
- Fixed incorrect values after WBF for conf_type = 'max' mode. See details here.
- Added 2 new methods for average boxes: 'box_and_model_avg' and 'absent_model_aware_avg'. See details here. Both methods fix issue with confidences larger than 1 after ensemble. Also it gives better results for cases when there are more than 1 box goes to cluster from same model. One of these methods will replace default 'avg' in later releases after proper testing. Thanks @i-aki-y for great PR.
- Added first version of unit tests.
- Added benchmark files
- Added many input data checks in all methods: set to 0.0 coords < 0, set to 1.0 coords > 1, swap cases where x2 < x1 and y2 < y1, remove zero area boxes.
- Added numba @jit(nopython=True) for critical functions (NMS, NMW and WBF). Speed up around x2 times (tested on example_oid.py).
- Added support for 3D boxes with function weighted_boxes_fusion_3d
- Fixed bug with incorrect work of WBF and NMW algorithms if provided boxes was unsorted and skip_box_thr was larger than 0.0.