【目标检测】RCNN 的边界框回归损失函数

RCNN 这个网络,有好几个需要训练的部分,但是用到损失函数的部分就是边界框回归(bounding box regression)那里了。其实这个部分我看几篇文章讲得都挺不错的,所以我的这篇文章纯粹是当做阅读笔记来写了。

和 SSD 一样,RCNN 的边界框回归也是使用的偏移量,使用的是线性回归来构建 RCNN 的损失函数,将 AlexNet 第五个池化层输出的 4096 个特征,进行下面的运算: d ∗ ( P i ) = w ∗ T Φ ( P i ) d_*(P^i) = w^T_*\Phi(P^i) d∗(Pi)=w∗TΦ(Pi)获得预测的偏移量,其中:

  • P i P^i Pi:表示第 i i i 个 region proposal
  • ∗ * ∗: 表示 c x , c y , w , h cx, cy, w, h cx,cy,w,h,可用这四个变量替换,分别计算 4 个位置参数的偏移量。
  • Φ ( P i ) \Phi(P^i) Φ(Pi):表示对第 i i i 个 region proposal 进行特征提取,相当于将 AlexNet 前 5 层当成一个函数,最后这个输出是一个 4096 的特征向量。
  • w ∗ w_* w∗:就是我们要学习的权重,也是一个 4096 维度的向量,一共有 4 个: w c x , w c y , w w , w h w_{cx}, w_{cy}, w_w, w_h wcx,wcy,ww,wh。

也就是最后计算出来的 d ∗ ( P i ) d_*(P^i) d∗(Pi) 是一个偏移量的数值。

然后就是总的损失函数公式: L l o c ( w ∗ ) = arg ⁡ min ⁡ ∑ i = 0 N ( t ∗ i − w ∗ T Φ ( P i ) ) 2 + λ ∣ ∣ w ∗ ∣ ∣ 2 L_{loc}(w_*) = \arg \min \sum_{i=0}^N \left( t_*^i - w_*^T \Phi(P^i) \right)^2 + \lambda\left| |w_*| \right|^2 Lloc(w∗)=argmini=0∑N(t∗i−w∗TΦ(Pi))2+λ∣∣w∗∣∣2将其中的部分替换可以得到: L l o c ( w ∗ ) = arg ⁡ min ⁡ ∑ i = 0 N ( t ∗ i − d ∗ ( P i ) ) 2 + λ ∣ ∣ w ∗ ∣ ∣ 2 L_{loc} (w_*)= \arg \min \sum_{i=0}^N \left( t_*^i - d_*(P^i) \right)^2 + \lambda\left| |w_*| \right|^2 Lloc(w∗)=argmini=0∑N(t∗i−d∗(Pi))2+λ∣∣w∗∣∣2其中:

  • t ∗ i t_*^i t∗i:就是真实的偏移量,是通过 gt box 与 region proposal 计算出来的,具体公式参考文章里有。
  • λ ∣ ∣ w ∗ ∣ ∣ 2 \lambda\left| |w_*| \right|^2 λ∣∣w∗∣∣2:是一个正则项,防止过拟合的

其实我们可以看出来,这个公式是一个岭回归(ridge regression)的公式

什么是岭回归

直观来看,岭回归 = 最小二乘法 + L2 Norm

我们知道最小二乘法的的目的是求最小的误差平方,是一种线性回归模型,其最优化问题可以写成: min ⁡ β ∣ ∣ Y − X β ∣ ∣ 2 \min_{\beta}||\mathbf{Y}- \mathbf{X}\beta||^2 βmin∣∣Y−Xβ∣∣2而岭回归则多了一个 L2 正则项,可以写成: min ⁡ β ( ∣ ∣ Y − X β ∣ ∣ 2 + λ ∣ ∣ β ∣ ∣ 2 ) \min_{\beta}\left (||\mathbf{Y}- \mathbf{X}\beta||^2 + \mathbf{\lambda}||\beta||^2 \right ) βmin(∣∣Y−Xβ∣∣2+λ∣∣β∣∣2)这两者之间有什么区别呢?

两者同为线性回归,岭回归是在最小二乘法的基础上演进的,那么问题就来到了,最小二乘法有什么缺陷,需要通过岭回归来进行弥补呢?

我们知道最小二乘法成立的解是 Y = X β \mathbf{Y} = \mathbf{X}\beta Y=Xβ,也就是 X T Y = X T X β \mathbf{X^TY} = \mathbf{X^TX}\beta XTY=XTXβ,进行移项之后就可以得到: β = ( X T X ) − 1 X T Y ) \beta=\mathbf{(X^TX)^{-1}X^TY}) β=(XTX)−1XTY)这个式子成立的条件就是 X T X \mathbf{X^TX} XTX 是可逆的,但是可逆的前提就是 X \mathbf{X} X 是满秩的。

所以第一个结论:要使用最小二乘法,一定要保证 X \mathbf{X} X 是满秩的。

但是如果 X \mathbf{X} X 不是满秩,是不是就没办法进行线性回归了,也不尽然: β = ( X T X + λ I ) − 1 X T Y ) \beta=\mathbf{(X^TX + \lambda I)^{-1}X^TY}) β=(XTX+λI)−1XTY)通过引入 单位矩阵 I \mathbf{I} I 和参数 λ \lambda λ 就可以将 X T X + λ I \mathbf{X^TX + \lambda I} XTX+λI 变成可逆的了,也就是满足最小二乘法。这也是对岭回归进行求导之后获得的结果。

也就是说,我们一般在矩阵 X \mathbf{X} X 不是满秩的时候使用岭回归来替代最小二乘法,那么又有一个问题:

什么时候矩阵 X \mathbf{X} X 会出现不是满秩的情况?

