This commit is contained in:
scutan90 2019-04-12 20:39:56 +08:00
commit b8bc5608cf
2 changed files with 67 additions and 102 deletions

View File

@ -706,7 +706,7 @@ BGD、SGD、Mini-batch GD前面均已讨论过这里介绍一下Online GD
Online GD在互联网领域用的较多比如搜索广告的点击率CTR预估模型网民的点击行为会随着时间改变。用普通的BGD算法每天更新一次一方面耗时较长需要对所有历史数据重新训练另一方面无法及时反馈用户的点击行为迁移。而Online GD算法可以实时的依据网民的点击行为进行迁移。
## 2.13 计算图的导数计算图解
## 2.13 计算图的导数计算?
计算图导数计算是反向传播,利用链式法则和隐式函数求导。
假设 $z = f(u,v)$ 在点 $(u,v)$ 处偏导连续,$(u,v)$是关于 $t$ 的函数,在 $t$ 点可导,求 $z$ 在 $t$ 点的导数。
@ -717,24 +717,16 @@ $$
.\frac{dv}{dt}
$$
为了便于理解,下面举例说明。
假设$f(x)$是关于a, b, c的函数。链式求导法则如下
$$
\frac{dJ}{du}=\frac{dJ}{dv}\frac{dv}{du},\frac{dJ}{db}=\frac{dJ}{du}\frac{du}{db},\frac{dJ}{da}=\frac{dJ}{du}\frac{du}{da}
$$
链式法则用文字描述:“由两个函数凑起来的复合函数,其导数等于里边函数代入外边函数的值之导数,乘以里边函数的导数。
例:
链式法则用文字描述:“由两个函数凑起来的复合函数,其导数等于里边函数代入外边函数的值之导数,乘以里边函数的导数。
为了便于理解,下面举例说明:
$$
f(x)=x^2,g(x)=2x+1
$$
则:
$$
{f[g(x)]}'=2[g(x)] \times g'(x)=2[2x+1] \times 2=8x+1
{f[g(x)]}'=2[g(x)] \times g'(x)=2[2x+1] \times 2=8x+4
$$
@ -1393,16 +1385,18 @@ $$
## 2.17 决策树
### 2.17.1 决策树的基本原理
决策树(Decision Tree)是一种分而治之的决策过程。一个困难的预测问题,通过树的分支节点,被划分成两个或多个较为简单的子集,从结构上划分为不同的子问题。将依规则分割数据集的过程不断递归下去(Recursive Partitioning)。随着树的深度不断增加,分支节点的子集越来越小,所需要提的问题数也逐渐简化。当分支节点的深度或者问题的简单程度满足一定的停止规则(Stopping Rule)时, 该分支节点会停止分裂,此为自上而下的停止阈值(Cutoff Threshold)法;有些决策树也使用自下而上的剪枝(Pruning)法。
决策树Decision Tree是一种分而治之的决策过程。一个困难的预测问题通过树的分支节点被划分成两个或多个较为简单的子集从结构上划分为不同的子问题。将依规则分割数据集的过程不断递归下去Recursive Partitioning。随着树的深度不断增加分支节点的子集越来越小所需要提的问题数也逐渐简化。当分支节点的深度或者问题的简单程度满足一定的停止规则Stopping Rule时, 该分支节点会停止分裂此为自上而下的停止阈值Cutoff Threshold有些决策树也使用自下而上的剪枝Pruning法。
### 2.17.2 决策树的三要素?
一棵决策树的生成过程主要分为以下3个部分:
特征选择:从训练数据中众多的特征中选择一个特征作为当前节点的分裂标准,如何选择特征有着很多不同量化评估标准,从而衍生出不同的决策树算法。
一棵决策树的生成过程主要分为以下3个部分
决策树生成:根据选择的特征评估标准,从上至下递归地生成子节点,直到数据集不可分则决策树停止生长。树结构来说,递归结构是最容易理解的方式
1、特征选择从训练数据中众多的特征中选择一个特征作为当前节点的分裂标准如何选择特征有着很多不同量化评估标准从而衍生出不同的决策树算法
剪枝:决策树容易过拟合,一般来需要剪枝,缩小树结构规模、缓解过拟合。剪枝技术有预剪枝和后剪枝两种。
2、决策树生成根据选择的特征评估标准从上至下递归地生成子节点直到数据集不可分则决策树停止生长。树结构来说递归结构是最容易理解的方式。
3、剪枝决策树容易过拟合一般来需要剪枝缩小树结构规模、缓解过拟合。剪枝技术有预剪枝和后剪枝两种。
### 2.17.3 决策树学习基本算法
@ -1442,36 +1436,29 @@ $$
### 2.17.5 熵的概念以及理解
熵:度量随机变量的不确定性。
熵:度量随机变量的不确定性。
定义假设随机变量X的可能取值有$x_{1},x_{2},...,x_{n}$,对于每一个可能的取值$x_{i}$,其概率为$P(X=x_{i})=p_{i},i=1,2...,n$。随机变量的熵为:
$$
H(X)=-\sum_{i=1}^{n}p_{i}log_{2}p_{i}
$$
对于样本集合 假设样本有k个类别每个类别的概率为$\frac{|C_{k}|}{|D|}$,其中 ${|C_{k}|}{|D|}$为类别为k的样本个数,$|D|$为样本总数。样本集合D的熵为
对于样本集合假设样本有k个类别每个类别的概率为$\frac{|C_{k}|}{|D|}$,其中 ${|C_{k}|}{|D|}$为类别为k的样本个数$|D|$为样本总数。样本集合D的熵为
$$
H(D)=-\sum_{k=1}^{k}\frac{|C_{k}|}{|D|}log_{2}\frac{|C_{k}|}{|D|}
$$
### 2.17.6 信息增益的理解
定义:以某特征划分数据集前后的熵的差值。
熵可以表示样本集合的不确定性熵越大样本的不确定性就越大。因此可以使用划分前后集合熵的差值来衡量使用当前特征对于样本集合D划分效果的好坏。
假设划分前样本集合D的熵为H(D)。使用某个特征A划分数据集D计算划分后的数据子集的熵为H(D|A)。
定义:以某特征划分数据集前后的熵的差值。
熵可以表示样本集合的不确定性熵越大样本的不确定性就越大。因此可以使用划分前后集合熵的差值来衡量使用当前特征对于样本集合D划分效果的好坏。 假设划分前样本集合D的熵为H(D)。使用某个特征A划分数据集D计算划分后的数据子集的熵为H(D|A)。
则信息增益为:
$$
g(D,A)=H(D)-H(D|A)
$$
在决策树构建的过程中我们总是希望集合往最快到达纯度更高的子集合方向发展因此我们总是选择使得信息增益最大的特征来划分当前数据集D。
思想计算所有特征划分数据集D得到多个特征划分数据集D的信息增益从这些信息增益中选择最大的因而当前结点的划分特征便是使信息增益最大的划分所使用的特征。
另外这里提一下信息增益比相关知识:
信息增益比=惩罚参数X信息增益。
信息增益比本质:在信息增益的基础之上乘上一个惩罚参数。特征个数较多时,惩罚参数较小;特征个数较少时,惩罚参数较大。
*注:*在决策树构建的过程中我们总是希望集合往最快到达纯度更高的子集合方向发展因此我们总是选择使得信息增益最大的特征来划分当前数据集D。
思想计算所有特征划分数据集D得到多个特征划分数据集D的信息增益从这些信息增益中选择最大的因而当前结点的划分特征便是使信息增益最大的划分所使用的特征。
另外这里提一下信息增益比相关知识:
$信息增益比=惩罚参数\times信息增益$
信息增益比本质:在信息增益的基础之上乘上一个惩罚参数。特征个数较多时,惩罚参数较小;特征个数较少时,惩罚参数较大。
惩罚参数数据集D以特征A作为随机变量的熵的倒数。
### 2.17.7 剪枝处理的作用及策略?
@ -1518,13 +1505,12 @@ $$
### 2.18.3 核函数特点及其作用?
引入核函数目的把原坐标系里线性不可分的数据用Kernel投影到另一个空间尽量使得数据在新的空间里线性可分。
引入核函数目的把原坐标系里线性不可分的数据用核函数Kernel投影到另一个空间尽量使得数据在新的空间里线性可分。
核函数方法的广泛应用,与其特点是分不开的:
核函数方法的广泛应用,与其特点是分不开的:
1核函数的引入避免了“维数灾难”大大减小了计算量。而输入空间的维数n对核函数矩阵无影响。因此核函数方法可以有效处理高维输入。
1核函数的引入避免了“维数灾难”,大大减小了计算量。而输入空间的维数n对核函数矩阵无影响因此核函数方法可以有效处理高维输入。
2无需知道非线性变换函数Φ的形式和参数.
2无需知道非线性变换函数Φ的形式和参数。
3核函数的形式和参数的变化会隐式地改变从输入空间到特征空间的映射进而对特征空间的性质产生影响最终改变各种核函数方法的性能。
@ -1536,7 +1522,7 @@ $$
2可以很自然的引用核函数拉格朗日表达式里面有内积而核函数也是通过内积进行映射的
3在优化理论中目标函数 f(x) 会有多种形式:如果目标函数和约束条件都为变量 x 的线性函数, 称该问题为线性规划; 如果目标函数为二次函数, 约束条件为线性函数, 称该最优化问题为二次规划; 如果目标函数或者约束条件均为非线性函数, 称该最优化问题为非线性规划。每个线性规划问题都有一个与之对应的对偶问题,对偶问题有非常良好的性质,以下列举几个:
3在优化理论中目标函数 f(x) 会有多种形式:如果目标函数和约束条件都为变量 x 的线性函数,称该问题为线性规划;如果目标函数为二次函数,约束条件为线性函数,称该最优化问题为二次规划;如果目标函数或者约束条件均为非线性函数,称该最优化问题为非线性规划。每个线性规划问题都有一个与之对应的对偶问题,对偶问题有非常良好的性质,以下列举几个:
a, 对偶问题的对偶是原问题;
@ -1544,11 +1530,11 @@ $$
c, 对偶问题可以给出原始问题一个下界;
d, 当满足一定条件时,原始问题与对偶问题的解是完全等价的
d, 当满足一定条件时,原始问题与对偶问题的解是完全等价的
### 2.18.5 如何理解SVM中的对偶问题
在硬间隔支持向量机中,问题的求解可以转化为凸二次规划问题。
在硬边界支持向量机中,问题的求解可以转化为凸二次规划问题。
假设优化目标为
$$
@ -1570,7 +1556,7 @@ $$
**step 2**.现在的问题是如何找到问题(1) 的最优值的一个最好的下界?
$$
\frac{1}{2}||\boldsymbol w||^2 < v\\
1 - y_i(\boldsymbol w^T\boldsymbol x_i+b) \leq 0\tag{3}
1 - y_i(\boldsymbol w^T\boldsymbol x_i+b) \leqslant 0\tag{3}
$$
若方程组(3)无解, 则v是问题(1)的一个下界。若(3)有解, 则
$$
@ -1597,7 +1583,7 @@ $p^*$为原问题的最小值,对应的$w,b$分别为$w^*,b^*$,则对于任意
$$
p^* = \frac{1}{2}||\boldsymbol w^*||^2 \geqslant L(\boldsymbol w^*, b,\boldsymbol a) \geqslant \min_{\boldsymbol w, b} L(\boldsymbol w, b,\boldsymbol a)
$$
则 $\min_{\boldsymbol w, b} L(\boldsymbol w, b,\boldsymbol a)$是问题1的一个下
则 $\min_{\boldsymbol w, b} L(\boldsymbol w, b,\boldsymbol a)$是问题1的一个下
此时,取最大值即可求得好的下界,即
$$
@ -1619,88 +1605,74 @@ $$
特点:
(1) SVM方法的理论基础是非线性映射SVM利用内积核函数代替向高维空间的非线性映射
(1) SVM方法的理论基础是非线性映射SVM利用内积核函数代替向高维空间的非线性映射。
(2) SVM的目标是对特征空间划分得到最优超平面SVM方法核心是最大化分类边界。
(3) 支持向量是SVM的训练结果在SVM分类决策中起决定作用的是支持向量。
(4) SVM是一种有坚实理论基础的新颖的适用小样本学习方法。它基本上不涉及概率测度及大数定律等也简化了通常的分类和回归等问题。
(5) SVM的最终决策函数只由少数的支持向量所确定计算的复杂性取决于支持向量的数目而不是样本空间的维数这在某种意义上避免了“维数灾难”。
(6) 少数支持向量决定了最终结果,这不但可以帮助我们抓住关键样本、“剔除”大量冗余样本,而且注定了该方法不但算法简单,而且具有较好的“鲁棒性”。这种鲁棒性主要体现在:
①增、删非支持向量样本对模型没有影响;
②支持向量样本集具有一定的鲁棒性;
③有些成功的应用中SVM方法对核的选取不敏感
(7) SVM学习问题可以表示为凸优化问题因此可以利用已知的有效算法发现目标函数的全局最小值。而其他分类方法如基于规则的分类器和人工神经网络都采用一种基于贪心学习的策略来搜索假设空间这种方法一般只能获得局部最优解。
(8) SVM通过最大化决策边界的边缘来控制模型的能力。尽管如此用户必须提供其他参数如使用核函数类型和引入松弛变量等。
(9) SVM在小样本训练集上能够得到比其它算法好很多的结果。SVM优化目标是结构化风险最小而不是经验风险最小避免了过拟合问题通过margin的概念得到对数据分布的结构化描述减低了对数据规模和数据分布的要求有优秀的泛化能力。
(10) 它是一个凸优化问题,因此局部最优解一定是全局最优解的优点。
(2) SVM的目标是对特征空间划分得到最优超平面SVM方法核心是最大化分类边际
### 2.18.10 SVM主要缺点
(3) 支持向量是SVM的训练结果,在SVM分类决策中起决定作用的是支持向量。
(4) SVM 是一种有坚实理论基础的新颖的小样本学习方法。它基本上不涉及概率测度及大数定律等,也简化了通常的分类和回归等问题。
(5) SVM 的最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾难”。
(6) 少数支持向量决定了最终结果,这不但可以帮助我们抓住关键样本、“剔除”大量冗余样本,而且注定了该方法不但算法简单,而且具有较好的“鲁棒”性。这种“鲁棒”性主要体现在:
①增、删非支持向量样本对模型没有影响;
②支持向量样本集具有一定的鲁棒性;
③有些成功的应用中,SVM 方法对核的选取不敏感
(7) SVM学习问题可以表示为凸优化问题因此可以利用已知的有效算法发现目标函数的全局最小值。而其他分类方法如基于规则的分类器和人工神经网络都采用一种基于贪心学习的策略来搜索假设空间这种方法一般只能获得局部最优解。
(8) SVM通过最大化决策边界的边缘来控制模型的能力。尽管如此用户必须提供其他参数如使用核函数类型和引入松弛变量等。
(9) SVM在小样本训练集上能够得到比其它算法好很多的结果。SVM优化目标是结构化风险最小而不是经验风险最小避免了过学习问题通过margin的概念得到对数据分布的结构化描述减低了对数据规模和数据分布的要求有优秀的泛化能力。
(10) 它是一个凸优化问题,因此局部最优解一定是全局最优解的优点。
### 2.18.9 SVM主要缺点
(1) SVM算法对大规模训练样本难以实施
SVM的空间消耗主要是存储训练样本和核矩阵由于SVM是借助二次规划来求解支持向量而求解二次规划将涉及m阶矩阵的计算m为样本的个数当m数目很大时该矩阵的存储和计算将耗费大量的机器内存和运算时间。
如果数据量很大SVM的训练时间就会比较长如垃圾邮件的分类检测没有使用SVM分类器而是使用了简单的naive bayes分类器或者是使用逻辑回归模型分类。
(1) SVM算法对大规模训练样本难以实施
SVM的空间消耗主要是存储训练样本和核矩阵由于SVM是借助二次规划来求解支持向量而求解二次规划将涉及m阶矩阵的计算m为样本的个数当m数目很大时该矩阵的存储和计算将耗费大量的机器内存和运算时间。
如果数据量很大SVM的训练时间就会比较长如垃圾邮件的分类检测没有使用SVM分类器而是使用简单的朴素贝叶斯分类器或者是使用逻辑回归模型分类。
(2) 用SVM解决多分类问题存在困难
经典的支持向量机算法只给出了二类分类的算法而在实际应用中一般要解决多类的分类问题。可以通过多个二类支持向量机的组合来解决。主要有一对多组合模式、一对一组合模式和SVM决策树再就是通过构造多个分类器的组合来解决。主要原理是克服SVM固有的缺点结合其他算法的优势解决多类问题的分类精度。如与粗集理论结合形成一种优势互补的多类问题的组合分类器。
经典的支持向量机算法只给出了二类分类的算法而在实际应用中一般要解决多类的分类问题。可以通过多个二类支持向量机的组合来解决。主要有一对多组合模式、一对一组合模式和SVM决策树再就是通过构造多个分类器的组合来解决。主要原理是克服SVM固有的缺点结合其他算法的优势解决多类问题的分类精度。如与粗糙集理论结合形成一种优势互补的多类问题的组合分类器。
(3)对缺失数据敏感,对参数和核函数的选择敏感
(3) 对缺失数据敏感,对参数和核函数的选择敏感
支持向量机性能的优劣主要取决于核函数的选取,所以对于一个实际问题而言,如何根据实际的数据模型选择合适的核函数从而构造SVM算法.目前比较成熟的核函数及其参数的选择都是人为的,根据经验来选取的,带有一定的随意性.在不同的问题领域,核函数应当具有不同的形式和参数,所以在选取时候应该将领域知识引入进来,但是目前还没有好的方法来解决核函数的选取问题.
支持向量机性能的优劣主要取决于核函数的选取所以对于一个实际问题而言如何根据实际的数据模型选择合适的核函数从而构造SVM算法。目前比较成熟的核函数及其参数的选择都是人为的根据经验来选取的带有一定的随意性。在不同的问题领域核函数应当具有不同的形式和参数所以在选取时候应该将领域知识引入进来但是目前还没有好的方法来解决核函数的选取问题。
### 2.18.10 逻辑回归与SVM的异同
### 2.18.11 逻辑回归与SVM的异同
相同点:
- LR和SVM都是**分类**算法
- LR和SVM都是**分类**算法。
- LR和SVM都是**监督学习**算法。
- LR和SVM都是**判别模型**。
- 如果不考虑核函数LR和SVM都是**线性分类**算法,也就是说他们的分类决策面都是线性的。
说明:LR也是可以用核函数的.但LR通常不采用核函数的方法.(**计算量太大**)
说明LR也是可以用核函数的.但LR通常不采用核函数的方法。**计算量太大**
不同点:
**1、LR采用log损失SVM采用合页(hinge)损失。**
逻辑回归的损失函数:
$$
J(\theta)=-\frac{1}{m}\left[\sum^m_{i=1}y^{(i)}logh_{\theta}(x^{(i)})+ (1-y^{(i)})log(1-h_{\theta}(x^{(i)}))\right]
J(\theta)=-\frac{1}{m}\sum^m_{i=1}\left[y^{i}logh_{\theta}(x^{i})+ (1-y^{i})log(1-h_{\theta}(x^{i}))\right]
$$
支持向量机的目标函数:
$$
L(w,n,a)=\frac{1}{2}||w||^2-\sum^n_{i=1}\alpha_i \left( y_i(w^Tx_i+b)-1\right)
$$
逻辑回归方法基于概率理论假设样本为1的概率可以用sigmoid函数来表示然后通过**极大似然估计**的方法估计出参数的值。
支持向量机基于几何**间隔最大化**原理,认为存在最大几何间隔的分类面为最优分类面。
逻辑回归方法基于概率理论假设样本为1的概率可以用sigmoid函数来表示然后通过**极大似然估计**的方法估计出参数的值。
支持向量机基于几何**边界最大化**原理,认为存在最大几何边界的分类面为最优分类面。
2、**LR对异常值敏感SVM对异常值不敏感**。
支持向量机只考虑局部的边界线附近的点而逻辑回归考虑全局。LR模型找到的那个超平面是尽量让所有点都远离他而SVM寻找的那个超平面是只让最靠近中间分割线的那些点尽量远离即只用到那些支持向量的样本。
支持向量机只考虑局部的边界线附近的点而逻辑回归考虑全局。LR模型找到的那个超平面是尽量让所有点都远离他而SVM寻找的那个超平面是只让最靠近中间分割线的那些点尽量远离即只用到那些支持向量的样本。
支持向量机改变非支持向量样本并不会引起决策面的变化。
逻辑回归中改变任何样本都会引起决策面的变化。
支持向量机改变非支持向量样本并不会引起决策面的变化。
3、**计算复杂度不同。对于海量数据SVM的效率较低LR效率比较高**
逻辑回归中改变任何样本都会引起决策面的变化。
当样本较少特征维数较低时SVM和LR的运行时间均比较短SVM较短一些。准确率的话LR明显比SVM要高。当样本稍微增加些时SVM运行时间开始增长但是准确率赶超了LR。SVM时间虽长但在可接受范围内。当数据量增长到20000时特征维数增长到200时SVM的运行时间剧烈增加远远超过了LR的运行时间。但是准确率却和LR相差无几。(这其中主要原因是大量非支持向量参与计算造成SVM的二次规划问题)
**3、计算复杂度不同。对于海量数据SVM的效率较低LR效率比较高**
4、**对非线性问题的处理方式不同**
当样本较少特征维数较低时SVM和LR的运行时间均比较短SVM较短一些。准确率的话LR明显比SVM要高。当样本稍微增加些时SVM运行时间开始增长但是准确率赶超了LR。SVM时间虽长但在接收范围内。当数据量增长到20000时特征维数增长到200时SVM的运行时间剧烈增加远远超过了LR的运行时间。但是准确率却和LR相差无几。(这其中主要原因是大量非支持向量参与计算,造成SVM的二次规划问题)
LR主要靠特征构造必须组合交叉特征特征离散化。SVM也可以这样还可以通过核函数kernel因为只有支持向量参与核计算计算复杂度不高。由于可以利用核函数SVM则可以通过对偶求解高效处理。LR则在特征空间维度很高时表现较差。
**4、对非线性问题的处理方式不同**。LR主要靠特征构造必须组合交叉特征特征离散化。SVM也可以这样还可以通过kernel(因为只有支持向量参与核计算,计算复杂度不高)。(由于可以利用核函数,。SVM则可以通过对偶求解高效处理。LR则在特征空间维度很高时表现较差。)
**5、SVM的损失函数就自带正则**。损失函数中的1/2||w||^2项这就是为什么SVM是结构风险最小化算法的原因而LR必须另外在损失函数上添加正则项**
5、**SVM的损失函数就自带正则**。
损失函数中的1/2||w||^2项这就是为什么SVM是结构风险最小化算法的原因而LR必须另外在损失函数上添加正则项**
6、SVM自带**结构风险最小化**LR则是**经验风险最小化**。

View File

@ -136,7 +136,7 @@ RoI是Region of Interest的简写一般是指图像上的区域框但这
在Fast RCNN中指的是Selective Search的输出在Faster RCNN中指的是RPN的输出一堆矩形候选框形状为1x5x1x14个坐标+索引index其中值得注意的是坐标的参考系不是针对feature map这张图的而是针对原图的神经网络最开始的输入。其实关于ROI的坐标理解一直很混乱到底是根据谁的坐标来。其实很好理解我们已知原图的大小和由Selective Search算法提取的候选框坐标那么根据"映射关系"可以得出特征图featurwe map的大小和候选框在feature map上的映射坐标。至于如何计算其实就是比值问题下面会介绍。所以这里把ROI理解为原图上各个候选框region proposals也是可以的。
说句题外话由Selective Search算法提取的一系列可能含有object的boudning box这些通常称为region proposals或者region of interestROI
说句题外话由Selective Search算法提取的一系列可能含有object的bounding box这些通常称为region proposals或者region of interestROI
**RoI的具体操作**
@ -334,13 +334,6 @@ ROI Align 是在Mask-RCNN中提出的一种区域特征聚集方式很好地
事实上经过上述两次量化此时的候选框已经和最开始回归出来的位置有一定的偏差这个偏差会影响检测或者分割的准确度。在论文里作者把它总结为“不匹配问题misalignment
在常见的两级检测框架比如Fast-RCNNFaster-RCNNR-FCNRoI Pooling 的作用是根据预选框的位置坐标在特征图中将相应区域池化为固定尺寸的特征图以便进行后续的分类和包围框回归操作。由于预选框的位置通常是由模型回归得到的一般来讲是浮点数而池化后的特征图要求尺寸固定。故RoI Pooling这一操作存在两次量化的过程。
- 将候选框边界量化为整数点坐标值。
- 将量化后的边界区域平均分割成 k x k 个单元(bin),对每一个单元的边界进行量化。
事实上经过上述两次量化此时的候选框已经和最开始回归出来的位置有一定的偏差这个偏差会影响检测或者分割的准确度。在论文里作者把它总结为“不匹配问题misalignment
下面我们用直观的例子具体分析一下上述区域不匹配问题。如下图所示这是一个Faster-RCNN检测框架。输入一张800x800的图片图片上有一个665x665的包围框(框着一只狗)。图片经过主干网络提取特征后特征图缩放步长stride为32。因此图像和包围框的边长都是输入时的1/32。800正好可以被32整除变为25。但665除以32以后得到20.78带有小数于是RoI Pooling 直接将它量化成20。接下来需要把框内的特征池化7*7的大小因此将上述包围框平均分割成7x7个矩形区域。显然每个矩形区域的边长为2.86又含有小数。于是ROI Pooling 再次把它量化到2。经过这两次量化候选区域已经出现了较明显的偏差如图中绿色部分所示。更重要的是该层特征图上0.1个像素的偏差缩放到原图就是3.2个像素。那么0.8的偏差在原图上就是接近30个像素点的差别这一差别不容小觑。
![](img/ch8/Mask R-CNN-02.png)
@ -1083,4 +1076,4 @@ https://blog.csdn.net/hw5226349/article/details/78987385
[13] Liu S, Huang D. Receptive field block net for accurate and fast object detection[C]//Proceedings of the European Conference on Computer Vision (ECCV). 2018: 385-400.
[14] Zhao Q, Sheng T, Wang Y, et al. M2Det: A Single-Shot Object Detector based on Multi-Level Feature Pyramid Network[J]. arXiv preprint arXiv:1811.04533, 2018.
[14] Zhao Q, Sheng T, Wang Y, et al. M2Det: A Single-Shot Object Detector based on Multi-Level Feature Pyramid Network[J]. arXiv preprint arXiv:1811.04533, 2018.