目标检测算法
目標檢測算法
- 一、目標檢測算法
- 二、目標檢測算法存在的問題
- 三、目標檢測算法的基本流程
- 四、傳統(tǒng)的目標檢測算法
- 1.Viola-Jones(VJ人臉檢測算法)
- 2.HOG + SVM(行人檢測,使用Opencv實現(xiàn))
- 3.DPM(物體檢測)
- 補充——NMS
- 五、基于深度學習的目標檢測算法
- 1.Two-Stage算法(段到段)
- 2.One-Stage算法(端到端)
- 3.對比
一、目標檢測算法
主流的目標檢測算法大致分為one-stage與two-stage。
two-stage算法代表有R-CNN系列,one-stage算法代表有Yolo系列。自己理解,two-stage算法將步驟一與步驟二分開執(zhí)行,輸入圖像先經(jīng)過候選框生成網(wǎng)絡(例如faster rcnn中的RPN網(wǎng)絡),再經(jīng)過分類網(wǎng)絡,對候選框的內(nèi)容進行分類;one-stage算法將步驟一與步驟二同時執(zhí)行,輸入圖像只經(jīng)過一個網(wǎng)絡,生成的結(jié)果中同時包含位置與類別信息。two-stage與one-stage相比,精度高,但是計算量更大,所以運算較慢。
簡單時間線:
目標檢測算法分類:
二、目標檢測算法存在的問題
1.目標種類與數(shù)量問題:同一幅圖下要識別的物體類別和數(shù)量可能同時存在多個,在要識別的目標密度非常大時就可能出現(xiàn)像相互遮擋的問題。
2.目標尺度問題:同一幅圖下同一類別的物體可能因為透視原理的印象,變得有大有小。尤其是有時候目標的大小可能會變得非常小。
3.外在環(huán)境干擾問題:由于光照等問題引起的圖片質(zhì)量問題。
4.目標檢測和目標分割:目標識別、目標檢測、語義劃分、實例檢測
三、目標檢測算法的基本流程
候選框的選擇是依靠滑動窗口來選擇的。
四、傳統(tǒng)的目標檢測算法
1.Viola-Jones(VJ人臉檢測算法)
- Haar特征抽取(Opencv中有這個特征提取包)
- 訓練人臉分類器(Adaboost算法)
- 滑動窗口選取候選框
2.HOG + SVM(行人檢測,使用Opencv實現(xiàn))
- 提取HOG特征
- 訓練SVM分類器
這里的SVM是二分類分類法。(我們會使用現(xiàn)成的包就好,不一定需要自己去實現(xiàn),最好自己手動寫一下。)
SVM又叫支持向量機,所謂支持向量正是圖中所畫的虛線上的點,他們對最后分類的結(jié)果影響較大。
- 利用滑動窗口提取目標區(qū)域,進行分類判斷
- NMS
- 輸出檢測結(jié)果
3.DPM(物體檢測)
- DPM特征提取
- HOG的擴展
- 使用SVM訓練得到物體的梯度
補充——NMS
五、基于深度學習的目標檢測算法
1.Two-Stage算法(段到段)
- 使用各種CNN卷積神經(jīng)網(wǎng)絡作為backbone主干網(wǎng)絡,進行特征提取
- 然后進行一步粗分類(區(qū)分前景和后景)和粗定位(anchor),也就是說在上圖的“產(chǎn)生候選區(qū)域CNN特征”之前還應該有一個框“使用RPN網(wǎng)絡產(chǎn)生候選區(qū)CNN特征”
- 段到段的目標檢測
- 準確度高但速度較one-stage慢
2.One-Stage算法(端到端)
- 使用CNN卷積特征
- 直接回歸物體的類別概率和位置坐標值
- 準確率低但速度快
3.對比
- 雙階段精度高但速度慢,單精度速度快但精度稍遜。
- 雙階段目標檢測器采用了兩段結(jié)構(gòu)采樣來處理類別不均衡的問題(意思就是在同一張圖片中需要進行檢測的目標太少,不需要檢測的背景信息太多),一階段中:rpn使正負樣本更加均衡(先粗分類,區(qū)分前后景),再粗回歸,使用Anchor來擬合bbox,然后再二階段精調(diào)。
- One stage detector 的一個通病就是既要做定位又要做classification。最后幾層1x1 conv layer的loss混在一起,并沒有什么專門做detection或者專門做bbox regression的參數(shù),那每個參數(shù)的學習難度就大一點。
- Two stage detector 的第一個stage相當于先拿一個one stage detector來做一次前景后景的classification + detection。這個任務比 one stage detector 的直接上手N class classification + detection要簡單很多。有了前景后景,就可以選擇性的挑選樣本使得正負樣本更加均衡,然后拿著一些參數(shù)重點訓練classification。訓練classification的難度也比直接做混合的classification和regression 簡單很多。
- 雙階段其實就是把一個復雜的大問題拆分成更為簡單的小問題。各個參數(shù)有專攻,Two Stage Detector 在這個方面是有優(yōu)勢的。但one stage detector 里如果用了 focal loss 和 separate detection/classification head 那效果跟 two stage detector 應該是一樣的。
總結(jié)
- 上一篇: 解非线性方程的两种方法与python实现
- 下一篇: (区块链溯源)基于NFC的区块链物流溯源