Region Proposal by Guided Anchoring

本文介绍了一种新的目标检测方法——GuidedAnchor,它通过改进anchor生成方式,提高检测效率和准确性。不同于传统方法,GuidedAnchor能够生成少量但更有效的anchor,显著提升检测速度。文章详细解释了其网络架构、位置预测、大小预测及特征自适应模块,并讨论了训练过程中的目标函数、定位和大小预测策略。

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

自从anchor方法在目标检测领域出现时,就以其良好的效果被用于各种算法中,如yolo、SSD等等。但是anchor生成是按照预先设置好的规则来生成了,为了保证算法的检测效果,需要生成大量的anchor,其中绝大部分都是没用的anchor,为了提升这部分的效率,并保证效果,Jiaqi Wang等人在"Region Proposal by Guided Anchoring"文章中提出Guided anchor方法。这个方法能生成少量的但是有效的anchor,如下图所示,其效果很明显。
在这里插入图片描述
1、文章思路
目标的位置和输入的图像相关,目标的大小和输入的图像以及位置相关。假设box的参数为(x,y,w,h)(x, y, w, h)(x,y,w,h),其中(x,y)(x, y)(x,y)是box的中心位置,wwwhhh分别是box的宽度和高度,则对于给定的一副图像III,其对应box的概率为:
p(x,y,w,h∣I)=p(x,y∣I)p(w,h∣x,y,I)p(x, y, w, h|I) = p(x, y|I)p(w, h|x, y, I)p(x,y,w,hI)=p(x,yI)p(w,hx,y,I)
2、网络架构
首先作者设计了一个anchor生成模块,这个模块包含两个部分:位置预测和大小预测。而不同位置的anchor,其特征范围是不一样的,因此作者设计了一个特征自适应模块(feature adaptation module)。主干网络采用FPN时,其网络结构如下图:
在这里插入图片描述
3、网络详细描述
3.1 anchor位置预测
位置预测输出的是某个位置(i,j)(i, j)(i,j)存在anchor的概率p(i,j∣FI)p(i, j | F_I)p(i,jFI)。产生这个概率的是一个1×11\times11×1的卷积层+sigmoid函数。概率大于预先定义的阈值ϵL\epsilon_LϵL
3.2 anchor大小预测
大小预测分支为每个位置预测最佳的大小(w,h)(w, h)(w,h)。但是直接预测大小会导致精度不高,其原因是目标的大小变化范围比较大。因此采用如下的等式:
w=σ⋅s⋅edw,h=σ⋅s⋅edhw=\sigma \cdot s \cdot e^{dw}, h=\sigma \cdot s \cdot e^{dh}w=σsedw,h=σsedh
大小预测分支输出dw,dhdw, dhdw,dh,然后用上式计算出(w,h)(w, h)(w,h)sss是步长,σ\sigmaσ是一个经验值,文章中取值为σ=8\sigma=8σ=8
大小预测分支的网络构成如下:1×11\times11×1网络输出两通道的数据,分别表示dwdwdwdhdhdh,然后计算真是位置的层。
3.3 anchor-Guided特征自适应
为什么需要这个网络结果:在传统的RPN或者单阶段检测器,特征层上每个位置上的anchor具有相同的大小和尺度,因此特征层可以具有一直的表达。但是在Guided anchor模型中,anchor的大小随着位置的变化而变化,因此不能按以前的方式生成特征层。
理论上,大的anchor是在大区域上生成特征,而小的anchor是在小区域上生成特征。按照这个原则来设计anchor-guided特征自适应模块。在每个位置上按照anchor大小来生成特征:
fil=NT(fi,wi,hi)\bold{f}_i^l = N_T(\bold{f}_i, w_i, h_i)fil=NT(fi,wi,hi)
其中fi\bold{f}_ifi是在第iii个位置上的特征,(wi,hi)(w_i, h_i)(wi,hi)是其对应的anchor的大小。
其网络结构如下:采用3×33\times33×3可变形卷积层。首先预测anchor的大小,然后利用可变形卷积层来获取fIlf_I^lfIl。然后再进行分类以及box的回归。
3.4 训练
1)目标函数
训练的目标函数是由传统的分类回归损失(LclsL_{cls}LclsLregL_{reg}Lreg)和anchor定位(LlocL_{loc}Lloc)和大小(LshapeL_{shape}Lshape)预测损失组成:
L=λ1Lloc+λ2Lshape+Lcls+LregL=\lambda_1L_{loc}+\lambda_2L_{shape}+L_{cls}+L_{reg}L=λ1Lloc+λ2Lshape+Lcls+Lreg
2)anchor定位
定位anchor位置时,希望在ground-truth boxes中心位置的anchor多,远离中心位置的anchor少,并且获取较大的IOU。文章中作者定义了三个区域:
a)中心区域CR=R(xg′,yg′,σ1w′,σ1h′)CR=R(x_g', y_g', \sigma_1w', \sigma_1h')CR=R(xg,yg,σ1w,σ1h),在中心区域的点都是正样本;
b)忽略区域IR=R(xg′,yg′,σ2w′,σ2h′)−CRIR=R(x_g', y_g', \sigma_2w', \sigma_2h')-CRIR=R(xg,yg,σ2w,σ2h)CR,其中σ2>σ1\sigma_2>\sigma_1σ2>σ1。这部分区域在训练时,不向后传递梯度。
c)外围区域OROROR:除去CRCRCRIRIRIR的区域其他部分。这个部分当作负样本区域。

