本文介绍: IoU(Intersection over Union,交并比)、GIoU(Generalized IoU,广义交并比)、CIoU(Complete IoU,完全交并比)和DIoU(Distance IoU,距离交并比)是目标检测中常用于评估预测框和真实框之间重叠程度的指标。
IoU(Intersection over Union,交并比)、GIoU(Generalized IoU,广义交并比)、CIoU(Complete IoU,完全交并比)和DIoU(Distance IoU,距离交并比)是目标检测中常用于评估预测框和真实框之间重叠程度的指标。
IoU(交并比):
def calculate_iou(box1, box2):
intersection = max(0, min(box1[2], box2[2]) - max(box1[0], box2[0])) * max(0, min(box1[3], box2[3]) - max(box1[1], box2[1]))
union = (box1[2] - box1[0]) * (box1[3] - box1[1]) + (box2[2] - box2[0]) * (box2[3] - box2[1]) - intersection
iou = intersection / union
return iou
GIoU(广义交并比):
- 定义: GIoU考虑了边界框的重叠和大小。
- 用途: 解决了IoU在定位任务中不是一个合适度量的问题。
def calculate_giou(box1, box2): # 具体实现取决于具体要求,包括计算边界框和凸包的面积。以下是一个简化的示例: iou = calculate_iou(box1, box2) c_area = min(box1[2], box2[2]) * min(box1[3], box2[3]) giou = iou - ((c_area - union) / c_area) return giou
CIoU(完全交并比):
- 定义: CIoU通过考虑边界框的纵横比进一步改进了GIoU。
- 用途: 尝试解决GIoU对纵横比差异敏感的问题。
def calculate_ciou(box1, box2): giou = calculate_giou(box1, box2) c_x = min(box1[0], box2[0]) + min(box1[2], box2[2]) / 2 c_y = min(box1[1], box2[1]) + min(box1[3], box2[3]) / 2 c_distance = ((c_x - box2[0]) ** 2 + (c_y - box2[1]) ** 2) ** 0.5 diou_term = c_distance ** 2 / ((c_area - union) + 1e-7) ciou = giou - diou_term return ciou
DIoU(距离交并比):
- 定义: DIoU引入了考虑边界框中心点距离的项。
- 用途: 通过惩罚边界框中心点之间的大距离,改进了CIoU。
def calculate_diou(box1, box2): ciou = calculate_ciou(box1, box2) c_x = min(box1[0], box2[0]) + min(box1[2], box2[2]) / 2 c_y = min(box1[1], box2[1]) + min(box1[3], box2[3]) / 2 c_distance = ((c_x - box2[0]) ** 2 + (c_y - box2[1]) ** 2) ** 0.5 diou_term = c_distance ** 2 / ((c_area - union) + 1e-7) diou = ciou - diou_term return diou
原文地址:https://blog.csdn.net/weixin_57111012/article/details/134759564
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_30916.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。