【论文】Cascade R-CNN: Delving into High Quality Object Detection


📄:Cascade R-CNN: Delving into High Quality Object Detection
🔗:https://openaccess.thecvf.com/content_cvpr_2018/html/Cai_Cascade_R-CNN_Delving_CVPR_2018_paper.html
💻:https://github.com/zhaoweicai/cascade-rcnn

Cascade R-CNN算法是CVPR2018的文章,通过级联几个检测网络达到不断优化预测结果的目的。与普通级联不同的是,cascade R-CNN的几个检测网络是基于不同IOU阈值确定的正负样本上训练得到的,这是该算法的一大亮点。

问题提出

在目标检测问题中,不同的IoU阈值用于区分正负样本。低阈值(IoU=0.5)会导致引入许多噪音,但如果增加阈值,则正样本数量会指数减少。这会带来两个问题

  1. 在训练阶段正样本的过拟合问题
  2. 带来更严重的mismatch: 在training阶段和inference阶段,bbox回归器的输入分布是不一样的,training阶段的输入proposals质量更高(被采样过,IoU>threshold),inference阶段的输入proposals质量相对较差(没有被采样过,可能包括很多IoU<threshold的)。通常选取IoU阈值=0.5时,mismatch不会很严重。在training阶段,由于知道ground truth,所以可以很自然的把与gt的iou大于threshold(0.5)的Proposals作为正样本,这些正样本参与之后的bbox回归学习。在inference阶段,由于我们不知道gt,所以只能把所有的proposal都当做正样本,让后面的bbox回归器回归坐标。

模型对比

Fig. 1
(d)是本文提出的Cascade R-CNN结构。
与(b)不同的是,iterative Box at inference中所有的H都是一样的。 可以用公式 f ′ ( x , b ) = f ∘ f ∘ . . . ∘ f ( x , b ) f'(x,b) = f \circ f \circ ... \circ f(x,b) f(x,b)=ff...f(x,b)表示,其中b是bounding box ( b = ( b x , b y , b w , b h ) b = (b_x, b_y, b_w, b_h) b=(bx,by,bw,bh)),每一次Bounding box regression的输出作为下一次的输入。但这会带来两个问题:

  1. 当IoU的阈值(u)选为0.5时,对于更高的IoU不是最优的选择。每一次迭代会抑制IoU > 0.85的结果。如下图,当u=0.5的时候,当input IoU>0.85时,Output IoU会低于InPut IoU。
    Fig. 2
  2. 当每一次经过阈值采样过后,分布会发生变化。如果每次使用同一阈值进行采样迭代是不明智以及次优的。Fig. 3

而(c )的表达式为 L c l s ( h ( x ) , y ) = Σ L c l s ( h u ( x ) , y u ) , L_{cls}(h(x),y) = \Sigma L_{cls}(h_u(x), y_u), Lcls(h(x),y)=ΣLcls(hu(x),yu), 是一个集合模型,使用不同的阈值来优化具有不同quality levels的loss function。但他并没有考虑到在不同阈值下,正样本数量的变化。这会使得学习过程中那些高质量的区间更容易过拟合。

模型提出

本文提出的Cascade Bounding Box Regression具有表达式 f ( x , b ) = f T ∘ f T − 1 ∘ . . . ∘ F 1 ( x , b ) , f(x,b) = f_T\circ f_{T-1} \circ ... \circ F_1(x, b), f(x,b)=fTfT1...F1(x,b), 其中T是stage数量,而每一个 f t f_t ft都依据 b t b_t bt的sample distribution选择了最优的阈值,而不是像iterative Box一样使用同一阈值。
需要优化的损失函数为: L ( x t , g ) = L c l s ( h t ( x t ) , y t ) + λ [ y t ≥ 1 ] L l o c ( f t ( x t , b t ) , g ) L(x^t, g) = L_{cls}(h_t(x^t), y^t) + \lambda[y^t \geq 1]L_{loc}(f_t(x^t, b^t),g) L(xt,g)=Lcls(ht(xt),yt)+λ[yt1]Lloc(ft(xt,bt),g)其中 b t = f t − 1 ( x t − 1 , b t − 1 ) b^t = f_{t-1}(x^{t-1}, b^{t-1}) bt=ft1(xt1,bt1)(上一次的迭代结果),g为ground truth, λ = 1 \lambda = 1 λ=1为trade-off coefficient。

Results

Fig. 4当加入ground truth时(右图),u=0.7时有了明显的提升(相比左图)。这表明:

  1. u = 0.5 对于精确检验不是一个好的阈值。仅仅是对于低质量的proposal有鲁棒性。
  2. 高质量的识别需要有高质量的proposal作为支撑。
    Fig. 5

当使用更精确的假设时,每个检测器都得到了改进,而更高质量的检测器具有更大的增益。 例如,u = 0.7 的检测器对于第一阶段的低质量建议表现不佳,但对于更深级联阶段可用的更精确假设则要好得多。

SOTA comparison

Fig. 6

posted @   __一条秋刀鱼  阅读(8)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示