深度學習之目標檢測與目標識別


2020-09-21

參考:https://blog.csdn.net/qq_32241189/article/details/80573087

一 目標識別分類及應用場景

    目前可以將現有的基於深度學習的目標檢測與識別算法大致分為以下三大類: 

    ① 基於區域建議的目標檢測與識別算法,如R-CNN, Fast-R-CNN, Faster-R-CNN;

    ② 基於回歸的目標檢測與識別算法,如YOLO, SSD;

    ③ 基於搜索的目標檢測與識別算法,如基於視覺注意的AttentionNet,基於強化學習的算法.

    目前, 目標識別主要有以下幾個應用場景:

    ① 安全領域:指紋識別、人臉識別等,代表項目如Face++、依圖科技、深醒科技等。

    ② 軍事領域:地形勘察、飛行物識別等,代表項目全悉科技。

    ③ 交通領域:車牌號識別、無人駕駛、交通標志識別等,代表項目縱目科技、TuSimple(圖森科技)、馭勢科技等。

    ④ 醫療領域:心電圖、B超、健康管理、營養學等,代表項目智影醫療、圖瑪深維等。

    ⑤ 生活領域:智能家居、購物、智能測膚等,代表項目Yi+、木薯科技、肌秘等。

 

    具體可參考這里:從圖像識別多樣化的應用場景,看計算機視覺的未來價值

二 基於區域建議的目標識別的算法

1. R-CNN

1.1 基本工作流程:

    1) 接收一個圖像, 使用Selective Search選擇大約2000個從上到下的類無關的候選區域(proposal)

    2) 將提取出來的候選區域轉換為統一大小的圖片(拉升/壓縮等方法), 使用CNN模型提取每一個候選區域的固定長度的特征.

    3) 使用特定類別的線性SVM分類器對每一個候選區域進行分類.

    4) Bounding Box回歸.

1.2 訓練 (使用AlexNet, 要求輸入為227*227大小的圖像)

    1) 預訓練. 預訓練CNN(邊界框標簽不可用於該數據).

    2) 特征領域的微調. 使用基於CNN的SGD的訓練,對模型進行微調.在這里選擇學習率為預訓練的1/10, 保證微調不破壞初始化.

    3) 將所有候選區域與真實框重疊(IoU)大於等於0.5的作為該框類的正例,其余的作為負例.再進行SVM分類.

        ------這個表明了訓練過程是需要Grounding Truth(標定框)的, 是有監督的過程.

注意: 在預訓練和微調中使用的CNN網絡參數的共享,並且提取的特征數目為(類別N+背景1)個.

1.3 預測

    預測的過程和訓練基本相同,不同的是:

    1) 預測的過程沒有初始給定的標定框(Grounding Truth).

    2) Bounding Box回歸.

    其實簡單來說, 預測的過程就是根據在訓練過程中找到的CNN回歸值與所要預測的Grounding Truth之間的關系, 反向推導Grounding Truth的位置.

1.4 R-CNN的優劣分析及小結

    1) R-CNN較之於傳統方法的主要優勢:

    ① 使用了Select Search進行proposal的選擇, 極大地減少了proposal的數量.(百萬級別~2000左右)

    ② 深度學習提取特征來代替人為設計, 較大地提高了精度和效率.

    ③ 使用了Bounding Box回歸, 進一步提高了檢測的精度.

    2) R-CNN的不足之處:

    ① 訓練分為了多個步驟. 包括Select Search進行proposal的選擇, CNN的模型訓練(模型的預訓練和微調), SVM的分類,Bounding Box回歸等, 整個過程需要的時間過長.

    ② 由於當時的歷史等各個因素的影響, 使用了SVM進行多類別分類,要訓練多個分類器, 訓練時間較長

    ③ 測試時間長,由於每張圖片要處理大量的目標候選框

    3) 小結

    雖然R-CNN仍然存在很多的問題, 但是它打破了傳統的目標識別的方式, 基於深度神經網絡的目標識別技術也由此發展起來了.

2. SPP Net

    為了后面介紹Fast R-CNN, 這里我們簡要介紹下SPP Net的相關內容.

    SPP Net具有兩個特點:

    ① 結合金字塔的思想, 實現了實現了CNNs的多尺寸輸入. 解決了因為CNNs對輸入的格式要求而進行的預處理(如crop,warp等)操作造成的數據信息的丟失問題.

    ② 只對原圖進行一次卷積操作. 

2.1 SPP Net的金字塔池化

    如上圖所示, 輸入圖片經過多個卷積層操作, 再將輸出的feature map輸入到SPP Net池化層, 最后將池化后的特征輸入全連接層.

    下面針對上圖來說說SPP Net池化層的思想.可以參見這里.

 

    我們使用三層的金字塔池化層pooling,分別設置圖片切分成多少塊,論文中設置的分別是(1,4,16),然后按照層次對這個特征圖feature A進行分別處理(用代碼實現就是for(1,2,3層)),也就是在第一層對這個特征圖feature A整個特征圖進行池化(池化又分為:最大池化,平均池化,隨機池化),論文中使用的是最大池化,得到1個特征。

    第二層先將這個特征圖feature A切分為4個(20,30)的小的特征圖,然后使用對應的大小的池化核對其進行池化得到4個特征,

    第三層先將這個特征圖feature A切分為16個(10,15)的小的特征圖,然后使用對應大小的池化核對其進行池化得到16個特征.

    最后將這1+4+16=21個特征輸入到全連接層,進行權重計算. 當然了,這個層數是可以隨意設定的,以及這個圖片划分也是可以隨意的,只要效果好同時最后能組合成我們需要的特征個數即可.

2.2 SPP Net的一次卷積

    由於R-CNN先獲取proposal,再進行resize,最后輸入CNN卷積, 這樣做效率很低. SPP Net針對這一缺點, 提出了只進行一次原圖的卷積操, 得到feature map , 然后找到每一個proposal在feature map上對應的patch, 將這個patch作為每個proposal的卷積特征輸入到SPP Net中,進行后續運算. 速度提升百倍.

3. Fast R-CNN

    Fast R-CNN主要作用是實現了對R-CNN的加速, 它在R-CNN的基礎上主要有以下幾個方面的改進:

    ① 借鑒了SPP Net的思路, 提出了簡化版的ROI池化層(沒有使用金字塔), 同時加入了候選框映射的功能, 使得網絡能夠進行反向傳播, 解決了SPP的整體網絡訓練的問題.

    ② 多任務Loss層. 1) 使用了softmax代替SVM進行多分類. 2) SmoothL1Loss取代了 Bounding Box回歸.

3.1  基本工作流程

    1) 接收一個圖像, 使用Selective Search選擇大約2000個從上到下的類無關的候選區域(proposal).

    2) 對整張圖片進行卷積操作提取特征, 得到feature map.

    3) 找到每個候選框在feature map中的映射patch. 將patch作為每個候選框的特征輸入到ROI池化層及后面的層.

    4) 將提取出的候選框的特征輸入到softmax分類器中進行分類.==>替換了R-CNN的SVM分類.

    5) 使用SmoothL1Loss回歸的方法對於候選框進一步調整位置.

3.2 Fast R-CNN的優點及其不足之處

    1) 優點

    融合了R-CNN和SPP Net的精髓, 並且引入了多任務損失函數 ,極大地特高了算法的效率, 使得整個網絡的訓練和測試變得較為簡單(相對R-CNN而言).

    2) 不足

    沒有對Selective Search進行候選區域(region proposal)的選擇進行改進, 仍然不能實現真正意義上的edge-to-edge(端到端)的訓練和測試.

4. Faster R-CNN

    Faster R-CNN和Faste R-CNN的不同點主要是使用RPN網絡進行region proposal的選擇, 並且將RPN網絡合並到CNN網絡中, 真正地實現了端到端的目標檢測.這也是 Faster R-CNN的里程碑式的貢獻.

    Faster R-CNN的網絡拓撲圖如下圖所示.

4.1 基本工作流程

 

    1. 對整張圖片輸進CNN網絡,得到feature map.

    2. 卷積特征輸入到RPN,得到候選框的特征信息.

    3. 對候選框中提取出的特征,使用分類器判別是否屬於一個特定類.

    4. 對於屬於某一特征的候選框,用回歸器進一步調整其位置.

4.2 RPN

    用於提取region proposal的神經網絡叫做Region Proposal Network(簡稱RPN).

    RPN網絡的特點在於通過滑動窗口的方式實現候選框的提取,每個滑動窗口位置生成9個候選窗口(不同尺度、不同寬高), 提取對應9個候選窗口(anchor)的特征,用於目標分類和邊框回歸,與FastRCNN類似。目標分類只需要區分候選框內特征為前景或者背景。

    1) 候選框的選取依據:

    ① 對於IoU大於等於0.7的標記為前景樣本, 低於0.3的樣本標記為后景樣本.

    ② 丟棄①中所有的邊界樣本

    對於每一個位置,通過兩個全連接層(目標分類+邊框回歸)對每個候選框(anchor)進行判斷,並且結合概率值進行舍棄(僅保留約300個anchor),沒有顯式地提取任何候選窗口,完全使用網絡自身完成判斷和修正。

    2) 損失函數

    同時使用兩種損失函數:

    a. 分類的誤差.

    b. 前景樣本的窗口位置的偏差.

    3) 模型訓練

 

    從模型訓練的角度來看,通過使用共享特征交替訓練的方式,達到接近實時的性能,交替訓練方式描述為:

    1)根據現有網絡初始化權值w,訓練RPN;

    2)用RPN提取訓練集上的候選區域,用候選區域訓練FastRCNN,更新權值w;

    3)重復1、2,直到收斂.

4.3 Faster R-CNN的優點及其不足之處

    1) 優點

    Faster R-CNN將我們一直以來的目標檢測的幾個過程(預選框生成, CNN特征提取, SVM/softmax/CNN預選框分類,y 預選框位置微調)完全被統一到同一個網絡中去, 從真正意義上實現了從端到端的訓練和測試.

    2) 不足

    預先獲取預選區域,再對預選區域進行分類, 仍然具有較大的運算量, 還是沒有實現真正意義上的實時檢測的要求.

三  小結

       本節介紹基於region proposal的目標檢測與識別算法, 從最初的R-CNN, fast R-CNN,  直到最后的faster R-CNN, 逐步實現了端到端的目標識別和檢測的網絡.網絡訓練和測試的效率也有了一個較大的提升.可以說基於region proposal的R-CNN系列目標檢測與識別算法是當前目標最主要的一個分支。

    下一章我們將講述第二類--基於回歸的目標檢測與識別算法.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM