def METHOD_NAME(self, image, threshold):
    output_layer = self.model.METHOD_NAME(image)
    # Collecting object detection results
    objects = []
    origin_im_size = (image.height, image.width)
    for layer_name, out_blob in output_layer.items():
        shape, yolo_params = self.output_info[layer_name]
        out_blob = out_blob.reshape(shape)
        objects += parse_yolo_region(out_blob, self.model.input_size(),
            origin_im_size, yolo_params, threshold)
    # Filtering overlapping boxes (non-maximum suppression)
    IOU_THRESHOLD = 0.4
    objects = sorted(objects, key=lambda obj : obj['confidence'], reverse=True)
    for i, obj in enumerate(objects):
        if obj['confidence'] == 0:
            continue
        for j in range(i + 1, len(objects)):
            if intersection_over_union(obj, objects[j]) > IOU_THRESHOLD:
                objects[j]['confidence'] = 0
    results = []
    for obj in objects:
        if obj['confidence'] >= threshold:
            xtl = max(obj['xmin'], 0)
            ytl = max(obj['ymin'], 0)
            xbr = min(obj['xmax'], image.width)
            ybr = min(obj['ymax'], image.height)
            obj_class = int(obj['class_id'])
            results.append({
                "confidence": str(obj['confidence']),
                "label": self.labels.get(obj_class, "unknown"),
                "points": [xtl, ytl, xbr, ybr],
                "type": "rectangle",
            })
    return results