深度学习之边框回归(Bounding Box Regression)

从rcnn, fast rcnn, faster rcnn, yolo, r-fcn, ssd,到cvpr的yolo9000。这些paper中损失函数都包含了边框回归,除了rcnn详细介绍了,其他的paper都是一笔带过,或者直接引用rcnn就把损失函数写出来了。前三条网上解释比较多,后面的两条我看了很多paper,才得出这些结论。

  • 为什么要边框回归?
  • 什么是边框回归?
  • 边框回归怎么做的?
  • 边框回归为什么宽高,坐标会设计这种形式?
  • 为什么边框回归只能微调,在离Ground Truth近的时候才能生效?

为什么要边框回归?

这里引用王斌师兄的理解,如下图所示:
在这里插入图片描述

对于上图,绿色的框表示 Ground Truth, 红色的框为 Selective Search 提取的 Region Proposal。那么即便红色的框被分类器识别为飞机,但是由于红色的框定位不准(IoU<0.5), 那么这张图相当于没有正确的检测出飞机。 如果我们能对红色的框进行微调, 使得经过微调后的窗口跟 Ground Truth 更接近, 这样岂不是定位会更准确。 确实,Bounding-box regression 就是用来微调这个窗口的。

边框回归是什么?

对于窗口一般使用四维向量 (x,y,w,h)(x,y,w,h)(x,y,w,h) 来表示, 分别表示窗口的中心点坐标和宽高。 对于下图, 红色的框 P 代表原始的 Proposal, 绿色的框 G 代表目标的 Ground Truth, 我们的目标是寻找一种关系使得输入原始的窗口 P 经过映射得到一个跟真实窗口 G 更接近的回归窗口 G^\hat{G}G^


边框回归的目的既是:给定 (Px,Py,Pw,Ph)(P_{x},P_{y},P_{w},P_{h})(Px,Py,Pw,Ph) 寻找一种映射 fff, 使得 f(Px,Py,Pw,Ph)=(Gx^,Gy^,Gw^,Gh^)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^) 并且(Gx^,Gy^,Gw^,Gh^)≈(Gx,Gy,Gw,Gh)(\hat{G_x},\hat{G_y},\hat{G_w},\hat{G_h}) \approx (G_{x},G_{y},G_{w},G_{h})(Gx^,Gy^,Gw^,Gh^)(Gx,Gy,Gw,Gh)

边框回归怎么做的?

RCNN论文:Region-based Convolution Networks for Accurate Object detection and Segmentation

作者在完成了的生成候选区域——CNN提取特征——SVM进行分类以后,为了进一步的提高定位效果,在文章的附录C中介绍了 Bounding-box Regression 的处理。Bounding-box Regression 训练的过程中,输入数据为N个训练对 (Pi,Gi),i=1,2,...,N{(P^{i},G^{i})},i=1,2,...,N(Pi,Gi),i=1,2,...,N,其中 pi=(pxi,pyi,pwi,phi)p^i=(p^i_x,p^i_y,p^i_w,p^i_h)pi=(pxi,pyi,pwi,phi) 为proposal的位置,前两个坐标表示proposal的中心坐标,后面两个坐标分别表示proposal的width和height,而 Gi=(Gx,Gy,Gw,Gh)G^i=(G_x,G_y,G_w,G_h)Gi=(Gx,Gy,Gw,Gh) 表示groundtruth的位置, regression的目标就是学会一种映射将P转换为G。

那么经过何种变换才能从上图中的窗口 P 变为窗口 G^\hat{G}G^ 呢? 比较简单的思路就是: 平移+尺度放缩

作者设计了四种坐标映射方法,其中前两个表示对 proposal 中心坐标的尺度不变的平移变换,后面两个则是对 proposal 的 width 和 height 的对数空间的变换,

  1. 先做平移 (Δx,Δy)(\Delta x,\Delta y)(Δx,Δy)Δx=Pwdx(P),Δy=Phdy(P)\Delta x = P_{w}d_{x}(P),\Delta y = P_{h}d_{y}(P)Δx=Pwdx(P),Δy=Phdy(P) 这是R-CNN论文的:(d∗(P)=w∗TΦ5(P)=t∗d_{ \ast }(P) = w_{ \ast }^{T}\Phi _{5}(P)=t_{ \ast }d(P)=wTΦ5(P)=t)

G^x=Pwdx(P)+Px,(1)\hat{G}_{x} = P_{w}d_{x}(P) + P_{x},\text{(1)}G^x=Pwdx(P)+Px,(1)