多重共线性,当数据的多个特征相互之间有某种线性关系,体现到矩阵上,就是行或者列之间存在线性关系的话,就很有可能导致矩阵不是满秩的情况(秩的计算可以自行百度一下)。

所以总结一下:如果我们的模型中,特征之间的线性相关性比较高的话,就使用岭回归来代替最小二乘法。

下面这个区别解释也挺不错的:

从多变量回归的变量选择来说,普通的多元线性回归要做的是变量的剔除和筛选,而岭回归是一种shrinkage的方法,就是收缩。这是什么意思呢, 比如做普通线性回归时候,如果某个变量t检验不显著,我们通常会将它剔除再做回归,如此往复(stepwise),最终筛选留下得到一个我们满意回归方程,但是在做岭回归的时候,我们并没有做变量的剔除,而是将这个变量的系数beta向0"收缩",使得这个变量在回归方程中的影响变的很小。 于普通的多元线性回归相比,岭回归的变化更加smooth,或者说continuous。从这点上来说活,岭回归只是shrinkage methods中的一种,大家常说的lasso回归(貌似叫套索回归)其实也属于这种方法。

作者:亲爱的龙哥 链接:https://www.zhihu.com/question/28221429/answer/50909208

来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

为什么可以用岭回归来进行 bounding box 回归?

这就涉及到另外一个问题了,我们知道岭回归是一种线性回归模型,问题转换一下:

为什么 bounding box regression 可以看作是线性回归?

因为中心点坐标 x , y x,y x,y 的计算公式一眼就看出来是线性函数了,所以实际上,这个问题实际上就是什么情况下 w , h w, h w,h 的 log 函数可以近似成线性的?

我们可以对 t w t_w tw 与 t h t_h th 进行一些转换: { t w = log ⁡ G w P w = log ⁡ G w − P w + P w P w = log ⁡ ( 1 + G w − P w P w ) t h = log ⁡ G h P h = log ⁡ G h − P h + P h P h = log ⁡ ( 1 + G h − P h P h ) \left\{\begin{matrix} t_w = \log \frac{G_w}{P_w} = \log \frac{G_w - P_w + P_w}{P_w} = \log(1 + \frac{G_w - P_w}{P_w} ) \\ t_h = \log \frac{G_h}{P_h} = \log \frac{G_h - P_h + P_h}{P_h} = \log(1 + \frac{G_h - P_h}{P_h} ) \end{matrix}\right. {tw=logPwGw=logPwGw−Pw+Pw=log(1+PwGw−Pw)th=logPhGh=logPhGh−Ph+Ph=log(1+PhGh−Ph)我们也只知道下面这个式子是成立的: lim ⁡ x → 0 log ⁡ ( 1 + x ) x = 1 ⇒ lim ⁡ x → 0 log ⁡ ( 1 + x ) = x \lim {x\rightarrow 0} \frac{\log(1+x)}{x} = 1 \space \space \space\space\space \Rightarrow \space \space \space\space\space \lim{x\to 0} \log(1+x) = x x→0limxlog(1+x)=1 ⇒ x→0limlog(1+x)=x也就是说,在 x x x 趋近于零的时候, 可以将 log ⁡ ( 1 + x ) \log(1+x) log(1+x) 近似成 x x x。

回到上面使用 log 函数求 w , h w, h w,h 的偏移量,我们可以看出来, G w − P w P w \frac{G_w - P_w}{P_w} PwGw−Pw 与 G h − P h P h \frac{G_h - P_h}{P_h} PhGh−Ph 就相当于 x x x,当它们趋向于零的时候,也就是 G w G_w Gw 与 P w P_w Pw, G h G_h Gh 与 P h P_h Ph 几乎相同的时候,也就是 IOU 近乎 1 的时候,表示 gt box 与 region proposals 非常接近的时候。RCNN 论文中给出 IOU > 0.6 的时候,就可以将 t w t_w tw 与 t h t_h th 视为线性变换:
{ t w ≈ G w − P w P w t h ≈ G h − P h P h \left\{\begin{matrix} t_w \approx \frac{G_w - P_w}{P_w} \\ t_h \approx \frac{G_h - P_h}{P_h} \end{matrix}\right. {tw≈PwGw−Pwth≈PhGh−Ph

参考

相关推荐
数据分析能量站23 分钟前
神经网络-AlexNet
人工智能·深度学习·神经网络
Ven%28 分钟前
如何修改pip全局缓存位置和全局安装包存放路径
人工智能·python·深度学习·缓存·自然语言处理·pip
szxinmai主板定制专家42 分钟前
【NI国产替代】基于国产FPGA+全志T3的全国产16振动+2转速(24bits)高精度终端采集板卡
人工智能·fpga开发
YangJZ_ByteMaster1 小时前
EndtoEnd Object Detection with Transformers
人工智能·深度学习·目标检测·计算机视觉
Anlici1 小时前
模型训练与数据分析
人工智能·机器学习
余~~185381628001 小时前
NFC 碰一碰发视频源码搭建技术详解,支持OEM
开发语言·人工智能·python·音视频
唔皇万睡万万睡2 小时前
五子棋小游戏设计(Matlab)
人工智能·matlab·游戏程序
视觉语言导航2 小时前
AAAI-2024 | 大语言模型赋能导航决策!NavGPT:基于大模型显式推理的视觉语言导航
人工智能·具身智能
volcanical2 小时前
Bert各种变体——RoBERTA/ALBERT/DistillBert
人工智能·深度学习·bert
知来者逆2 小时前
Binoculars——分析证实大语言模型生成文本的检测和引用量按学科和国家明确显示了使用偏差的多样性和对内容类型的影响
人工智能·深度学习·语言模型·自然语言处理·llm·大语言模型