Giou YOLOv3 | CVPR2019,通用,更优的检测框损失函数

2023-05-16

这篇论文提出的GIou损失函数,是一种目标检测领域用于回归目标框损失函数。该Trick适用于任何目标检测算法。本文以YOLOv3为例进行阐述。

论文:Generalized Intersection over Union: A Metric and A Loss for Bounding Box
Regression
源码

MSE回归策略
在原始的YOLOv3中,利用MSE作为损失函数来进行目标框的回归,如下图所示,不同质量的预测结果,利用MSE评价指标有时候并不能区分开来。更重要的一点是,MSE损失函数对目标的尺度相当敏感,在原始的论文中通过对目标的长宽开根号的方式降低尺度对回归准确性的影响,但并没有根治这种问题。
在这里插入图片描述
IOU回归策略
由于IOU计算的是交并比,因此IOU更能体现回归框的质量,而且IOU在目标尺度上具有较好的鲁棒性。作者考虑使用IOU替代MSE进行目标框的回归。作者通过实验发现,用IOU作为损失函数进行回归,相较于MSE的结果有提升。
在这里插入图片描述
然而用IOU作为损失函数时会遇到如下两个问题:
1.但检测框与gt之间没有重合时,IoU为0。而在优化损失函数时,梯度为0,意味着无法优化。
2.在检测框与gt之间IoU相同时,检测的效果也具有较大差异,如下图所示:
在这里插入图片描述
GIou回归策略
基于IOU回归策略存在的两个问题,作者提出了GIou作为回归目标框的损失函数。下图所示为GIou和Iou之间的计算方式的区别,以及对应的代码。且GIou有如下优势。
1.GIoU具有作为一个度量标准的优良性质。包括非负性,同一性,对称性,以及三角不等式的性质
2.与IoU相似,具有尺度不变性
3.GIoU的值总是小于IoU的值
4.对于两个矩形框A和B,0≤IoU(A,B)≤1,而-1≤GIoU≤1
5.在A,B没有良好对齐时,会导致C的面积增大,从而使GIoU的值变小,而两个矩形框不重合时,依然可以计算GIoU,一定程度上解决了IoU不适合作为损失函数的原因
在这里插入图片描述
在这里插入图片描述
GIou & Iou & MSE实现对比代码
如下图所示,为Iou和GIou作为目标损失函数的伪代码,以及YOLOv3中MSE和GIou,Iou回归目标框的代码比对。
在这里插入图片描述
在这里插入图片描述
比较结果
如下图所示,利用Iou作为目标框回归函数相较于MSE对结果有一定提升,而利用GIou则得到了最好的结果。
在这里插入图片描述

