这篇论文提出的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优化的是损失函数,因此把这两种策略结合在一起效果说不定会有进一步的优化。

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

  1. 针对部分16系显卡通过VS2017编译的YOLOV3测试成功但图像无检测框的问题:

    关键点:16系显卡不支持参数cudnn_half,需要在预编译中去掉此参数 1. 在VS2017中,打开darknet-属性页 2. 更改算力为适合自己显卡的参数 我的显卡是GTX1650,所以设置的 ...

  2. yolov3识别的类别_Gaussian YOLOv3:一个更强的YOLOv3,现已开源!

    在目标检测的落地项目中,实时性和精确性的trade-off至关重要,而YOLOv3是目前为止在这方面做得最好的算法.本文通过高斯分布的特性,改进YOLOv3使得网络能够输出每个检测框的不确定性,从而提 ...

  3. 基于YOLOV3的通用物体检测项目实战---(5)利用DarkNet框架进行YOLOV3模型训练实操(笔记)

    cfg文件夹: coco.data是能用到的配置文件 [net] # Testing #测试模式batch=1 subdivisions=1 # Training #训练模式 每次前向图片的数目=ba ...

  4. Poly-YOLO:更快,更精确的检测(主要解决Yolov3两大问题,附源代码)

    点击上方"计算机视觉工坊",选择"星标" 干货第一时间送达 作者丨Edison_G 来源丨计算机视觉研究院 论文地址:https://arxiv.org/pdf ...

  5. 目标检测回归损失函数简介:SmoothL1/IoU/GIoU/DIoU/CIoU Loss

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源:极市平台 目标检测任务的损失函数由Classificitio ...

  6. 改进YOLOv3 | IA-YOLO让恶劣天气的目标检测起飞了!!!

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨ChaucerG 来源丨 集智书童 虽然基于深度学习的目标检测方法在传统数据集上取得了良好的效果 ...

  7. mAP提升40%!YOLO3改进版—— Poly-YOLO:更快,更精确的检测和实例分割

    本文转载自AI深度视线. 精彩内容 YOLOv3改进版来了!与YOLOv3相比,Poly-YOLO的训练参数只有其60%,但mAP却提高了40%!并提出更轻量的Poly-YOLO Lite,还扩展到了 ...

  8. 目标检测回归损失函数:SmoothL1/IoU/GIoU/DIoU/CIoU Loss

    文章目录 1. Smooth L1 Loss 1.1 假设x为预测框和真实框之间的数值差异,常用的L1和L2 Loss定义为: 1.2 上述的3个损失函数对x的导数分别为: 1.3 实际目标检测框回归 ...

  9. 服务网格领域的百花齐放,是否存在一个更优解?

    作者@lingsamuel,API7.ai 云原生技术专家,Apache APISIX Committer. 作者@林志煌,API7.ai 技术工程师,Apache APISIX contributo ...

最新文章

  1. 【ACM】CODE[VS] 2806(DFS)
  2. @Profile-根据不同环境注入bean
  3. iOS开发UI篇—UITableview控件基本使用
  4. PHP的数组结构是用哈希表实现的
  5. HTMl语言编写的文件扩展名,用HTML编写的文件的扩展名是()。
  6. ZOJ3772_Calculate the Function
  7. WEB前端 Vue 全家桶介绍
  8. 工业互联网标识解析企业节点_丰尚公司获批建设国家工业互联网标识解析二级节点...
  9. .net core3.1 下由Autofac接管IOC
  10. python面向对象(下)
  11. 删除了几个月的照片能找回么_iPhone的相册管理功能居然这么强大?删掉的照片还能这样找回?...
  12. java并行调度_java并行调度框架封装及示例
  13. python 一组数据 正态分布散点图_python高维数据型图表矩阵散点图
  14. php fastdfs上传文件,fastDFS中使用php上傳文件 -- http上傳與下載圖片
  15. 傲腾内存安装问题分享
  16. P1782 旅行商的背包[混合背包,优化,数据大]
  17. Vue实现图形化积木式编程(十三)
  18. Android 自定义图片点击放大、缩小
  19. 发明专利的权利要求书怎么写?
  20. Python Django,模型,模型管理器类(models.Manager)(与数据库交互的接口),自定义模型管理器类

热门文章

  1. Spring如何整合SpringMVC
  2. JAVA数组的3种赋值方式
  3. 李宏毅 线性代数 向量和矩阵
  4. 【云计算基础架构平台笔记】
  5. 云服务器修改远程端口的方法
  6. .Net Core NOPI操作word(一)
  7. 《freemark》freemark笔记
  8. vue build报错 精辟
  9. nginx 服务器的响应头,隐藏HTTP请求响应头里的nginx版本号
  10. 3-万维网(World Wide Web)与浏览器