一、深度學習經典檢測方法
two-stage(兩階段):Faster-rcnn Mask-Rcnn系列
one-stage(單階段):YOLO系列
1. one-stage
最核心的優勢:速度非常快,適合做實時檢測任務!
但是缺點也是有的,效果通常情況下不會太好!
2. two-stage
速度通常較慢(5FPS),但是效果通常還是不錯的!
非常實用的通用框架MaskRcnn
二、指標分析
1. IOU:交集(真實值和預測值)/并集
2. P-R圖
精度和召回率計算
精度是指模型正確預測為正例的樣本數量與所有被模型預測為正例的樣本數量的比率。換句話說,精度衡量了模型的預測中有多少是真正的正例。
召回率是指模型正確預測為正例的樣本數量與所有實際正例的樣本數量的比率。召回率衡量了模型能夠正確識別多少真正的正例。
3. map指標:綜合衡量檢測效果;
舉個例子。設定第一張圖的預測框叫pre1,第一張的真實框叫label1。第二張、第三張同理。
(1)根據IOU計算TP,FP
首先我們計算每張圖的pre和label的IOU,根據IOU是否大于0.5來判斷該pre是屬于TP還是屬于FP。顯而易見,pre1是TP,pre2是FP,pre3是TP。
(2)置信度排序
根據每個pre的置信度進行從高到低排序,這里pre1、pre2、pre3置信度剛好就是從高到低。
(3)在不同置信度閾值下獲得Precision和Recall
- 首先,設置閾值為0.9,無視所有小于0.9的pre。那么檢測器檢出的所有框pre即TP+FP=1,并且pre1是TP,那么Precision=1/1。因為所有的label=3,所以Recall=1/3。這樣就得到一組P、R值。
- 然后,設置閾值為0.8,無視所有小于0.8的pre。那么檢測器檢出的所有框pre即TP+FP=2,因為pre1是TP,pre2是FP,那么Precision=1/2=0.5。因為所有的label=3,所以Recall=1/3=0.33。這樣就又得到一組P、R值。
- 再然后,設置閾值為0.7,無視所有小于0.7的pre。那么檢測器檢出的所有框pre即TP+FP=3,因為pre1是TP,pre2是FP,pre3是TP,那么Precision=2/3=0.67。因為所有的label=3,所以Recall=2/3=0.67。這樣就又得到一組P、R值。
(4)繪制PR曲線并計算AP值
根據上面3組PR值繪制PR曲線如下。然后每個“峰值點”往左畫一條線段直到與上一個峰值點的垂直線相交。這樣畫出來的紅色線段與坐標軸圍起來的面積就是AP值。
(5)計算mAP
AP衡量的是對一個類檢測好壞,mAP就是對多個類的檢測好壞。就是簡單粗暴的把所有類的AP值取平均就好了。比如有兩類,類A的AP值是0.5,類B的AP值是0.2,那么mAP=(0.5+0.2)/2=0.35
mAP值越大表明,該目標檢測模型在給定的數據集上的檢測效果越好。