13.3 目標檢測和邊界框

錨框的計算公式

假設原圖的高為H,寬為W
在這里插入圖片描述

詳細公式推導

在這里插入圖片描述

以同一個像素點為錨框,可以生成 (n個縮放 + m個寬高比 -1 )個錨框

在這里插入圖片描述
在這里插入圖片描述

錨框的作用:

不用直接去預測真實框的四個坐標,而是:
1.先生成多個錨框。
2.預測每個錨框里是否含有要預測的目標。
3.如果是,預測從這個錨框到真實框的偏移(一般是中心點的偏移)。

計算錨框與真實框的IOU

def box_iou(boxes1,boxes2):''':param boxes1: shape = (boxes1的數量,4):param boxes2: shape = (boxes2的數量,4):param areas1: boxes1中每個框的面積 ,shape = (boxes1的數量):param areas2: boxes2中每個框的面積 ,shape = (boxes2的數量):return:'''# 定義一個Lambda函數,輸入boxes,內容是計算得到框的面積box_area = lambda  boxes:((boxes[:,2] - boxes[:0]) * (boxes[:3] - boxes[:0]))# 計算面積areas1 = box_area(boxes1)areas2 = box_area(boxes2)# 計算交集 要把所有錨框的左上角坐標 與 真實框的所有左上角坐標 作比較,大的就是交集的左上角 ,加個None 可以讓錨框與所有真實框作對比inter_upperlefts = torch.max(boxes1[:,None,:2],boxes2[:,:2])# 把所有錨框的右下角坐標 與 真實框的所有右下角坐標 作比較,小的就是交集的右下角坐標 ,加個None 可以讓錨框與所有真實框作對比inter_lowerrights = torch.min(boxes1[:,None,2:],boxes2[:,2:])# 如果右下角-左上角有元素小于0,那就說明沒有交集,clamp(min-0)會將每個元素與0比較,小于0的元素將會被替換成0inters = (inter_lowerrights - inter_upperlefts).clamp(min=0) # 得到w和hinter_areas = inters[:,:,0] * inters[:,:,1] # 每個樣本的 w*h# 求錨框與真實框的并集# 將所有錨框與真實框相加,他們會多出來一個交集的面積,所以要減一個交集的面積union_areas = areas1[:,None] * areas2 - inter_areasreturn inter_areas/union_areas

給訓練集標注錨框

每個錨框包含的信息有:每個錨框的類別 和 偏移量。
偏移量指的是:真實邊界相對于錨框的偏移量。

預測時:為每張圖片生成多個錨框,預測所有錨框的類別和偏移量。

舉例

假設有4個真實框 B1,B2,B3,B4。
9個錨框A1,A2,A3,A4,A5,A6,A7,A8,A9。

在這里插入圖片描述
如上,每個真實框都要與所有的錨框計算IOU,如X23,在第三列,擁有最大的IOU,如果該IOU大于閾值,那么第2個錨框的類別就是B3,分配完類別之后,第二個錨框和第3個真實框將不再參與,表現為上面的矩陣去掉第二行第三列。

補充:

訓練集不是光使用標注的真實的框做標簽來訓練嗎?為啥要錨框當做訓練樣本?

應該是擴大訓練集的方式,如果只有一張圖片,上面標注上了一個真實的框,那么就只有一個訓練樣本,如果生成一些錨框,根據真實的框,計算IOU,來給生成的錨框標記上相應的類別和與真實框的中心值偏移量,那么這些錨框也成為了訓練樣本。

lambda匿名函數

它可以用于簡潔地定義一個單行的函數

add = lambda x, y: x + y
print(add(2, 3))  # 輸出結果為 5

torch.max(boxes1[:, None, :2], boxes2[:, :2])

import torch # 定義兩個張量
boxes1 = torch.tensor([[1, 2, 3, 4], [5, 6, 7, 8]]) # 形狀為(2, 4)
boxes2 = torch.tensor([[2, 3,4,5], [6, 7,8,9]])
print(boxes1.shape, boxes2.shape)

torch.Size([2, 4]) torch.Size([2, 4])

