深度學習基礎--目標檢測常見算法簡介(R-CNN、Fast R-CNN、Faster R-CNN、Mask R-CNN、SSD、YOLO)

在這里插入圖片描述

博主簡介:努力學習的22級本科生一枚 🌟?;探索AI算法,C++,go語言的世界;在迷茫中尋找光芒?🌸?
博客主頁:羊小豬~~-CSDN博客
內容簡介:常見目標檢測算法簡介?😕??😕??😕??😕??😕??😕??😕??😕??😕?
往期內容:深度學習基礎–目標檢測入門簡介-CSDN博客

文章目錄

  • 1、tow-stage
    • R-CNN
    • Fast R-CNN
    • Faster R-CNN
    • Mask R-CNN
  • 2、one-stage
    • 單發多寬檢測(SSD)
    • YOLO
  • 3、參考資料

1、tow-stage

R-CNN

最早的目標檢測模型。

在這里插入圖片描述

📖 簡介

傳統目標檢測的思路,采用提取框,對每個提取框進行特征提取、圖像分類、非極大值抑制四個步驟進行檢測。

對于一張圖片來說,R-CNN首先會基于啟發式搜索算法生成大約2000個候選區域,然后每個區域固定大小,并且傳入一個CNN模型中,最后得到一個特征向量,這個向量會傳到一個SVM模型中,進行類別計算,進行分類,并且,最后運用 了一個邊界框回歸模型,通過邊框回歸模型對框的準確位置進行修正。

📚 解釋一些名詞

  • 啟發式搜索,這個算很難,也包含很多算法,簡單理解他的作用是在圖片上選取物體可能出現的區域框(錨框);
  • 非極大值抑制:是一種在目標檢測中去除冗余邊界框的后處理算法,通過保留局部得分最高的檢測框并抑制與其重疊度(IoU)超過閾值的低得分框,實現檢測結果的唯一性與精確性;這個在上一篇博客中已經簡單介紹了(深度學習基礎–目標檢測入門簡介-CSDN博客),就是去除多余的錨框;

🐾 算法步驟

  1. 使用啟發式搜索來選擇錨框;
  2. 使用預訓練模型來對每個錨框抽取特征;
  3. 訓練一個SVM來對類別進行分類;
  4. 訓練一個線性回歸模型來預測邊緣框的偏移,這一步就是將錨框來預測他真實的位置(邊緣框)偏移;

上面簡介中提到每個區域固定大小,但是實際上用啟發式算法進行搜索的時候,每次選擇的錨框大小是不同的,將不同大小的錨框變成一個統一形狀的算法就是Rol pooling;

💁?♂ Rol pooling,也稱感興趣域池化層,作用是將大小不一的錨框統一形狀。

📘 原理

給定一個錨框,先將其均勻地分割成 n * m 塊,然后輸出每塊里的最大值,這樣的話,不管錨框有多大,只要給定了 n 和 m 的值,總是輸出 nm 個值,達到統一形狀的作用。

在這里插入圖片描述


缺點:雖然有效提取了特征,但是速度非常慢,因為在第二個步驟用訓練好的模型對每個錨框進行特征提取的時候,計算非常大(因為啟發式算法大約生成2000個框)。

Fast R-CNN

🐤R-CNN:

  • 對每個錨框分別進行特征提取;
  • R-CNN是前向傳播的,而且比如說對一張圖片劃分了2000張錨框,那么在進行特征提取的時候通常會有重疊部分,故導致了從重復計算。Fast R-CNN就是解決這個問題的;

🥅 Fast R-CNN網絡圖

在這里插入圖片描述

🚂 原理簡介,與R-CNN對比著看:

  • 首先由兩進行兩部計算,分別是錨框生成、圖片特征提取,對應著上圖中兩條分支:

    • 錨框生成:和R-CNN一樣;

    • 特征提取(CNN):對于一張圖片,首先使用CNN對整張圖片進行特征提取;

  • Rol pooling這里有兩步:

    • 1??映射:錨框(selective search)按照一定比例映射到特征提取(CNN)的輸出上;
    • 2?? Rol pooing:這一步和R-CNN一樣,統一錨框大小。
  • 之后采用一個全連接層進行分類(R-CNN用的是SVM),輸出類別。


