真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python如何實(shí)現(xiàn)非極大值抑制算法-創(chuàng)新互聯(lián)

python 如何實(shí)現(xiàn)非極大值抑制算法?相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

為壽陽等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及壽陽網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為做網(wǎng)站、成都網(wǎng)站建設(shè)、壽陽網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

NMS 算法在目標(biāo)檢測(cè),目標(biāo)定位領(lǐng)域有較廣泛的應(yīng)用。

算法原理

非極大值抑制算法(Non-maximum suppression, NMS)的本質(zhì)是搜索局部極大值,抑制非極大值元素。

算法的作用

當(dāng)算法對(duì)一個(gè)目標(biāo)產(chǎn)生了多個(gè)候選框的時(shí)候,選擇 score 最高的框,并抑制其他對(duì)于改目標(biāo)的候選框

python 如何實(shí)現(xiàn)非極大值抑制算法

適用場(chǎng)景

一幅圖中有多個(gè)目標(biāo)(如果只有一個(gè)目標(biāo),那么直接取 score 最高的候選框即可)。

算法的輸入

算法對(duì)一幅圖產(chǎn)生的所有的候選框,以及每個(gè)框?qū)?yīng)的 score (可以用一個(gè) 5 維數(shù)組 dets 表示,前 4 維表示四個(gè)角的坐標(biāo),第 5 維表示分?jǐn)?shù)),閾值 thresh。

算法的輸出

正確的候選框組(dets 的一個(gè)子集)。

細(xì)節(jié)

  • 起始,設(shè)所有的框都沒有被抑制,所有框按照 score 從大到小排序。
  • 從第 0 個(gè)框(分?jǐn)?shù)最高)開始遍歷:對(duì)于每一個(gè)框,如果該框沒有被抑制,就將所有與它 IoU 大于 thresh 的框設(shè)為抑制。
  • 返回沒被抑制的框。

參考代碼

# --------------------------------------------------------
# Fast R-CNN
# Copyright (c) 2015 Microsoft
# Licensed under The MIT License [see LICENSE for details]
# Written by Ross Girshick
# --------------------------------------------------------

import numpy as np
cimport numpy as np

cdef inline np.float32_t max(np.float32_t a, np.float32_t b):
  return a if a >= b else b

cdef inline np.float32_t min(np.float32_t a, np.float32_t b):
  return a if a <= b else b

def cpu_nms(np.ndarray[np.float32_t, ndim=2] dets, np.float thresh):
  cdef np.ndarray[np.float32_t, ndim=1] x1 = dets[:, 0]
  cdef np.ndarray[np.float32_t, ndim=1] y1 = dets[:, 1]
  cdef np.ndarray[np.float32_t, ndim=1] x2 = dets[:, 2]
  cdef np.ndarray[np.float32_t, ndim=1] y2 = dets[:, 3]
  cdef np.ndarray[np.float32_t, ndim=1] scores = dets[:, 4]

  cdef np.ndarray[np.float32_t, ndim=1] areas = (x2 - x1 + 1) * (y2 - y1 + 1)
  cdef np.ndarray[np.int_t, ndim=1] order = scores.argsort()[::-1]

  cdef int ndets = dets.shape[0]
  cdef np.ndarray[np.int_t, ndim=1] suppressed = \
      np.zeros((ndets), dtype=np.int)

  # nominal indices
  cdef int _i, _j
  # sorted indices
  cdef int i, j
  # temp variables for box i's (the box currently under consideration)
  cdef np.float32_t ix1, iy1, ix2, iy2, iarea
  # variables for computing overlap with box j (lower scoring box)
  cdef np.float32_t xx1, yy1, xx2, yy2
  cdef np.float32_t w, h
  cdef np.float32_t inter, ovr

  keep = []
  for _i in range(ndets):
    i = order[_i]
    if suppressed[i] == 1:
      continue
    keep.append(i)
    ix1 = x1[i]
    iy1 = y1[i]
    ix2 = x2[i]
    iy2 = y2[i]
    iarea = areas[i]
    for _j in range(_i + 1, ndets):
      j = order[_j]
      if suppressed[j] == 1:
        continue
      xx1 = max(ix1, x1[j])
      yy1 = max(iy1, y1[j])
      xx2 = min(ix2, x2[j])
      yy2 = min(iy2, y2[j])
      w = max(0.0, xx2 - xx1 + 1)
      h = max(0.0, yy2 - yy1 + 1)
      inter = w * h
      ovr = inter / (iarea + areas[j] - inter)
      if ovr >= thresh:
        suppressed[j] = 1

  return keep

文章名稱:python如何實(shí)現(xiàn)非極大值抑制算法-創(chuàng)新互聯(lián)
瀏覽地址:http://weahome.cn/article/pjpjd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部