print(boxes1[:, None, :2])
print(boxes1[:, None, :2].shape)
tensor([[[1, 2]],[[5, 6]]])
torch.Size([2, 1, 2]) 變成了兩個通道,每個通道有個一行兩列的元素
boxes2[:,:2]
tensor([[2, 3],[6, 7]])
print(torch.max(boxes1[:, None, :2], boxes2[:, :2]))
torch.max(boxes1[:, None, :2], boxes2[:, :2]).shape
tensor([[[2, 3],[6, 7]],[[5, 6],[6, 7]]]) 
torch.Size([2, 2, 2]) 變成兩個通道,每個通道有兩行,每行有兩列的元素
print(torch.max(boxes1[:, :2], boxes2[:, :2]))
tensor([[2, 3],[6, 7]])

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

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

相關文章

C++:哈希表——模擬散列表

模擬散列表 維護一個集合,支持如下幾種操作: 1.“I x”,插入一個數x 2.“Q x”,詢問數x是否在集合中出現過 現在要進行N次操作,對于每個詢問操作輸出對應的結果 輸入格式 第一行包含整數N,表示操作數量 …

【Linux】【驅動】雜項設備驅動

【Linux】【驅動】雜項設備驅動 Linux三大設備驅動1. 我們這節課要講的雜項設備驅動是屬于我們這三大設備驅動里面的哪個呢?2.雜項設備除了比字符設備代碼簡單,還有別的區別嗎?3.主設備號和次設備號是什么? 掛載驅動 雜項設備驅動是字符設備驅動的一種&#xff0…

小程序制作教程:從零開始搭建企業小程序

在如今的數字化時代,企業介紹小程序成為了企業展示與推廣的重要工具。通過企業介紹小程序,企業可以向用戶展示自己的品牌形象、產品服務以及企業文化等內容,進而提高用戶對企業的認知度和信任度。本文將介紹如何從零開始搭建一個企業介紹小程…

Linux常用命令詳細大全

目錄 1、查看目錄與文件:ls2、切換目錄:cd3、顯示當前目錄:pwd4、創建空文件:touch5、創建目錄:mkdir6、查看文件內容:cat7、分頁查看文件內容:more8、查看文件尾內容:tail9、拷貝&a…

小程序 vant 項目記錄總結 使用 scss 分享 訂閱消息 wxs 分包 echarts圖表 canvas getCurrentPages頁面棧

