檢測算法階段性總結(1)

截止日期:2019.6.26

當前的檢測算法可謂是人才輩出,我菜只能仰望。
當前主流的模式主要分爲三大類

  1. 單階段:代表有SSD、YOLO,retinanet。
  2. 多階段的:代表有Faster-Rcnn,Cascade RCNN。
  3. 基於點的:代表有FCOS,FSAF

一、單階段

單階段的始於YOLO,其主要思想是通過在最後的feature上取anchor來獲取最終的檢測結果。
在這裏插入圖片描述
ssd對其進行改進,採取層次多尺度來做。
在這裏插入圖片描述
單階段檢測算法有個缺點,那就是樣本不均衡,對於樣本不均衡的問題,retinanet做出了改進,提出了Focal loss
FL(p_t) = -\alpha_t (1-p_t)^\gamma \log(p_t)
在這裏插入圖片描述

二、多階段

最經典的當屬Faster-RCNN
在這裏插入圖片描述

後面對其改進主要集中在rpn和head上,當然roi pooling也是其中一塊
對於多階段的FPN,不再闡述
對roi pooling做改進的是R-FCN,k表示roi pooling大小,
在這裏插入圖片描述
對於rpn的改進有幾種情況
比如自動生成anchor
Region Proposal by Guided Anchoring
在這裏插入圖片描述
Libra R-CNN balance 的選擇樣本
在這裏插入圖片描述
對head 的改進如
CascadeRCNN,多階段的rpn
在這裏插入圖片描述
自動選擇層次的FSAF
在這裏插入圖片描述

三、基於點的檢測

CornerNet基於邊界點的檢測。
在這裏插入圖片描述
基於中心點的FCOS
在這裏插入圖片描述

四、 Tricks

樣本均衡問題:

解決困難樣本的OHEM
From: https://blog.csdn.net/u012426298/article/details/81773319
將Fast RCNN分成兩個components:ConvNet和RoINet. ConvNet爲共享的底層卷積層,RoINet爲RoI Pooling後的層,包括全連接層;

2 對於每張輸入圖像,經前向傳播,用ConvNet獲得feature maps(這裏爲RoI Pooling層的輸入);

3 將事先計算好的proposals,經RoI Pooling層投影到feature maps上,獲取固定的特徵輸出作爲全連接層的輸入;

     需要注意的是,論文說,爲了減少顯存以及後向傳播的時間,這裏的RoINet是有兩個的,它們共享權重,

     RoINet1是隻讀(只進行forward),RoINet2進行forward和backward:

a 將原圖的所有props扔到RoINet1,計算它們的loss(這裏有兩個loss:cls和det);

b 根據loss從高到低排序,以及利用NMS,來選出前K個props(K由論文裏的N和B參數決定)

爲什麼要用NMS? 顯然對於那些高度overlap的props經RoI的投影后,

 其在feature maps上的位置和大小是差不多一樣的,容易導致loss double counting問題

c 將選出的K個props(可以理解成hard examples)扔到RoINet2,

     這時的RoINet2和Fast RCNN的RoINet一樣,計算K個props的loss,並回傳梯度/殘差給ConvNet,來更新整個網絡

在這裏插入圖片描述
以及之前提過的Focal loss
以及 Gradient Harmonized Single-stage Detector

在這裏插入圖片描述
每個區間求梯度平均,着重處理中間低密度樣本。
在這裏插入圖片描述

注意力機制

DCN系列,修改conv操作
在這裏插入圖片描述
non-local,計算兩個點的關聯關係
在這裏插入圖片描述
GCNet,賦予不同通道的權重。
在這裏插入圖片描述

LOSS

用低分代替NMS的去除操作。
在這裏插入圖片描述
修改IOU 的GIOU

假如現在有兩個任意性質 A,B,我們找到一個最小的封閉形狀C,讓C可以把A,B包含在內,然後我們計算C中沒有覆蓋A和B的面積佔C總面積的比值,然後用A與B的IoU減去這個比值:
在這裏插入圖片描述

五、 輕量化

SkyNet: A Champion Model for DAC-SDC on Low Power Object Detection
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章