Yolo底層原理學習(V1~V3)(第一篇)

一,卷積后的特征圖大小計算

眾所周知,提到深度學習,必不可少的會提及卷積,那么如何計算卷積之后的圖片大小呢?

下圖呈現:

如圖, 我們令FH,FW為原圖像的長度FH*FW。P為padding的長度(假如padding=1,則3*3變成5*5),H,W為圖像padding后的長度。OH,OW為卷積后的圖像長度。

ps:計算結果為小數的話向下取整。


練習題:

答案:
?


小tip:(1)單階段檢測:分類和檢測同時做----速度快

? ? ? ? (2)雙階段檢測:先分類,再摳圖給檢測器做檢測---精度高


池化,下采樣,上采樣概念區分:

  • 池化:一種特殊的采樣操作,通常用于減少特征圖的空間尺寸,常見的有最大池化和平均池化。
  • 下采樣:將數據的空間尺寸減少的操作,池化是一種常見的下采樣方法。
  • 上采樣:將數據的空間尺寸增加的操作,常見于生成更高分辨率的圖像或特征圖。

卷積,池化會使得模型對圖像的感受野不斷增大。

二,深刻理解yolov1模型

不管現在發展到了yolov幾,要想深刻理解yolo模型的本質設計,就要回到yolov1~yolov3.