🚅比R-CNN快的原因:最核心的原因就是只需要對整體圖片進行一次特征提取就行了,不需要分別對每個錨框進行特征提取。

Faster R-CNN

這個算法的改進是提出來RPN(區域建議網絡)來代替selective search

在這里插入圖片描述

🔖 RPN簡介

這個網絡學習的時候理解起來還是有難度的😢

🎡 作用:生成大量很差的錨框,然后進行預測,最終輸出比較好的錨框供后面網絡使用(預測效果好的會進入Rol Pooing);

😿 原理簡介

  • CNN特征提取后,再次運用一次卷積操作,然后用啟發式算法搜索來初始化錨框;

  • 然后判斷錨框是否包含物體,這里分為兩步:

    • 1?? 分類:RPN對每個錨框進行分類,判斷他是否包含目標物體,這里輸出的是一個概率值;
    • 2?? 回歸:調整錨框位置和大小;
  • 最后采用NMS對錨框進行篩選。


🉐 特點:精度高,但是計算量巨大,慢。

Mask R-CNN

這個算法是對Faster R-CNN基礎上修改而來,他的作用是:解決傳統目標檢測,即只輸出邊界框無法提供像素級分割信息的問題。

像素級分割:生成每個物體的精確輪廓掩碼.

在這里插入圖片描述

從圖像看的話,對比Fast R-CNN,有兩個不同:

  • 用Rol align代替Rol pooling;
  • 在Rol align上新增一個分支;

這個難度我學的時候也很蒙,感覺好難😢

在學這個網絡前,先學一下什么叫做二值掩碼

  • 二值掩碼是一種由0和1(或255)組成的二值圖像,用于標記原始圖像中需要關注或操作的區域。上圖的右下部分圖。

🔬 難度大,梳理一下網絡:

  1. 特征提取
    • 輸入圖像通過卷積神經網絡生成特征圖。
  2. 區域建議網絡(RPN)
    • 在特征圖上生成錨框,通過分類和回歸生成候選區域,這部分和Fast R-CNN一樣
  3. RoI Align
    • 將候選區域映射到特征圖上,使用雙線性插值提取固定大小的特征(如 7×77×7 或 14×1414×14),與Rol pooling不同的是映射算法不同。
  4. 分類與回歸分支
    • 對每個 RoI 進行分類和邊界框修正,這部分和Fast R-CNN一樣
  5. 掩碼分支
    • 對每個 RoI 生成二值掩碼,最終通過閾值化得到像素級分割結果,先理解為對不同物體分別進行不同顏色可視化即可😭,由于是像素級別的,故大概輪廓也能顯示出來。
  6. 全連接層
    • 進行圖片分類。

2、one-stage

單發多寬檢測(SSD)

👀 先看網絡結構:

在這里插入圖片描述

初看網絡結構,可以觀察到他也是前向傳播的,而且在傳播的時候一直進行預測。

👀再看

在這里插入圖片描述

👓 特點

  • 對給定的錨框直接進行預測,不需要進行兩個階段,這也是為什么比Faster R-CNN快的原因;

  • SSD 通過做不同分辨率下的預測來提升最終的效果,越到底層的 feature map,就越大,越往上,feature map 越少,因此底層更加有利于小物體的檢測,而上層更有利于大物體的檢測

😢 缺點

  • 速度快,但是精度不好。

YOLO

? 用最多的模型

在這里插入圖片描述

📚 解釋

  • 盡量讓錨框不重疊—–》將圖片均勻分成S X S個錨框。

  • 每個錨框預測B個邊緣框,這個意思是一個錨框可能有多個物體,故在他身邊預測多個錨框進行特征提取、分類,如上圖中的藍色圓圈。

YOLO有很多版本,也非常值得學習的。

