亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

解析目標檢測之IoU

瀏覽:74日期:2022-06-15 17:06:23
目錄一、IoU的簡介及原理解析二、基于TensorFlow的IoU實現一、IoU的簡介及原理解析

IoU 的全稱為交并比(Intersection over Union),通過這個名稱我們大概可以猜到 IoU 的計算方法。IoU 計算的是 “預測的邊框” 和 “真實的邊框” 的交集和并集的比值。

解析目標檢測之IoU

開始計算之前,我們首先進行分析下交集和并集到底應該怎么計算:我們首先需要計算交集,然后并集通過兩個邊框的面積的和減去交集部分即為并集,因此 IoU 的計算的難點在于交集的計算。

為了計算交集,你腦子里首先想到的方法應該是:考慮兩個邊框的相對位置,然后按照相對位置(左上,左下,右上,右下,包含,互不相交)分情況討論,來計算交集。

解析目標檢測之IoU

上圖就是你的直覺,這樣想沒有錯。但計算一個交集,就要分多種情況討論,要是程序真的按照這邏輯編寫就太搞笑了。因此對這個問題進行進一步地研究顯得十分有必要。

讓我們重新思考一下兩個框交集的計算。兩個框交集的計算的實質是兩個集合交集的計算,因此我們可以將兩個框的交集的計算簡化為:

解析目標檢測之IoU

通過簡化,我們可以清晰地看到,交集計算的關鍵是交集上下界點(圖中藍點)的計算。

我們假設集合 A 為 [x1,x2],集合 B 為 [y1,y2]。然后我們來求AB交集的上下界限。

交集計算的邏輯

交集下界z1:max(x1,y1) 交集上界z2:min(x2,y2) 如果z2-z1小于0,則說明集合 A 和集合 B 沒有交集。

下面使用Python來實現兩個一維集合的 IoU 的計算:

def iou(set_a, set_b): ’’’ 一維 iou 的計算 ’’’ x1, x2 = set_a # (left, right) y1, y2 = set_b # (left, right)low = max(x1, y1) high = min(x2, y2) # intersection if high-low<0:inter = 0 else:inter = high-low # union union = (x2 - x1) + (y2 - y1) - inter # iou iou = inter / union return iou

上面,我們計算了兩個一維集合的 iou,將上面的程序進行擴展,即可得到兩個框 IoU 計算的程序。

def iou(box1, box2): ’’’ 兩個框(二維)的 iou 計算注意:邊框以左上為原點box:[top, left, bottom, right] ’’’ in_h = min(box1[2], box2[2]) - max(box1[0], box2[0]) in_w = min(box1[3], box2[3]) - max(box1[1], box2[1]) inter = 0 if in_h<0 or in_w<0 else in_h*in_w union = (box1[2] - box1[0]) * (box1[3] - box1[1]) + (box2[2] - box2[0]) * (box2[3] - box2[1]) - inter iou = inter / union return iou二、基于TensorFlow的IoU實現

上節介紹了IoU,及其的計算,下面我們給出其在 TensorFlow 上的實現:

import tensorflow as tfdef IoU_calculator(x, y, w, h, l_x, l_y, l_w, l_h): '''calaulate IoU Args: x: net predicted x y: net predicted y w: net predicted width h: net predicted height l_x: label x l_y: label y l_w: label width l_h: label heightReturns: IoU '''# convert to coner x_max = x + w/2 y_max = y + h/2 x_min = x - w/2 y_min = y - h/2 l_x_max = l_x + l_w/2 l_y_max = l_y + l_h/2 l_x_min = l_x - l_w/2 l_y_min = l_y - l_h/2 # calculate the inter inter_x_max = tf.minimum(x_max, l_x_max) inter_x_min = tf.maximum(x_min, l_x_min) inter_y_max = tf.minimum(y_max, l_y_max) inter_y_min = tf.maximum(y_min, l_y_min) inter_w = inter_x_max - inter_x_min inter_h = inter_y_max - inter_y_mininter = tf.cond(tf.logical_or(tf.less_equal(inter_w,0), tf.less_equal(inter_h,0)), lambda:tf.cast(0,tf.float32), lambda:tf.multiply(inter_w,inter_h)) # calculate the union union = w*h + l_w*l_h - interIoU = inter / union return IoU

以上就是解析目標檢測之IoU的詳細內容,更多關于目標檢測IoU的資料請關注好吧啦網其它相關文章!

標簽: IoU TensorFlow
主站蜘蛛池模板: 青青青国产依人在线视频97 | 99久久99久久精品国产 | 久久天天躁狠狠躁夜夜爽蜜月 | 国产欧美亚洲精品 | 日本大片成人免费播放 | 欧美大片a一级毛片视频 | 亚洲国产精品不卡毛片a在线 | 亚洲国产精品久久久久秋霞66 | 国产精品爱久久久久久久电影 | 午夜色大片在线观看 | 亚洲欧美视频网站 | 日韩在线一区二区三区视频 | 国产精品无码专区在线观看 | 欧美 日韩 国产 成人 在线观看 | 国产ppp在线视频在线观看 | 国产精品亚洲一区二区三区 | 久久久久国产成人精品 | 91精品视频免费在线观看 | 色噜噜五月综合激情久久爱 | 二区在线播放 | 日本无卡无吗中文免费 | 思思久久q6热在精品国产 | 婷婷成人基地 | 国产欧美在线播放 | 成年大片免费视频播放手机不卡 | 国产精品亚洲四区在线观看 | 黄色一级片a | 国产成人免费网站在线观看 | 欧美日韩一区二区三区在线视频 | 亚洲欧美日韩另类 | 国产精品99爱免费视频 | 搞黄视频在线观看 | 国产欧美在线一区二区三区 | 日韩免费一级a毛片在线播放一级 | www香蕉视频| 国产a不卡片精品免费观看 国产a毛片高清视 | 国产一区二区三区露脸 | 一区二区三区日韩精品 | 国产裸舞福利资源在线视频 | 欧美日韩一级片在线观看 | 久久免费大片 |