深度学习中IU、IoU(Intersection over Union)的概念理解以及python程序实现

IoU(Intersection over Union)

Intersection over Union是一种测量在特定数据集中检测相应物体准确度的一个标准。我们可以在很多物体检测挑战中,例如PASCAL VOC challenge中看多很多使用该标准的做法。

通常我们在 HOG + Linear SVM object detectors 和 Convolutional Neural Network detectors (R-CNN, Faster R-CNN, YOLO, etc.)中使用该方法检测其性能。注意,这个测量方法和你在任务中使用的物体检测算法没有关系。

IoU是一个简单的测量标准,只要是在输出中得出一个预测范围(bounding boxex)的任务都可以用IoU来进行测量。为了可以使IoU用于测量任意大小形状的物体检测,我们需要: 1、 ground-truth bounding boxes(人为在训练集图像中标出要检测物体的大概范围); 2、我们的算法得出的结果范围。

也就是说,这个标准用于测量真实和预测之间的相关度,相关度越高,该值越高。

如下图:

下图展示了ground-truth和predicted的结果,绿色标线是人为标记的正确结果,红色标线是算法预测出来的结果,IoU要做的就是在这两个结果中测量算法的准确度。

如上图,很简单,IoU相当于两个区域重叠的部分除以两个区域的集合部分得出的结果。 一般来说,这个score > 0.5 就可以被认为一个不错的结果了。

python程序实现

具体实现过程请移步:https://www.pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/

def bb_intersection_over_union(boxA, boxB):
    # determine the (x, y)-coordinates of the intersection rectangle
    xA = max(boxA[0], boxB[0])
    yA = max(boxA[1], boxB[1])
    xB = min(boxA[2], boxB[2])
    yB = min(boxA[3], boxB[3])

    # compute the area of intersection rectangle
    interArea = (xB - xA + 1) * (yB - yA + 1)

    # compute the area of both the prediction and ground-truth
    # rectangles
    boxAArea = (boxA[2] - boxA[0] + 1) * (boxA[3] - boxA[1] + 1)
    boxBArea = (boxB[2] - boxB[0] + 1) * (boxB[3] - boxB[1] + 1)

    # compute the intersection over union by taking the intersection
    # area and dividing it by the sum of prediction + ground-truth
    # areas - the interesection area
    iou = interArea / float(boxAArea + boxBArea - interArea)

    # return the intersection over union value
    return iou

后记

IoU在FCN中称为IU,初看Fully Convolutional Networks for Semantic Segmentation论文,其中的IU概念没有能理解,其实那里的IU也就是IoU,检测物体轮廓不一定非得是方框,也可以是沿着物体的边线:

在实际的任务中,根据不同的任务要求来写不同具体实现的检测方法,但说白了其实都是IoU或者IU。 另外mean IU指的是不同类别识别准确度的平均值,比如一幅图中要识别三个物体,mean IU就是三个物体分别准确度加起来的平均值。

参考资料:

1、https://www.pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/ 2、https://stackoverflow.com/questions/25349178/calculating-percentage-of-bounding-box-overlap-for-image-detector-evaluation/42874377#42874377 3、https://stackoverflow.com/questions/25349178/calculating-percentage-of-bounding-box-overlap-for-image-detector-evaluation/42874377#42874377

此文由腾讯云爬虫爬取,文章来源于Oldpan博客

欢迎关注Oldpan博客公众号,持续酝酿深度学习质量文:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人工智能

基于Region Proposal的深度学习目标检测简述(一)

开篇需要跟大家道歉,一切忙没时间的理由都是借口,实际上就是偷懒了,这么久才更新,非常抱歉! 本篇争取以最简明的叙述,帮助大家理解下基于Region Propos...

3566
来自专栏用户画像

交叉验证

版权声明:本文为博主-姜兴琪原创文章,未经博主允许不得转载。

1932
来自专栏重庆的技术分享区

吴恩达-神经网络和深度学习(第二周神经网络基础)

1594
来自专栏AIUAI

目标检测 - Faster R-CNN 中 RPN 原理

4998
来自专栏算法channel

深度学习|卷积神经网络(CNN)介绍(后篇)

01 — 回顾 昨天介绍了CNN的卷积操作,能减少权重参数的个数,卷积操作涉及到三个超参数: 深度(Depth) 步长(Stride) 零填充(Zero-pad...

5025
来自专栏AI研习社

用Kaggle经典案例教你用CNN做图像分类!

前言 在上一篇专栏《利用卷积自编码器对图片进行降噪》中,我们利用卷积自编码器对 MNIST 数据进行了实验,这周我们来看一个 Kaggle 上比较经典的一...

4106
来自专栏用户2442861的专栏

VGG论文笔记/小结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/d...

3602
来自专栏闪电gogogo的专栏

《统计学习方法》笔记七(1) 支持向量机——线性可分支持向量机

应用拉格朗日对偶性,通过求解对偶问题得到原始问题的最优解,一是因为对偶问题往往更容易求解,二是自然引入核函数,进而推广到非线性分类的问题。

922
来自专栏文武兼修ing——机器学习与IC设计

Fast-RCNN阅读笔记系统架构模型训练

由于RCNN存在流水线过长,检测速度慢的问题,Fast-RCNN几乎将整个过程置于深度学习的框架下,因此带来了准确率和速度的提升,该系统主要组成部分如上图所示,...

1491
来自专栏人工智能LeadAI

译文 | 与TensorFlow的第一次接触 第五章:多层神经网络

本章中,我们继续使用之前章节中的MNIST数字识别问题,与读者一起编码实现一个简单的深度学习神经网络。 如我们所了解的,一个深度学习神经网络由相互叠加的多层组成...

3444

扫码关注云+社区

领取腾讯云代金券