Closed Sergey-Zlobin closed 2 years ago
Workaround: use conf_type='box_and_model_avg' instead of default conf_type='avg'
Looks fine. Thank you
Example:
from ensemble_boxes import * weigths = [0.2, 0.2, 0.2, 0.2, 0.2] pred_boxes = [] pred_scores = [] pred_labels = [] for _ in range(5): pred_boxes.append([[0. , 0. , 0.0001, 0.0001]]) pred_scores.append([1.]) pred_labels.append([0]) pred_boxes, pred_scores, pred_labels = weighted_boxes_fusion( pred_boxes, pred_scores, pred_labels, weights=weigths, iou_thr=0.4, skip_box_thr=0., allows_overflow=False ) print(pred_scores)
Actual result: score [0.2] Expected result: score [1]
Probably we need to change the line weighted_boxes[i][1] = weighted_boxes[i][1] min(weights.sum(), len(clustered_boxes)) / weights.sum() -> weighted_boxes[i][1] = weighted_boxes[i][1] min(len(weights), len(clustered_boxes)) / weights.sum()
Sorry, I didn't get the point of this line:
Probably we need to change the line
weighted_boxes[i][1] = weighted_boxes[i][1] * min(**weights.sum()**, len(clustered_boxes)) / weights.sum() -> weighted_boxes[i][1] = weighted_boxes[i][1] * min(**len(weights),** len(clustered_boxes)) / weights.sum()
In the above example, weights.sum()=1, len(clustered_boxes)) = 1, len(weights) = 5. So both two lines have the same output, did I misunderstand something here?
Thank you!
For line 1 variable is 1. For line 2 variable is 5. Why result must be the same?
For line 1 variable is 1. For line 2 variable is 5. Why result must be the same? my bad, misreading the variable. Thanks for the clarification!
Example:
Actual result: score [0.2] Expected result: score [1]
Probably we need to change the line weighted_boxes[i][1] = weighted_boxes[i][1] min(weights.sum(), len(clustered_boxes)) / weights.sum() -> weighted_boxes[i][1] = weighted_boxes[i][1] min(len(weights), len(clustered_boxes)) / weights.sum()