简介
Region Propsal Network由任少卿等人提出,通过深度卷积网络从特征图上生产候选区域(Proposals),极大地提升了执行速度,并实现了端到端的训练。RPN也是Faster R-CNN的第一阶段框架,虽然距提出已有6年的时间,但是其中的基本机理对今天的目标检测任务仍有很大的启发意义,也适合新手作为入门的第一个项目。其后的Cascade R-CNN、Libra R-CNN等算法也对RPN中存在的问题进行了改进。
我虽然接触目标检测已有3年,但对Faster R-CNN的理解不过全面。趁着空闲时间,将代码过一遍,增强自己的理解。代码大部分来自B站博主WZMIAOMIAO。博主的水平很高,请大家多关注。我对他的代码进行了轻微的改进,配合自己对RPN的理解,在此记录,以备后用。

上图是我自己画的RPN训练流程图。写这篇博客的时候还没有阅读FR中RPN之后的代码。流程中对Proposals进行NMS的流程可能有一些问题。后续发现问题会对文章进行改进。
按照流程图的计算流程,将图像输入骨干网络。图像需先经过预处理。处理主要对图像的尺寸进行调整。将不同尺寸的图像限定到统一尺寸进行批量处理,而统一尺寸需要考虑两个问题:1)图像的长宽限定到多大尺寸;2)不同比例的图像如何进行统一。
def _resize_image(image, self_min_size, self_max_size):
# type: (Tensor, float, float) -> Tensor
im_shape = torch.tensor(image.shape[-2:])
min_size = float(torch.min(im_shape)) # 获取高宽中的最小值
max_size = float(torch

最低0.47元/天 解锁文章
19万+

被折叠的 条评论
为什么被折叠?



