部分基于深度學習的主流目標檢測算法

文章目錄

    • Anchor-Based方法
      • Two-stage目標檢測算法
        • RCNN
        • Fast RCNN
        • Faster RCNN
        • FPN(理解為Faster R-CNN中的一個關鍵組件或改進模塊)
      • One-stage目標檢測算法
        • YOLO
        • SSD
    • Anchor-Free方法
        • CornerNet
        • CenterNet
        • FSAF
        • FCOS
        • SAPD
    • 基于transformer的方法
        • DETR
    • 常用數據集
    • Reference

目標檢測是計算機視覺的一個非常重要的核心方向,它的主要任務目標定位和目標分類。

基于深度學習的目標檢測方法大致可分為兩類:Anchor based方法(一階段,二階段)、Anchor free方法、基于transformer的方法。

無論是anchor還是anchor free,檢測任務無非就是這樣的思路:

  1. 表示:如何表示圖像上的物體,如bbox,conner,center,reppoints等;

  2. 分配:如何分配正負樣本:IOU、高斯熱圖、centerness等;

  3. 分類:分類任務計算物體類別損失,解決樣本不平衡的問題;

  4. 回歸:回歸任務計算物體尺度、offset等等,以進行一些修正。

Anchor-Based方法

基于CNNs的目標檢測算法主要有兩條技術發展路線:anchor-based和anchor-free方法,而anchor-based方法則包括一階段和二階段檢測算法(二階段目標檢測算法一般比一階段精度要高,但一階段檢測算法速度會更快)。

局限性:

  1. Anchor的大小,數量,長寬比對于檢測性能的影響很大(通過改變這些超參數Retinanet在COCO benchmark上面提升了4%的AP),因此Anchor based的檢測性能對于anchor的大小、數量和長寬比都非常敏感。
  2. 這些固定的Anchor極大地損害了檢測器的普適性,導致對于不同任務,其Anchor都必須重新設置大小和長寬比。
  3. 為了去匹配真實框,需要生成大量的Anchor,但是大部分的Anchor在訓練時標記為負樣本,所以就造成了樣本極度不均衡問題(沒有充分利用fore-ground)。
  4. 在訓練中,網絡需要計算所有Anchor與真實框的IOU,這樣就會消耗大量內存和時間。

Two-stage目標檢測算法

二階段檢測算法主要的兩個階段:

Stage1: 從圖像中生成region proposals

Stage2: 從region proposals生成最終物體框

相較于單階段目標檢測算法,雙階段目標檢測算法先根據圖像提取候選框,然后基于候選區域做二次修正得到檢測點結果,檢測精度較高,但檢測速度較慢。

這類算法的開山之作是RCNN,隨后Fast RCNN、Faster RCNN依次對其進行了改進。

由于優秀的性能,Faster RCNN至今仍然是目標檢測領域很有競爭力的算法。隨后,FPN、Mask RCNN等算法又針對Faster RCNN的不足提出了改進,這進一步豐富了Faster RCNN的組件,提升了它的性能。

RCNN

簡介:
CNN首先通過選擇性搜索算法Selective Search從一組對象候選框中選擇可能出現的對象框,然后將這些選擇出來的對象框中的圖像resize到某一固定尺寸的圖像,并喂入到CNN模型(經過在ImageNet數據集上訓練過的CNN模型,如AlexNet)提取特征,最后將提取出的特征送入到分類器來預測該對象框中的圖像是否存在待檢測目標,并進一步預測該檢測目標具體屬于哪一類。

不足:
重疊框(一張圖片大2000多個候選框)特征的冗余計算使得整個網絡的檢測速度變得很慢(使用GPU的情況下檢測一張圖片大約需要14S)。

Fast RCNN

簡介:
在RCNN中,每個候選區域都需要用CNN單獨提取特征。為了減少算法的計算時間,Fast-RCNN希望在每張圖片上只使用一次CNN,就能提取到所有關注區域的特征。
該網路使得我們可以在相同的網絡配置下同時訓練一個檢測器和邊框回歸器。該網絡首先輸入圖像,圖像被傳遞到CNN中提取特征,并返回感興趣的區域ROI,之后再ROI上運用ROI池化層以保證每個區域的尺寸相同,最后這些區域的特征被傳遞到全連接層的網絡中進行分類,并用Softmax和線性回歸層同時返回邊界框。

