嘉賓:陳愷 博士 香港中文大學
整理:Hoh Xil
來源:將門技術社群線上直播第170期
出品:將門、DataFun
在物體檢測中,用到樣本採樣的地方:
對於雙階段 Detector 來說,它的採樣策略會發生在兩個階段,在 RPN 中會有一組採樣,以及從 RPN 的 proposals 來 train BBox Head 也會發生一次採樣。這裡主要研究第二次的採樣策略,因為 RPN 的一點點提升對最後 mAP 的影響比較小。
對單階段檢測器來說,它的採樣就發生在從 Backbone 到 BBox Head 之間。
本次分享的目錄:
本次分享主要有兩個方面:
——Sample Imbalance——
1. 負樣本過多的情況:
以上兩種方法的局限性:
既然 hard mining 這麼有用,以上兩個方法,本質上都是更加關注困難的樣本:
2. IoU and Difficaulty
那麼有沒有一種更簡單的辦法來模擬 hard mining 這個過程,我們的 Motivation 就是說,我們首先會探究 IoU 和樣本困難性之間的關係。對於一個訓練樣本來說,ground truth IoU 和它的困難度之間是否有什麼聯繫。
我們通過實驗發現:一些高 IoU 的負樣本是比較困難的負樣本。
我們做了一個直方圖的統計,藍色為隨機採樣,橙色為 hardnegatives,如果以 IoU0.05 為界,我們發現在困難樣本中 IoU>0.05 的佔了60%,但是在隨機採樣中,IoU>0.05 的不到30%。這說明通常困難樣本中的 IoU 會比較高,但是隨機採樣的時候很難採到高 IoU 的樣本。所以,IoU 可以作為困難度的一個表徵。既然 IoU 和樣本的困難度之間有正相關性,是不是可以不用把所有的樣本都 Forward 一遍,再按 loss 來排序,來得到困難樣本。我們就可以直接通過 IoU 來估計哪些是困難樣本,這樣可以大大的減少時間的消耗。
3. IoU-balanced Negative Sampling
據此,我們提出了 Iou-balanced NegativeSampling,方法非常簡單,假設整張圖只有 N 個 sample 負樣本:
當然,存在一種可能:某個區間,特別是高 IoU 的區間並沒有那麼多框可以 sample,這樣我們在進行這次 sample 之後,如果還有不足的樣本,我們會從所有的負樣本中再隨機的補上。
4. Instance-balanced Positive Sampling
把這種方法也推廣到正樣本的 sampling 中,正樣本如果通過 IoU 是比較困難,所以我們希望做一些 balanced sampling,一個自然的想法是根據正樣本屬於哪個 ground truths 來做 sampling。
如果整張圖中有 N 個 groundtruths 的話,samples N 個正樣本,那麼在 K 個 ground truths 附近,每個 ground truth 旁邊 sample N/K 個正樣本,同樣,如果最後數量達不到要求,會用隨機採樣的框來補上。
上述的兩種辦法都是在所有的正負樣本的框,但是沒有做進一步 Forward 的時候。所以,這兩個 sampling 相比於 random sampling 沒有任何的成本,可以認為在訓練的時候跟 random sampling 的 baseline 的耗時是完全一樣的。
5. Examples
這裡有一個直觀的顯示,如果用 random sampling 的話可以看左圖,經常會 sample 到一些非常簡單的負樣本,如空白的地面,就是一個純 bad ground。如果我們用 IoU-Balanced Sampling,可以看到更多的負樣本會集中在物體的周圍,這些通常是比較困難的樣本,同時可以看到,對於正樣本在不同的 ground truth 之間的分布變得更均衡。
6. Result
通過一個簡單的 sampling 改進,可以把最後的結果從 baseline 就是 random sampling 的35.9提升到 IoU-balanced sampling 的36.8,大概是0.9個點,雖然這個點相比於一些方法來說不是很多,但這篇 paper 講了3個部分,這只是其中一個部分,而且對速度沒有任何負面的影響,所以把它作為一個漲點的 trick 還是不錯的。
簡單總結下,通過用 IoU 來作為 hard mining 的估計,從而提出根據 IoU 來做一個 balanced sampling,最後達到的效果比 hard mining 要好,主要原因是比 hard mining 更加魯棒,因為 hard mining 只看最難的樣本,而 IoU balanced sampling 除了關注最難的樣本,也會關注一些其它的樣本,所以會更加魯棒。
——Sample importance——
這些困難的樣本是不是對於檢測器來說是最重要的樣本?
一直以來我們是把它當做理所當然的事情。因為 hard mining 從分類問題以來就一直被大家證明確實是 work 的,通常 hard mining 都能夠提升分類器的性能。這裡還引出另外一個問題,我們現在做的是 detection,那麼和 classification 分類的目標是否是完全一致的,假定我有一個框,如果能夠 train 出更好的分類器,是不是意味著檢測性能更高?這是一個值得思考的問題。
所以,在第二篇 paper 中,對這個問題進行了思考。
1. Observations
首先是一些觀察得到的結論:
樣本不應該被看作是獨立的,也不應該被看成是同等重要的。如圖,綠色的虛線框是 ground truth,是一隻黑色貓咪,黃色的框和紅色的框都是正樣本,因為它們的 IoU 都是大於0.5的,是不是說只要分類的 loss 越小,檢測的 mAP 越高呢?
其實不是的,我們來看下左邊和右邊的對比:
4個框都給了很高的分數,意味著對於左圖分類的 loss 是很小的,而且可以認為分類準確率是100%,對於右圖給了黃色框一個比較高的分數,但是其他框的分數都比較低,然後左上角的紅色框給了0.13的分數,那麼意味著可能有其它的一些類有更高的分數,可能會分錯。且右圖的 loss 明顯比左圖的 loss 大,是不是右圖檢測性能比左側低呢?應該是相反的,因為我們可以看到黃色框跟 ground truth 的 IoU 是最大的,檢測並不是追求要把所有的正樣本都分的很對,最終的目標是找到最好的那個框,然後給它一個很高的 score。
通過觀察得到的結論:
What samples are important?基於這些發現,對於檢測來說,到底哪些是重要的樣本?我們從正樣本和負樣本來分別討論:
① A revisit to mAP
首先討論下正樣本,我們先回顧下 mAP ( Mean Average Precision ) 的計算:平均 Precision 的意思是在不同 recall 下的 Precision 平均值,mean 代表不同的 class,對於 COCO 來說,前面還有一個 mean,代表的是 IoU 的閾值,會從0.5~0.95,每隔0.05取一個。
Precision 是 TruePositive 的數量比上 detector 框的數量,所以 Precision 是用來描述給定一組框中正確的部分佔所給框的比例。
Recall 是 TruePositive 的數量比上 ground truth 的數目,是用來衡量有多少 ground truth object 被檢測出來了。
所以我們在計算 mAP 的時候,會畫一條 Precision-Recall 曲線。
這裡很重要的標準是什麼樣的樣本會看成 true Positive,有兩個指標:
從 mAP 的計算過程中,我們可以看到:
對於每個 ground truth 在它周圍 IoU 最高的框對它來說是最重要的。因為 IoU 最高的框如果分的準確,那麼它就會是一個 true Positive,且在閾值很高的情況下也會是一個 true Positive。
對所有的 ground truth 來說,IoU 越高的框越重要。因為最終會把所有的框按照 score 排序,分數從高到底來算 true Positive,如果 IoU 最大的框,它的分數是最高的,意味著不管在什麼閾值下面,它將是第一個 truePositive。但是,如果 IoU 最大的那個框分數較低,那麼在比較低的閾值下面它是一個 true Positive,隨著閾值逐漸提高它就會變成一個 false Positive,會對最後的 mAP 產生比較大的影響。
② A revisit to False Positives
對於負樣本,我們比較關注的是 False Positive,也就是負樣本被錯分為正樣本。一張圖中會有很多的負樣本,但並不是錯分成了正樣本就會變成 False Positive,因為在得到最終結果之前,有一步 NMS,如果有離的比較近的框,最終只會保留一個框。如果它是負樣本而且分數分錯了,就是分數比較高,那麼就會成為一個 False Positive。但同樣也是一個負樣本,在它周圍被它抑制掉了,那麼對最終的結果是沒有影響的。
這裡就得出兩個結論:
第一條:局部來看,分數最高的框是最重要的,因為它在 NMS 時不會被抑制,會最終保留下來成為一個 False Positive,進而降低最終的 mAP。(補充下,這裡的 score 指的是,如果是 COCO 這種80類的分類,最終輸出是81個XX的分數,第0個向量代表 bad ground,這裡的 score 代表的是從第1個XX到第81個XX,也就是非 bad ground 這類的 Score 的最大值。)
第二條:全局來看,分數越高的負樣本越重要。因為計算 mAP 時,分數會從高到低排序,遇到的第一個分數最高的 False Positive,會降低 Precision,相當於把曲線向下拉,而且向下拉的起點會比其他的 False Positive 要早,所以最終結果會下降比較多。
2. Prime Sample
在回顧了正負樣本之後,我們提出了 Prime Sample,對物體檢測最終 mAP 有更大影響的框。仍然以這張圖為例,這裡有兩個框,一個是黃色的框,一個是紅色的框。紅色框的 ground truth IoU 是0.58,score 是0.38;然後黃色的框 IoU 和 score 會比較高。對於 hard mining 來說,紅色的框很明顯是一個困難的樣本,傳統 hard mining 方法會更加傾向於給紅色的框更大的 weight 或者把紅色框 weight 作為1,然後其他簡單的框作為0。但是對於 Prime Sample 來說,黃色的框 IoU 更大,所以黃色的框是我們的 Prime Sample,雖然它的 score 比較高,loss 比較小,但它應該是更被我們重視的。
那麼,該如何定量的衡量一個 Sample 的重要性呢?
3. Hierarchical Local Rank (HLR)
我們提出了 Hierarchical Local Rank 的 mytrick:
這個 mytrick 是用來對一個 mini-batch 中的正負樣本重要性進行排序的指標。
這裡 HLR 是基於最終框的位置來衡量的。如在兩階段的檢測器中,RPN 出來的框會被 regress 一次,然後得到最終的框。我們並不是基於 RPN 的框來衡量重要性,而是基於 RPN 的框 regress 之後再衡量它的重要性。這是因為上面的分析都是基於 mAP 的分析,mAP 都是基於最終的結果,所以 HLR 也是基於最終回歸之後的框。
對於正負樣本我們提出了不同的 HLR,對於正樣本我們提出了 IoU-HLR,對於負樣本提出了 Score-HLR 作為重要性的度量。
① Why mot IoU/Score?
為什麼不直接用 IoU 或者 Score 來衡量呢?以上圖為例,這裡有兩個人(2個 ground truth),有5個正樣本{A,B,C,D,E},根據之前對正樣本的分析,D 這個框 cover 的這個人的 IoU 是最高,而且比另外一個人 IoU 最高的框的 IoU 還要高,所以在這個5個框中 D 應該是最重要的框,它的 IoU 是0.92,如果這個框從0.92下降到0.81,是不是意味著它的重要性下降了?其實不是,它仍然是這張圖中最重要的框,這說明 IoU 或者 Score 絕對的數值並不重要,重要的是在一個 mining batch 中他們的排序關係,這就是為什麼不直接用 IoU/Score 作為重要性的度量,而要提出 HLR 這個概念。
② IoU Local Rank
接下來看下 HLR 是怎麼計算的:
第一步:會先計算 Local Rank ( 這裡都是以正樣本為例 ),仍然有{A,B,C,D,E}5個正樣本,對於 A,B,C 來說它們 cover 的是同一個人,所以它們是一組,然後 D 和 E 是一組,在每一組中,按它們的 IoU 進行排序,經過排序之後是 C>A>B,D>E,這樣我們就得到了一個局部的排序,針對每個 ground truth 附近的框的排序。
③ IoU Hierarchical Local Rank
第二步:把每一組的 TOP 1 拿出來進行排序,比如 ABC 中的 TOP 1 是 C,DE 中的 TOP 1 是 D,把 C 和 D 拿出來做一個排序,然後把 TOP 2 A 和 E 也拿出來做一個排序,同樣 TOP 3 也做一個排序,這樣我們就得到了一個 Hierarchical Local Rank,最終得到的排序是 DCAEB。假設這張圖中有 K 個 ground truth,TOP K 代表每一個 ground truth 周圍 IoU 最大的框,接下來 K 個元素代表每個 ground truth TOP 2 IoU 的框。這就保證了分別跟之前對 mAP 進行分析時的兩條結論相對應。第一條是對於每個樣本 IoU 高的會排在前面,第二條是對於不同的 ground truth IoU 高的會排在前面。所以最終得到的 HierarchicalLocal Rank 剛好符合之前對正樣本重要性的分析。
④ Score Hierarchical Local Rank
對於負樣本來說,選擇的就是 Score 的 Hierarchical Local Rank,這也是基於之前對負樣本的分析,它的方式基本和正樣本一樣,把 IoU 換成 Score。
唯一不同的地方是,對於正樣本來說天生的可以分成不同的 group,因為正樣本都是和某個 ground truth IoU 大於一個閾值,很自然的按照不同的 ground truth 對正樣本進行分組,這樣就可以形成一些 local groups,但是對於負樣本來說,並不是每個負樣本屬於某個 groundtruth,因為負樣本不存在 ground truth,它可以在某個 ground truth旁邊,也可以在一些純的背景上。所以在做負樣本的排序之前,會做一遍 NMS,獲得一些 groups,就是哪些負樣本是靠的比較近的、聚在一起的,從而可以執行和正樣本相同的過程。
⑤ Sample distribution
可以看下 Prime Sample 跟 hard Sample 以及 random Sample 之間分布有什麼不一樣。上面三張為正樣本,下面三張為負樣本。縱軸為分類的 loss,越小代表樣本越簡單,越大代表越難;橫軸為 IoU。
對於正樣本來說:可以看到 random Sample IoU 的分布從0.4到1之間都有分布,且 Loss 通常都是比較小的;對於 hard Sample 來講,分布明顯不一樣更加偏上,樣本確實比較難,且 IoU 從小到大分布比較均勻些,相比於 random Sample 在 IoU 比較小的區間分布會比較多一點;對於 Prime Sample 來說,基本集中在右下角,IoU 比較高同時 Loss 比較小的樣本,所以 Prime Sample 和 hard Sample 某種意義上講是有一定衝突的。
對於負樣本來說:random Sample 的 loss 比較小,也有非常多的小 IoU,比如 IoU=0 的部分;對於 hard Sample 來說,一個非常明顯的區別是 IoU 靠右了,對於難的樣本來說 IoU 通常較高,這和上篇 paper 的結論是吻合的,同時 loss 也變得偏高;對於 Prime Sample 來說,跟 hard samp 相比多了很多 loss 比較小的 Sample,如 loss=0 的地方分布也有一點小小的聚集,但同時也有一些比較難的 Sample,Prime Sample 是整個樣本空間中分布最廣的,也就是 IoU 會從小到大,Loss 也會從小到大。
從中我們可以看出 Prime Sample 跟 hard Sample 以及 random Sample 是三種不一樣的分布。
⑥ Analysis
這裡做了簡單的分析,如果我們提高 IoU 的 HLR,提高某一部分 Sample 分類的 Score,就是分類的準確率,那麼最終的 mAP 會如何變化。圖中,實線是 baseline,比較短的虛線是提高 top 25 的 IoU HLR 的 Sample 分類的 Score,比較長的虛線是只提高 top 5 的 IoU HLR 的 Sample,當然我們會保證這兩種情況下 loss 的減小程度是一樣的,也就是說這兩種分類器的分類性能是相當的。我們可以看到只是提高 top5 的 IoU HLR 樣本分類的準確率,mAP 的漲幅會超過 top 25 ( 可以看成比較平均的提高 ),就是說聚集在小部分 Sample 上做提高,比平均的提高分類器的分類性能對 detection 這個任務來說是更加有效的。
4. PrIme Sample Attention (PISA)
接下來講下我們的方法:PrIme Sample Attention ( PISA ),它的目的是為了在分類器訓練的時候,更加的關注 Prime Sample,主要分為兩個部分:
① Importance-based SampleReweighting(ISR)
首先看下如果做 ISR,對於正/負樣本來說,首先都得到 HLR,然後把它映射成一個 loss weight,中間會有一個 importance value,因為一個 rank 是一個整數。
第一步:把0,1,2,3,4這種排序通過線性函數 ( nmax-ri )/nmax 變成一個小數,ri 就是它的 rank,nmax 是每一類中最大的樣本數。把它變成一個從0到1的實數之後,用一個指數函數把它轉換成一個 loss weight 就是 wi。
如果重寫一些分類的 loss,如上面的公式 Lcls,如果是傳統分類的 loss 就是 random Sample 往下,分類的 loss 是沒有 wi' 和 wj' 的,之所以分了 i 和 j 是為了區分正樣本和負樣本,裡面的 loss 還是用的 Positive,對每個 Sample 都給它一個 wi' 或者wj' 這麼一個 loss weight,wi' 或者 wj' 是通過上面得到的 wi 做了一個歸一化,因為如果隨便加了一個 loss weight,最後總的 loss 的數值變化可能會比較大,為了消除其它因素的影響,就會保證在加了 loss weight 之後,loss 的數值跟不加它是一樣的,所以就乘了一個歸一化的項。
② Classification-Aware Regression Loss
基於我們的思考分類和回歸這兩個 branch 不是完全獨立的,而是耦合的。傳統來說,一般對於檢測器會有一個分類的分支和一個回歸的分支,分類的分支會有一個 cross entropy loss,回歸的分支大部分會用一個 smoothL1 的 loss,那麼如何把這兩支融合起來呢?很簡單,我們會再加一個 classifification-awareregression loss,就是 carl,這個 loss 會把分類的 Score 經過一個函數的映射 ( 這個函數跟剛才 Sample reweight 指數函數形式完全一樣的 ),跟原始的 regression loss 相乘,這就是 classifification-awareregression loss,為什麼叫 classifification-aware ,因為這個 regression loss 是把分類的 Score 乘了上去,這裡的 si 是指正樣本 label 分類的 Score。
我來看下是否能達到更加關注 Prime Sample 的目的。上圖為 CARL 的詳細形式,跟 Sample reweighting 基本是一樣的,vi 相當於剛剛 si,上張圖中的 si 沒有做任何的 detach 操作,所以在優化 CARl 這個 loss 的時候,梯度會回傳到 si 上面,那麼在計算偏導的時候,比如讓 CARL loss 對 si 求一個偏導其實跟 regression loss 是一個正相關的關係,也就是說 regression loss 越大,那麼對 si 的導數就越大,如果 regression loss 越小,對 si 的導數就越小。這裡的導數或者梯度意味著 Score 會受到抑制,因為在優化的時候,在下一輪,會讓 si 儘量的小,所以加了這一項之後,所有的樣本分數在優化的時候都會傾向於變小,來減小這個 loss。這個減小的程度是跟 regression loss 成正相關關係的,關於梯度的詳細推導,在 paper 中有一個附錄,感興趣的同學可以看一下。
這裡的 regression loss 是 Sample importance 的一個估計。因為實際的 Sampleimportance 是 IoU 的 HLR,Loss 越小只會說明回歸越準,那麼它的 IoU 可能會越大,IoU 的 HLR 會近似的越大,所以這裡說它是 Sample importance 的一個近似,但我們發現這種近似 work 的很好。所及加了 CARL 之後,就會通過讓那些不重要的 Sample 的 Score 抑制的更厲害,Prime Sample 的 Score 抑制會比較輕,這樣就更加 Focus 在 Prime Sample,讓不重要的 Sample 受到忽視。
5. 實驗結果
① Comparison with Random and Hard
這是在 COCO 公開測試集上的對比,這裡分別對正樣本和負樣本採用了不同的策略,如果正負樣本都用 Prime Sample Attention,會比都用 OHEM 高1.7%,會比 random sampling 高2.1%。
② Results on COCO test-dev
我們也在 COCO test-dev 上跑了不同的 model。我們發現 PISA 這個方法在各個模型上差不多都有2個點的提升;並且對 model 的 size 並不是很敏感。
6. Examples
這裡是一些簡單的可視化例子:
PISA 根據之前的分析,主要解決兩個問題:
第一個,False Positive 會更少,我們可以從圖中看出來。
第二個,對於每個 ground truth 周圍非常準的 Sample,Score 會偏高,這個也可以從圖中看出來。
這裡也是一個 Sample。
接下來講下再加入 Prime Sample Attention 之後,它是如何 work 的,這裡分別看下 ISR 和 CARL 對 classification scores 的影響.
7. How ISR affects classification scores?
首先研究下 ISR,這裡的 ISR-P 和 ISR-N 分別表示正樣本和負樣本的 Sample Reweighting。
左圖表示正樣本的 ISR,根據 IoU-HLR 給不同的 weight,在最終的結果中,IoU HLR 越小,排序結果越靠前的 Sample 的 Score 相對 random 來說是增長的,但是排的靠後的 Sample 的 Score 是在降低的,這和我們的期望非常符合,儘量突出 Prime Sample,而抑制不重要的樣本。
右圖對於負樣本來說,Score 越低說明負樣本分的越好,Score-HLR 越靠前的樣本降幅越大,對靠後的樣本,降幅會稍微少一些。
8. How does CARL affect classification scores?
如上圖,對於 IoU 比較大的樣本,分類的 score 會變高,對於 IoU 比較小的樣本 Score 是會降低的,這樣就更加的拉開了 Prime Sample 和不重要的 Sample 的距離。
9. Postive samples
對正樣本來說,最後的結果 IoU 比較高的部分是更受關注的,且對應的 loss 會比較小。
10. Negative samples
負樣本來看,random sampling 是 loss 小,IoU 也小;Hard sample 是 loss 大,IoU 也大;Prime sample 剛好在二者之間。這說明對於負樣本來說,Prime Sample 相當於 Random Sampling 和 Hard Sample 的中間態。
——總結——
Sample Imbalance,IoU-balanced Negative Sampling 和 Instance-balanced Positive Sampling,在不帶來 overhead 的情況下,有接近1個點的提升。
Sample importance,我們重新思考了什麼樣的 sample 才是重要的 sample,也思考了分類任務和檢測任務的區別,提出了 Prime Sample 的概念,來對檢測器的訓練進行優化。
致謝:
以上就是分享的所有內容,謝謝大家。
——END——
文章推薦:
視頻 | 深度學習在美圖個性化推薦的應用實踐
Facebook 面向個性化推薦系統的深度學習推薦模型
Google 推薦系統公平性論文解讀
DataFun:
專注於大數據、人工智慧領域的知識分享平臺。
一個「在看」,一段時光!👇