在caffe中,py-faster-rcnn,"得分"返回一个大矩阵,为什么?

时间:2017-11-21 11:52:31

标签: neural-network computer-vision deep-learning caffe pycaffe

我使用py-faster-rcnn演示用20个类构建我的项目的更多部分。 但是,我试图获得softmax,我的课程的最后一层概率。

例如:

# Load the demo image
im_file = os.path.join(cfg.DATA_DIR, 'demo', image_name)

im = cv2.imread(im_file)

# Detect all object classes and regress object bounds
timer = Timer()
timer.tic()
scores, boxes = im_detect(net, im)
timer.toc()
print ('Detection took {:.3f}s for '
       '{:d} object proposals').format(timer.total_time, boxes.shape[0])

# Visualize detections for each class
CONF_THRESH = 0.8
NMS_THRESH = 0.3
for cls_ind, cls in enumerate(CLASSES[1:]):
    cls_ind += 1 # because we skipped background
    cls_boxes = boxes[:, 4*cls_ind:4*(cls_ind + 1)]
    cls_scores = scores[:, cls_ind]
    dets = np.hstack((cls_boxes,
                      cls_scores[:, np.newaxis])).astype(np.float32)
    keep = nms(dets, NMS_THRESH)
    dets = dets[keep, :]
    vis_detections(im, cls, dets, thresh=CONF_THRESH)

print scores

当我执行print scores时,它给了我一个非常大的矩阵输出, 而不是1 x 20。我不知道为什么,我怎样才能得到最后一个概率矩阵?

由于

1 个答案:

答案 0 :(得分:1)

检测器输出的原始scores包括重叠检测和非常低分数检测 请注意,仅在使用NMS_THRESH=0.3应用非最大抑制(又名" nms")后,函数vis_detection才会显示置信度大于CONF_THRESH=0.8的检测。
所以,如果你想看看" true"对象,您需要在vis_detection内检查并仅检查它在图像上呈现的检测。