1. 程式人生 > 其它 >Object detection at 200 Frames Per Second

Object detection at 200 Frames Per Second

技術標籤:目標檢測機器學習深度學習

論文連結:

Object detection at 200 Frames Per Second​arxiv.org

本文記錄該篇文章中蒸餾策略:

針對yolo模型,COCO資料集作為目標檢測任務的訓練目標難度大,意味著teacher network會預測出更多的背景bbox,如果直接用teacher network的預測輸出作為student network學習的soft label會有嚴重的類別不均衡問題。解決這個問題需要引入新的方法,以論文中的reg loss為例:

paddlepaddle中的蒸餾程式碼為例:

https://github.com/PaddlePaddle/PaddleDetection/blob/release/0.2/slim/distillation/distill.py​

def obj_weighted_reg(sx, sy, sw, sh, tx, ty, tw, th, tobj):
     loss_x = fluid.layers.sigmoid_cross_entropy_with_logits(a sx, fluid.layers.sigmoid(tx))
     loss_y = fluid.layers.sigmoid_cross_entropy_with_logits(a sy, fluid.layers.sigmoid(ty))
     loss_w = fluid.layers.abs(sw - tw) 
     loss_h = fluid.layers.abs(sh - th)
     loss = fluid.layers.sum([loss_x, loss_y, loss_w, loss_h])
     weighted_loss = fluid.layers.reduce_mean(loss * fluid.layers.sigmoid(tobj))
     return weighted_loss

從上述程式碼可以看出是在teacher netowork和student network的loss前乘以objectness的得分作為權重來抑制背景框

網路大量的網格和anchor都會預測同一個物體,因此在利用知識蒸餾訓練時,當teacher network將資訊遷移到student network時,高度重合的檢測區域對應的feature map會使得反向傳播時,對應於同一個目標類別,梯度會變得很大,從而導致網路過擬合。為了解決這個問題,論文作者提出 Feature Map-NMS (FM-NMS)。具體思想是如果在3 * 3鄰域的cell中,多個候選框都對應同一個類別,那麼這很可能是同一個物體。因此只選擇objectness值最高的那個候選框。另外會將對應同一類別的其他候選框在最後一層的feature map中的 class probabilities置為0。因此只有objectness值最大的那個才會對student network產生影響。我認為在具體實現的時候應當採用siliding window的方式去掃描來計算。