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
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