def apply_nms(all_boxes, thresh, ignore_background=False, boUsePythonImpl=True): """Apply non-maximum suppression to all predicted boxes output by the test_net method.""" num_classes = len(all_boxes) num_images = len(all_boxes[0]) nms_boxes = [[[] for _ in range(num_images)] for _ in range(num_classes)] nms_keepIndices = [[[] for _ in range(num_images)] for _ in range(num_classes)] for cls_ind in range(num_classes): if ignore_background and (cls_ind == 0): continue for im_ind in range(num_images): dets = all_boxes[cls_ind][im_ind] if dets == []: continue if boUsePythonImpl: keep = nmsPython(dets, thresh) else: keep = nms(dets, thresh) if len(keep) == 0: continue nms_boxes[cls_ind][im_ind] = dets[keep, :].copy() nms_keepIndices[cls_ind][im_ind] = keep return nms_boxes, nms_keepIndices
def apply_nms(all_boxes, thresh, ignore_background=False, boUsePythonImpl=True): """Apply non-maximum suppression to all predicted boxes output by the test_net method.""" num_classes = len(all_boxes) num_images = len(all_boxes[0]) nms_boxes = [[[] for _ in range(num_images)] for _ in range(num_classes)] nms_keepIndices = [[[] for _ in range(num_images)] for _ in range(num_classes)] for cls_ind in range(num_classes): if ignore_background and (cls_ind == 0): continue for im_ind in range(num_images): dets = all_boxes[cls_ind][im_ind] if dets == []: continue if boUsePythonImpl: keep = nmsPython(dets, thresh) else: keep = nms(dets, thresh) if len(keep) == 0: continue nms_boxes[cls_ind][im_ind] = dets[keep, :].copy() nms_keepIndices[cls_ind][im_ind] = keep return nms_boxes, nms_keepIndices
def findSelectiveSearchRois(img, kvals, minSize, max_merging_iterations, nmsThreshold): tmp = [] dlib.find_candidate_object_locations(imconvertCv2Ski(img), tmp, kvals, minSize, max_merging_iterations) rois = [[d.left(), d.top(), d.right(), d.bottom()] for d in tmp] if nmsThreshold != None: assert(nmsThreshold > 0 and nmsThreshold < 1) dets = [ToFloats(r) + [abs((r[2] - r[0]) * (r[3] - r[1]))] for r in rois] keepInds = nmsPython(np.array(dets), nmsThreshold) #print("findSelectiveSearchRois using nms threshold: {}: before nms nrRois={}, after nms nrRois={}".format(nmsThreshold, len(rois), len(keepInds))) #groupedRectangles, weights = cv2.groupRectangles(np.asanyarray(rectsInput, np.float).tolist(), 1, 0.3) rois = [rois[i] for i in keepInds] random.shuffle(rois) # randomize ROI order to not introduce any unintended effects later return rois