自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

終于把目標檢測中的 NMS 搞懂了!

人工智能
目標檢測(Object Detection)是一種計算機視覺技術(shù),其主要任務(wù)是識別圖像或視頻中的目標,并確定每個目標的位置和類別。

大家好,我是小寒

今天給大家分享目標檢測中的一個關(guān)鍵知識點,NMS

目標檢測中的非最大抑制(Non-Maximum Suppression, NMS)是一個關(guān)鍵步驟,用于去除多余的候選框(bounding boxes),從而精簡檢測結(jié)果。它主要用于確保每個目標只被檢測一次,避免多個重疊的候選框表示同一個目標。

目標檢測簡介

目標檢測(Object Detection)是一種計算機視覺技術(shù),其主要任務(wù)是識別圖像或視頻中的目標,并確定每個目標的位置和類別。

與圖像分類不同,目標檢測不僅需要識別圖像中包含的物體,還需要定位這些物體在圖像中的具體位置(通常用邊界框表示)。

圖片圖片

  • 在第一幅圖中,我們只是對圖片中的物體進行 “分類”。這是一個分類問題
  • 在第二幅圖中,我們只是在圖像中“定位”物體。這是一個定位問題
  • 在第三幅圖中,我們對物體進行 “分類和定位”。這是一個目標檢測問題

目標檢測任務(wù)有多種算法,這些算法在過去十年中不斷發(fā)展。

為了進一步提高性能并捕捉不同形狀和大小的物體,算法會預測多個不同大小和長寬比的邊界框。

圖片圖片

但是在所有邊界框中,如何選擇最合適、最準確的邊界框?這就是 NMS 發(fā)揮作用的地方。

什么是非最大抑制?

圖片中的物體可能大小和形狀各異,為了完美捕捉每個物體,目標檢測算法會創(chuàng)建多個邊界框(左圖)。理想情況下,對于圖片中的每個物體,我們都必須有一個邊界框,類似于右圖。

圖片圖片

為了從多個預測的邊界框中選擇最佳邊界框,這些目標檢測算法使用非最大抑制。

該技術(shù)用于“抑制”可能性較小的邊界框并僅保留最佳邊界框。

非最大抑制如何起作用?

非最大抑制的目的是為對象選擇最佳邊界框,并拒絕或 “抑制” 所有其他邊界框。

該算法迭代地選擇最佳邊界框,比較重疊,并刪除冗余框,直到收斂。

NMS 考慮了兩件事

  • 客觀性得分由模型給出
  • 邊界框的重疊或 IOU

你可以在下圖中看到,除了邊界框之外,模型還會返回客觀性分數(shù)。

該分數(shù)表示模型對目標對象存在于此邊界框中的確定程度。

圖片圖片

你可以看到所有邊界框都有物體,但只有綠色邊界框是檢測物體的最佳邊界框。

現(xiàn)在我們?nèi)绾螖[脫其他邊界框?

非最大抑制將首先選擇客觀性得分最高的邊界框。然后刪除所有其他重疊度高的邊界框。

所以在上面的圖片中,

  1. 我們將為狗選擇綠色邊界框(因為它的客觀性得分最高,為 98%)
  2. 并移除狗的黃色和紅色框(因為它們與綠色框重疊較高)

其余的框也采用相同的過程,這個過程不斷迭代,直到不再減少框。

最后,我們將得到以下結(jié)果。

圖片圖片

這就是 NMS 的工作原理。

實現(xiàn)非最大抑制

現(xiàn)在你應(yīng)該對非最大抑制有了很好的理解。讓我們將非最大抑制的過程分解為幾個步驟。

  • 選擇客觀性得分最高的框
  • 然后,比較此框與其他框的重疊(交集與并集)
  • 刪除重疊(交集與并集)大于 50% 的邊界框
  • 然后,轉(zhuǎn)到下一個最高的客觀性得分
  • 最后重復步驟2-4

圖片圖片

假設(shè)我們一個人和狗的圖像,有六個邊界框,每個邊界框都有客觀性分數(shù)。

圖片圖片

對于此圖像,我們將使用 torchvision 庫中的非最大抑制(NMS 算法)函數(shù) nms() 。

此函數(shù)需要三個參數(shù)-

  • Boxes:x1、y1、x2、y2 格式的邊界框坐標
  • 分數(shù):每個邊界框的客觀性分數(shù)
  • iou_threshold:重疊(或 IOU)的閾值

這里,由于上述坐標采用 x1、y1、寬度、高度格式,我們將按以下方式確定 x2、y2

x2 = x1 + 寬度 

y2 = y1 + 高度

import torch
from torchvision.ops import nms


boxes = torch.tensor([[190,380,(190+300),(380+150)],
                      [300,420,(300+150),(420+210)],
                      [320,360,(320+200),(360+230)],

                      [390,50,(390+300),(50+330)],
                      [490,45,(490+200),(45+500)],
                      [480,130,(480+150),(130+400)]], dtype=torch.float32)

scores = torch.tensor([[0.90],[0.98],[0.82], [0.87],[0.98],[0.82]], dtype=torch.float32)

nms(boxes = boxes, scores = scores, iou_threshold=0.2)

#tensor([1, 4])

對于我們的示例,這個 python 函數(shù)返回了邊界框 1 和 4。


責任編輯:武曉燕 來源: 程序員學長
相關(guān)推薦

2024-07-17 09:32:19

2024-10-16 07:58:48

2024-12-03 08:16:57

2024-09-23 09:12:20

2025-02-17 13:09:59

深度學習模型壓縮量化

2024-10-14 14:02:17

機器學習評估指標人工智能

2024-09-18 16:42:58

機器學習評估指標模型

2024-11-05 12:56:06

機器學習函數(shù)MSE

2024-08-23 09:06:35

機器學習混淆矩陣預測

2024-10-08 15:09:17

2024-10-08 10:16:22

2024-10-30 08:23:07

2024-10-28 15:52:38

機器學習特征工程數(shù)據(jù)集

2025-01-15 11:25:35

2024-12-26 00:34:47

2025-01-20 09:21:00

2024-10-28 00:00:10

機器學習模型程度

2024-12-02 01:10:04

神經(jīng)網(wǎng)絡(luò)自然語言DNN

2024-11-21 10:07:40

2024-10-31 10:00:39

注意力機制核心組件
點贊
收藏

51CTO技術(shù)棧公眾號