小程序 vant vant 下載 npm init -ynpm i vant/weapp -S --production修改 app.json 將 app.json 中的 “style”: “v2” 去除 修改 project.config.json {..."setting": {..."packNpmManually": true,"packNpmRelationList": [{"p…

域名配置HTTPS

一、注冊域名 這個可以在各大平臺注冊,具體看一下就會注冊了,自己挑選一個自己喜歡的域名。 步驟一般也就是先實名,實名成功了才能注冊域名。 二、辦理SSL證書 這里使用的是阿里云的SSL免費證書 1、申請證書 二、填寫申請 三、域名綁定生…

公司電腦三維圖紙加密、機械圖擋加密軟件

機械圖紙加密軟件的問世,讓很多的網絡公司都大受其帶來的工作中的便利。在安裝了機械圖紙加密軟件后,不僅可以很好的管理員工在工作時的上網娛樂,在對整個公司員工的工作效率上也有著明顯的提高,那么對于機械圖紙加密軟件的具體特…

【C#】靜默安裝、SQL SERVER靜默安裝等

可以通過cmd命令行來執行&#xff0c;也可以通過代碼來執行&#xff0c;一般都需要管理員權限運行 代碼 /// <summary>/// 靜默安裝/// </summary>/// <param name"fileName">安裝文件路徑</param>/// <param name"arguments"…

word 應用 打不開 顯示一直是正在啟動中

word打開來顯示一直正在啟動中&#xff0c;其他調用word的應用也打不開&#xff0c;網上查了下以后進程關閉spoolsv.exe,就可以正常打開word了

演進式架構

演進能力是一種元特征和保護其他所有架構特征的架構封裝器IEEE 的軟件架構定義中的41 視圖模型。它關注不同角色的不同視角&#xff0c;將整個系統劃分成了邏輯視圖、開發視圖、進程視圖和物理視圖架構師確定了可審計性、數據、安全性、性能、合法性和伸縮性是該應用的關鍵架構…

機器學習:特征工程之特征預處理

目錄 特征預處理 1、簡述 2、內容 3、歸一化 3.1、魯棒性 3.2、存在的問題 4、標準化 ?所屬專欄&#xff1a;人工智能 文中提到的代碼如有需要可以私信我發給你&#x1f60a; 特征預處理 1、簡述 什么是特征預處理&#xff1a;scikit-learn的解釋&#xff1a; provide…

linux系統服務學習(六)FTP服務學習

文章目錄 FTP、NFS、SAMBA系統服務一、FTP服務概述1、FTP服務介紹2、FTP服務的客戶端工具3、FTP的兩種運行模式&#xff08;了解&#xff09;☆ 主動模式☆ 被動模式 4、搭建FTP服務&#xff08;重要&#xff09;5、FTP的配置文件詳解&#xff08;重要&#xff09; 二、FTP任務…

Python基礎語法入門(第二十天)——文件操作

一、基礎內容 在Python中&#xff0c;路徑可以以不同的表現形式進行表示。以下是一些常用的路徑表現形式&#xff1a; 1. 絕對路徑&#xff1a;它是完整的路徑&#xff0c;從根目錄開始直到要操作的文件或文件夾。在Windows系統中&#xff0c;絕對路徑以盤符開始&#xff0c;…

【學會動態規劃】環形子數組的最大和(20)

目錄 動態規劃怎么學&#xff1f; 1. 題目解析 2. 算法原理 1. 狀態表示 2. 狀態轉移方程 3. 初始化 4. 填表順序 5. 返回值 3. 代碼編寫 寫在最后&#xff1a; 動態規劃怎么學&#xff1f; 學習一個算法沒有捷徑&#xff0c;更何況是學習動態規劃&#xff0c; 跟我…

CSS 兩欄布局和三欄布局的實現

文章目錄 一、兩欄布局的實現1. floatmargin2. flaotBFC3. 定位margin4. flex 布局5. grid布局 二、三欄布局的實現1. float margin2. float BFC3. 定位 margin(或者定位BFC)4. flex布局5. 圣杯布局6. 雙飛翼布局 一、兩欄布局的實現 兩欄布局其實就是左側定寬&#xff0c;…

高層建筑全景vr火災隱患排查模擬培訓軟件助力群眾防范火災傷害

隨著城市化進程的加快&#xff0c;樓宇建筑的數量也在不斷增加。然而&#xff0c;樓宇消防安全問題也日益突出。為了提高樓宇員工和居民的消防安全意識&#xff0c;樓宇VR消防安全教育培訓應運而生。VR安全培訓公司深圳華銳視點制作的樓宇vr消防安全教育培訓&#xff0c;包括消…

谷粒商城第十一天-完善商品分組(主要添上關聯屬性)

目錄 一、總述 二、前端部分 2.1 改良前端獲取分組列表接口及其調用 2.2 添加關聯的一整套邏輯 三、后端部分 四、總結 一、總述 前端部分和之前的商品品牌添加分類差不多。 也是修改一下前端的分頁獲取列表的接口&#xff0c;還有就是加上關聯的那一套邏輯&#xff0c;…

nginx負載均衡與反向代理與正向代理

負載均衡&#xff1a;通過反向代理來實現 正向代理的配置方法。 正向代理&#xff1a; 工作原理&#xff1a;用戶端直接訪問不了&#xff0c;需要通過代理服務器來訪問web服務器&#xff0c;用戶端先訪問代理服務器&#xff0c;再訪問web服務器。web服務器響應給代理服務器&a…

【C語言】調試技巧

目錄 一、什么是bug? 二、調試 1.一般調試的步驟 2.Debug 和 Release 三、調試環境準備 四、調試時要查看的信息 1.查看臨時變量的值 2.查看內存信息 3.查看調用堆棧 4.查看反匯編信息 5.查看寄存器 五、練習 六、常見的coding技巧 七、const的作用 八、編程常見…

Linux - MongoDB 數據庫自動退出服務問題/閃退

問題&#xff1a;MongoDB 自動退出服務問題 原因&#xff1a; 由于 Mongodb 服務&#xff0c;使用過多系統內存&#xff0c;導致系統強制停止 Mongodb 服務。 解決方法&#xff1a; 在 mongodb.conf 配置文件內&#xff0c;添加新配置內容&#xff1a; wiredTigerCacheSi…