My understanding on how non max suppression work is suppress all overlapping boxes that are over  jaccard overlap threshold (may be 0.5). The boxes to be considered are on confident score (may be 0.2 or something). My knowing is if there is boxes that got score over 0.2 (may be score is 0.3 and overlap is 0.4) the boxes won’t suppress. By this way one objects will be predicted by many boxes,one high score box and many low confident score boxes but I found that the model predict only one box for one object. Can someone enlighten me?
I currently viewing the ssd from  https://github.com/sgrvinod/a-PyTorch-Tutorial-to-Object-Detection 6
Here is the coding…
class_scores, sort_ind = class_scores.sort(dim=0, descending=True)  # (n_qualified), (n_min_score)
class_decoded_locs = class_decoded_locs[sort_ind]  # (n_min_score, 4)
overlap = find_jaccard_overlap(class_decoded_locs, class_decoded_locs)  # (n_qualified, 
n_min_score)
suppress = torch.zeros((n_above_min_score), dtype=torch.uint8).to(device)  # (n_qualified)

for box in range(class_decoded_locs.size(0)):
# If this box is already marked for suppression
       if suppress[box] == 1:
       continue
       suppress = torch.max(suppress, overlap[box] > max_overlap)
       suppress[box] = 0