衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

目標檢測一階段與二階段算法簡介

新機器視覺 ? 來源:跑碼地Coovally AI ? 2023-05-12 15:35 ? 次閱讀

目標檢測任務

4c2228ea-f076-11ed-90ce-dac502259ad0.png

目標檢測的任務是找出圖像或視頻中的感興趣目標,同時檢測出它們的位置和大小,是機器視覺領域的核心問題之一。

目標檢測過程中有很多不確定因素,如圖像中目標數量不確定,物體有不同的外觀、形狀、姿態,加之物體成像時會有光照、遮擋等因素的干擾,導致檢測算法有一定的難度。

two stage與one stage

進入深度學習時代以來,物體檢測發展主要集中在兩個方向:two stage 算法如 R-CNN 系列和one stage 算法如 YOLO、SSD 等。兩者的主要區別在于 two stage 算法需要先生成 proposal(一個有可能包含待檢物體的預選框),然后進行細粒度的物體檢測。而 one stage 算法會直接在網絡中提取特征來預測物體分類和位置。

4c3b973a-f076-11ed-90ce-dac502259ad0.png

Two-Stage算法(段到段)

4c62d232-f076-11ed-90ce-dac502259ad0.png

使用各種CNN卷積神經網絡作為backbone主干網絡,進行特征提取,然后進行一步粗分類(區分前景和后景)和粗定位(anchor),也就是說在上圖的“產生候選區域CNN特征”之前還應該有一個框“使用RPN網絡產生候選區CNN特征”。

two-stage常見算法:

4c769e8e-f076-11ed-90ce-dac502259ad0.png

One-Stage算法(端到端):

one-stage算法使用CNN卷積特征,直接回歸物體的類別概率和位置坐標值。

4c8d3c70-f076-11ed-90ce-dac502259ad0.png

two-stage與one-stage對比:

  • two-stage精度高但速度慢,one-stage速度快但精度稍遜;

  • two-stage目標檢測器采用了兩段結構采樣來處理類別不均衡的問題(意思就是在同一張圖片中需要進行檢測的目標太少,不需要檢測的背景信息太多),一階段中:rpn使正負樣本更加均衡(先粗分類,區分前后景),再粗回歸,使用Anchor來擬合bbox,然后再二階段精調;

  • One stage detector 的一個通病就是既要做定位又要做classification。最后幾層1x1 conv layer的loss混在一起,并沒有什么專門做detection或者專門做bbox regression的參數,那每個參數的學習難度就大一點;

  • Two stage detector 的第一個stage相當于先拿一個one stage detector來做一次前景后景的classification + detection。這個任務比one stage detector的直接上手N class classification + detection要簡單很多。有了前景后景,就可以選擇性的挑選樣本使得正負樣本更加均衡,然后拿著一些參數重點訓練classification。訓練classification的難度也比直接做混合的classification和regression 簡單很多;

  • two-stage其實就是把一個復雜的大問題拆分成更為簡單的小問題。各個參數有專攻,Two Stage Detector 在這個方面是有優勢的。但one stage detector 里如果用了 focal loss 和 separate detection/classification head 那效果跟 two stage detector 應該是一樣的。

優缺點對比:

one-stage

two-stage

優勢

速度快

精度高

定位、檢出率

避免背景錯誤,產生false

positives

Anchor機制

學到物體的

泛化特征

共享計算量

劣勢

精度低

定位、檢出率

速度慢

小物體的

檢測效果不好

訓練時間長

誤報率高

Coovally部分內置目標檢測算法介紹

4ca8862e-f076-11ed-90ce-dac502259ad0.png

Two-Stage算法示例

Faster R-CNN

Faster R-CNN 取代selective search,直接通過一個Region Proposal Network (RPN)生成待檢測區域,這么做,在生成RoI區域的時候,時間也就從2s縮減到了10ms。下圖是Faster R-CNN整體結構。

4cba31e4-f076-11ed-90ce-dac502259ad0.png

由上圖可知,Faster R-CNN由共享卷積層、RPN、RoI pooling以及分類和回歸四部分組成:

  • 首先使用共享卷積層為全圖提取特征feature maps;

  • 將得到的feature maps送入RPN,RPN生成待檢測框(指定RoI的位置),并對RoI的包圍框進行第一次修正;

  • RoI Pooling Layer根據RPN的輸出在feature map上面選取每個RoI對應的特征,并將維度置為定值;

  • 使用全連接層(FC Layer)對框進行分類,并且進行目標包圍框的第二次修正。尤其注意的是,Faster R-CNN真正實現了端到端的訓練(end-to-end training)。Faster R-CNN最大特色是使用了RPN取代了SS算法來獲取RoI,以下對RPN進行分析。

RPN

經典的檢測方法生成檢測框都非常耗時,如OpenCV adaboost使用滑動窗口+圖像金字塔生成檢測框;或如R-CNN使用SS(Selective Search)方法生成檢測框。

而Faster R-CNN則拋棄了傳統的滑動窗口和SS方法,直接使用RPN生成檢測框,這也是Faster R-CNN的巨大優勢,能極大提升檢測框的生成速度。下圖為RPN的工作原理

4cd5634c-f076-11ed-90ce-dac502259ad0.png

上圖展示了RPN網絡的具體結構。

可以看到RPN網絡實際分為2條支線,上面一條支線通過softmax來分類anchors獲得前景foreground和背景background(檢測目標是foreground),下面一條支線用于計算anchors的邊框偏移量,以獲得精確的proposals。

而最后的proposal層則負責綜合foreground anchors和偏移量獲取proposals,同時剔除太小和超出邊界的proposals。其實整個網絡到了Proposal Layer這里,就完成了相當于目標定位的功能。

anchor:簡單地說,RPN依靠一個在共享特征圖上滑動的窗口,為每個位置生成9種預先設置好長寬比與面積的目標框(即anchor)。

分類和定位

Faster R-CNN中的RoI Pooling Layer與 Fast R-CNN中原理一樣。

在RoI Pooling Layer之后,就是Faster R-CNN的分類器和RoI邊框修正訓練。分類器主要是分這個提取的RoI具體是什么類別(人,車,馬等),一共C+1類(包含一類背景)。

RoI邊框修正和RPN中的anchor邊框修正原理一樣,同樣也是SmoothL1 Loss,值得注意的是,RoI邊框修正也是對于非背景的RoI進行修正,對于類別標簽為背景的RoI,則不進行RoI邊框修正的參數訓練。

One-Stage算法示例

1. Yolo

針對于two-stage目標檢測算法普遍存在的運算速度慢的缺點,Yolo創造性的提出了one-stage,也就是將物體分類和物體定位在一個步驟中完成。

Yolo直接在輸出層回歸bounding box的位置和bounding box所屬類別,從而實現one-stage。

通過這種方式,Yolo可實現45幀每秒的運算速度,完全能滿足實時性要求(達到24幀每秒,人眼就認為是連續的)。

整個系統如下圖所示:

4cf0b07a-f076-11ed-90ce-dac502259ad0.png

4d0e440a-f076-11ed-90ce-dac502259ad0.png

主要分為三個部分:卷積層,目標檢測層,NMS篩選層。

卷積層

采用Google inceptionV1網絡,對應到上圖中的第一個階段,共20層。

這一層主要是進行特征提取,從而提高模型泛化能力。但作者對inceptionV1進行了改造,他沒有使用inception module結構,而是用一個1x1的卷積,并聯一個3x3的卷積來替代(可以認為只使用了inception module中的一個分支,應該是為了簡化網絡結構)。

目標檢測層

先經過4個卷積層和2個全連接層,最后生成7x7x30的輸出。

先經過4個卷積層的目的是為了提高模型泛化能力。

Yolo將一副448x448的原圖分割成了7x7個網格,然后每個單元格負責去檢測那些中心點落在該格子內的目標。

4d281e16-f076-11ed-90ce-dac502259ad0.png

NMS篩選層

篩選層是為了在多個結果中(多個bounding box)篩選出最合適的幾個,這個方法和faster R-CNN 中基本相同。都是先過濾掉score低于閾值的box,對剩下的box進行NMS非極大值抑制,去除掉重疊度比較高的box(NMS具體算法可以回顧上面faster R-CNN小節)。

這樣就得到了最終的最合適的幾個box和他們的類別。

Yolo損失函數

yolo的損失函數包含三部分,位置誤差,confidence誤差,分類誤差。具體公式如下:

4d55f0f2-f076-11ed-90ce-dac502259ad0.png

誤差均采用了均方差算法,Yolo算法開創了one-stage檢測的先河,它將物體分類和物體檢測網絡合二為一,都在全連接層完成。故它大大降低了目標檢測的耗時,提高了實時性。

但它的缺點也十分明顯:

  • 每個網格只對應兩個bounding box,當物體的長寬比不常見(也就是訓練數據集覆蓋不到時),效果很差;

  • 原始圖片只劃分為7x7的網格,當兩個物體靠的很近時,效果很差;

  • 最終每個網格只對應一個類別,容易出現漏檢(物體沒有被識別到);

  • 對于圖片中比較小的物體,效果很差。

2. SSD

Faster R-CNN準確率mAP較高,漏檢率recall較低,但速度較慢。而Yolo則相反,速度快,但準確率和漏檢率不盡人意。

SSD綜合了他們的優缺點,對輸入300x300的圖像,在voc2007數據集上test,能夠達到58 幀每秒( Titan X 的 GPU ),72.1%的mAP。

SSD和Yolo一樣都是采用一個CNN網絡來進行檢測,但是卻采用了多尺度的特征圖,SSD網絡結構如下圖:

4d68407c-f076-11ed-90ce-dac502259ad0.png

和Yolo一樣,也分為三部分:卷積層,目標檢測層和NMS篩選層。

卷積層

SSD論文采用了VGG16的基礎網絡,其實這也是幾乎所有目標檢測神經網絡的慣用方法。先用一個CNN網絡來提取特征,然后再進行后續的目標定位和目標分類識別。

目標檢測層

這一層由5個卷積層和一個平均池化層組成。去掉了最后的全連接層。SSD認為目標檢測中的物體,只與周圍信息相關,它的感受野不是全局的,故沒必要也不應該做全連接。SSD的特點如下:

  • 多尺寸feature map上進行目標檢測。每一個卷積層,都會輸出不同大小感受野的feature map。在這些不同尺度的feature map上,進行目標位置和類別的訓練和預測,從而達到多尺度檢測的目的,可以克服yolo對于寬高比不常見的物體,識別準確率較低的問題。而yolo中,只在最后一個卷積層上做目標位置和類別的訓練和預測。這是SSD相對于yolo能提高準確率的一個關鍵所在。

4d7905a6-f076-11ed-90ce-dac502259ad0.png

如上所示,在每個卷積層上都會進行目標檢測和分類,最后由NMS進行篩選,輸出最終的結果。多尺度feature map上做目標檢測,就相當于多了很多寬高比例的bounding box,可以大大提高泛化能力。

  • 設置先驗框。在Yolo中,每個單元預測多個邊界框,但是其都是相對這個單元本身(正方塊),但是真實目標的形狀是多變的,Yolo需要在訓練過程中自適應目標的形狀。而SSD和Faster R-CNN相似,也提出了anchor的概念。卷積輸出的feature map,每個點對應為原圖的一個區域的中心點。以這個點為中心,構造出6個寬高比例不同,大小不同的anchor(SSD中稱為default box)。每個anchor對應4個位置參數(x,y,w,h)和21個類別概率(voc訓練集為20分類問題,在加上anchor是否為背景,共21分類)。

4d96f070-f076-11ed-90ce-dac502259ad0.png

