日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 目标检测 >内容正文

目标检测

目标检测技术演化:从R-CNN到Faster R-CNN

發布時間:2024/8/23 目标检测 89 豆豆
生活随笔 收集整理的這篇文章主要介紹了 目标检测技术演化:从R-CNN到Faster R-CNN 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

摘要:?一文了解目標檢測技術發展,不要錯過喲。

目標檢測旨在準確地找到給定圖片中物體的位置,并將其正確分類。準確地來講,目標檢測需要確定目標是什么以及對其定位。

然而,想要解決這個問題并不容易。因為,目標的大小,其在空間中的方向,其姿態,以及其在圖片中的位置都是變化的。

這里有一張圖片,我們需要識別圖片中的物體,并且用方框將該物體圈出來。

圖像識別(分類)

  • 輸入:圖像
  • 輸出:目標類型
  • 評價指標:精確度
  • 定位:

  • 輸入:圖像
  • 輸出:方框在圖片中的位置(x,y,w,h)
  • 評價指標:檢測評價函數(IOU)
  • 如今大火的卷積神經網絡幫助我們很好地進行圖像識別。但是,我們仍需要一些額外的功能來進行精確定位,深度學習在這里發揮了很好的作用。

    在本文中,我們將從目標定位的角度入手探討目標檢測技術的發展。我們將按著如下的演化順序講述:R-CNN->SPP Net->Fast R-CNN-> Faster R-CNN

    在開始前,我們將對基于區域的卷積神經網絡(R-CNN)進行簡單的介紹。

    將定位看作回歸問題

    如果我們將其看作是一個回歸問題,則需要對(x,y,w,h)四個參數進行預測,從而得到方框所在位置。


    步驟1

  • 先解決最簡單的問題:使用神經網絡識別圖片
  • 在AlexNet VGG GoogleLenet上微調(fine-tuning)

  • ?

    步驟2

  • 在上述神經網絡的尾部展開(CNN前面保持不變,我們對CNN的結尾處做出改進:加了兩個頭:“分類頭”和“回歸頭”)
  • 將其轉化為分類 + 回歸模型

  • ?

    步驟3

  • 在回歸部分使用歐氏距離損失
  • 使用隨機梯度下降進行訓練
  • 步驟4

  • 在預測部分結合回歸和分類
  • 實現不同的功能
  • 接著,我們將進行兩次微調操作。第一次在AlexNet上進行,第二次將頭部改為回歸頭。

    回歸部分加在哪里呢?

    兩種解決辦法:

  • 加在最后一個卷積層后面(如VGG)
  • 加在最后一個全連接層后面(如R-CNN)
  • 但是實現回歸操作太困難了,我們需要找到一種方法將其變為分類問題。回歸的訓練參數收斂的時間要長得多,所以上面的網絡采取了用分類的網絡來計算網絡共同部分的連接權值。

    取圖像窗口

  • 依舊使用前面所提及的分類+回歸的思路
  • 首先選取不同的大小的方框
  • 讓方框出現在不同的位置,計算出這個方框在不同位置的得分
  • 取得分最高的那方框
  • ?

    左上角的黑框:得分0.5
    右上角的黑框:得分0.75
    左下角的黑框:得分0.6
    右下角的黑框:得分0.8

    根據這些得分,我們選擇右下角的黑框作為所要預測的目標位置。

    注:有的時候也會選擇得分最高的兩個方框,然后取兩個方框的交集作為最終需要預測的位置。

    問題:方框的大小如何確定呢?

    當取了不同的方框后,依次從左上角掃描到右下角。

    總結:

    對第一張圖片,我們使用不同大小的方框(遍歷整張圖片)將圖片截取出來,輸入到CNN,然后CNN會輸出這個框的分類以及這個框圖片對應的(x,y,w,h)。

    ?

    但是,這個方法太耗費時間了,需要做一些優化。最初的網絡模型如下圖所示:

    ?

    所做優化:將全連接層改為為卷積層以提高速度。

    ?

    目標檢測

    當圖中有多個物體存在的時候我們應該如何做呢?現在我們所要解決的問題就變成了:多個目標識別+定位。

    現在我們還能將其看作分類問題么?

    ?

    可是,將其看作分類問題的話會有如下矛盾產生:

  • 你需要找到許多的位置,并提供不同大小的方框
  • 你還需要對方框中的圖像進行分類
  • 當然,如果你的GPU很強大,將其看作分類問題也沒什么不妥
  • 如果將其看作分類問題,我們能做哪些優化呢?我們并不想使用太多的方框在不同的位置間來回嘗試。下面,給出了一種解決方案:

    首先,我們需要找出包含所有目標的方框。其中有的方框會產生重疊或者互相包含,這樣我們就不用枚舉出所有的方框了。

    ?

    對于候選框的獲取,前人發現了很多種方法:比如EdgeBoxes和Selective Search。以下是候選方框獲取方法的性能對比:

    ?

    對于“選擇性搜索”是如何選出所有候選方框這個問題,本文不作介紹,有興趣的可以對其相關論文進行研究。

    R-CNN

    上述提及的思路推動了R-CNN的面世。讓我們以同樣的圖片為例,對R-CNN進行講解。

    步驟1

    下載一個分類模型(如AlexNet)

    ?


    步驟2

    對模型進行微調

  • 將分類數目從1000降至20
  • 去掉最后一個全連接層
  • ?

    步驟3

    特征提取:

  • 提取出圖像中所有的候選方框(選擇性搜索)
  • 對每一個區域:調整區域的大小,使其與CNN的輸入一致,做一次向前運算,將第五個池化層的輸出存入硬盤中
  • ?

    步驟4

  • 訓練一個支持向量機(SVM)分類器(二分類),用以判斷這個候選框里物體的類別
  • 判斷SVM是否屬于對應的類別。如果是,就是positive,如果否,就是negative。下面是一個給狗分類的SVM示例。
  • ?

    步驟5

    使用回歸器對候選方框的位置進行仔細校正。對于每一個分類,都需要訓練一個線性回歸模型,用以判斷這個方框是否足夠匹配。

    ?

    SPP Net

    空間金字塔池化(SPP:Spatial Pyramid Pooling)概念的提出對R-CNN的發展有著非凡的意義。在此我們會對SPP進行簡明的介紹。

    SPP有兩個特征:

    1. 結合空間金字塔法,實現CNN的多尺度輸入
    一般來說,在CNN后面會接有一個全連接層或者一個分類器。它們都需要調整至合適大小方可作為輸入,因此需要對輸入數據進行分割和變形。然而,這些預處理可能會造成數據的丟失或幾何的失真。SPP Net的第一個貢獻就是將金字塔思想與CNN相結合,實現數據的多尺度輸入。
    如下圖所示,在卷積層和全連接層之間加入一個SPP層。此時,網絡的輸入尺度可以是任意的,在SPP層中,池化所需的過濾器會根據輸入自動調節大小,但SPP的輸出尺度確實保持不變的。

    ?

    2. 只對原始圖像提取一次卷積特征
    在R-CNN中,每個候選框會將其尺寸調至統一,然后分別作為CNN的輸入,但這樣的做法降低了效率。SPP Net針對這個缺點做了相應的優化:只對原始圖像進行一次卷積操作,得到特征圖,然后找到每個候選方框在特征圖上的映射,然后將該映射作為卷積特征輸入SPP層。這種優化方法節約了大量的計算時間,相比 R-CNN快上百倍。

    ?

    Fast R-CNN

    SPP Net非常實用,有學者就在R-CNN的基礎上結合SPP Net,提出Fast R-CNN,進一步提升了性能。

    R-CNN與Fast R-CNN有什么區別呢?

    首先,讓我們來看看R-CNN的不足之處。盡管它在提取潛在邊框作為輸入時,使用了選擇性搜索以及其它處理方法,但是R-CNN在運算速度上仍然遇到了瓶頸。這是由于計算機在對所有區域進行特征提取時會進行大量的重復計算。

    為了解決這個問題,研究學者提出了Fast R-CNN。

    ?

    在Fast R-CNN中,有一個被稱為ROI Pooling的單層SPP網絡層。該網絡層能夠將不同尺寸的輸入映射為一系列固定尺度的特征向量,正如我們所知,conv,pooling,relu以及一些其它操作并不需要固定尺度的輸入。因此,當我們在原始圖片上執行這些操作后,由于輸入圖片的尺寸不同,得到的特征圖尺寸也不一樣,不能將它們直接連接到一個全連接層上進行分類,但是我們可以在其中加入ROI Pooling層,以一個固定尺度的特征來表示每個區域,再通過softmax進行分類。

    此外,前面所講的R-CNN需要先有一個proposal,再輸入到CNN中進行特征提取,之后采用SVM進行分類,最后進行邊框回歸。但是在Fast R-CNN模型中,作者將邊框回歸引入神經網絡,并將其與區域分類合并,形成一個多任務模型。

    實驗證明,這兩個任務能夠共享卷積特征。Fast R-CNN的一個額外貢獻是使Region Proposal+CNN這一框架得以運用,同時讓人們看到進行多類檢測的同時仍保證精度是能夠實現的。

    R-CNN總結:

  • R-CNN有一些缺點
  • 主要缺點:因為每一個候選方框都需要獨立地輸入到CNN中,此操作十分耗費時間
  • 次要缺點:在共享層,不是每個候選方框都作為輸入進入到CNN中。相反,輸入的是一張完整的圖片,在第五個卷積層提取出每個候選方框的特征
  • 原始方法:大量候選方框(例如2000個)→CNN→得到每個候選方框的特征→分類+回歸
  • 現在的方法:完整的圖片→CNN→得到每個候選方框的特征→分類+回歸
    很明顯,Fast R-CNN比R-CNN在速度上有了大幅提升;與R-CNN對每個候選方框輸入到CNN中提取特征不同的是,Fast R-CNN只對輸入的整張圖片提取一次特征,然后在第五個卷積層上提取每個候選方框的特征,此操作只需要計算一次特征,剩下的操作在第五個卷積層上完成即可。
  • 性能的提升也十分明顯:

    ?

    Faster R-CNN

    毫無疑問,Fast R-CNN與傳統的CNN相比,在性能上有了大幅提升。但Fast R-CNN的一個主要問題在于它使用選擇性搜索去找所有的候選方框,這是非常耗時的。

    是否有更加高效的方法去找出所有的候選方框呢?

    解決辦法:增加一個可以對邊緣進行提取的神經網絡。換句話說,利用神經網絡去尋找所有的候選方框。能夠實現這種操作的神經網絡叫做區域生成網絡(RPN:Region Proposal Network)。

    讓我們看看RPN有哪些提升:

  • 在最后一個全連接層后加入RPN
  • RPN直接訓練得到候選區域
  • ?

    RPN總結:

  • 在特征圖上進行窗口滑動
  • 建立一個神經網絡用于目標分類以及方框的位置回歸
  • 滑動窗口的位置提供關于目標的大致位置信息
  • 回歸能夠提供一個更加精確的方框位置
  • ?

    四種損失函數:

  • RPN分類
  • RPN回歸
  • Fast R-CNN分類
  • Fast R-CNN回歸
  • ?

    ?

    ?

    速度比較

    Faster R-CNN的貢獻在于它設計了一個RPN網絡對候選區域進行提取,此步驟代替了耗時過多的選擇性搜索,使速度得到大幅提升。

    總結

    總的來說,從R-CNN,SPP-NET,Fast R-CNN到R-CNN,基于深度學習進行目標檢測的步驟得到了簡化,精度得到了提高,速度得到了提升。可以說,基于區域生成的系列R-CNN目標檢測算法在目標檢測領域已經成為最主要的分支。

    數十款阿里云產品限時折扣中,趕緊點擊領劵開始云上實踐吧!

    原文鏈接?

    本文為云棲社區原創內容,未經允許不得轉載。

    總結

    以上是生活随笔為你收集整理的目标检测技术演化:从R-CNN到Faster R-CNN的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。