一.pool作用

pool作用+理解BN+感受野+NMS/soft NMS

1.提取对于平移和小变形不变的特征;

2.减少过拟合,提升 泛化能力;

3.减小feature map的尺寸,对于网络具有正则化作用。

二,BN

tensorflow使用BN。

https://blog.csdn.net/fanzonghao/article/details/82864880 

1,首先我们根据论文来介绍一下BN层的优点:

1)加快训练速度,这样我们就可以使用较大的学习率来训练网络。

2)提高网络的泛化能力。

3)BN层本质上是一个归一化网络层。

4)可以打乱样本训练顺序(这样就不可能出现同一张照片被多次选择用来训练)论文中提到可以提高1%的精度。
问题:深层网络训练过程中,每一层输入随着参数变化而变化,导致每一层都需要适应新的分布,这叫做内部协方差变化。

pool作用+理解BN+感受野+NMS/soft NMS

BN除了解决内部协方差变化,还能起到正则化作用。

pool作用+理解BN+感受野+NMS/soft NMS

BN通过归一化每一层的输入的均值和方差,可以有效解决梯度之间的依赖性。

pool作用+理解BN+感受野+NMS/soft NMS

2,加入γ与β的原因:

由于归一化每一层的输入可能影响该层的代表性,例如sigmoid本来用来做分类要用非线性区域,结果归一化到了线性区域,所以加入上述两个参数,当γ等于样本标准差时,β等于期望时就恢复到了未归一化状态。

pool作用+理解BN+感受野+NMS/soft NMS

pool作用+理解BN+感受野+NMS/soft NMS

3,用minibatch代表整个样本集原因:

当用整个训练集做梯度下降时是不现实的,故采用mini-batch的方式产生均值和方差的估计,通过这种方式的话可以把归一化加入到梯度回传的过程中。注意到这里提及了是计算一个minibatch每一个维度的方差,而不是整个方差。

pool作用+理解BN+感受野+NMS/soft NMS

4,mini-batch算法训练过程:

一个batch-size有m个样本。

pool作用+理解BN+感受野+NMS/soft NMS

pool作用+理解BN+感受野+NMS/soft NMS

输入:输入数据x1…xm(这些数据是准备进入**函数的数据)
计算过程中可以看到,
1.求数据均值;
2.求数据方差;
3.数据进行归一化
4.训练参数γ,β
5.输出y通过γ与β的线性变换得到新的值
在正向传播的时候,通过可学习的γ与β参数求出新的分布值

在反向传播的时候,通过链式求导方式,求出γ与β以及相关权值。

 

5,预测过程中的均值和方差:

每层的γ与β两个参数, 通过训练时所得。

每一层均值和方差:

对于均值来说直接计算所有mini-batch均值的期望;然后对于标准偏差采用所有mini-batch σB期望的无偏估计。

pool作用+理解BN+感受野+NMS/soft NMS

pool作用+理解BN+感受野+NMS/soft NMS

6,对于CNN:

如果min-batch sizes为m,那么网络某一层输入数据可以表示为四维矩阵(m,f,w,h),m为min-batch sizes,f为特征图个数,w、h分别为特征图的宽高。在CNN中我们可以把每个特征图看成是一个特征处理(一个神经元),因此在使用Batch Normalization,mini-batch size 的大小就是:m*w*h,于是对于每个特征图都只有一对可学习参数:γ、β。说白了吧,这就是相当于求取所有样本所对应的一个特征图的平均值、方差,然后对这个特征图神经元做归一化。

pool作用+理解BN+感受野+NMS/soft NMS

三,感受野

Understanding the Effective Receptive Field in Deep Convolutional Neural Networks

特征的有效感受野(实际起作用的感受野)是远小于理论感受野的

pool作用+理解BN+感受野+NMS/soft NMS

可看出实际的感受野是呈高斯分布的.

pool作用+理解BN+感受野+NMS/soft NMS

感受野中心像素与边缘像素对于梯度的贡献是不一样的.

pool作用+理解BN+感受野+NMS/soft NMS

pool作用+理解BN+感受野+NMS/soft NMS

pool作用+理解BN+感受野+NMS/soft NMS

四,NMS/soft NMS

1.NMS

代码https://mp.csdn.net/postedit/83089948

pool作用+理解BN+感受野+NMS/soft NMS

每个选出来的Bounding Box检测框(既BBox)用(x,y,h,w, confidence score,Pdog,Pcat)表示,confidence  score表示background和foreground的置信度得分,取值范围[0,1]。Pdog,Pcat分布代表类别是狗和猫的概率。如果是100类的目标检测模型,BBox输出向量为5+100=105。

NMS主要就是通过迭代的形式,不断的以最大得分的框去与其他框做IoU操作,并过滤那些IoU较大(即交集较大)的框。如下图所示NMS的计算过程。

pool作用+理解BN+感受野+NMS/soft NMS

pool作用+理解BN+感受野+NMS/soft NMS

如果是two stage算法,通常在选出BBox有BBox位置(x,y,h,w)和confidence score,没有类别的概率。因为程序是生成BBox,再将选择的BBox的feature map做rescale (一般用ROI pooling),然后再用分类器分类。NMS一般只能在CPU计算,这也是two stage相对耗时的原因。

但如果是one stage作法,BBox有位置信息(x,y,h,w)、confidence score,以及类别概率,相对于two stage少了后面的rescale和分类程序,所以计算量相对少。

NMS缺点:

1、NMS算法中的最大问题就是它将相邻检测框的分数均强制归零(既将重叠部分大于重叠阈值Nt的检测框移除)。在这种情况下,如果一个真实物体在重叠区域出现(比如人抱着猫),则将导致对该物体的检测失败并降低了算法的平均检测率(average precision, AP)。

2、NMS的阈值也不太容易确定,设置过小会出现误删,设置过高又容易增大误检。

3、NMS一般只能使用CPU计算,无法使用GPU计算。

2.soft NMS

NMS算法是略显粗暴,因为NMS直接将删除所有IoU大于阈值的框。soft-NMS吸取了NMS的教训,在算法执行过程中不是简单的对IoU大于阈值的检测框删除,而是降低得分。算法流程同NMS相同,但是对原置信度得分使用函数运算,目标是降低置信度得分,其IOU越大,得分就下降的越厉害。

pool作用+理解BN+感受野+NMS/soft NMS

参考:

https://www.jianshu.com/p/5268b42daeda

 

相关文章: