RPN中anchor的生成
1. 超参数
- base_size,这个参数指定了类似感受野的区域大小,即原始图像经过卷积层和池化层之后,在feature map上每一点的感受野对应于原始图像区域的尺寸。在这里feature map上每一点对应于原始图像上16 x 16的区域,所以设置
base_size = 16
。 - anchor_ratios,定义了anchor的宽高比,这里设置
anchor_ratios = [0.5, 1, 2]
。需要注意的是宽高比变化的同时保持面积不变。对于size = 16
的情况下:ratio为1时,anchor尺寸为16 x 16;ratio为0.5时,尺寸为(16*sqrt(2)) x (16/sqrt(2)),即23 x 12;ratio为2时,尺寸为11 x 22。 - anchor_scales,定义了anchor的尺寸,这里设置
anchor_scales = [8, 16, 32]
。对base anchor的宽高分别乘以尺寸,从而得到各个不同尺寸的anchor。
2. 代码分析
首先定义超参数,
1 |
|
生成base anchor,
1 |
|
基于base anchor,生成各种ratio的anchor,
1 |
|
由此我们得到了各种ratio的宽高,基于此生成各种ratio的anchor的bbox,[minx, miny, maxx, maxy],我们先看一个转换函数,bbox转换为center-based,
1 |
|
于是base anchor可以转换为,
1 |
|
利用各种ratio的宽高,以及center(7.5, 7.5)来生成anchor,生成函数如下,
1 |
|
各种ratio的anchor生成如下,
1 |
|
得到base size的各ratio anchor后,以此为基础生成各scale的anchor,生成函数为,
1 |
|
生成所有anchors。
1 |
|
3. 注意事项
- 第2节中的base anchor为位置在feature map左上角第一个点上生成的对应于原始图像的anchor,为了得到feature map上所有点对应的anchors,可以利用第一个点生成的anchors滑动遍历得到。
- 所有anchors为原始图像上对应的区域。
RPN中anchor的生成
https://flepeng.github.io/ml-RPN中anchor的生成/