博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
anchor_target_layer中的bounding regression
阅读量:7101 次
发布时间:2019-06-28

本文共 1718 字,大约阅读时间需要 5 分钟。

在anchor_target层,这两行是计算bounding regression代码:

bbox_targets = np.zeros((len(inds_inside), 4), dtype=np.float32)bbox_targets = _compute_targets(anchors, gt_boxes[argmax_overlaps, :])

 

def _compute_targets(ex_rois, gt_rois):    """Compute bounding-box regression targets for an image."""    assert ex_rois.shape[0] == gt_rois.shape[0]    assert ex_rois.shape[1] == 4    assert gt_rois.shape[1] == 5    return bbox_transform(ex_rois, gt_rois[:, :4]).astype(np.float32, copy=False)

以下是bounding regression的计算公式:

def bbox_transform(ex_rois, gt_rois):    ex_widths = ex_rois[:, 2] - ex_rois[:, 0] + 1.0    ex_heights = ex_rois[:, 3] - ex_rois[:, 1] + 1.0    ex_ctr_x = ex_rois[:, 0] + 0.5 * ex_widths    ex_ctr_y = ex_rois[:, 1] + 0.5 * ex_heights    gt_widths = gt_rois[:, 2] - gt_rois[:, 0] + 1.0    gt_heights = gt_rois[:, 3] - gt_rois[:, 1] + 1.0    gt_ctr_x = gt_rois[:, 0] + 0.5 * gt_widths    gt_ctr_y = gt_rois[:, 1] + 0.5 * gt_heights    targets_dx = (gt_ctr_x - ex_ctr_x) / ex_widths    targets_dy = (gt_ctr_y - ex_ctr_y) / ex_heights    targets_dw = np.log(gt_widths / ex_widths)    targets_dh = np.log(gt_heights / ex_heights)    targets = np.vstack(        (targets_dx, targets_dy, targets_dw, targets_dh)).transpose()    return targets

 argmax_overlaps是每个anchor对应最大overlap的gt_boxes的下标,所以bbox_targets存储的是anchor和最大overlap的gt之间的bouding regression。

因为all_anchors裁减掉了2/3左右,仅仅保留在图像内的anchor。利用_unmap函数复原作为这一层的一个输出,并reshape成相应的格式,输出到rpn_loss_bbox。

rpn_loss_bbox的另一个输入是由特征提取出的4个坐标变换。

实际上,
rpn_loss_bbox就是rpn损失函数的第二部分,也就是计算框损失的部分。论文中的两个输入是ti和ti*,我本以为ti和ti*是两个框的4个坐标(即左上右下)。但实际看代码发现,ti是
rpn_bbox_pred,

是一个feature map(即特征向量)。ti*是anchor和gt bounding box regression的结果(即△x,△y,△w,△h)。这样也可以看出rpn_bbox_pred不是直接生成的roi坐标,而是feature map。

转载地址:http://aychl.baihongyu.com/

你可能感兴趣的文章
Ubuntu14.04安装CUDA6.5
查看>>
python工程化最佳实践
查看>>
php正则表达式总结
查看>>
Jquery判断数组中是否包含某个元素$.inArray()的用法
查看>>
MyBatis介绍及使用
查看>>
软件版本说明 转
查看>>
最大连续乘积子串
查看>>
***博客系统文章的数据库存储方式
查看>>
linux上ln链接命令详细说明
查看>>
基于OpenCv和swing的图片/视频展示Java实现
查看>>
使用BIOS进行键盘输入和磁盘读写01 - 零基础入门学习汇编语言75
查看>>
数据库基础小结
查看>>
在mybatis中,在列表分页查询过程中造成集合属性数据丢失的问题
查看>>
easyui tabs页签显示在底部属性
查看>>
[Spring入门学习笔记][maven]
查看>>
Swift Enum 枚举
查看>>
java运行时could not open ........jvm.cfg问题的解决
查看>>
详解Objective-C的meta-class
查看>>
VScode格式化vue文件
查看>>
Java - 集合框架
查看>>