G^y=Phdy(P)+Py,(2)\hat{G}_{y} = P_{h}d_{y}(P) + P_{y},\text{(2)}G^y=Phdy(P)+Py,(2)

  1. 然后再做尺度缩放 (Sw,Sh)(S_{w},S_{h})(Sw,Sh), Sw=exp(dw(P)),Sh=exp(dh(P))S_{w} = exp(d_{w}(P)),S_{h} = exp(d_{h}(P))Sw=exp(dw(P)),Sh=exp(dh(P)), 对应论文中:

G^w=Pwexp(dw(P)),(3)\hat{G}_{w} = P_{w}exp(d_{w}(P)),\text{(3)}G^w=Pwexp(dw(P)),(3)

G^h=Phexp(dh(P)),(4)\hat{G}_{h} = P_{h}exp(d_{h}(P)),\text{(4)}G^h=Phexp(dh(P)),(4)

观察(1)-(4)我们发现, 边框回归学习就是 dx(P),dy(P),dw(P),dh(P)d_{x}(P),d_{y}(P),d_{w}(P),d_{h}(P)dx(P),dy(P),dw(P),dh(P)这四个变换。下一步就是设计算法那得到这四个映射。

线性回归就是给定输入的特征向量 X, 学习一组参数 W, 使得经过线性回归后的值跟真实值 Y(Ground Truth)非常接近. 即 Y≈WXY \approx WXYWX 。 那么 Bounding-box 中我们的输入以及输出分别是什么呢?

Input:

RegionProposal→P=(Px,Py,Pw,Ph)RegionProposal\rightarrow P = (P_{x},P_{y},P_{w},P_{h})RegionProposalP=(Px,Py,Pw,Ph),这个是什么? 输入就是这四个数值吗?不是,其实真正的输入是这个窗口对应的 CNN 特征,也就是 R-CNN 中的 Pool5 feature(特征向量)。 (注:训练阶段输入还包括 Ground Truth, 也就是下边提到的 t∗=(tx,ty,tw,th)t_{ \ast } = (t_{x},t_{y},t_{w},t_{h})t=(tx,ty,tw,th)

Output:

outpue 为:需要进行的平移变换和尺度缩放 dx(P),dy(P),dw(P),dh(P)d_{x}(P),d_{y}(P),d_{w}(P),d_{h}(P)dx(P),dy(P),dw(P),dh(P), 或者说是 Δx,Δy,Sw,Sh\Delta x,\Delta y,S_{w},S_{h}Δx,Δy,Sw,Sh 。 我们的最终输出不应该是 Ground Truth 吗? 是的, 但是有了这四个变换我们就可以直接得到 Ground Truth。

这里有个问题需要注意, 根据(1)~(4)我们可以知道, P 经过 dx(P),dy(P),dw(P),dh(P)d_{x}(P),d_{y}(P),d_{w}(P),d_{h}(P)dx(P),dy(P),dw(P),dh(P) 得到的并不是真实值 G, 而是预测值 G^\hat{G}G^

在训练时这四个值 Δx,Δy,Sw,Sh\Delta x,\Delta y,S_{w},S_{h}Δx,Δy,Sw,Sh 的真实值应该是经过 Ground Truth 和 Proposal 计算得到的真正需要的平移量 (tx,ty)(t_{x},t_{y})(tx,ty) 和尺度缩放 (tw,th)(t_{w},t_{h})(tw,th) 。 这也就是 R-CNN 论文中的(6)~(9):

tx=(Gx−Px)/Pw,(6)t_{x} = (G_{x}−P_{x})/ P_{w},(6)tx=(GxPx)/Pw,(6)

ty=(Gy−Py)/Ph,(7)t_{y} = (G_{y}−P_{y})/ P_{h},(7)ty=(GyPy)/Ph,(7)

tw=log⁡⁡(Gw/Pw),(8)t_{w} = \log ⁡(G_{w}/ P_{w}),(8)tw=log(Gw/Pw),(8)

th=log⁡⁡(Gh/Ph),(9)t_{h} = \log ⁡(G_{h}/ P_{h}),(9)th=log(Gh/Ph),(9)

目标函数

目标函数可以表示为 d∗(P)=w∗TΦ5(P)d_{ \ast }(P) = w_{ \ast }^{T}\Phi _{5}(P)d(P)=wTΦ5(P)Φ5(P)\Phi _{5}(P)Φ5(P) 是输入 Proposal 的特征向量,w∗w_{ \ast }w是要学习的参数(*表示 x,y,w,h, 也就是每一个变换对应一个目标函数) , d∗(P)d_{ \ast }(P)d(P) 是得到的预测值。 我们要让预测值跟真实值 t∗=(tx,ty,tw,th)t_{ \ast } = (t_{x},t_{y},t_{w},t_{h})t=(tx,ty,tw,th)差距最小, 得到损失函数为:

Loss=∑iN(t∗i−w^∗Tϕ5(Pi))2.Loss = \sum \limits_{i}^{N}(t_{ \ast }^{i}−\hat{w}_{ \ast }^{T}\phi _{5}(P^{i}))^2.Loss=iN(tiw^Tϕ5(Pi))2.

函数优化目标为:

W∗=argminw∗∑iN(t∗i−w^∗Tϕ5(Pi))2+λ∣∣w^∗∣∣2.W_{ \ast } = argmin_{w_{ \ast }} \sum \limits_{i}^{N}(t_{ \ast }^{i}−\hat{w}_{ \ast }^{T}\phi _{5}(P^{i}))^2 + \lambda ||\hat{w}_{ \ast }||^2.W=argminwiN(tiw^Tϕ5(Pi))2+λw^2.

利用梯度下降法或者最小二乘法就可以得到 w∗w_{ \ast }w

最终在进行实验时,lambda = 1000, 同时作者发现同一对中P和G相距过远时通过上面的变换是不能完成的,而相距过远实际上也基本不会是同一物体,因此作者在进行实验室,对于 pair(P,G) 的选择是选择离P较近的G进行配对,这里表示较近的方法是需要P和一个G的最大的IoU要大于0.6,否则则抛弃该P。

为什么宽高尺度会设计这种形式?

重点解释一下为什么设计的 tx,tyt_{x},t_{y}tx,ty为什么除以宽高,为什么 tw,tht_{w},t_{h}tw,th会有log形式!!!

首先CNN具有尺度不变性, 以下图为例:
在这里插入图片描述

x,y 坐标除以宽高

上图的两个人具有不同的尺度,因为他都是人,我们得到的特征相同。假设我们得到的特征为 ϕ1,ϕ2\phi _{1},\phi _{2}ϕ1,ϕ2,那么一个完好的特征应该具备 ϕ1=ϕ\phi _{1} = \phiϕ1=ϕ。ok,如果我们直接学习坐标差值,以x坐标为例,xi,pix_{i},p_{i}xi,pi 分别代表第i个框的x坐标,学习到的映射为 fff, f(ϕ1)=x1−p1f(\phi _{1}) = x_{1}−p_{1}f(ϕ1)=x1p1,同理 f(ϕ2)=x2−p2f(\phi _{2}) = x_{2}−p_{2}f(ϕ2)=x2p2。从上图显而易见,x1−p1≠x2−p1x_{1}−p_{1} \neq x_{2}−p_{1}x1p1=x2p1。也就是说同一个x对应多个y,这明显不满足函数的定义。边框回归学习的是回归函数,然而你的目标却不满足函数定义,当然学习不到什么。

宽高坐标Log形式

我们想要得到一个放缩的尺度,也就是说这里限制尺度必须大于0。我们学习的 tw,tht_{w},t_{h}tw,th怎么保证满足大于0呢?直观的想法就是EXP函数,如公式(3), (4)所示,那么反过来推导就是Log函数的来源了。

为什么IoU较大,认为是线性变换?

当输入的 Proposal 与 Ground Truth 相差较小时(RCNN 设置的是 IoU>0.6), 可以认为这种变换是一种线性变换, 那么我们就可以用线性回归来建模对窗口进行微调, 否则会导致训练的回归模型不 work(当 Proposal跟 GT 离得较远,就是复杂的非线性问题了,此时用线性回归建模显然不合理)。这里我来解释:

Log函数明显不满足线性函数,但是为什么当Proposal 和Ground Truth相差较小的时候,就可以认为是一种线性变换呢?大家还记得这个公式不?参看高数1。

limx=0log(1+x)=xlim_{x = 0}log(1 + x) = xlimx=0log(1+x)=x

现在回过来看公式(8):

tw=log⁡⁡(Gw/Pw)=log(Gw+Pw−PwPw)=log(1+Gw−PwPw)t_{w} = \log ⁡(G_{w}/ P_{w}) = log(\frac{G_{w} + P_{w}−P_{w}}{P_{w}}) = log(1 + \frac{G_{w}−P_{w}}{P_{w}})tw=log(Gw/Pw)=log(PwGw+PwPw)=log(1+PwGwPw)

当且仅当 Gw−Pw=0G_{w}−P_{w}=0GwPw=0的时候,才会是线性函数,也就是宽度和高度必须近似相等。

对于IoU大于指定值这块,我并不认同作者的说法。我个人理解,只保证Region Proposal和Ground Truth的宽高相差不多就能满足回归条件。x,y位置到没有太多限制,这点我们从YOLOv2可以看出,原始的边框回归其实x,y的位置相对来说对很大的。这也是YOLOv2的改进地方。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/453802.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2018 年,React 将独占web前端框架鳌头?

相比 Angular 和 Vue&#xff0c; React 是 2017 年的主要 JS 框架&#xff0c;尤其是 React Native 以前所未有的速度提升自己。 Stateofjs 2017前端框架调查结果 相比较 2016 年的调查结果 所以 &#xff0c;1 年过去了&#xff0c;Vue.js 显然在前端框架中占据了领导地位&am…

python 第三方模块之 pandas 操作 excel

python 解析 excel 对比 包版本xls读xlsx读xls写xlsx写备注xlrd1.1.0&#xff08;2017年8月22日&#xff09;√√2.0 之后不支持xlsxxlwt1.3.0&#xff08;2017年8月22日&#xff09;√openpyxl2.6.2&#xff08;2019年3月29日&#xff09;√√XlsxWriter1.2.1&#xff08;201…

YUV / RGB 格式及快速转换

YUV是指亮度参量和色度参量分开表示的像素格式&#xff0c;而这样分开的好处就是不但可以避免相互干扰&#xff0c;还可以降低色度的采样率而不会对图像质量影响太大。 YUV是一个比较笼统地说法&#xff0c;针对它的具体排列方式&#xff0c;可以分为很多种具体的格式。转载一篇…

深度学习之 SSD(Single Shot MultiBox Detector)

目标检测近年来已经取得了很重要的进展&#xff0c;主流的算法主要分为两个类型&#xff1a; &#xff08;1&#xff09;two-stage方法&#xff0c;如R-CNN系算法&#xff0c;其主要思路是先通过启发式方法&#xff08;selective search&#xff09;或者CNN网络&#xff08;RP…

短时程突触可塑性(short-term synaptic plasticity)

介绍神经元的突触可塑性一般被认为是大脑学习与记忆的分子生物学机制&#xff0c;它是指突触传递效率增强或减弱的变化现象。若这种变化只持续数十毫秒到几分&#xff0c;便称之为短时程突触可塑性&#xff0c;其中效率增强与减弱分别叫做短时程增强&#xff08;short-term enh…

windows平台下vlc编译

转自:http://jeremiah.blog.51cto.com/539865/114190Jeremiah刚刚工作几个月&#xff0c;参与的第一个项目是与视频监控有关&#xff0c;分配给我的任务就是用开源的vlc做一个自己的播放器。对于开源项目来说&#xff0c;搭建起编译环境是第一步也是最重要的一步。Jeremiah在历…

深度学习之卷积神经网络 AlexNet

AlexNet 是 2012年ILSVRC 比赛冠军&#xff0c;远超第二名的CNN&#xff0c;比LeNet更深&#xff0c;用多层小卷积叠加来替换单个的大卷积&#xff0c;结构如下图所示。 ​​ 结构 预处理 原始图片&#xff1a;256∗256∗3256*256*3256∗256∗3 图像处理&#xff1a; 1.随机…

jstl处理栏目与子栏目_芬顿氧化法废水处理工程技术规范(征求意见稿)

日前&#xff0c;生态环境部印发《芬顿氧化法废水处理工程技术规范(征求意见稿)》&#xff0c;详情如下&#xff1a;各有关单位&#xff1a;为贯彻《中华人民共和国环境保护法》和《中华人民共和国水污染防治法》等法律法规&#xff0c;防治环境污染&#xff0c;改善环境质量&a…

深度学习之卷积神经网络 ZF Net

ZFNet出自论文《 Visualizing and Understanding Convolutional Networks》&#xff0c;作者Matthew D. Zeiler和Rob Fergus——显然ZFNet是以两位作者名字的首字母命名的。ZFNet通常被认为是ILSVRC 2013的冠军方法&#xff0c;但实际上ZFNet排在第3名&#xff0c;前两名分别是…

vb整合多个excel表格到一张_[Excel]同一工作簿中多个工作表保存成独立的表格

一个工作簿中有多个表格&#xff0c;如何将其表格单独保存成一个独立的文档呢&#xff1f;如果表格少&#xff0c;操作如下&#xff1a;选中要导出表格的标签名--鼠标邮件--移动或复制表格--新建工作簿。当如果表格太多呢&#xff0c;以上方法就太罗嗦了。简单方法用VBA,步骤如…

OpenCore 的代码结构

OpenCore的代码结构 以开源Android 的代码为例&#xff0c;Open Core 的代码在Android 代码的External/Opencore 目录 中。这个目录是OpenCore 的根目录&#xff0c;其中包含的子目录如下所示&#xff1a; android&#xff1a;这里面是一个上层的库&#xff0c;它基于PVPlaye…

深度学习之卷积神经网络 GoogleNet

GoogLeNet Incepetion V1 这是GoogLeNet的最早版本&#xff0c;出现在2014年的《Going deeper with convolutions》。之所以名为“GoogLeNet”而非“GoogleNet”,文章说是为了向早期的LeNet致敬。 深度学习以及神经网络快速发展&#xff0c;人们不再只关注更给力的硬件、更大…

Jzoj4348 打击目标

又是被水题坑了。。。 一直想不出来看题解说要什么主席树&#xff0c;于是开始打离线算法 结果打到一半发现要强制在线。。No!!! 发现直接AC自动机似乎可做&#xff1f;树剖之后在AC自动机上跑的时候判断一下不就好了吗!连线段树都不要 让后快乐切掉&#xff0c;速度还可以&…

深度学习之卷积神经网络 VGGNet

2014年&#xff0c;牛津大学计算机视觉组&#xff08;Visual Geometry Group&#xff09;和Google DeepMind公司的研究员一起研发出了新的深度卷积神经网络&#xff1a;VGGNet&#xff0c;并取得了ILSVRC2014比赛分类项目的第二名&#xff08;第一名是GoogLeNet&#xff0c;也是…

SpringMVC 返回json的两种方式

前后台数据交互使用json是一种很重要的方式.本文主要探讨SpringMVC框架使用json传输的技术. 请注意,本文所提到的项目使用Spring 版本是4.1.7,其他版本在具体使用上可能有不一样的情况. 一、最常见——使用RequestBody的注解返回一个实体对象; 使用方式如下: 1:引入jar包&#…

深度学习之卷积神经网络 ResNet

论文 Identity Mappings in Deep Residual Networks 2015年&#xff0c;ResNet&#xff08;Residual Neural Network&#xff09;由微软研究院的Kaiming He等四名华人提出&#xff0c;并在ILSVRC2015比赛中取得冠军&#xff0c;在top5上的错误率为3.57%&#xff0c;同时参数量…

搭建SSM框架之Spring

作为一枚大四准备毕业的学生&#xff0c;最重要的事便是毕业设计&#xff0c;前些日子刚刚拿到毕设题目&#xff1a;“3D网络图&#xff1a;面向网络结构数据的可视化软件设计”&#xff0c;(⊙o⊙)…&#xff0c;怎么说哪&#xff0c;看到题目就是一头雾水&#xff08;前几届不…

单列表_使用Excel中的quot;记录单quot;功能快速录入数据

在Excel中进行数据录入的时候&#xff0c;平常都是一行一行地录入数据&#xff0c;但是有时候在单元格之间&#xff0c;行与行&#xff0c;列与列之间频繁地切换去录入数据&#xff0c;费事费力还容易出错。今天给你推荐一个既好用又有效率的Excel中的隐藏功能——“记录单”。…

CentOS 6.9下的Setup工具(用于管理服务/防火墙/网络配置/验证服务)

说明&#xff1a;Setup工具套件好像是CentOS下特有的用于管理服务/防火墙/网络配置等&#xff0c;其实就是基于命令行模式界面的GUI工具。唯一特点就是方便。 安装&#xff1a; #安装Setup命令工具 yum -y install setuptool #安装Setup工具配套的系统服务组件 yum -y insta…

深度学习之非极大值抑制(Non-maximum suppression,NMS)

非极大值抑制&#xff08;Non-maximum suppression&#xff0c;NMS&#xff09;是一种去除非极大值的算法&#xff0c;常用于计算机视觉中的边缘检测、物体识别等。 算法流程 给出一张图片和上面许多物体检测的候选框&#xff08;即每个框可能都代表某种物体&#xff09;&…