Detectron测试过程(含关键点)

1、Detectron测试流程图如下:
这里写图片描述

2、
1)首先网络会初始化数据以及roidb等,然后初始化模型
然后cls_boxes_i, cls_segms_i, cls_keyps_i = im_detect_all(model, im, box_proposals, timers)会通过网络提取到框信息
2)接下来是scores, boxes, im_scales = im_detect_bbox(model, im, box_proposals),该函数首先对图像进行缩放,并获得相应的尺度,然后运行网络,最终从fasterrcnn的roi部分直接获得最终的输出的框
从rois,cls_prob和bbox_pred中获得最终的预测框、rois是proposal,cls_prob是预测出来的rois的分类概率,而bbox_pred则是每个proposal的bbox regress的偏移量

最终的返回值是
scores (ndarray): R x K array of object class scores for K classes
boxes (ndarray): R x 4*K array of predicted bounding boxes
im_scales (list): list of image scales used in the input blob (as returned by _get_blobs and for use with im_detect_mask, etc.)
3)scores, boxes, cls_boxes = box_results_with_nms_and_limit(scores, boxes),进行nms和阈值过滤,首先对每一个分类拿分数卡,然后对每一个分类拿nms卡
return scores, boxes, cls_boxes
返回的scores是(N,)
返回的boxes是(N,4)
返回的cls_boxes是存着num_classes个类的每个类的proposal和score

4)heatmaps = im_detect_keypoints(model, im_scales, boxes),提取关键点的部分
因为之前将rois变回到了原来的图像大小,为了进行level的分配,需要变换到缩放后的图像
inputs = {‘keypoint_rois’: _get_rois_blob(boxes, im_scales)}
inputs就是每个level都会有东西,然后把inputs送给_add_multilevel_rois_for_test(inputs, ‘keypoint_rois’)之后,这个时候[‘keypoint_rois_fpnx’],x=2,3,4,5就会得到对应的rois,然后
workspace.RunNet(model.keypoint_net.Proto().name)
pred_heatmaps = workspace.FetchBlob(core.ScopedName(‘kps_score’)).squeeze()
然后就会获得预测的pred_heatmaps,就是R x J x M x M的大小,J=17,M=56

5)接下来要对提出来的map变换到坐标的形式
cls_keyps = keypoint_results(cls_boxes, heatmaps, boxes)
xy_preds = keypoint_utils.heatmaps_to_keypoints(pred_heatmaps, ref_boxes)
这一步的目的就是将heatmap变成keypoint坐标,如何做的呢?
将feature map线性插值成原来的图像的大小,然后在整张图像上取最大值,然后转化为坐标即可。
接下来进行oks-nms就可以了

6)接下里就是测评了,具体看代码

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值