CV算法集锦
1. NMS算法(非极大值抑制算法)
该算法主要目的是筛选出重复框,保留有效框。
主要用在 region proposal阶段以及最后框出的阶段。
假设进行非极大值抑制的输入为2000x20的矩阵,2000表示该图像上框的个数,20表示类别数:
具体步骤如下:
-
1 对2000×20维矩阵中每列按从大到小进行排序(每列表示一类,共20类。同一类可能有多个目标,如上图有两个人);
-
2 从每列最大的得分建议框开始,分别与该列后面的得分建议框进行IoU计算,若IoU>阈值,则剔除得分较小的建议框,否则认为图像中同一类物体有多个目标;两个同类的目标的建议框基本不会有重叠(因为两个同类在一张图片中肯定不会有大面积重叠啊),因此去掉建议框重叠较大的实际上是实现了剔除同一个目标的重叠框
-
3 从每列次大的得分建议框开始,重复步骤2;
-
4 重复步骤3直到遍历完该列所有建议框;
-
5 遍历完2000×20维矩阵所有列,即所有物体种类都做一遍非极大值抑制;
2. Batch Normalization reference
- 为什么要进行特征归一化:
- 归一化后加快了梯度下降求最优解的速度;
- 归一化有可能提高精度;
- 简单缩放 min-max
- 标准差标准化 z-score 0均值标准化(zero-mean normalization)
- 经过处理的数据符合标准正态分布,即均值为0,标准差为1,其转化函数为
- 非线性归一化 比如log
3.动量更新方法
- 传统SGD更新方法。更新速度慢
x += -learning_rate * dx
- momentum update
v += mu * v - learning_rate * dx
x += v
其中一般的,v初始为0,mu是优化参数,一般初始化参数为0.9,当使用交叉验证的时候,参数mu一般设置成[0.5,0.9,0.95,0.99],在开始训练的时候,梯度下降较快,可以设置mu为0.5,在一段时间后逐渐变慢了,mu可以设置为0.9、0.99。也正是因为有了“惯性”,这个比SGD会稳定一些。