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會穩定一些。