Faster RCNN源码中anchor的计算

python源码文件:Github链接

一些基本设定

  1. 输出的 anchor 格式:对应在原图上的位置,四个坐标值,为左上角和右下角的x, y坐标。
  2. ctr:center的意思,如(x_ctr, y_ctr) 表示anchor中心点的坐标。
  3. base_size:用来初始化一个anchor的边长,后续乘以ratio和scale即可得到实际使用的anchor的长宽,通常设为进行RPN的特征图的stride,如Faster RCNN中是在conv4上进行RPN的,那么base_size通常设置为16,这样就会初始化一个anchor,其坐标为[0, 0, 15, 15],如果scale设为[8, 16, 32],ratio设为[0.5, 1, 2],就会得到9种不同大小的anchor。注意,这里计算ratio的时候易出错,如ratio=2,那么长宽应为scale * base_size * sqrt(2),scale * base_size / sqrt(2),而不是scale * base_size * 2或者scale * base_size / 2,因为后者计算如果使用长/宽=4而不是2。
  4. 代码主要分为3步:
    • 根据base_size生成初始的anchor
    • 保持anchor的面积不变,改变ratio(代码中的_ratio_enums函数)
    • 对上一步的结果,分别进行scale缩放,得到最终的anchor(代码中的_scale_enums函数)
  5. _whctrs(anchors)的作用是找出一个anchor的宽高和中心坐标 ;_mkanchors是根据宽高和中心坐标,生成一个新的anchor, generate_anchors是生成anchor的总函数。

源码分析

具体的代码分析,参考自链接1

#功能描述:生成多尺度、多宽高比的anchors。  
#          尺度为:128,256,512; 宽高比为:1:2,1:1,2:1  

import numpy as np  #提供矩阵运算功能的库  

#生成anchors总函数:ratios为一个列表,表示宽高比为:1:2,
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值