日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python实现交并比IOU

發布時間:2024/4/15 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python实现交并比IOU 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? 交并比(Intersection-over-Union,IoU),目標檢測中使用的一個概念,是產生的候選框(candidate bound)與原標記框(ground truth bound)的交疊率,即它們的交集與并集的比值。最理想情況是完全重疊,即比值為1。

計算公式:

?

Python實現代碼:

def cal_iou(box1, box2):""":param box1: = [xmin1, ymin1, xmax1, ymax1]:param box2: = [xmin2, ymin2, xmax2, ymax2]:return: """xmin1, ymin1, xmax1, ymax1 = box1xmin2, ymin2, xmax2, ymax2 = box2# 計算每個矩形的面積s1 = (xmax1 - xmin1) * (ymax1 - ymin1) # C的面積s2 = (xmax2 - xmin2) * (ymax2 - ymin2) # G的面積# 計算相交矩形xmin = max(xmin1, xmin2)ymin = max(ymin1, ymin2)xmax = min(xmax1, xmax2)ymax = min(ymax1, ymax2)w = max(0, xmax - xmin)h = max(0, ymax - ymin)area = w * h # C∩G的面積iou = area / (s1 + s2 - area)return iou

參考:https://blog.csdn.net/qq_30622831/article/details/85144849

# -*-coding: utf-8 -*- """@Project: IOU@File : IOU.py@Author : panjq@E-mail : pan_jinquan@163.com@Date : 2018-10-14 10:44:06 """ def calIOU_V1(rec1, rec2):"""computing IoU:param rec1: (y0, x0, y1, x1), which reflects(top, left, bottom, right):param rec2: (y0, x0, y1, x1):return: scala value of IoU"""# 計算每個矩形的面積S_rec1 = (rec1[2] - rec1[0]) * (rec1[3] - rec1[1])S_rec2 = (rec2[2] - rec2[0]) * (rec2[3] - rec2[1])# computing the sum_areasum_area = S_rec1 + S_rec2# find the each edge of intersect rectangleleft_line = max(rec1[1], rec2[1])right_line = min(rec1[3], rec2[3])top_line = max(rec1[0], rec2[0])bottom_line = min(rec1[2], rec2[2])# judge if there is an intersectif left_line >= right_line or top_line >= bottom_line:return 0else:intersect = (right_line - left_line) * (bottom_line - top_line)return intersect/(sum_area - intersect)def calIOU_V2(rec1, rec2):"""computing IoU:param rec1: (y0, x0, y1, x1), which reflects(top, left, bottom, right):param rec2: (y0, x0, y1, x1):return: scala value of IoU"""# cx1 = rec1[0]# cy1 = rec1[1]# cx2 = rec1[2]# cy2 = rec1[3]# gx1 = rec2[0]# gy1 = rec2[1]# gx2 = rec2[2]# gy2 = rec2[3]cx1,cy1,cx2,cy2=rec1gx1,gy1,gx2,gy2=rec2# 計算每個矩形的面積S_rec1 = (cx2 - cx1) * (cy2 - cy1) # C的面積S_rec2 = (gx2 - gx1) * (gy2 - gy1) # G的面積# 計算相交矩形x1 = max(cx1, gx1)y1 = max(cy1, gy1)x2 = min(cx2, gx2)y2 = min(cy2, gy2)w = max(0, x2 - x1)h = max(0, y2 - y1)area = w * h # C∩G的面積iou = area / (S_rec1 + S_rec2 - area)return iouif __name__=='__main__':rect1 = (661, 27, 679, 47)# (top, left, bottom, right)rect2 = (662, 27, 682, 47)iou1 = calIOU_V1(rect1, rect2)iou2 = calIOU_V2(rect1, rect2)print(iou1)print(iou2)

?

總結

以上是生活随笔為你收集整理的python实现交并比IOU的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。