3、參考資料

  • 【44 物體檢測算法:R-CNN,SSD,YOLO【動手學深度學習v2】】https://www.bilibili.com/video/BV1Db4y1C71g?vd_source=1fd424333dd77a7d3e2e741f7d6fd4ee
  • R-CNN_百度百科
  • 李沐動手學深度學習V2-目標檢測SSD_深度學習與目標檢測 第2版第二版-CSDN博客

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

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

相關文章

傳輸層協議UDP和TCP

傳輸層協議UDP和TCP 1、UDP2、TCP2.1、TCP協議段格式2.2、確認應答(ACK)機制2.3、超時重傳機制2.4、連接管理機制2.5、理解CLOSE_WAIT狀態2.6、理解TIME_WAIT狀態2.7、流量控制2.8、滑動窗口2.9、擁塞控制2.10、延遲應答2.11、捎帶應答2.12、面向字節流2.13、粘包問題2.14、TCP…

PMIC電源管理模塊的PCB設計

目錄 PMU模塊簡介 PMU的PCB設計 PMU模塊簡介 PMIC(電源管理集成電路)是現代電子設備的核心模塊,負責高效協調多路電源的轉換、分配與監控。它通過集成DC-DC降壓/升壓、LDO線性穩壓、電池充電管理、功耗狀態切換等功能,替代傳統分…

Ubuntu 配置網絡接口端點(靜態 IP 地址)詳細教程

