PIoU Loss:倾斜目标检测专用损失函数,公开超难倾斜目标数据集Retail50K | ECCV 2020 Spotlight
论文提出从IoU指标延伸来的PIoU损失函数,能够有效地提高倾斜目标检测场景下的旋转角度预测和IoU效果,对anchor-based方法和anchor-free方法均适用。另外论文提供了Retail50K数据集,能够很好地用于评估倾斜目标检测算法的性能
来源:晓飞的算法工程笔记 公众号
论文: PIoU Loss: Towards Accurate Oriented Object Detection in Complex Environments

Introduction
当前的目标检测方法由于BB(bounding boxes)的特性,对倾斜和密集物体的检测存在一定的局限性。为了解决这个问题,研究者扩展出了带旋转参数的OBB(oriented bounding boxes),即从BB($c_x,c_y,w,h$)扩展为OBB($c_x,c_y,w,h,\theta$),其中$\theta$旋转角度,这样OBB就能更紧凑地包围目标,可以更好地检测旋转和密集的物体。

目前的OBB-based方法大多数在anchor-based架构上采用距离损失来优化上述的5个参数,并且在航空图片的目标检测上已经有一些应用。但其检测性能在更复杂的场景中依然存在局限性,主要原因在于距离损失更多地是优化旋转角度误差,而不是优化全局IoU,特别是对长条形物体很不敏感。如图a所示,两个IoU相差很大的情景下,距离损失的结果却是一样的。

为了解决这个问题,论文提出PIoU(Pixels-IOU)损失来同时提高旋转角度和IoU的准确率。如图b所示,PIoU损失能直接反映物体间的IoU,但由于OBB间的相交区域可能是多边形,OBB的IoU比BB的IoU要难算得多,所以PIoU损失以逐像素判断的方式进行IoU计算并且是连续可微的。另外论文还提供了包含高长宽比倾斜目标的检测数据集Retail50K,方便OBB-based检测算法的研究。
论文的贡献如下:
- 提出新的损失函数PIoU损失,能够提升倾斜目标的检测效果。
- 提供新的数据集Retail50K,可以更好的进行OBB-based算法的评估。
- 通过实验证明PIoU损失的有效性,能够运用于anchor-based和anchor-free方法。
Pixels-IoU (PIoU) Loss
对于OBB $b$($c_x, c_y, w,h,\theta$),理想的损失函数能够引导网络最大化IoU,降低$b$的错误率。为了到达这个目的,需要准确且高效地计算OBB间的IoU,论文采用了像素计数的方式来计算IoU。

对于点$p_{ij}$和OBB $b$,根据其到中线的距离$dh_{i,j}$和中线交点到中点的距离$dw_{i,j}$来判断点是否在OBB内:


