Faster R-CNN中RPN的分析

本文深入剖析Faster R-CNN的区域提议网络(RPN),包括其原理、anchor机制、minibatch概念以及RPN损失函数中的SmoothL1Loss。同时探讨了Detectron中RPN的代码实现细节,如SpatialNarrowAs操作和权重的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Faster R-CNN原文地址

摘要

Faster R-CNN是object detection的里程碑之作。它提出了RPN,即一种用CNN来提取proposal的网络。

为了更好地理解RPN的代码实现细节,充分理解它用到的SmoothL1Loss是很必要的。

本文简述了RPN的作用,讨论了RPN的loss以及SmoothL1Loss的语义及其作用,最后分析了RPN的代码实现。

RPN的原理

RPN简介

RPN是一个输入global feature map,输出许多可能RoI的网络。
RoI就是所谓的感兴趣区域,相当于是物体bbox的candidate。RPN输出的RoI也被称为proposal。

RPN的anchor

RPN的基本原理就是利用有一定stride(比如16像素)的滑动窗口在原图上枚举proposal中心,对每个中心产生多个不同长宽比(例如0.5,1,2三种),不同大小(比如大中小三种)的bbox。这些产生的bbox被叫做anchor。

如果对每个中心有三种长宽比、三种大小,我们就能得到9个anchor。

RPN的minibatch

下文中你会见到minibatch这种说法。
minibatch就是RPN每次输出的proposal的数量。
如果RPN对每一张图片输出了256个proposal,那么我们就说minibatch=256。

RPN的loss及其分析

RPN的loss如下。
L ( { p i } , { t i } ) = 1 N c l s ∑ i L c l s ( p i , p i ∗ ) + λ 1 N r e g ∑ i p i ∗ L r e g ( t i , t i ∗ ) L(\{p_i\},\{t_i\}) = {1\over N_{cls}}\sum_i{L_{cls} (p_i,p_i^*)} + \lambda{1\over N_{reg}}\sum_i{p_i^*L_{reg}(t_i,t_i^*)} L({ pi},{ ti})=Ncls1iLcls(pi,pi)+λNreg1ipiLreg(ti,ti)

  • loss的结构。
    这个loss是一种multi-task loss。所谓多任务loss。
    这里,它是cls(proposal的分类)和reg(proposal的bbox的位置回归、微调)两个任务各自的loss之加权和。
    之所以说是加权和,主要表现在reg项乘了一个 λ \lambda λ,它一个灵活的超参数,需要人为设定。原文提到 λ = 10 \lambda=10 λ=10

  • loss的符号。
    i i i 是一个minibatch中所有anchor的索引。
    p i p_i pi是对anchor i i i的预测结果。 p i ∗ p_i^* pi是anchor i i

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值