一.pool作用
1.提取对于平移和小变形不变的特征;
2.减少过拟合,提升 泛化能力;
3.减小feature map的尺寸,对于网络具有正则化作用。
二,BN
tensorflow使用BN。
https://blog.csdn.net/fanzonghao/article/details/82864880
1,首先我们根据论文来介绍一下BN层的优点:
1)加快训练速度,这样我们就可以使用较大的学习率来训练网络。
2)提高网络的泛化能力。
3)BN层本质上是一个归一化网络层。
4)可以打乱样本训练顺序(这样就不可能出现同一张照片被多次选择用来训练)论文中提到可以提高1%的精度。
问题:深层网络训练过程中,每一层输入随着参数变化而变化,导致每一层都需要适应新的分布,这叫做内部协方差变化。
BN除了解决内部协方差变化,还能起到正则化作用。
BN通过归一化每一层的输入的均值和方差,可以有效解决梯度之间的依赖性。
2,加入γ与β的原因:
由于归一化每一层的输入可能影响该层的代表性,例如sigmoid本来用来做分类要用非线性区域,结果归一化到了线性区域,所以加入上述两个参数,当γ等于样本标准差时,β等于期望时就恢复到了未归一化状态。
3,用minibatch代表整个样本集原因:
当用整个训练集做梯度下降时是不现实的,故采用mini-batch的方式产生均值和方差的估计,通过这种方式的话可以把归一化加入到梯度回传的过程中。注意到这里提及了是计算一个minibatch每一个维度的方差,而不是整个方差。
4,mini-batch算法训练过程:
一个batch-size有m个样本。
输入:输入数据x1…xm(这些数据是准备进入**函数的数据)
计算过程中可以看到,
1.求数据均值;
2.求数据方差;
3.数据进行归一化
4.训练参数γ,β
5.输出y通过γ与β的线性变换得到新的值
在正向传播的时候,通过可学习的γ与β参数求出新的分布值
在反向传播的时候,通过链式求导方式,求出γ与β以及相关权值。
5,预测过程中的均值和方差:
每层的γ与β两个参数, 通过训练时所得。
每一层均值和方差:
对于均值来说直接计算所有mini-batch均值的期望;然后对于标准偏差采用所有mini-batch σB期望的无偏估计。
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,于是对于每个特征图都只有一对可学习参数:γ、β。说白了吧,这就是相当于求取所有样本所对应的一个特征图的平均值、方差,然后对这个特征图神经元做归一化。
三,感受野
Understanding the Effective Receptive Field in Deep Convolutional Neural Networks
特征的有效感受野(实际起作用的感受野)是远小于理论感受野的
可看出实际的感受野是呈高斯分布的.
感受野中心像素与边缘像素对于梯度的贡献是不一样的.
四,NMS/soft NMS
1.NMS
代码https://mp.csdn.net/postedit/83089948
每个选出来的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的计算过程。
如果是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越大,得分就下降的越厉害。
参考:
https://www.jianshu.com/p/5268b42daeda