SSD的檢測值也與Yolo不太一樣。對于每個單元的每個先驗框,其都輸出一套獨立的檢測值,對應一個邊界框,主要分為兩個部分。第一部分是各個類別的置信度或者評分,值得注意的是SSD將背景也當做了一個特殊的類別,如果檢測目標共有 個類別,SSD其實需要預測 個置信度值,其中第一個置信度指的是不含目標或者屬于背景的評分。后面當我們說 個類別置信度時,請記住里面包含背景那個特殊的類別,即真實的檢測類別只有 個。在預測過程中,置信度最高的那個類別就是邊界框所屬的類別,特別地,當第一個置信度值最高時,表示邊界框中并不包含目標。第二部分就是邊界框的location,包含4個值 ,分別表示邊界框的中心坐標以及寬高。但是真實預測值其實只是邊界框相對于先驗框的轉換值(paper里面說是offset,但是覺得transformation更合適,參見R-CNN。

另外,SSD采用了數據增強。生成與目標物體真實box間IOU為0.1 0.3 0.5 0.7 0.9的patch,隨機選取這些patch參與訓練,并對他們進行隨機水平翻轉等操作。SSD認為這個策略提高了8.8%的準確率。

篩選層

和yolo的篩選層基本一致,同樣先過濾掉類別概率低于閾值的default box,再采用NMS非極大值抑制,篩掉重疊度較高的。只不過SSD綜合了各個不同feature map上的目標檢測輸出的default box。


			

審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 算法
    +關注

    關注

    23

    文章

    4630

    瀏覽量

    93362
  • 目標檢測
    +關注

    關注

    0

    文章

    211

    瀏覽量

    15664
  • 深度學習
    +關注

    關注

    73

    文章

    5516

    瀏覽量

    121554

原文標題:目標檢測一階段與二階段算法簡介

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    FF否認CES發布會耗資巨大 稱工廠將進入第二階段

    Sampson對騰訊科技獨家回應稱,上述消息不屬實,實際上,內華達工廠在12月份已經完成第一階段的工作,對于第二階段的準備工作正在進行,且第二階段的建設即將啟動。
    發表于 01-19 09:46 ?725次閱讀

    機器學習的第二階段:推理

    我們之前討論過,訓練過程是機器學習的第一階段,而推理則緊隨其后,為機器學習的第二階段。在訓練階段算法會生成新模型或把預訓練模型重新調整用于特定應用,并幫助模型學習其參數。在推理
    發表于 06-28 16:03 ?6051次閱讀

    為什么uboot在第一階段就已經進行時鐘初始化了

    請問:1. uboot在第一階段就已經進行時鐘初始化了,為什么第二階段還要進行,兩者之間有什么區別?2. 在start_armboot中為什么init_fnc_t**init_fnc_ptr
    發表于 09-23 02:28

    豐厚獎金 | 首屆OpenHarmony開源開發者成長計劃(第二階段申請截止)

    11 日)項目申領已有 20 余項目成功匹配導師,進入開發階段。第二階段 (11 月 12 日-11 月 19 日)項目實現題多報,并增加開放類賽道,歡迎導師、同學們自帶項目參與成長計劃。第
    發表于 11-15 16:45

    典型二階段低通濾波器電路圖

    典型二階段低通濾波器電路圖
    發表于 05-08 13:27 ?1963次閱讀
    典型<b class='flag-5'>二階段</b>低通濾波器電路圖

    基本二階段低通濾波器電路圖

    基本二階段低通濾波器電路圖
    發表于 05-08 13:35 ?1384次閱讀
    基本<b class='flag-5'>二階段</b>低通濾波器電路圖

    TD-SCDMA規模測試第一階段被曝結果良好

    新浪科技訊 8月9日,知情人士透露,TD-SCDMA規模試驗網第一階段測試結束,在相關的總結會上,有關人士表示,從總體上來說,TD-SCDMA試驗第一階段空載測試結果良好,下階段將進入N
    發表于 06-24 08:46 ?493次閱讀

    4G標準:TD-LTE規模試驗進入第二階段

    工信部已批準TD-LTE規模試驗進入第二階段,這一階段將主要針對基于3GPP R9標準的系統設備和包含TD-SCDMA在內的多模終端開展測試。
    發表于 02-03 10:36 ?549次閱讀

    英特爾攜手愛立信完成第二階段的5G技術研發試驗

    英特爾全程積極參與中國5G技術研發試驗,是去年第一階段測試中唯一一家獲得表彰證書的芯片企業。在今年的第二階段測試中,英特爾攜手愛立信,完成5G低頻段3.5GHz異廠商間的端到端互聯互通(IoDT)測試。
    發表于 09-29 17:03 ?1147次閱讀

    基于RobustICA的二階段盲源分離算法

    針對含噪環境下數字調制混合信號盲源分離( BSS)誤碼率(BER)過高的問題,提出了種基于RobustICA的二階段盲源分離算法R-TSBS。該算法采用RobustICA
    發表于 01-04 16:24 ?0次下載

    含風電場的機組組合二階段隨機規劃模型

    提出種含風電場的機組組合二階段隨機規劃模型,將風電功率作為隨機變量處理,目標函數包含常規機組發電成本和切負荷懲罰費用,由于風電功率存在多種可能的情景,后種費用采用期望值形式,同時提
    發表于 03-28 15:58 ?0次下載

    特斯拉柏林超級工廠第一階段目標公布

    特斯拉是在官網新開通的個頁面中,披露這工廠第一階段目標的,新開通的頁面也公布了德國這超級工廠的更多細節信息。
    的頭像 發表于 02-20 14:28 ?2081次閱讀

    蘋果公司的AR眼鏡將進入研發第二階段

    1月6日上午消息,關注產業鏈的媒體DigiTimes報道稱,蘋果公司的AR眼鏡將進入“研發第二階段”。
    的頭像 發表于 01-06 09:12 ?1873次閱讀

    LT3742:元,二階段Stephn交換控制器數據Sheet

    LT3742:元,二階段Stephn交換控制器數據Sheet
    發表于 05-11 11:26 ?0次下載
    LT3742:<b class='flag-5'>二</b>元,<b class='flag-5'>二階段</b>Stephn交換控制器數據Sheet

    二階段恒流限壓式鉛酸電池充電器原理

    電子發燒友網站提供《二階段恒流限壓式鉛酸電池充電器原理.pdf》資料免費下載
    發表于 11-13 14:29 ?0次下載
    <b class='flag-5'>一</b>款<b class='flag-5'>二階段</b>恒流限壓式鉛酸電池充電器原理
    百家乐官网娱乐官网| 百家乐官网软件代打| 澳门档百家乐的玩法技巧和规则| 百家乐官网庄比闲多多少| 大发888娱乐| 大发888真人真钱赌博| 缅甸百家乐赌场娱乐网规则| 顶尖百家乐对单| 淘金百家乐官网的玩法技巧和规则| 真人百家乐官网策略| 利赢百家乐官网现金网| 大发888中文官网| 威尼斯人娱乐平台博彩投注平| 百家乐的必赢方法| 百家乐闲庄概率| 怎么赌百家乐官网能赢| 桐乡市| 大发888手机版下载| 百家乐平注法到65| 立即博百家乐现金网| 挖掘百家乐赢钱秘籍| 百家乐官网德州| 阴宅24层手机罗盘| 百家乐发牌的介绍| 现场百家乐百家乐| 百家乐l路单| 百家乐连锁| 天津水果机定位器| 博e百娱乐城怎么样| 百家乐赌场方法| 金百家乐的玩法技巧和规则 | 澳门百家乐视频| 太阳城百家乐怎么出千| 易胜博百家乐娱乐城| 百家乐输惨了| 大发888 ber娱乐场下载| 大发888官网授权网| 大发888的概述| 大发888网址官方| E世博投注| 沈阳娱乐棋牌网|