目标检测 IOU 计算

Posted by wxianfeng Mon, 03 Mar 2014 07:13:00 GMT

iou 为面积的交并比,在目标检测中非常常见,英文为 Intersection-over-Union。

图示:

计算格式:

python 代码:

class IOU:

    def calc_iou(self, bbox1, bbox2):
        """
        calc iou
        :param bbox1: (x1,y1,x2,y2)
        :param bbox2: (x1,y1,x2,y2)
        :return:
        """
        w_1 = abs(bbox1[0] - bbox1[2])
        h_1 = abs(bbox1[1] - bbox1[3])
        area_1 = w_1 * h_1

        w_2 = abs(bbox2[0] - bbox2[2])
        h_2 = abs(bbox2[1] - bbox2[3])
        area_2 = w_2 * h_2

        min_x_1 = min(bbox1[0], bbox1[2])
        min_y_1 = min(bbox1[1], bbox1[3])
        max_x_1 = max(bbox1[0], bbox1[2])
        max_y_1 = max(bbox1[1], bbox1[3])

        min_x_2 = min(bbox2[0], bbox2[2])
        min_y_2 = min(bbox2[1], bbox2[3])
        max_x_2 = max(bbox2[0], bbox2[2])
        max_y_2 = max(bbox2[1], bbox2[3])

        overlap_min_x = max(min_x_1, min_x_2)
        overlap_min_y = max(min_y_1, min_y_2)
        overlap_max_x = min(max_x_1, max_x_2)
        overlap_max_y = min(max_y_1, max_y_2)

        overlap_w = max(0, overlap_max_x - overlap_min_x)
        overlap_h = max(0, overlap_max_y - overlap_min_y)
        overlap_area = overlap_w * overlap_h

        iou = overlap_area / (area_1 + area_2 - overlap_area)

        return iou

深度学习中 BoundingBox 坐标和 Rect 坐标区别

Posted by wxianfeng Thu, 02 Jan 2014 12:34:00 GMT

学习深度学习有一段时间了,大概一年,也算入门了,后面有时间慢慢给大家介绍。

今天给大家介绍下 BoundingBox 坐标和 Rect 坐标的区别。 ​ BoundingBox

BoundingBox 在目标检测(Object Detecting) 领域很常见,刚开始的时候,一直以为 (0,0) 坐标原点在左下角,正确的应该是在左上角,如下图所示:

BoundingBox 可简写为 bbox,有两个坐标 (xmin, ymin) (xmax, ymax),即左上角 和 右下角的两个点,对应图中的 (x1, y1) (x2, y2) 。

Rect

Rect 坐标是只有一个坐标点,然后有宽度(width),高度(height)的值,如下图所示:

这两种矩形标示法在机器学习领域都经常见到,没有好坏之分,殊途同归,且可以互相转化,如果设计 API 的话,个人认为选哪个都可以。

很简单,明白了吧 ~

BTW: 这篇文章是深度学习相关的第一篇文章,也是我第一次在微信公众号中写文章。这个微信公众号申请很久了,在2013年5月就申请了,还可以看到一个推送的表情 。为什么在微信公众号中写,以后 Blog 中不写了吗 ?Blog 中还会写,在微信公众号里写,1是为了增加文章的分发渠道,2是为了熟悉下微信公众号,因为后面还准备增加小程序。