雙階段(候選框提取、分類分開進行)
RCNN->Fast RCNN ->Faster RCNN->Mask-RCNN
單階段
yolov1(2016cvpr)->ssd(2016 eccv oral)->yolov2(2017cvpr)->retinanet(focal loss)->yolov3(2018arvix)
研一在雁棲湖的時候有門課要求看一系列的論文并且寫成ppt的形式,
當時主要看了目標檢測方面的論文,有很多地方沒理解,
最近有時間又回顧了一遍有一些新的想法,在這里記錄一下,
對目標檢測不熟悉的朋友可以先看博客最后的基礎知識部分,主要包括資料增強,IOU,NMS,mAP,

圖片來自參考文獻[1]
RCNN系列
多階段目標檢測系列了解的少一點,知乎上看見有人對每篇文章都用一句話總結的不錯,搬運一波,

https://www.zhihu.com/question/35887527
補充一個
Mask-RCNN解決的是,“為什么不進一步做實體分割”
于是何愷明嘗試在Faster-RCNN的基礎之上實作了實體分割,我理解實體分割相當于細粒度目標檢測,

下面是一些我自己覺得RCNN系列中值得注意的地方
1)Faster RCNN 去掉了selective search ,可以端到端的進行訓練,但是如果分4步進行訓練的話精度會提升,
2)Faster RCNN 和 SSD 中位置損失使用Smooth L1 loss,yolo系列使用L2 loss,猜測是因為yolov2對位置資訊使用了新的編碼方式,將邊界框中心點約束在當前cell中,
3)Mask-RCNN中的ROIAlign代替ROIPooling,我理解ROIAlign相當于亞像素級別的ROIPooling
yolo系列
發表的時間順序
yolov1->ssd->yolov2->retinanet(focal loss)->yolov3
相對于R-CNN系列的"看兩眼"(候選框提取與分類)
YOLO只需要You Only Look Once
YOLO統一為一個回歸問題,最后輸出時的confidence值,這個值決定了前景和背景,
這樣做明顯加快了速度,但是缺少了單獨提取前景的網路region proposal net,
使得正負樣本不平衡問題比較嚴重,yolov1中有無object的box對confidence預測的權重不同在一定程度上緩解這個問題
后續的focal loss也是針對正負樣本不平衡問題以及難樣本挖掘問題(類似faster-rcnn的OHEM)
yolov1
You Only Look Once:Unified, Real-Time Object Detection
最終輸出的張量大小:7x7x((4+1)*2+20)
7x7個grid
2個box
每個box xyhw4個值以及confidence(紅色部分)共5個值
每個grid預測20種類別的置信度(藍色部分)


圖片來自參考文獻[2]
損失函式如下:
均為L2 loss

優點:
1)YOLO統一為一個回歸問題,最后輸出時的confidence值,這個值決定了前景和背景,
2)坐標預測,減少大框占的loss比例,這里對 [w,h] 在損失函式中的處理分別取了根號,緩解尺寸不平衡問題,
3)loss里面針對有無物體loss weight不同,也算是平衡正負樣本
缺點:
1)每個grid只能檢測一類物體中的一個物體,遇到密集物體,物體占畫面比較低時,recall會比較低,
2)存在全鏈接層,只能單尺度訓練
yolov2
YOLO9000: Better, Faster, Stronger
優點
1)引入了anchor box 代替了全鏈接層
a)可以多尺寸訓練模型
b)每一個grid 可以預測一類物體中的多個物體
2)將訓練資料集中的矩形框全部拿出來,用kmeans聚類得到先驗框的寬和高,
3)多層softmax,充分利用標簽之間的相關性資訊,多次求解條件概率,
4)坐標預測:將邊界框中心點約束在當前cell中,使用sigmoid函式處理偏移值,使得模型穩定,
5)引入Passthrough layer 多個尺寸下檢測目標框,緩解小尺寸物體的識別效果不佳的問題, ssd里面也有相似的操作,
tips:
多尺寸訓練模型指的是輸入的圖片尺寸可以不同,
多個尺寸下檢測目標框指的是在不同的感知野下做目標檢測,可以同時檢測出較大的物體以及較小的物體,
缺點
1)單標簽預測,
2)小物體檢測效果不好,
多次計算條件概率
下圖的softmax指的是進行了多次softmax計算

yolov2的損失函式如下:
類別損失類似yolov1里面針對有無物體loss weight不同,有助于平衡正負樣本
[w,h]的預測部分通過(2-wh)緩解尺寸不平衡問題,(yolov2修改了xywh的預測方式)

