从零搭建自己的目标检测网络教程(二)边界框回归

关于边界框回归有个理论细节所有人都没有提到,问了好多人都觉得我问的问题太简单了根本就不算个问题,我甚至解释了好几遍才找到能准确描述出我的疑惑的问法,可当我提问清楚后大家又表示没想过这个问题,建议我去问原作者,我现在想明白了便在此解释一下。

附一个网上介绍的比较详细的博客边框回归(Bounding Box Regression)详解以及DIOU和CIOU论文Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression这篇论文附带了浅明易懂的MATLAB仿真,正是这篇论文和仿真让我迷惑不已。有人建议我去原作者issue里问问,我没问但若干天后我突发奇想想明白了这个问题。

博客中提出,

对于窗口一般使用四维向量(x,y,w,h)来表示,分别表示窗口的中心点坐标和宽高。图中,红色的框P代表原始的Proposal,绿色的框G代表目标的GroundTruth,我们的目标是寻找一种关系使得输入原始的窗口P经过映射得到一个跟真实窗口G更接近的回归窗口G^G^。
边框回归的目的即是:给定(Px,Py,Pw,Ph)寻找一种映射f,使得f(Px,Py,Pw,Ph)=(Gx^,Gy^,Gw^,Gh^)并且(Gx^,Gy^,Gw^,Gh^)≈(Gx,Gy,Gw,Gh)

里面最关键的一句是 寻找一种映射f,使得 f ( P x , P y , P w , P h ) = ( G x ^ , G y ^ , G w ^ , G h ^ ) f(P_x,P_y,P_w,P_h)=(\hat{G_x},\hat{G_y},\hat{G_w},\hat{G_h}) f(Px,Py,Pw,Ph)=(Gx^,Gy^,Gw^,Gh^),但实际上文中的真正意思是寻找4个梯度 δ 1 , δ 2 , δ 3 , δ 4 \delta_1,\delta_2,\delta_3,\delta_4 δ1,δ2,δ3,δ4使得 P x + k δ 1 , P y + k δ 2 , P w + k δ 3 , P h + k δ 4 P_x+k\delta_1,P_y+k\delta_2,P_w+k\delta_3,P_h+k\delta_4 Px+kδ1,Py+kδ2,Pw+kδ3,Ph+kδ4能又快又准地收敛到 G x ^ , G y ^ , G w ^ , G h ^ \hat{G_x},\hat{G_y},\hat{G_w},\hat{G_h} Gx^,Gy^,Gw^,Gh^而这很明显可以看出来不是寻找一种映射。说白了就是,用神经网络拟合这一映射的话,在每一步使用梯度下降法更新的不应该是网络的权重么,为什么他更新的是边框的4个参数 P x , P y , P w , P h P_x,P_y,P_w,P_h Px,Py,Pw,Ph
论文里也是这么写的

作者给的代码里也是这么更新的

因为登不上github而省略的图片.jpg

有人说“这应该是实验验证iou的可行性,实际训练中不使用这个公式”,这也算是看出来问题了,但这很明显不具备说服力,为什么这么做就能验证?

最后我终于想到了这个问题的核心:既然是训练那总得有数据集吧,那么边框回归的数据集是什么?为什么那篇博客和论文里都没有使用数据集?没有数据集凭什么说这是在“训练”边框回归?

这个问题其实很简单。从神经网络方向传播的更新公式中, ∂ E ∂ θ = ∂ E ∂ y ^ ∂ y ^ ∂ θ \frac{\partial E}{\partial\theta}=\frac{\partial E}{\partial\hat{y}}\frac{\partial\hat{y}}{\partial\theta} θE=y^Eθy^
其中E是边界框回归损失, θ \theta θ是神经网络的参数, y ^ \hat{y} y^是神经网络输出的4个边界框参数,因此你会发现论文和博客中都没有告诉你他们研究的前提是 ∂ y ^ ∂ θ \frac{\partial\hat{y}}{\partial\theta} θy^固定,研究的只是 ∂ E ∂ y ^ \frac{\partial E}{\partial\hat{y}} y^E的收敛性,该式中并没有出现 θ \theta θ,因此也就不需要数据集。

至于输出的4个参数能够拟合边界框的原因,其实还是归功于神经网络的惊人拟合能力。我们可以假设边界框回归的问题可近似看作(这个例子可能不太合适),在xoy平面内有一些点,这些点作为数据集,让神经网络能够找出一个能够把所有点都框起来的最小的框(有点支持向量机的意思),然后可以再次简化为,找到2个或多个数的最小值。西瓜书中讲2个隐层神经元可以实现异或,但最小值看上去很简单但直接设计神经元并不容易,还是靠简单粗暴的训练和拟合。单隐层前馈网络求最小值

从零搭建自己的目标检测网络教程(三)数据集处理
从零搭建自己的目标检测网络教程(零)前言

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值