不足:
與RCNN相比,Fast RCNN計算一張圖片只需要2秒,速度有大幅提升,每張圖片的計算時間只有但仍不夠理想。因為它依然用到了選擇性搜索方法得到感興趣區域,而這一過程通常很慢。

Faster RCNN

簡介:
Faster RCNN針對感興趣區域的生成方式,對RCNN進行了優化,進一步提高了計算速度和準確率。具體來說,Faster RCNN使用Region Proposal Network(RPN) 生成感興趣區域:
該網絡首先輸入圖像到卷積網絡中,生成該圖像的特征映射。在特征映射上應用Region Proposal Network,返回object proposals和相應分數。應用Rol池化層,將所有proposals修正到同樣尺寸。最后,將proposals傳遞到完全連接層,生成目標物體的邊界框。

不足:
時至今日,依然是目標檢測領域的主流算法之一。
雖然Faster RCNN的精度更高,速度更快,也非常接近于實時性能,但它在后續的檢測階段中仍存在一些計算冗余;除此之外,如果IOU閾值設置的低,會引起噪聲檢測的問題,如果IOU設置的高,則會引起過擬合。

在R-CNN系列算法中,包括原始的R-CNN以及其后續改進版本Fast R-CNN和Faster R-CNN,卷積神經網絡(CNN)通常用作特征提取器(backbone)。這些算法的核心思想是使用深度學習來提取圖像特征,然后在此基礎上進行目標檢測任務。
在這些算法中,CNN backbone可以是不同的架構,如VGG-16、ResNet-50、ResNet-101等等。VGG-16是R-CNN原始論文中使用的backbone。

FPN(理解為Faster R-CNN中的一個關鍵組件或改進模塊)

簡介:
Faster R-CNN是利用單個高層特征圖(下采樣四倍的卷積層–Conv4)進行物體的分類和bounding box的回歸。這樣做對小物體的檢測不利,因為小物體本身具有的像素信息較少,在下采樣的過程中,這些信息很容易丟失,從而降低了算法的性能。

為了處理這種物體大小差異十分明顯的檢測問題,FPN提出了特征金字塔網絡結構,它引入了多尺度特征,在只增加少量計算量的情況下,提升小物體的檢測性能。

具體來說,Faster RCNN將最后一層特征輸入到了RPN中,最后一層的特征經過3x3卷積,得到256個channel的卷積層,再分別經過兩個1x1卷積得到類別得分和邊框回歸結果。

而FPN將P2、P3、P4、P5、P6這五個特征層的特征都輸入到了RPN中。每個特征層的下采樣倍數不同,這意味著它們具有不同的尺度信息分離,因此作者將322、642、1282、2562、5122這五種尺度的anchor,分別對應到P2、P3、P4、P5、P6這五個特征層上,這樣一來,每個特征層只需要專門處理單一的尺度信息即可。

此外,作者通過實驗發現,如果將這5個特征層后面的RPN參數共享,所得到的結果與不共享幾乎沒有差別。這說明不同下采樣倍數之間的特征有相似語義信息。

性能:
將FPN技術應用于Faster RCNN網絡之后,網絡的檢測精度得到了巨大提高,再次成為當前的SOTA檢測算法。此后FPN成為了各大網絡(分類,檢測與分割)提高精度最重要的技術之一。

在Faster R-CNN中,FPN通常被集成到基礎的卷積神經網絡中,用來改進區域建議網絡(RPN)和后續的檢測性能。FPN的引入顯著提高了Faster R-CNN對小目標的檢測能力,因為它能夠更有效地捕捉到多尺度的目標信息。

One-stage目標檢測算法

相較于雙階段目標檢測算法,單階段目標驗測算法直接對圖像進行計算生成檢測結果,檢測低速度快,但檢測精度低。

這類算法的開山之作是YOLO,隨后SSD、Retinanet依次對其進行了改進,提出YOLO的團隊將這些有助于提升性能的 trick融入到YOLO算法中,后續又提出了4個改進版本YOLOv2~YOLOv5。

盡管預測準確率不如雙階段目標檢測算法,由于較快的運行速度,YOLO成為了工業界的主流。

YOLO

簡介:
雙階段目標檢測需要預先設置大量先驗框,并且需要專門的神經網絡RPN對先驗框進行位置修正。這種設定使得雙階段目標檢測算法復雜且計算慢。

YOLO是單階段目標檢測的開山之作,它只需要用神經網絡處理一次圖片,就可以同時預測得到位置和類別,從而將目標檢測任務定義為端到端的回歸問題,提升了計算速度。YOLO的工作流程如下:

對于一張輸入圖片,首先將圖片縮放成統一的尺寸,并在圖片上劃分出若干表格。隨后使用卷積神經網絡提取圖片特征,并使用全連接層在每個網格上進行回歸預測,每個網格預測K個box,每個box預測五個回歸值。其中的四個回歸值代表box的位置,第五個回歸值代表box中含有物體的概率和位置的準確程度。

隨后對于含有物體的box,使用全連接層,回歸預測物體的在各個類別的條件概率。因而,卷積網絡共輸出的預測值個數為N×(K×5+C),其中N為網格數,K為每個網格生成box個數,C為類別數。

不足:
盡管單階段模型顯著提高了計算速度,YOLO劃分網格的方式較為粗糙,在小目標檢測任務上表現不佳,總體性能弱于Faster RCNN。

SSD

簡介:
針對YOLO的不足,SSD借鑒了雙階段目標檢測算法的一些trick,在YOLO的基礎上進行了一系列改進:

YOLO利用單個高層特征進行目標檢測,SSD則是將特征提取網絡中不同層的多個特征輸入到目標檢測模塊,以希望提升小物體檢測的精度。

YOLO在每個網格上預測多個邊界框,但這些預測都相對這個正方形網格本身,與真實目標多變的形狀差異較大,這使得YOLO需要在訓練過程中自適應目標的形狀。SSD借鑒了Faster R-CNN中先驗框理念,為每個網格設置不同尺度、長寬比的先驗框,這在一定程度上減少訓練難度。

SSD還使用卷積層絡替代全連接層,針對不同特征圖進行回歸預測,這樣一來,對于形狀為mxnxp的特征圖,只需要采用3x3xp這樣比較小的卷積核得到檢測值,進一步減少了模型的參數量,提高了計算速度。

總而言之,SSD算法的主要創新點是提出了Multi-reference和Multi-resolution的檢測技術。SSD算法和先前的一些檢測算法的區別在于:先前的一些檢測算法只是在網絡最深層的分支進行檢測,而SSD有多個不同的檢測分支,不同的檢測分支可以檢測多個尺度的目標,所以SSD在多尺度目標檢測的精度上有了很大的提高,對小目標檢測效果要好很多。

性能:
SSD的改進,使得單階段目標檢測算法的性能基本與當時的Faster-RCNN持平,不過后續又被Faster-RCNN類算法超越。

Anchor-Free方法

基于Anchor的物體檢測問題通常被建模成對一些候選區域進行分類和回歸的問題,在一階段檢測器中,這些候選區域就是通過滑窗方式產生Anchor box,而在二階段檢測器中,候選區域是RPN生成的Proposal,但是RPN本身仍然是對滑窗方式產生的Anchor進行分類和回歸。基于Anchor的檢測算法由于Anchor太多導致計算復雜,及其所帶來的大量超參數都會影響模型性能。近年的Anchor free技術則摒棄Anchor,通過確定關鍵點的方式來完成檢測,大大減少了網絡超參數的數量。

CornerNet
CenterNet
FSAF
FCOS
SAPD

基于transformer的方法

對于目標檢測任務而言,理論上講,各個目標之間的關系是有助于提升目標檢測效果的。盡管傳統目標檢測方法使用到了目標之間的關系,直到Transformer模型面世,無論是單階段還是雙階段目標檢測,都沒有很好地利用到注意力機制。

一個可能的原因是目標與目標之間的關系難以建模,因為目標的位置、尺度、類別、數量都會因圖像的不同而不同。而現代基于CNN的方法大多只有一個簡單、規則的網絡結構,對于上述復雜現象有些無能為力。

針對這種情況,Relation Net和DETR利用Transformer將注意力機制引入到目標檢測領域。Relation Net利用Transformer對不同目標之間的關系建模,在特征之中融入了關系信息,實現了特征增強。DETR則是基于Transformer提出了全新的目標檢測架構,開啟了目標檢測的新時代。

DETR

簡介:
DETR是首個用transformer完成目標檢測任務的代表性工作。

首先,DETR使用CNN提取圖片的特征,再加上NLP領域常用的位置編碼,最終生成了一批序列化數據。

在encoder階段,將序列化數據其送入encoder中,利用注意力機制提取數據中的特征。在decoder階段,輸入N個隨機初始化向量,每個object query關注圖片的不同位置。經過decoder的解碼,最終會生成N個向量,每個向量對應一個檢測到的目標。最后將這N個向量輸入到神經網絡中,得到每個目標的類別和位置。

相較于其它目標檢測算法,DETR生成的檢測框數量大幅減少,與真實的檢測框數量基本一致。DETR使用匈牙利算法,將預測框與真實框進行了匹配,隨后就可以計算出loss,完成對模型的訓練。

性能:
DETR取得了好于Faster RCNN的檢測效果,并且它不需要預先指定候選區域,不需要使用NMS去除重復的目標框,算法流程十分簡潔。

常用數據集

目標檢測使用最多的四大公共數據集:

Pascal VOC

ILSVRC

MS-COCO

OID

Reference

https://zhuanlan.zhihu.com/p/393997909

https://zhuanlan.zhihu.com/p/485657298

https://zhuanlan.zhihu.com/p/94924987

https://blog.csdn.net/zhuquan945/article/details/79862522

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/13334.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/13334.shtml
英文地址,請注明出處:http://en.pswp.cn/web/13334.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vue嵌套路由

一、嵌套 children配置 1.父類路由 mymusic 2.子類路由 musicson 1.創建MusicSon組件 <template><div><p>從前和后來</p><p>唯一</p><p>運氣來的似有若無</p></div> </template><script>export defaul…

linux du 排除 某一個目錄 proc

Linux的du用法排除某個目錄_du -sh 排除目錄-CSDN博客 du -sh /* --exclude"*proc*"

通俗易懂的策略模式講解

什么是策略模式&#xff1f; 策略模式是一種設計模式&#xff0c;它允許你定義一系列的算法&#xff08;策略&#xff09;&#xff0c;并將每個算法封裝成一個對象。這樣&#xff0c;你可以輕松地切換不同的算法&#xff0c;而不需要改變原始代碼。 一個簡單的例子 假設你是…

韻搜坊 -- 前后端聯調實現搜索圖片

文章目錄 后端新建圖片類型Picture創建圖片接口類PictureController新建PictureQueryRequest創建Service類創建實現類PictureServiceImpl 前端添加接口獲取后端數據修改picture頁面內容添加文章&#xff0c;圖片的搜索功能修改查詢參數的獲取&#xff0c;實現查詢用戶功能 存在…

這10款安卓APP,簡直好用到爆!

AI視頻生成&#xff1a;小說文案智能分鏡智能識別角色和場景批量Ai繪圖自動配音添加音樂一鍵合成視頻http://AI視頻生成&#xff1a;小說文案智能分鏡智能識別角色和場景批量Ai繪圖自動配音添加音樂一鍵合成視頻 1.追書——追書神器 追書神器是小說追新大神&#xff0c;全網實…

基于RequestResponseBodyMethodProcessor的Trim功能裝飾者模式實現

文章目錄 前言一、實現1.1 Trim1.2 TrimRequestResponseBodyMethodProcessorDecorator1.3 Configuration 二、測試2.1 測試用例2.2 測試結果2.2.1 Test no.12.2.2 Test no.22.2.3 Test no.32.2.4 Test no.4 前言 公司內部系統老是有人填表單復制粘貼老是整出前后空格來. 前端…

摸魚大數據——大數據導論

大數據導論 1、概念 大數據時代: 萬物皆數據 ? 數據概念: 人類的行為及產生的事件的一種記錄稱之為數據 ? 數據價值: 對數據的內容進行深入分析&#xff0c;可以更好的幫助了解事和物在現實世界的運行規律 2、大數據誕生 大數據的誕生: 跟隨著互聯網的發展的,當全球互聯…

K8S認證 | CKA題庫 + 答案 | 查看Pod CPU資源使用量

2、查看集群中運行Pod CPU資源使用量 您必須在以下Cluster/Node上完成此考題&#xff1a; Cluster Master node Worker node k8s …

【信息系統項目管理師知識點速記】采購管理:實施采購

實施采購過程是項目管理中一個關鍵環節,旨在通過一系列步驟確保項目所需的貨物、服務或成果能夠從合適的供應商處獲得,并以合同形式確立雙方的權利與義務。這一過程不僅關乎選擇最合適的賣方,還包括了風險管理、成本控制、溝通規劃等多個方面的考量。 輸入概述 項目管理計劃…

從零開始精通RTSP之加密

概述 原始的RTSP通信默認使用的是明文傳輸&#xff0c;這也就意味著&#xff0c;在網絡上的任何節點都能輕易地查看或修改傳輸的內容。這在涉及隱私或版權保護的場景下&#xff0c;是完全不可接受的。因此&#xff0c;加密顯得尤為重要。加密的目的主要有三點&#xff1a;一是進…

擰緊設備或工具的選型原則、常見類型和選型關鍵因素有哪些?

智能扭矩系統-智能擰緊系統-扭矩自動控制系統-SunTorque 在工業生產領域&#xff0c;擰緊控制是一項至關重要的工藝環節。它涉及螺栓、螺母等緊固件的裝配過程&#xff0c;直接關系到產品的質量和性能。因此&#xff0c;選擇合適的擰緊設備或工具對于確保擰緊過程的準確性和穩…

[牛客網]——C語言刷題day4

答案&#xff1a;B 解析&#xff1a; a是數組首元素的地址,a1的步長是int&#xff0c;所以是2 &a是數組的首地址&#xff0c;&a1步長是int[5] ptr是int類型的指針&#xff0c;指向a數組的尾后位置&#xff0c;ptr-1的步長是int,所以是a數組的最后一個元素5 答案&am…

如何使用ffmpeg 實現10種特效

相關特效的名字 特效id 特效名 1 向上移動 2 向左移動 3 向下移動 4 顫抖 5 搖擺 6 雨刷 7 彈入 8 彈簧 9 輕微跳動 10 跳動 特效展示(同時匯總相關命令) pad背景顯示 pad背景透明 相關命令(一會再講這些命令&#xff0c;先往下看) # 合成特效語音 ffmpeg -y -loglevel erro…

Element Plus/vue3 無限級導航實現

在使用element plus 時&#xff0c;最初要使用的就是導航組件了&#xff0c;官網上看到的也就是寫死的一級/二級導航&#xff0c;那么如何設計一個無限級且動態的導航呢&#xff1f;毋庸置疑&#xff0c;遞歸。廢話不多說&#xff0c;直接看代碼和效果&#xff1a; 代碼&#x…

Jmeter:錄制腳本(操作文檔)

新建線程組 打開jmeter&#xff0c;右鍵測試計劃–>添加–>Threads(Users)–>點擊"線程組" 添加錄制控制器 右鍵線程組–>添加–>邏輯控制器–>點擊"錄制控制器" 添加HTTP代理服務器 右鍵工作臺–>添加–>非測試元件–>…

YOLOv5改進 | Neck | 添加雙向特征金字塔BiFPN【小白輕松上手 | 論文必備】

&#x1f680;&#x1f680;&#x1f680;本專欄所有的改進均可成功執行&#x1f680;&#x1f680;&#x1f680; 盡管Ultralytics 推出了最新版本的 YOLOv8 模型。但YOLOv5作為一個anchor base的目標檢測的算法&#xff0c;YOLOv5可能比YOLOv8的效果更好。但是針對不同的數據…

CDN都有哪些優勢?

內容分發網絡是一個經策略性部署的整體系統&#xff0c;其中包含了分布式存儲、負載均衡、網絡請求的重定向和內容管理四個要求&#xff0c;CDN的主要核心則是內容管理和全局的網絡流量管理&#xff0c;CDN可以確保內容會以一種非常高效的方式為用戶的請求提供服務。 接下來就讓…

Linux 第三十五章

&#x1f436;博主主頁&#xff1a;??. 一懷明月? ???&#x1f525;專欄系列&#xff1a;線性代數&#xff0c;C初學者入門訓練&#xff0c;題解C&#xff0c;C的使用文章&#xff0c;「初學」C&#xff0c;linux &#x1f525;座右銘&#xff1a;“不要等到什么都沒有了…

Kubernetes安裝calico網絡插件失敗

今天啥也沒干成&#xff0c;不想排版了。 接著昨天搭建k8s集群&#xff0c;安裝calico插件&#xff0c;虛擬機一直卡。 # 在 master 節點上執行 # 下載 calico 配置文件&#xff0c;可能會網絡超時 curl https://docs.tigera.io/archive/v3.25/manifests/calico.yaml -O # 修…

[svelte] 怎么引入fortawesome的icon樣式

首先在項目的終端下執行以下命令 npm install fortawesome/fontawesome-free # 或者 yarn add fortawesome/fontawesome-free這樣子可以把fontawsome的圖標給下載到項目的對應文件中 一般都是在node_modules中 在fontawsome/fontawesome-free中就可以看到很多文件夾了 …