文档章节

目标检测——IoU 计算

o
 osc_w9s1w4o0
发布于 2019/03/28 23:26
字数 361
阅读 14
收藏 0

精选30+云产品,助力企业轻松上云!>>>

Iou 的计算

我们先考虑一维的情况:令 $A = [x_1,x_2], B = [y_1, y_2]$,若想要 $A$ 与 $B$ 有交集,需要满足如下情况:

简言之,要保证 $A$ 和 $B$ 的最大值中最小的那个减去它们中的最小值中最大的那个即可获得公共部分,代码实现如下:

class Anchor:
    def __init__(self, base_size=16):
        self.base_size = base_size  # 滑动窗口的大小
        if not base_size:
            raise ValueError("Invalid base_size: {}.".format(base_size))
        self._anchor = np.array([1, 1, self.base_size, self.base_size]) - 1

    @property
    def anchor(self):
        return self._anchor

    @anchor.setter
    def anchor(self, new_anchor):
        self._anchor = new_anchor

    @property
    def w(self):
        '''
        锚框的宽度
        '''
        return self.anchor[2] - self.anchor[0] + 1

    @property
    def h(self):
        '''
        锚框的高度
        '''
        return self.anchor[3] - self.anchor[1] + 1

    @property
    def size(self):
        '''
        锚框的面积
        '''
        return self.w * self.h

    @property
    def _whctrs(self):
        """
        Return x center, and y center for an anchor (window). 锚框的中心坐标
        """
        x_ctr = self.anchor[0] + 0.5 * (self.w - 1)
        y_ctr = self.anchor[1] + 0.5 * (self.h - 1)
        return np.array([x_ctr, y_ctr])

    @staticmethod
    def _coordinate(aspect, ctr):
        '''
        依据宽高组合计算锚框的坐标
        '''
        k = (aspect - 1) / 2
        return np.concatenate([ctr - k, ctr + k], axis=1)

先创建一个可以用来做运算的计算器,然后在此基础上计算二维的 IoU,即

def iou(anchor, anchor1):
    A = Anchor()
    B = Anchor()
    A.anchor = anchor
    B.anchor = anchor1
    T = np.stack([A.anchor, B.anchor])
    xmin, ymin, xmax, ymax = np.split(T, 4, axis=1)
    w = xmax.min() - xmin.max()
    h = ymax.min() - ymin.max()
    I = w * h
    U = A.size + B.size - I
    return I / U

下面举一例子,并可视化:

img = np.ones((128 ,300, 3))  # 图片
anchor = [ 12.,   8., 195., 103.]
anchor1 = [ 28.,   8., 211., 103.]
iou(anchor, anchor1)

最终结果为:

0.8151364126804707
o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
GIoU

作者 | ywsun 论文链接 | arxiv.org/abs/1902.0963 原文地址 | https://zhuanlan.zhihu.com/p/57863810 作者没有对网络结构进行改进,反而是从一个特殊的视角来考虑目标检测的改进点——使用...

osc_qg4dad59
2019/08/14
0
0
GIOU 相比于IOU的好处

前言:   在目标检测的任务中,一样的损失函数可能有不同的IOU值,如下图(L2作为损失函数)   上图三张图有一样的L2距离,但是IoU值却完全不同。坐标表示方法为(x1,y1,x2,y2)。   下图...

osc_pssaw7yw
03/01
1
0
平均精度均值(mAP)——目标检测模型性能统计量

  在机器学习领域,对于大多数常见问题,通常会有多个模型可供选择。当然,每个模型会有自己的特性,并会受到不同因素的影响而表现不同。   每个模型的好坏是通过评价它在某个数据集上的...

osc_foo7glsg
2018/11/03
1
0
深度学习目标检测系列:一文弄懂YOLO算法|附Python源码

摘要: 本文是目标检测系列文章——YOLO算法,介绍其基本原理及实现细节,并用python实现,方便读者上手体验目标检测的乐趣。 在之前的文章中,介绍了计算机视觉领域中目标检测的相关方法——...

阿里云云栖社区
2018/12/18
0
0
深度学习目标检测系列:一文弄懂YOLO算法|附Python源码

摘要: 本文是目标检测系列文章——YOLO算法,介绍其基本原理及实现细节,并用python实现,方便读者上手体验目标检测的乐趣。 在之前的文章中,介绍了计算机视觉领域中目标检测的相关方法——...

阿里云云栖社区
2018/12/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

PHP控制反转和依赖注入

[TOC] PHP和依赖注入 理论知识 作者:Mingqi 链接:https://www.zhihu.com/question/23277575/answer/169698662 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明...

我爱吃炒鸡
8分钟前
8
0
Xcode 6:键盘未显示在模拟器中 - Xcode 6: Keyboard does not show up in simulator

问题: The keyboard does not show up when I run the simulator and click in the UITextView. 当我运行模拟器并单击UITextView时,键盘没有显示。 How do I re-enable the keyboard? 如何......

法国红酒甜
38分钟前
23
0
紫外线消毒灯EPA注册有请小蔡

臭氧消毒器EPA注册,紫外线消毒灯EPA注册,UV水质过滤器EPA注册,UV空气过滤器EPA注册,UV灭蚊灯EPA注册,超声驱虫设备EPA注册,UV消毒器EPA注册,高频驱鸟器EPA注册,电子驱鼠器EPA注册 二、...

IECEE证书注册
今天
11
0
小程序上传帖子(含有文字图片的微信验证)

public.js var graceJS = require('../../utils/grace.js');import { config } from '../../config.js'Page({ /** * 页面的初始数据 */ data: { imglist: [], title:'......

子枫Eric
今天
28
0
如今大火的算法框架TensorFlow,都有哪些值得一看的好书呢?

TensorFlow™是一个基于数据流编程(dataflow programming)的符号数学系统,被广泛应用于各类机器学习(machine learning)算法的编程实现,其前身是谷歌的神经网络算法库DistBelief 。 Te...

程序员知识码头
今天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部