【目标检测】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

参考

相关推荐
AI完全体3 分钟前
【AI知识点】偏差-方差权衡(Bias-Variance Tradeoff)
人工智能·深度学习·神经网络·机器学习·过拟合·模型复杂度·偏差-方差
GZ_TOGOGO16 分钟前
【2024最新】华为HCIE认证考试流程
大数据·人工智能·网络协议·网络安全·华为
sp_fyf_202416 分钟前
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-02
人工智能·神经网络·算法·计算机视觉·语言模型·自然语言处理·数据挖掘
新缸中之脑17 分钟前
Ollama 运行视觉语言模型LLaVA
人工智能·语言模型·自然语言处理
胡耀超1 小时前
知识图谱入门——3:工具分类与对比(知识建模工具:Protégé、 知识抽取工具:DeepDive、知识存储工具:Neo4j)
人工智能·知识图谱
陈苏同学1 小时前
4. 将pycharm本地项目同步到(Linux)服务器上——深度学习·科研实践·从0到1
linux·服务器·ide·人工智能·python·深度学习·pycharm
吾名招财1 小时前
yolov5-7.0模型DNN加载函数及参数详解(重要)
c++·人工智能·yolo·dnn
鼠鼠龙年发大财2 小时前
【鼠鼠学AI代码合集#7】概率
人工智能
龙的爹23332 小时前
论文 | Model-tuning Via Prompts Makes NLP Models Adversarially Robust
人工智能·gpt·深度学习·语言模型·自然语言处理·prompt
工业机器视觉设计和实现2 小时前
cnn突破四(生成卷积核与固定核对比)
人工智能·深度学习·cnn