上圖為yolov1的網絡模型圖,?其中都是采用和CNN一樣的思路(卷積+激活函數+池化+最后全連接層),但是和CNN不一樣的是,CNN全連接層最后通過softmax函數可以直接輸出我們分類各類別的概率來完成任務,但是yolo中最后全連接層輸出的只是7×7×30的向量,他是怎么實現對原圖的目標識別與類別檢測的呢?(`ヘ′)=3


解答:
首先,我們需要理解7*7*30這個向量,他的意思是有7*7個格子,每個格子有30個向量(如下圖)(包含30個信息,為什么是30個呢?稍后會說)

然后這個7*7的向量會被映射到原圖448*448?,將原圖劃分為49個格子(注意,不是真的劃分,是一種映射),每個格子對應原圖的一塊區域。


對每個區域信息的理解

然后,這時你可能會想每個格子會有原圖該區域的檢測信息,理解正確,但是要注意,每個格子并不只有該區域的信息,而是都具有全圖像全局信息,為什么呢?(這里是理解難點

由CNN的知識可知,通過層層卷積和池化操作,輸出的每個向量信息都具有擁有全局感受野(Global Receptive Field)

  1. 特征表示的層次性和抽象性:

    • 深度卷積網絡通過多層卷積和池化操作,逐步提取圖像的層次化特征。低層特征(靠近輸入層)通常對應邊緣、紋理等簡單模式,感受野較小。高層特征(靠近輸出層)則對應更復雜、更抽象的概念,如物體部件、物體類別等,感受野更大。
    • 當信息傳遞到網絡的最后幾層,形成用于預測的77特征圖時,每個特征圖上的值(對應一個網格單元)已經包含了非常高級和抽象的信息。這些信息不僅僅是簡單的像素疊加,而是通過復雜的非線性變換學習到的、對目標檢測任務有用的表示。
    • 即使感受野覆蓋了整個圖像,這些高級特征對于“當前網格單元中心是否有特定類別的物體”這個問題來說,仍然是非常相關的。例如,圖像其他部分的物體、背景、甚至物體的上下文信息,都可以幫助模型判斷當前網格單元內的區域是否更可能包含某個特定類別的物體(比如,如果網格單元區域看起來像車輪,而圖像其他部分有車身,那么它屬于車的概率就更高)。
  2. 局部信息的權重和定位:

    • 雖然全局信息被整合,但模型在學習過程中會自動學習到哪些信息對于當前網格單元的預測更重要。對于“當前網格單元中心是否有物體”的判斷(置信度分數 Pr(Object) * IoU),模型會賦予網格單元直接覆蓋區域的特征更高的權重。
    • 對于邊界框坐標(bx, by, bw, bh)的預測,模型學習到的回歸函數也會主要關注網格單元覆蓋區域的特征來精確定位。全局感受野提供上下文和背景信息,幫助更精確地定位(例如,避免將目標框錯誤地延伸到背景區域),但最終的坐標預測仍然是以網格單元為中心,并受其局部特征主導的。
  3. 注意力機制(隱式):

    • 可以將深度學習模型看作一種隱式的注意力機制。在訓練過程中,模型通過反向傳播學習,會“關注”那些對預測目標(即當前網格單元是否包含物體及其類別和位置)最有用的特征。即使感受野很大,模型也會學習到,對于當前網格單元的預測任務,只有來自其中心區域及其附近的信息才是最關鍵的。
  4. 網格劃分的設計:

    • YOLOv1的設計本身就是將圖像劃分為網格,并讓每個網格單元負責其中心區域。網絡在訓練時會學習到這種責任分配。因此,即使特征具有全局感受野,網絡的最終輸出(通過全連接層和Sigmoid函數)被訓練成主要反映對應網格單元責任區域內的內容。

簡單類比:
想象一下,你要判斷一張照片的左上角(一個網格單元負責的區域)是否有一只貓。你不僅僅看左上角,你還會看看整個照片的上下文(比如背景是在室內還是室外,是否有其他動物,整體色調等)。這些全局信息(整個照片)幫助你做出更準確的判斷(左上角是否有貓,以及是什么類型的貓),但你的最終判斷仍然主要基于左上角區域本身的內容。深度學習模型在做類似的事情,它利用全局上下文信息來增強對局部區域的判斷能力。

因此,全局感受野并非壞事,它提供了寶貴的上下文信息,有助于提高檢測和分類的準確性,同時模型通過學習能夠有效地將注意力集中在需要負責的局部區域上。

也就是說,雖然每個格子對應原圖的一塊區域而已,但是他們都擁有全局感受野(目的:更好進行上下文聯系識別),然后通過權重定位更加關注原圖該區域的信息識別(注意力機制有點像)。


回到上文,我們將?這個7*7的向量會被映射到原圖448*448?,將原圖劃分為49個格子(注意,不是真的劃分,是一種映射),每個格子對應原圖的一塊區域后,每個格子都包含30個信息,分別是兩個檢測框(當初設計是為了提高準確率)的(中心坐標x,y,寬高w,h,及其對應的檢測置信度c)*2共10個,然后還有要識別的20個類別的概率(兩個檢測框共用概率值)共30個。

之后,每個格子都會生成2個檢測框,只是如果置信度低于我們認為設定的閾值,會被直接不畫出檢測框。然后剩下的框會進行非極大值抑制,最終產生概率最高的框。


?對獲取的(x,y,w,h)的理解,以及怎么運用的

上文我們說到,沒過小格子都會得到x,y和w,h信息。接下來將解讀這些信息:
(1) 每個小格子都以自身左上角頂點為(0,0)原點,每個小個子所獲取的兩個預測框的中心一定在格子里面,并且坐標值都是經過歸一化標注于在各自原點的坐標系之中,然后映射到原圖坐標:
eg:綠色邊框的中心坐標為(0.5,0.5),格子有49個,原圖為448*448像素,則每個格子為64個像素,則該綠色中心在原圖的映射y坐標為0.5*64+64*4.

(2)而對于w,h,其值也是進行了歸一化,映射為原始圖像的寬高(這里也是每個格子都擁有全局信息的證明,能獲取全局信息)。

eg: w=0.43,h=0.40那么原始圖像的寬高就是448*0.43;448*0.40。

好啦好啦,不學了,還有沒講完的,精彩請看下一集~~

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

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

相關文章

前端開發項目性能瓶頸分析

1. 使用 rollup-plugin-visualizer 分析構建 借助 rollup-plugin-visualizer 插件,可以分析通過 rollup 構建出的產物內容,并生成可視化圖表,幫助你分析打包后的文件大小以及各個模塊的占用情況。 1.1. 安裝插件 你需要在你的項目中安裝 r…

ExoData.h - OpenExo

ExoData.h文件定位源代碼1. 頭文件依賴2. 核心類聲明3. 主要成員函數關節遍歷工具關節與配置相關數據/狀態操作控制參數/校準4. 主要成員變量總結文件定位 位置:src/ExoData.h 作用:定義 ExoData 類,作為 Exo 系統全局數據的核心容器。它將設…

緩存HDC內容用于后續Direct2D繪制.

思路&#xff1a;把HDC里的內容保存到Direct2D格式的位圖里&#xff0c;后續直接調用 renderTarget->DrawBitmap即可。本例中&#xff0c;位圖將保存為類的字段。本例中 COM 接口指針皆使用 com_ptr&#xff0c;這是 WinRT 的 COM 智能指針類&#xff0c;com_ptr<I>::…

“抓了個寂寞”:一次實時信息采集的意外和修復

1. 那天下午&#xff0c;輿情系統“遲到”了 那天下午&#xff0c;公司運營那邊突然在群里喊&#xff1a;“XX事件都快上熱搜榜前十了&#xff0c;咱們系統咋沒反應&#xff1f;” 我愣了幾秒&#xff0c;立馬翻后臺日志、爬蟲執行記錄&#xff0c;結果一查&#xff0c;還真有點…

數據結構之迪杰斯特拉算法

前言&#xff1a;前面兩篇文章介紹了生成圖的最小生成樹的算法&#xff0c;接下來兩篇文章會介紹圖的最短路徑的算法&#xff0c;迪杰斯特拉算法和弗洛伊德算法。迪杰斯特拉算法是用來計算一個點到其他所有點的最短路徑&#xff0c;這個點稱之為源點。 一、實現流程 回憶一下…

技術文檔 | OpenAI 的 Kafka 演進之路與 Pulsar 遷移潛力

導讀ChatGPT 用戶量指數級暴漲&#xff0c;OpenAI 的 Kafka 集群在一年內增長 20 倍至 30 個集群[1]&#xff0c;其 Kafka 架構面臨日均千億級消息&#xff08;峰值 QPS 800萬/秒&#xff09; 的壓力。這揭示了一個關鍵事實&#xff1a;OpenAI 的成功不只依賴模型&#xff0c;更…

【bug】 jetson上opencv無法錄制h264本地視頻

在Jetson Orin NX上無法使用opencv直接錄制h264/h265視頻流&#xff08;h264格式的視頻流才能在瀏覽器播放&#xff09; 解決&#xff1a; 軟件編碼&#xff1a;需要源碼編譯opencv 1.環境準備 pip uninstall opencv-python sudo apt install build-essential cmake git python…

解決http的web服務中與https服務交互的問題

問題背景&#xff1a; 需要在一個http的web服務中直接跟另一個https服務交互&#xff0c;不經過自身后端。 又來到了熟悉的跨域訪問問題。 解決邏輯就是使用nginx轉發&#xff0c;涉及到的文件也就是nginx.conf文件&#xff0c;前面解決minio鏈接時已經有經驗了&#xff0c;但…

網站訪問信息追蹤系統在安全與性能優化中的關鍵作用——網絡安全—仙盟創夢IDE

<?php // 收集訪問信息 $visitorInfo未來之窗 [timestamp > date(Y-m-d H:i:s),ip > $_SERVER[REMOTE_ADDR] ?? unknown,page > $_SERVER[REQUEST_URI] ?? unknown,method > $_SERVER[REQUEST_METHOD] ?? unknown,user_agent > $_SERVER[HTTP_USER_A…

Oracle 時間處理函數和操作符筆記

前言 寫sql時經常用到時間處理函數&#xff0c;我整理了一份Oracle的常用sql筆記,供大家參考。 如果對你有幫助&#xff0c;請點贊支持~ 多謝&#x1f64f; 筆記 -- 1. 獲取當前日期和時間 -- SYSDATE, SYSTIMESTAMP, CURRENT_DATE, CURRENT_TIMESTAMP, LOCALTIMESTAMP SELE…

TDengine時序數據庫 詳解

1. TDengine 簡介 TDengine 是一款 高性能、分布式、支持 SQL 的時序數據庫&#xff08;Time-Series Database, TSDB&#xff09;&#xff0c;專為 物聯網&#xff08;IoT&#xff09;、工業互聯網、金融監控、日志分析 等場景設計。其核心特點包括&#xff1a; 超高性能&…

【IDEA】idea怎么修改注冊的用戶名稱?

文章目錄[toc]問題**方法 1&#xff1a;通過 JetBrains 賬戶網站修改****方法 2&#xff1a;通過 IDEA 內跳轉修改&#xff08;快捷方式&#xff09;****注意事項****補充&#xff1a;修改 IDEA 內的項目級用戶名**如何退出IDEA用戶登錄&#xff1f;問題 在 IntelliJ IDEA 中修…

AR眼鏡重塑外科手術導航:精準“透視”新突破

在現代醫學領域&#xff0c;增強現實&#xff08;AR www.teamhelper.cn &#xff09;技術正以前所未有的方式改變外科手術導航的面貌。通過為醫生提供實時的三維可視化、精準的空間定位和智能交互功能&#xff0c;AR眼鏡正在成為手術室中的重要工具。本文將系統介紹AR眼鏡在手術…

服務端對接 HTTP 接口傳輸圖片 采用base64還是 multipart/form-data

在服務端對接HTTP接口傳輸圖片時&#xff0c;選擇 multipart/form-data 還是 Base64 編碼&#xff0c;需要根據具體場景權衡。以下是詳細對比和建議&#xff1a;1. multipart/form-data 優點 更適合大文件傳輸&#xff1a; 直接以二進制流傳輸圖片&#xff0c;無需編碼/解碼&am…

如何在 Windows 上安裝 MongoDB 及常見問題

MongoDB 是一款 NoSQL 數據庫&#xff0c;在數據管理和存儲方面以其無與倫比的強大功能和多功能性而脫穎而出。該平臺憑借其靈活性、可擴展性和高性能保持著領先優勢&#xff0c;贏得了眾多企業的信賴。在這方面&#xff0c;MongoDB 以及其在 Windows 操作系統中的表現&#xf…

JS與Go:編程語言雙星的碰撞與共生

在編程語言的璀璨星河中&#xff0c;JavaScript&#xff08;簡稱JS&#xff09;與Go語言憑借各自獨特的魅力&#xff0c;成為不同領域的佼佼者。前者以靈活多變的姿態征服了前端世界&#xff0c;后者則以高效穩健的特性在后端領域嶄露頭角&#xff0c;二者的碰撞與共生&#xf…

【開源】WpfMap:一個基于WPF(Windows Presentation Foundation)技術構建的數據可視化大屏展示頁面

文章目錄一、項目概述1.1 項目定位二、適用場景2.1 企業數據展示2.2 監控中心2.3 會議展示三、功能特性3.1 高度自定義3.2 實時更新3.3 豐富的可視化組件3.4 良好的用戶體驗四、技術資源4.1 開源地址一、項目概述 1.1 項目定位 WpfMap是一個基于WPF&#xff08;Windows Prese…

macbook安裝homebrew

homebrew是什么&#xff1f;Homebrew 是 macOS&#xff08;以及 Linux&#xff09;上的一款包管理工具&#xff0c;被稱為 “macOS 缺失的包管理器”&#xff0c;它能幫助用戶輕松安裝、卸載、更新各種命令行工具、開發環境、應用程序等。簡單來說&#xff0c;它的作用類似手機…

ViLT: 無卷積或區域監督的視覺-語言Transformer

溫馨提示&#xff1a; 本篇文章已同步至"AI專題精講" ViLT: 無卷積或區域監督的視覺-語言Transformer 摘要 視覺與語言預訓練&#xff08;Vision-and-Language Pre-training, VLP&#xff09;在多種聯合視覺與語言的下游任務中顯著提升了性能。目前的 VLP 方法在很…

初識決策樹-理論部分

決策樹 前言 參考了大佬的博客&#xff1a;博客地址 適合分析離散數據&#xff0c;若是連續數據需要轉換成離散數據再做分析(比如圖中的年齡) 結構 決策樹由節點和有向邊組成&#xff1b;節點可分為內部節點和葉節點 內部節點:特征葉節點:類別有向邊:特征的取值范圍 在用決…