【IoU loss】IoU损失函数理解
文章目录
- 1 引言
- 2 问题分析
- 3 IoU Loss
- 4 代码演示IoU
- 5 感谢链接
1 引言
目标检测任务的损失函数由Classificition Loss和Bounding Box Regeression Loss两部分构成。
Bounding Box Regression Loss Function的演进路线是:
Smooth L1 Loss --> IoU Loss --> GIoU Loss --> DIoU Loss --> CIoU Loss
之前写到了Smooth L1 Loss,本文介绍IoU Loss。
2 问题分析
Iou loss提出前,大家主要通过4个坐标点独立回归Bounding box(bbox,边界框),这样做的缺点有:
- 目标检测的评价方式是使用IoU,而实际回归坐标框的时候使用4个坐标点,二者是不等价的,如下图所示;
- L1或者L2 Loss相同的框,其IoU 不是唯一的
- 通过4个坐标点回归坐标框的方式,是假设4个点相互独立的,没有考虑其相关性,实际4个坐标点具有一定的相关性
- 基于L1和L2的距离的loss对于尺度 不具有 不变性
图(a)中的三组框具有相同的L2 Loss,但其IoU差异很大;
图(b)中的三组框具有相同的L1 Loss,但IoU 同样差异很大。
说明L1,L2这些Loss用于回归任务时,不能等价于最后用于评测检测的IoU。
3 IoU Loss
针对上面的问题,旷世在2016年提出IoU Loss,将4个点构成的box看成一个整体进行回归。
上图展示了L2 Loss和IoU Loss 的求法,图中的红色点表示目标检测网络结构中Head部分上的点(i, j),绿色的框表示Ground truth框, 蓝色的框表示Prediction的框。
IoU loss的定义如上,先求出2个框的IoU,然后再求-ln(IoU)
。其中IoU是真实框和预测框的交集和并集之比,当它们完全重合时,IoU就是1。
对于Loss来说,越小越好,loss越小说明他们重合度高。所以,IoU Loss也可以写为1-IoU
。
IoU loss能够更好的反应重合程度,具有尺度不变形。但当框不相交,使用1-IoU
作为loss时,loss为0。
4 代码演示IoU
import cv2
import numpy as npdef CountIOU(RecA, RecB):xA = max(RecA[0], RecB[0])yA = max(RecA[1], RecB[1])xB = min(RecA[2], RecB[2])yB = min(RecA[3], RecB[3])# 计算交集部分面积interArea = max(0, xB - xA + 1) * max(0, yB - yA + 1)# 计算预测值和真实值的面积RecA_Area = (RecA[2] - RecA[0] + 1) * (RecA[3] - RecA[1] + 1)RecB_Area = (RecB[2] - RecB[0] + 1) * (RecB[3] - RecB[1] + 1)# 计算IOUiou = interArea / float(RecA_Area + RecB_Area - interArea)return iouimg = np.zeros((512,512,3), np.uint8)
img.fill(255)# 分别是矩形左上、右下的坐标
RecA = [30,30,300,300]
RecB = [60,60,350,340]cv2.rectangle(img, (RecA[0],RecA[1]), (RecA[2],RecA[3]), (0, 255, 0), 5)
cv2.rectangle(img, (RecB[0],RecB[1]), (RecB[2],RecB[3]), (255, 0, 0), 5)IOU = CountIOU(RecA,RecB)
font = cv2.FONT_HERSHEY_SIMPLEXcv2.putText(img,"IOU = %.2f"%IOU,(130, 190),font,0.8,(0,0,0),2)cv2.imshow("image",img)
cv2.waitKey()
cv2.destroyAllWindows()
5 感谢链接
https://zhuanlan.zhihu.com/p/104236411
【IoU loss】IoU损失函数理解相关推荐
- NeurIPS 2021 助力YOLOv5涨点 Alpha-IoU:IoU Loss大一统
经过测试,代码与Yolov5基本一致, 模型也是14m,精度没有大幅明显提升. Alpha-IoU:A Family of Power Intersection over Union Losses f ...
- L1/L2/smooth_l1_loss/center_loss+Dice Loss+focal loss+各种IOU loss+kl散度
一.L1/L2/smooth_l1_loss/center_loss公式与代码 1.公式 L2公式: smooth_L1公式: 2.三种函数numpy代码实现 import numpy as np i ...
- α-IoU | 再助YOLOv5登上巅峰,造就IoU Loss大一统
点击上方"计算机视觉工坊",选择"星标" 干货第一时间送达 作者丨 ChaucerG 编辑丨集智书童 在本文中,作者将现有的基于IoU Loss推广到一个新的P ...
- IoU loss 系列
目录 IoU 之前 IoU loss GIoU loss DIoU & DIoU NMS CIoU IoU 之前 IoU loss提出前,大家主要通过4个坐标点独立回归Bounding box ...
- 【Smooth L1 Loss】Smooth L1损失函数理解
文章目录 1 引言 2 L1 Loss 3 L2 Loss 4 Smooth L1 Loss 5 曲线对比分析 6 参考链接 1 引言 目标检测任务的损失函数由Classificition Loss和 ...
- 目标检测算法——YOLOv5/YOLOv7改进|将IOU Loss替换为EIOU Loss
>>>深度学习Tricks,第一时间送达<<< 论文题目:<Focal and Efficient IOU Loss for Accurate Boundin ...
- IoU Loss综述(IOU,GIOU,CIOU,EIOU,SIOU,WIOU)
边界框回归(BBR)的损失函数对于目标检测至关重要.它的良好定义将为模型带来显著的性能改进.大多数现有的工作假设训练数据中的样本是高质量的,并侧重于增强BBR损失的拟合能力. 一.L2-norm 最初 ...
- 【GIoU loss】GIoU loss损失函数理解
文章目录 1 引言 2 问题分析 3 GIoU Loss计算过程 4 IoU和GIoU对比分析 5 代码实现IoU与GIoU的对比可视化 6 感谢链接 1 引言 目标检测任务的损失函数由Classif ...
- IoU Loss汇总
IoU Loss 论文 UnitBox: An Advanced Object Detection Network 解决的问题 用\(l_{2}\) loss作为边框回归loss的两个缺点: 在\(l ...
最新文章
- Touch Event
- 看图说OpenGL之二之投影矩阵求法
- HTML属性——180226
- bugku—— 代码审计 做题记录
- redis 源码阅读
- 【渝粤教育】国家开放大学2018年春季 0175-21T社会调查研究与方法 参考试题
- 一周只指定一个主要目标,当主要目标完成时,就已经完成了任务的80%
- Access数据库迁移到MS SQL Server数据库
- 跟涛哥(张开涛)聊聊技术人的发展
- vue项目引入阿里巴巴矢量图标库图标
- mac idea jrebel 激活
- mysql 存储过程 对象_【MYSQL笔记3】MYSQL过程式数据库对象之存储过程的调用、删除和修改...
- android 转发朋友圈,微信怎么转发朋友圈 转发朋友圈方法详细教程
- scrapy爬虫框架实现简单案例:爬取阳光平台内容
- WEB开发(2) Servlet
- 牛顿二项式定理(广义二项式定理)
- 搭建一套直播平台需要多少钱
- 【干货】APP解构重构,让你用户不再流失
- U盘在电脑上读不出来是什么原因 U盘在电脑上读不出来怎么修复
- 一款模拟养成类游戏的策划大纲
热门文章
- 自制p站小姐姐图片返回api.
- golang 时间missing Location in call to Date
- Couldn‘t flush user prefs: java.util.prefs.BackingStoreException: Couldn‘t get file lock
- 机器人视觉分析算法_机器视觉处理:目标检测和跟踪
- Matlab中关于数值积分及符号积分的讨论
- 数据结构与算法—前导
- 国考计算机三级嵌入式,英语初级视频学习
- 计算机开机图片怎么换,如何把电脑开机画面换成自己的图片?
- 春招笔记(十一)--设计模式
- 服务器怎么连接?服务器远程连接图文教程Windows如何远程连接服务器?Linux服务器如何远程登录?远程连接服务器命令