在 Ubuntu 系統中,配置網絡接口端點通常指的是為您的有線或無線網卡設置一個固定的 IP 地址、子網掩碼、網關以及 DNS 服務器。這對于服務器或者需要穩定網絡標識的設備來說非常重要。 使用 Netplan (Ubuntu 17.10 及更高版本的默認方式)使用 ifupdown (通過 /etc/…

淺聊大模型-有條件的文本生成

大家好我是木木,自從2022年11月30日OpenAI發布ChatGPT后,大模型迅速火熱起來,人工智能作為當下最火的行業之一,2025年春節期間DeepSeek R1模型大火。LLM中有很多的技術,今天我們聊聊大模型-有條件的文本生成。 什么是…

華為銀河麒麟 V10(ARM)系統軟件部署全攻略:Redis、RabbitMQ、MySQL 等集群搭建指南

一、Redis 集群部署(主從 哨兵模式) 1. 環境準備 系統:華為銀河麒麟 V10(ARM64)節點:3 臺服務器(1 主 2 從 3 哨兵) 2. 安裝包下載 bash # 華為鏡像站 wget https://update.c…

Mysql數據庫進階

一、Mysql組織架構 連接層 1.驗證用戶的身份,用戶名密碼是否匹配 2.提供兩種連接方式(TCP/IP連接、socket連接) 3.連接層提供了一個與sql層交互的線程 SQL層 1.接收連接層傳過來的SQL語句 2.驗證執行的SQL語法 3.驗證SQL的語義(DDL,DML,DQL,DCL) 4.解析器:解析SQL語句,生…

系統思考:短期困境與長期收益

最近在項目中,一直有學員會提到一個議題,如何平衡當前困境和長期收益? 我的思考是在商業和人生的路上,我們常常聽到“魚和熊掌不可兼得”的說法,似乎短期利益和長期目標注定是對立的。但事實上,魚與熊掌是…

Spring Web MVC快速入門

什么是Spring Web MVC Spring Web MVC 是基于 Servlet API 構建的原始 Web 框架,從?開始就包含在 Spring 框架中。它的正式名稱“Spring Web MVC”來?其源模塊的名稱(Spring-webmvc),但它通常被稱為"Spring MVC". View(視圖) 指在應?程序…

DeepSeek基于注意力模型的可控圖像生成

DeepSeek大模型高性能核心技術與多模態融合開發 - 商品搜索 - 京東 圖像的加噪與模型訓練 在擴散模型的訓練過程中,首先需要對輸入的信號進行加噪處理,經典的加噪過程是在圖像進行向量化處理后在其中添加正態分布,而正態分布的值也是與時間…

第十六屆藍橋杯B組第二題

當時在考場的時候這一道題目 無論我是使用JAVA的大數(BIGTHGER)還是賽后 使用PY 都是沒有運行出來 今天也是突發奇想在B站上面搜一搜 看了才知道這也是需要一定的數學思維 通過轉換 設X來把運算式精簡化 避免運行超時 下面則是代碼 public class lanba…

HT71663同步升壓2.7V-13V輸入10A聚能芯半導體禾潤一級代理

在便攜式設備飛速發展的今天,電源轉換效率與產品尺寸始終是行業難以平衡的難題。但現在,HT71663 高功率全集成升壓轉換器強勢登場,一舉打破僵局,為便攜式系統帶來顛覆性的高效小尺寸解決方案!? HT71663 的卓越性能&am…

Unity:輸入系統(Input System)與持續檢測鍵盤按鍵(Input.GetKey)

目錄 Unity 的兩套輸入系統: 🔍 Input.GetKey 詳解 🎯 對比:常用的輸入檢測方法 技術底層原理(簡化版) 示例:角色移動 為什么會被“新輸入系統”替代? Unity 的兩套輸入系統&…

港大今年開源了哪些SLAM算法?

過去的5個月,香港大學 MaRS 實驗室陸續開源了四套面向無人機的在線 SLAM 框架:**FAST-LIVO2 、Point-LIO(grid-map 分支) 、Voxel-SLAM 、Swarm-LIO2 **。這四套框架覆蓋了單機三傳感器融合、高帶寬高速機動、長時間多級地圖優化以…

【質量管理】TRIZ因果鏈分析:解碼質量問題的“多米諾效應“

為什么要使用因果鏈分析 沒有發現問題并不等于沒有問題。愛因斯坦曾說,如果我只有一個小時的時間來拯救世界,我將花45分鐘時間分析問題,10分鐘的時間來檢查問題,最后5分鐘的時間來解決問題。可見問題分析的重要性。 在質量管理實踐…

線程中常用的方法

知識點詳細說明 Java線程的核心方法集中在Thread類和Object類中,以下是新增整合后的常用方法分類解析: 1. 線程生命周期控制 方法作用注意事項start()啟動新線程,JVM調用run()方法多次調用會拋出IllegalThreadStateException(線程狀態不可逆)。run()線程的任務邏輯直接調…

c++:迭代器(Iterator)

目錄 🚪什么是迭代器? 🔧 迭代器的本質 為什么不用普通數組或下標? STL容器的迭代器并不是共用一個類型! 迭代器的類型(Iterator Categories) 📦 常見容器的迭代器類型 ? 迭…

【文件系統—散列結構文件】

文章目錄 一、實驗目的實驗內容設計思路 三、實驗代碼實現四、總結 一、實驗目的 理解linux文件系統的內部技術,掌握linux與文件有關的系統調用命令,并在此基礎上建立面向隨機檢索的散列結構文件;## 二、實驗內容與設計思想 實驗內容 1.設…

力扣26——刪除有序數組中的重復項

目錄 1.題目描述: 2.算法分析: 3.代碼展示: 1.題目描述: 給你一個 非嚴格遞增排列 的數組 nums ,請你 原地 刪除重復出現的元素,使每個元素 只出現一次 ,返回刪除后數組的新長度。元素的 相對…

ggplot2 | GO barplot with gene list

1. 效果圖 2. 代碼 數據是GO的輸出結果,本文使用的是 metascape 輸出的excel挑選的若干行。 # 1. 讀取數據 datread.csv("E:\\research\\scPolyA-seq2\\GO-APA-Timepoint\\test.csv", sep"\t") head(dat)# 2. 選擇所需要的列 dat.usedat[, c(…

學習搭子,秘塔AI搜索

什么是秘塔AI搜索 《秘塔AI搜索》的網址:https://metaso.cn/ 功能:AI搜索和知識學習,其中學習部分是亮點,也是主要推薦理由。對應的入口:https://metaso.cn/study 推薦理由 界面細節做工精良《今天學點啥》板塊的知…