最近在ICCV中出现的Gaussian YOLOv3以及本文提到的GIou YOLOv3。他们两者优化的是两个没有交集的部分,Gaussian优化的是网络输出,使用的仍然是mse,而Giou优化的是损失函数,因此把这两种策略结合在一起效果说不定会有进一步的优化。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Giou YOLOv3 | CVPR2019,通用,更优的检测框损失函数 的相关文章

  • 关于YOLOv3的一些细节

    原文链接 xff1a https www jianshu com p 86b8208f634f 本文是我对YOLO算法的细节理解总结 xff0c 本文的阅读前提是已读过YOLO相关论文 xff0c 文中不会谈及YOLO的发展过程 xff0c
  • 【Darknet-53】YOLOv3 backbone Darknet-53 详解

    文章目录 1 模型计算量与参数量2 Darknet 53网络3 感谢链接 1 模型计算量与参数量 模型计算量与参数量的计算方式主要有两种 xff0c 一种是使用thop库 xff0c 一种是使用torchsummaryX 使用pip ins
  • 【YOLOv3 decode】YOLOv3中解码理解decode_box

    文章目录 1 解码是什么意思2 代码解读3 生成网格中心 代码详解4 按照网格格式生成先验框的宽高 代码详解5 感谢链接 1 解码是什么意思 在利用YOLOv3网络结构提取到out0 out1 out2之后 xff0c 不同尺度下每个网格点
  • 基于Darknet和Darknet-ROS在Jetson Nano部署yolov3 tiny,进行口罩佩戴检测

    单独运行yolov3 tiy进行目标检测 下载Darknet源码并编译 https gitee com bingda robot darknet git 或者上传本地的darknet源码至Jetson Nano span class tok
  • 多GPU训练keras-yolov3

    qqwweee keras yolo3提供的版本代码没有多GPU选项 xff0c 因为网络的输出是一个loss xff0c 使用keras提供的multi gpu model函数时会报错 xff0c 因为multi gpu model的原理
  • yolov3的训练(一)下载与训练

    darknet框架简介 https blog csdn net mao hui fei article details 113820303 AlexeyAB大佬的关于darknet的详细文档信息 https github com Alexe
  • yolov3的训练(五)darknet的VOC测试集和训练集以及训练前准备

    VOC测试集和训练集 同学们 xff0c 这个系列的文件不要直接就跟着我操作了 xff0c 因为这个是踩坑的记录 xff0c 不是教程 xff0c 我只是将整个流程记录下来 xff0c 让后面的同学操作的时候能够避开这些坑 xff0c 希望
  • yolov3的训练(七)使用darknet_ros框架进行识别与模型导入

    同学们 xff0c 这个系列的文件不要直接就跟着我操作了 xff0c 因为这个是踩坑的记录 xff0c 不是教程 xff0c 我只是将整个流程记录下来 xff0c 让后面的同学操作的时候能够避开这些坑 xff0c 希望你能将整个系列的操作流
  • 【CVPR2019_论文汇总】(按方向划分,0401 更新中)

    转载链接 xff1a http bbs cvmart net topics 302 cvpr2019paper 作为计算机视觉领域三大顶会之一 xff0c CVPR2019 xff08 2019 6 16 6 19在美国洛杉矶举办 xff0
  • 深度学习框架YOLOv3的C++调用

    深度学习框架YOLOv3的C 43 43 调用 深度学习框架YOLOv3的C 43 43 调用 xff08 1 xff09 tensorflow版本的YOLOv3的C 43 43 调用 xff08 失败 xff09 xff08 2 xff0
  • 极简版pytorch实现yolov3-tiny

    参考https github com bubbliiiing yolo3 pytorchtrain py流程 xff1a 加载数据dataloader py正向传播tiny py反向传播loss pydataloader py span c
  • 【YOLOv3 decode】YOLOv3中解码理解decode_box

    文章目录 1 解码是什么意思2 代码解读3 生成网格中心 代码详解4 按照网格格式生成先验框的宽高 代码详解5 感谢链接 1 解码是什么意思 在利用YOLOv3网络结构提取到out0 out1 out2之后 xff0c 不同尺度下每个网格点
  • KERAS-YOLOV3的代码走读

    KERAS YOLOV3的代码走读 GITHUB地址 xff1a https github com qqwweee keras yolo3 YOLOV3的论文中文翻译 xff1a https zhuanlan zhihu com p 349
  • KERAS-YOLOV3的数据增强

    前言 上篇KERAS YOLOV3的代码走读 https blog csdn net yangchengtest article details 80664415 有数据增强的内容没有看明白 这篇来介绍一下 简介 数据增强的方法主要有 xf
  • Yolov3+C+++opencv+VS2015成功检测

    nbsp 前言 nbsp nbsp nbsp 最近在用yolov3进行目标检测 也有一个多星期了 想把最近做出的一些成果记录下来 供大家参考下 我的运行环境是C opencv VS2015 yolov3 下面将简单介绍下yolo的一些思想
  • 基于YOLOv3算法的交通标志识别系统实现流程(个人学习笔记,仅当参考!!)

    总流程 安装darknet 本文利用linux操作系统上安装的Darknet开源轻型深度学习框架 为了提高训练速度利用CUDA和OPENCV 进行编译 完成对YOLO v3算法LISA数据集中四类不同的交通标志的训练及测试 实现对视频中运动
  • YOLOv3 从入门到部署(四)YOLOv3模型导出onnx(基于pytorch)

    YOLOv3 从入门到部署 四 YOLOv3模型导出onnx 基于pytorch 文章目录 YOLOv3 从入门到部署 四 YOLOv3模型导出onnx 基于pytorch 目录 概述 pytorch导出onnx采坑 转onnx代码 使用D
  • YOLO v3基于ROS应用记录

    有时候 就要敢于背上超出自己预料的包袱 真的努力后 你会发现自己要比想象的优秀很多 愿在别人眼里算不上梦想的梦想 成真 言归正传 记录下之前在ROS下跑yolov3的历程吧 感觉现在视觉感知领域用yolo的比faster RCNN多很多了
  • 目标检测标签文件txt转成xml

    最近在用ppyolo训练好的模型对新采集的数据进行标记 再人工微调 减少从头打标签的时间 但是推理保存的结果都是txt格式的 想要在labelimg中可视化 那就需要将txt转换成xml 以下代码即可完成这一功能 coding UTF 8
  • 深入浅出Yolo系列之Yolov3&Yolov4&Yolov5&Yolox核心基础知识完整讲解

    因为工作原因 项目中经常遇到目标检测的任务 因此对目标检测算法会经常使用和关注 比如Yolov3 Yolov4算法 Yolov5算法 Yolox算法 当然 实际项目中很多的第一步 也都是先进行目标检测任务 比如人脸识别 多目标追踪 REID

随机推荐