作者是在FPN上使用这个模块,因此需要考虑相邻特征层之间的影响。每一个特征层应该只对应一个范围内的尺度。只有一个特征层的尺度满足目标映射到该层的尺度时,才将该目标的CRCRCR区域设置在该层。

loss采用Focal loss
3)anchor大小
确定每个anchor的最佳大小分为两步:首先需要确定和ground-truth box匹配的anchor;其次预测能覆盖box的最好的宽和高。Guided anchor中的宽和高是一个变量,而不是预先定义好的。因此需要采用与之前方法不同的方法。
定义可变anchor awh={(x0,y0,w,h)∣w>0,h>0}a_{wh}=\{(x_0, y_0, w, h) | w > 0, h >0\}awh={(x0,y0,w,h)w>0,h>0}和ground truth box gt=(xg,yg,wg,hg)gt=(x_g, y_g, w_g, h_g)gt=(xg,yg,wg,hg)IOUIOUIOUvIoUvIoUvIoU
vIoU(awh,gt)=maxw>0,h>0IoUnormal(awh,gt)vIoU(a_{wh}, gt) = \underset{w>0,h>0}{max}IoU_{normal}(a_{wh}, gt)vIoU(awh,gt)=w>0,h>0maxIoUnormal(awh,gt)
其中IoUnormalIoU_{normal}IoUnormalIoUIoUIoU的typical定义。
但是计算vIoU(awh,gt)vIoU(a_{wh}, gt)vIoU(awh,gt)是非常复杂的,很难在端到端的网络上实现。因此对于给定点(x0,y0)(x_0, y_0)(x0,y0),用若干个常用的wwwhhh的值来代表所有的值。然后用这些采样的值来计算vIoU(awh,gt)vIoU(a_{wh}, gt)vIoU(awh,gt)。文章中,在训练阶段,作者用了9对(w,h)(w, h)(w,h)来估算vIoUvIoUvIoU
大小的损失函数定义如下:
Lshape=L1s(1−min(wwg,wgw))+L1s(1−min(hhg,hgh))L_{shape}=L_1^s(1-min(\frac{w}{w_g}, \frac{w_g}{w})) + L_1^s(1-min(\frac{h}{h_g}, \frac{h_g}{h}))Lshape=L1s(1min(wgw,wwg))+L1s(1min(hgh,hhg))
(w,h)(w, h)(w,h)(wg,hg)(w_g, h_g)(wg,hg)分别表示预测的大小和对应ground-truth box的大小。L1sL_1^sL1s是平滑的L1L_1L1 loss。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值