0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

对象检测边界框损失函数–从IOU到ProbIOU介绍

OpenCV学堂 来源:OpenCV学堂 2024-01-24 10:50 次阅读

概述

目标检测损失函数的选择在目标检测问题建模中至关重要。通常,目标检测需要两个损失函数,一个用于对象分类,另一个用于边界框回归(BBR)。本文将重点介绍 IoU 损失函数(GIoU 损失、DIoU 损失和 CIoU 损失、ProbIoU)。首先来了解一下什么是最原始的IoU定义

什么是IOU(并交比)

对象检测中的 mAP(平均精度)指标是根据 IoU(交集超过并集)进行评估的。因此,BBR使用基于 IoU 的损失函数来实现计算mAP,mAP的典型计算公式与表示如下:

b622cf5c-b9fb-11ee-8b88-92fbcf53809c.png

b63355ca-b9fb-11ee-8b88-92fbcf53809c.png

但是这种最原始的IoU并交比的损失计算方式是有缺陷的,如当预测框与真实框没有相交的时候,IoU损失就是0,这样就导致了没有梯度,导致训练的效果就会打折许多。

改进之GIoU

于是有个聪明的人发现,这样可以稍微避免这种问题的发生,就是把预测框与真实框(A与B)合起来求最小的外接矩形,就变成了如下:

b643a524-b9fb-11ee-8b88-92fbcf53809c.png

对应的GIoU的计算公式就改成了:

b6505aee-b9fb-11ee-8b88-92fbcf53809c.png

下图是分别基于L2与L1损失相同的情况下,IoU跟GIoU有明显的差异比较。

b6595202-b9fb-11ee-8b88-92fbcf53809c.png

加入惩罚项因子以后,对于没有重叠的预测也可以实现边界框回归了,从而改善了IoU的缺陷。论文给出的实验结果如下:

b67aae52-b9fb-11ee-8b88-92fbcf53809c.png

改进之DIoU与CIoU

作者把IoU损失看成是一个通用的公式如下:

b68b8ad8-b9fb-11ee-8b88-92fbcf53809c.png

其中R是惩罚性因子,这样R=0的时候就是普通的IoU损失,从而把IoU损失改进看成是寻找好的惩罚性因子,然后作者通过一通神的思考以后给出了下面的惩罚性因子公式:

b69d552e-b9fb-11ee-8b88-92fbcf53809c.png

这样 DIoU就出来

b6a9afc2-b9fb-11ee-8b88-92fbcf53809c.png

b6b405bc-b9fb-11ee-8b88-92fbcf53809c.png

这样是不是梯度会大一些,回归起来会更猛一点,效果会更好点。但是作者说好的BBR应该考虑三个指标分别是重叠、中心位置距离、横纵比,DIoU只考虑前面两个,还有最后一个还没有考虑到,所以还可以改进,改进之后才是完整的IoU损失(CIoU),然后就得到了另外一个惩罚性因子公式跟对应的CIoU损失:

b6c233f8-b9fb-11ee-8b88-92fbcf53809c.png

然后作者给出了实验结果:

b6da33ea-b9fb-11ee-8b88-92fbcf53809c.png

说明CIoU开挂了,所以YOLOv8默认就是CIoU。

ProbIoU

ProbIoU可以实现OBB旋转对象映射到GBB、然后实现预测框与真实框的回归IoU损失功能,然后基于协方差矩阵,计算巴氏距离以后,再基于BD实现损失计算

b6f2fec0-b9fb-11ee-8b88-92fbcf53809c.png

跟原始的IoU比较,有明显的改善:

b6fd097e-b9fb-11ee-8b88-92fbcf53809c.png

然后它自己说靠谱,所以YOLOv8的旋转对象检测就采用了ProbIoU来做BBR。




审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • MAP
    MAP
    +关注

    关注

    0

    文章

    48

    浏览量

    15127

原文标题:对象检测边界框损失 – 从IOU到ProbIOU

文章出处:【微信号:CVSCHOOL,微信公众号:OpenCV学堂】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    TensorFlow损失函数(定义和使用)详解

    正如前面所讨论的,在回归中定义了损失函数或目标函数,其目的是找到使损失最小化的系数。本节将介绍如何在 TensorFlow 中定义
    发表于 07-28 14:38

    结合预测和目标之间的归一化距离来提出距离-IoU (DIoU) Loss

    1、IoU深入解析  边界回归是目标检测的关键步骤,在现有方法中,虽然-norm loss 被广泛用于边界
    发表于 11-14 15:46

    YOLOv5全面解析教程之目标检测模型精确度评估

    ):分类器把负例正确的分类-预测为负例(yolov5中没有应用到)  yolov5中没有应用TN的原因: TN代表的是所有可能的未正确检测到的边界。然而在yolo在目标检测任务中,每
    发表于 11-21 16:40

    基于YOLOX目标检测算法的改进

    ,忽视了坐标间的关联性。2016 年,Yu et al.在人脸检测任务中提出了 Intersection over Union(IoU)损失函数以建立坐标之间的关联性,提升
    发表于 03-06 13:55

    深度学习:什么是IoU

    IoU是一种测量在特定数据集中检测相应物体准确度的一个标准。IoU是一个简单的测量标准,只要是在输出中得出一个预测范围(bounding boxex)的任务都可以用IoU来进行测量。
    发表于 02-01 01:58 6.6w次阅读

    一种新的带有不确定性的边界回归损失,可用于学习更准确的目标定位

    目标检测是一种多任务学习问题,包含目标定位和目标分类。当前最佳的目标检测器(比如 Faster RCNN、Cascade R-CNN 和 Mask R-CNN)都依靠边界回归来定位目
    的头像 发表于 04-23 16:38 6421次阅读
    一种新的带有不确定性的<b class='flag-5'>边界</b><b class='flag-5'>框</b>回归<b class='flag-5'>损失</b>,可用于学习更准确的目标定位

    一种新的、更精细的对象表示方法 ——RepPoints ,比边界更好用的目标检测方法

    虽然边界便于计算,但它们仅提供目标的粗略定位,并不完全拟合对象的形状和姿态。因此,边界的规
    的头像 发表于 05-05 10:58 7380次阅读
    一种新的、更精细的<b class='flag-5'>对象</b>表示方法 ——RepPoints ,比<b class='flag-5'>边界</b><b class='flag-5'>框</b>更好用的目标<b class='flag-5'>检测</b>方法

    三种常见的损失函数和两种常用的激活函数介绍和可视化

    从上面阐释的步骤可以看出,神经网络中的权重由损失函数的导数而不是损失函数本身来进行更新或反向传播。因此,损失
    的头像 发表于 05-05 11:42 7078次阅读
    三种常见的<b class='flag-5'>损失</b><b class='flag-5'>函数</b>和两种常用的激活<b class='flag-5'>函数</b><b class='flag-5'>介绍</b>和可视化

    RepPoints 比边界更好用的目标检测方法

    来自北京大学、清华大学和微软亚洲研究院的研究人员提出一种新的、更精细的对象表示方法RepPoints,抛弃了流行的边界表示,结果与最先进的基于 anchor 的检测方法同样有效。
    的头像 发表于 05-09 17:25 5810次阅读
    RepPoints 比<b class='flag-5'>边界</b><b class='flag-5'>框</b>更好用的目标<b class='flag-5'>检测</b>方法

    损失函数的简要介绍

    例如,你有一个神经网络,通过该网络可以获取一些与房屋有关的数据并预测其价格。在这种情况下,你可以使用MSE(均方误差)损失。基本上,在输出为实数的情况下,应使用此损失函数
    的头像 发表于 04-17 10:01 3597次阅读

    机器学习和深度学习中分类与回归常用的几种损失函数

    本文将介绍机器学习、深度学习中分类与回归常用的几种损失函数,包括均方差损失 Mean Squared Loss、平均绝对误差损失 Mean
    的头像 发表于 10-09 16:36 6191次阅读
    机器学习和深度学习中分类与回归常用的几种<b class='flag-5'>损失</b><b class='flag-5'>函数</b>

    val.py源码解读

    边界损失(box_loss):该损失用于衡量模型预测的边界与真实
    的头像 发表于 02-20 14:50 1440次阅读

    PyTorch教程-14.7。单发多检测

    SageMaker Studio Lab 中打开笔记本 在第 14.3 节第 14.6 节中,我们介绍边界、锚、多尺度目标
    的头像 发表于 06-05 15:44 603次阅读
    PyTorch教程-14.7。单发多<b class='flag-5'>框</b><b class='flag-5'>检测</b>

    每日一课 | 智慧灯杆视觉技术之对象检测技术简介

    3.2.2对象检测图3-5对象检测对象检测中的识别对象
    的头像 发表于 03-05 10:14 518次阅读
    每日一课 | 智慧灯杆视觉技术之<b class='flag-5'>对象</b><b class='flag-5'>检测</b>技术简介

    纵观全局:YOLO助力实时物体检测原理及代码

    YOLO 流程的最后一步是将边界预测与类别概率相结合,以提供完整的检测输出。每个边界的置信度分数由类别概率调整,确保
    的头像 发表于 03-30 14:43 2250次阅读