之前開的組會分享了一些在這方面的頂會,這邊放部落格上分享。
關於目標檢測的不平衡問題,推薦閱讀
two-stage目標檢測演算法回顧
本文主要分享的工作都是基於two-stage的,不妨先回顧一下。
以faster rcnn為例:
下面講一下三個方面的imbalance。
easy-hard imbalance
眾所周知:
難樣本尤其有價值,解決難樣本將更好地降低loss,提公升指標。
but目標檢測任務中簡單樣本佔主導,使得模型難以關注難樣本。
現有解決方案:
hard negative mining/ohem:
rpn輸出正負anchor數量差異懸殊。如果將所有預設框拿來訓練,將導致對負樣本的過擬合。因此 「挖掘」那些分類損失最大的負樣本來訓練(而不是像前面所說的隨機取樣),其數量為正樣本的三倍。
soft sampling:
從損失函式上引導模型關注難樣本。最典型的就是focal loss。
增大γ,把loss曲線往下拉,簡單樣本貢獻的梯度減少,難樣本貢獻的梯度增大。
還有很多通過取樣來緩解easy-hard imbalance的工作,可以看最前面的*****鏈結。
feature imbalance
基礎fpn baseline:主要針對多尺度問題來結合上下文資訊來提取特徵:
存在問題:上下文語義資訊的imbalance(例如c2層資訊直接整合至p2,缺乏強語義資訊)
現有解決方案:
adaptive feature pooling(圖中c部分)
傳統fpn得到的proposal只能得到特定層級的特徵,基於此,將每個proposal對映到不同的特徵層次,用roialign池化不同層次的特徵網格,進一步融合不同層次的特徵網格。
iou imbalance
在2-stage目標檢測演算法中的rpn階段,所有bounding box與ground truth之間的iou並不服從均勻分布:
大量的低iou box與高iou box之間的imbalance問題;
training stage與inference stage之間出現mismatch問題;
僅增加iou閾值導致正樣本大量減少導致overfitting,且出現更嚴重的mismatch
現有解決方案:
是否可以顯式地建立iou與hard-easy之間的關係呢?
果然,通過實驗可以發現困難樣本並不是根據iou均勻分布在原有樣本中。
解決方案:針對iou的分層抽樣取代隨機抽樣:提供乙個難樣本的關於iou的先驗分布,將hard example與sample的分布匹配;
區間內candidates越少,越傾向於sample;
關於處理資料不平衡問題的一些探索
一 背景 二 解決辦法 解決這個問題的乙個思路就是希望在模型訓練的時候小類和大類的重要性的一樣的,主要可以通過兩種方法實現,乙個是取樣,乙個加權,還有資料增強。1.取樣 理論 取樣分為上取樣和下取樣。上取樣是將小類別複製多份,使得他們的數目與大類別相近。下取樣是在大類別中隨機剔除一些資料,使得大類別...
小目標檢測的一些總結
無論是在檢測還是分割演算法中小目標的檢測或分割都是比中等與大目標難的,一般來講在coco檢測資料集上小目標的檢測效能是大目標的一半不到。那麼什麼樣的目標才能算是小目標呢?下圖是coco 上對於不同大小目標的定義 面積小於32 32 32 32 32 3 2的目標 小目標檢測困難的原因分析 在此基礎上...
目標檢測中的一些指標 學習筆記
1 參考 用人臉識別做乙個例子,tp true positive,目標區域有人臉,返回目標區域檢測到人臉 fn false negative,目標區域有人臉,返回目標區域沒有檢測到人臉 fp false positive,目標區域沒有人臉,返回目標區域檢測到人臉 tn true negative,目...