我使用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。我不知道为什么,我怎样才能得到最后一个概率矩阵?
由于
答案 0 :(得分:1)
检测器输出的原始scores
包括重叠检测和非常低分数检测
请注意,仅在使用NMS_THRESH=0.3
应用非最大抑制(又名" nms")后,函数vis_detection
才会显示置信度大于CONF_THRESH=0.8
的检测。
所以,如果你想看看" true"对象,您需要在vis_detection
内检查并仅检查它在图像上呈现的检测。