定义$B_{b,b{'}}$为包围$b$和$b{'}$的最小正方形,可以通过判断$B_{b,b{'}}$中的所有像素来计算$b$和$b{'}$间的交集区域和并集区域:

最后通过$S_{b\cap b^{'}}$除以$S_{b\cup b^{'}}$计算IoU,但公式1并不是连续可微函数,导致不能进行反向传播训练。为了解决这个问题,将公式1转换为两个核的乘积$F(p_{i,j}|b)$:


其中$k$用于控制对目标像素$p_{i,j}$的敏感程度,由于公式9使用了相对位置信息(图a的点距离和三角形的角度),所以$S_{b\cap b^{'}}$和$S_{b\cup b^{'}}$均是对OBB的旋转角度和大小敏感的。

如图b所示,$F(p_{i,j}|b)$是连续可微的,且与公式1类似。当$p_{i,j}$在$b$内时,$F(p_{i,j}|b)$接近于1,反之则接近于0。为此,$b$和$b^{'}$的交并集区域计算变为:

为了降低公式11的计算量,简化为:

基于公式10和公式12,PIoU的计算为:

定义$M$为所有正样本对,PIoU损失的计算为:

PIoU损失也可用于无交集的OBB,因为PIoU始终大于零,梯度依然可以计算,另外PIoU损失也可以用于正常的BB场景中。
Retail50K Dataset


之前的大多数OBB数据集都是航空图片,少部分数据集对MSCOCO等数据集进行重新标注。据统计,航空图片数据集中大多数OBB的长宽比都在1:4内,而主流数据集则集中在1:1,不能够很好地评价OBB-based方法的性能。为此,论文提供了Retail50K数据集,由47000张不同的超市图片构成,标注对象为货架的层架边。数据集包含复杂的背景和高长宽比目标,并且具有实际使用意义。
Experiments

不同$k$下对比实验。

对比其它损失函数在OBB场景下的性能。

对比其它损失函数在BB场景下的性能。

Retail50K数据集上的性能对比。

HRSC2016数据上的性能对比。

DOTA数据上的性能对比。

结果可视化对比。
Conclustion
论文提出从IoU指标延伸来的PIoU损失函数,能够有效地提高倾斜目标检测场景下的旋转角度预测和IoU效果,对anchor-based方法和anchor-free方法均适用。从结果来看,PIoU损失的效果还是十分明显的。另外论文提供了Retail50K数据集,能够很好地用于评估倾斜目标检测算法的性能。
如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

PIoU Loss:倾斜目标检测专用损失函数,公开超难倾斜目标数据集Retail50K | ECCV 2020 Spotlight的更多相关文章
- 腾讯推出超强少样本目标检测算法,公开千类少样本检测训练集FSOD | CVPR 2020
论文提出了新的少样本目标检测算法,创新点包括Attention-RPN.多关系检测器以及对比训练策略,另外还构建了包含1000类的少样本检测数据集FSOD,在FSOD上训练得到的论文模型能够直接迁移到 ...
- 【目标检测实战】目标检测实战之一--手把手教你LMDB格式数据集制作!
文章目录 1 目标检测简介 2 lmdb数据制作 2.1 VOC数据制作 2.2 lmdb文件生成 lmdb格式的数据是在使用caffe进行目标检测或分类时,使用的一种数据格式.这里我主要以目标检测为 ...
- 【目标检测】用Fast R-CNN训练自己的数据集超详细全过程
目录: 一.环境准备 二.训练步骤 三.测试过程 四.计算mAP 寒假在家下载了Fast R-CNN的源码进行学习,于是使用自己的数据集对这个算法进行实验,下面介绍训练的全过程. 一.环境准备 我这里 ...
- [炼丹术]YOLOv5目标检测学习总结
Yolov5目标检测训练模型学习总结 一.YOLOv5介绍 YOLOv5是一系列在 COCO 数据集上预训练的对象检测架构和模型,代表Ultralytics 对未来视觉 AI 方法的开源研究,结合了在 ...
- [目标检测]YOLO原理
1 YOLO 创新点: 端到端训练及推断 + 改革区域建议框式目标检测框架 + 实时目标检测 1.1 创新点 (1) 改革了区域建议框式检测框架: RCNN系列均需要生成建议框,在建议框上进行分类与回 ...
- 第三十六节,目标检测之yolo源码解析
在一个月前,我就已经介绍了yolo目标检测的原理,后来也把tensorflow实现代码仔细看了一遍.但是由于这个暑假事情比较大,就一直搁浅了下来,趁今天有时间,就把源码解析一下.关于yolo目标检测的 ...
- 目标检测算法之YOLOv1与v2
YOLO:You Only Look Once(只需看一眼) 基于深度学习方法的一个特点就是实现端到端的检测,相对于其他目标检测与识别方法(如Fast R-CNN)将目标识别任务分成目标区域预测和类别 ...
- Domain Adaptive Faster R-CNN:经典域自适应目标检测算法,解决现实中痛点,代码开源 | CVPR2018
论文从理论的角度出发,对目标检测的域自适应问题进行了深入的研究,基于H-divergence的对抗训练提出了DA Faster R-CNN,从图片级和实例级两种角度进行域对齐,并且加入一致性正则化来学 ...
- CVPR目标检测与实例分割算法解析:FCOS(2019),Mask R-CNN(2019),PolarMask(2020)
CVPR目标检测与实例分割算法解析:FCOS(2019),Mask R-CNN(2019),PolarMask(2020)1. 目标检测:FCOS(CVPR 2019)目标检测算法FCOS(FCOS: ...
随机推荐
- SpringBoot2.x集成Redis (StringTemplate与redisTemplate的用法)
1. Redis介绍Redis数据库是一个完全开源免费的高性能Key-Value数据库.它支持存储的value类型有五种,包括string(字符串).list(链表).set(集合).zset(sor ...
- Java日志框架(一)
在项目开发过程中,我们可以通过 debug 查找问题.而在线上环境我们查找问题只能通过打印日志的方式查找问题.因此对于一个项目而言,日志记录是一个非常重要的问题.因此,如何选择一个合适的日志记录框架也 ...
- Docker 搭建 Keycloak
Docker 搭建 Keycloak 命令 需要创建好数据库,启动容器指定数据库信息 # KEYCLOAK_USER 用户名 # KEYCLOAK_PASSWORD 密码 # DB_ADDR 数据库地 ...
- Homekit_DoHome_智能通断器
本款通断器适用于IOS和android系统用户,苹果用户可以非常方便的使用siri进行有效控制,android用户需要下载Dohome App进行操作,同时支持市面上主流的智能音箱进行控制. 对于an ...
- 如何实现字符串转换成整数(实现atoi内置函数)?
题目描述 输入一个由数字组成的字符串,把它转换成整数并输出.例如:输入字符串"123",输出整数123. 给定函数原型int StrToInt(const char *str) , ...
- C#图解教程(第四版)—02—类的基本概念
类 是一种能 存储数据 并且 执行代码 的数据结构,他包含数据成员和函数成员 .成员可以是9种可能的成员类型的任意组合 字段 属性 方法 常量 构造函数 析构函数 运算符 索引器 事件 1 字 ...
- 技术分享丨数据仓库的建模与ETL实践技巧
摘要:如何搭建数据仓库,在这个过程中都应该遵循哪些方法和原则,项目实践中有哪些技巧. 一.数据仓库的“心脏” 首先来谈谈数据模型.模型是现实世界特征的模拟和抽象,比如地图.建筑设计沙盘,飞机模型等等. ...
- 【Gin-API系列】Gin中间件之日志模块(四)
日志是程序开发中必不可少的模块,同时也是日常运维定位故障的最重要环节之一.一般日志类的操作包括日志采集,日志查询,日志监控.日志统计等等.本文,我们将介绍日志模块在Gin中的使用. Golang如何打 ...
- importTSV工具导入数据到hbase
1.建立目标表test,确定好列族信息. create'test','info','address' 2.建立文件编写要导入的数据并上传到hdfs上 touch a.csv vi a.csv 数据内容 ...
- jmeter性能测试入门使用参数化
我经常使用jmeter进行接口测试,这个工具还是很好用的.昨天收到一个需求,需要压测一下接口,jmeter进行接口测试,使用cvs文件进行多个数据参数化. 临时准备了一下发现忘记怎么做参数化了,自己百 ...