yolov3
1)單標簽->多標簽
bceloss+sigmoide->L2+softmax
谷歌的open image論文中有提到過imagenet資料集中存在大量圖片不止有一個標簽,但是只打了一個標簽的情況,
2)多尺度特征融合FPR
yolov2中的Passthrough的升級版,有點類似resnet,unet,
在多個尺度下進行目標檢測,
以輸入影像為416416為例,YOLOv2中一張圖片需要預測13135=845個邊界框,而YOLOv3中需要預測(1313+2626+5252)*3=10647個邊界框,

RetinaNet(focal loss)
Focal Loss for Dense Object Detection
下圖的紅色部分用來緩解正負樣本不平衡的問題,
對正樣本設定更改的權重,通常為0.25,
下圖的藍色部分用來進行難樣本挖掘,類似Faster RCNN中的OHEM(online hard example mining),
預測概率越高的目標,可信度越高,需要更少的關注,

focal loss帶來的變化

圖片來自參考文獻[3]
基礎知識
資料增強
目標檢測中的資料增強是比較復雜,每一次改變影像同時也要考慮boxes的資訊,
比起目標分類更加局限性,比如翻轉,左右翻轉一般影響不大,但上下翻轉造成的影響就截然不同,
參考資料
https://www.freesion.com/article/6083573650/
iou 交集/并集
目標檢測和影像分割都往往用到iou,miou等概念,
miou:對各個類別的IOU進行平均,
手寫iou計算
def bb_intersection_over_union(boxA, boxB):
boxA = [int(x) for x in boxA]
boxB = [int(x) for x in boxB]
xA = max(boxA[0], boxB[0])
yA = max(boxA[1], boxB[1])
xB = min(boxA[2], boxB[2])
yB = min(boxA[3], boxB[3])
interArea = max(0, xB - xA + 1) * max(0, yB - yA + 1)
boxAArea = (boxA[2] - boxA[0] + 1) * (boxA[3] - boxA[1] + 1)
boxBArea = (boxB[2] - boxB[0] + 1) * (boxB[3] - boxB[1] + 1)
iou = interArea / float(boxAArea + boxBArea - interArea)
return iou
上述代碼之所以很多地方需要+1,是因為這里的0->1的距離指的是[0,1]中一共有多少個像素,即像素0和像素1,共2個像素,
參考資料
https://blog.csdn.net/weixin_42135399/article/details/101025941
非極大值抑制—NMS(Non-Maximum Suppression)
解決的問題:
檢測出的目標框太多,有很多重復的框,同一物體對應多個框,應該只保留置信度比較高的一個,
(不同類的目標框不構成競爭關系,不會因此被洗掉)
視頻邊緣檢測的方法中似乎也用到了NMS,

所謂非極大值抑制:
先假設有6個輸出的矩形框(即proposal_clip_box),根據分類器類別分類概率做排序,從小到大分別屬于車輛的概率(scores)分別為A、B、C、D、E、F,
(1)從最大概率矩形框F開始,分別判斷A~E與F的重疊度IOU是否大于某個設定的閾值;
(2)假設B、D與F的重疊度超過閾值,那么就扔掉B、D;并標記第一個矩形框F,是我們保留下來的,
(3)從剩下的矩形框A、C、E中,選擇概率最大的E,然后判斷E與A、C的重疊度,重疊度大于一定的閾值,那么就扔掉;并標記E是我們保留下來的第二個矩形框,
就這樣一直重復,找到所有被保留下來的矩形框,
soft NMS
soft NMS演算法:
NMS演算法直接洗掉IOU過大的框太絕對了,IOU過大降低置信度即可,
和NMS只差一行代碼,
大致思路為:
M為當前得分最高框,bi 為待處理框,bi 和M的IOU越大,bi 的得分si 就下降的越厲害,

更進一步還有softer NMS,暫時沒有詳細了解,
參考資料
https://www.cnblogs.com/makefile/p/nms.html
https://zhuanlan.zhihu.com/p/89426063
mAP
P:準確率

AP :不同召回率上的平均precision
單單一個precision不足以衡量系統的好壞,于是引入了AP(Average Precision)——不同召回率上的平均precision,
mAP:所有類別的AP平均值
參考資料
https://zhuanlan.zhihu.com/p/37910324
參考資料
[1] https://zhuanlan.zhihu.com/p/70387154
[2] https://www.cnblogs.com/ywheunji/p/10808989.html
[3] https://blog.csdn.net/wwwhp/article/details/83317738
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/333534.html
標籤:其他
