目标检测框回归问题

   2023-03-08 学习力766
核心提示:本文转自知乎,作者mileistone,已获作者授权转载,请勿二次转载。https://zhuanlan.zhihu.com/p/330613654目标检测模型训练的时候有两个任务,框分类(框里是什么)和框回归(框在哪),本文主要讲第二点。框回归可以分为两大类,基于x,y,w,h的回归(比如

本文转自知乎,作者mileistone,已获作者授权转载,请勿二次转载。

https://zhuanlan.zhihu.com/p/330613654

目标检测模型训练的时候有两个任务,框分类(框里是什么)和框回归(框在哪),本文主要讲第二点。

框回归可以分为两大类,基于x,y,w,h的回归(比如Faster R-CNN、YOLO、RetinaNet里框回归的loss),基于IoU的回归(比如IoU loss、GIoU loss、DIoU loss、CIoU loss)。

基于x,y,w,h的回归

基于x,y,w,h的回归,可以细分为x、y(GT框的中心)的回归和w、h的回归。

w、h的回归

Faster R-CNN、YOLO、RetinaNet的w、h回归方式大体相同。假设 目标检测框回归问题、 目标检测框回归问题 为拟合目标, 目标检测框回归问题 、 目标检测框回归问题 为网络预测值, 目标检测框回归问题 为GT框的宽, 目标检测框回归问题 为样本对应anchor框的宽, 目标检测框回归问题 为GT框的宽, 目标检测框回归问题 为GT框对应的anchor框的高, 目标检测框回归问题 为 目标检测框回归问题 、 目标检测框回归问题 、 目标检测框回归问题 等。

目标检测框回归问题
目标检测框回归问题
目标检测框回归问题
目标检测框回归问题

其中通过anchor的归一化和取log,可以一定程度增加 目标检测框回归问题 和 目标检测框回归问题 对框scale的invariance。

x、y的回归

x、y的回归方式可以分为两类,一类以YOLO为代表,一类以Faster R-CNN和RetinaNet为代表。后者x、y的回归方式与它们对w、h的回归方式相同,不再赘述。

YOLO中x、y的回归方式比较奇特。假设 目标检测框回归问题 、 目标检测框回归问题 为拟合目标, 目标检测框回归问题 、 目标检测框回归问题 为网络预测值, 目标检测框回归问题 为对应head输出feature map的宽, 目标检测框回归问题 为对应head输出feature map的高。

目标检测框回归问题 为GT框中心的x坐标, 目标检测框回归问题 为GT框中心的y坐标, 目标检测框回归问题 为GT框匹配上的grid cell的x坐标, 目标检测框回归问题 为GT框匹配上的grid cell的y坐标,x坐标的范围缩放到化到 目标检测框回归问题 ,y坐标的范围缩放到到 目标检测框回归问题 。

目标检测框回归问题
目标检测框回归问题
目标检测框回归问题
目标检测框回归问题

对scale进行reweight

关于x、y、w、h的回归,YOLO还会对不同scale的框回归loss进行reweight,减小大scale的框回归loss,增大小scale的框回归loss,Fatser R-CNN和RetinaNet没这么做。总体而言,YOLO里很多操作都是比较特立独行的,不过在论文里讲得很少,只有看作者的C代码实现才能发现。

基于IoU的回归

IoU loss有两个所谓的优点,一个是“Given the choice between optimizing a metric itself vs. a surrogate loss function, the optimal choice is the metric itself”,另一个是IoU loss对框的scale具有invariance特性,大家觉得这个对于框回归而言非常必要。

IoU loss关注预测框与GT框的IoU,而其他基于IoU loss的变体,关注的点除了IoU 之外还有:

1、预测框与GT框并集占据预测框与GT框最小包络框的比例(越大越好);

2、归一化(以预测框和GT框最小包络框的对角线为分母)的预测框中心与GT框中心距离(越小越好);

3、预测框长宽比与GT框长宽比的相似程度(越大越好)。

GIoU loss关注了1,DIoU loss关注了2,CIoU loss关注了2和3。

GIoU loss缓解了IoU loss在预测框和GT框之间IoU为0,梯度为0的问题。实验中GIoU收敛比较慢,DIoU缓解了GIoU这个问题;CIoU基于DIoU,添加了一个关于长宽比的惩罚项。

一些想法

1、the optimal choice is the metric itself?

将IoU作为loss是不是真的如论文中所说“Given the choice between optimizing a metric itself vs. a surrogate loss function, the optimal choice is the metric itself”。

这句话很对,但是IoU只是整体metric(比如mAP)中的一部分,这一个部分达成了“optimizing a metric itself”,问题是局部最优不一定能达到全局最优,这个问题导致IoU loss提出来之后,后续大家打了一个接一个的补丁(比如GIoU、DIoU、CIoU),甚至PP-YOLO发现把基于x、y、w、h的回归和基于IoU的回归结合起来效果更好。

事情并不如IoU提出来的时候想的那么美好。

相信后面还会有更多的补丁。一个问题在于无论是IoU也好,还是后面提出来的其他惩罚项也好,既缓解了一部分问题,也带来了新的问题;另一个问题是,整体地“optimizing a metric itself”这个命题听起来很美好,但是基本不可实现:想象很美好,现实很骨感。

后面我们大概率会从不同角度提出更多的惩罚项,这里会带来一个问题,当惩罚项越来越多的时候,如何平衡各个惩罚项loss,进而如何平衡框回归与框分类loss,里面会涉及到很多超参。

2、对框scale的invariance特性

框回归问题中,对框scale具有invariance是否一定是优点呢?我想不尽然,因为不同scale的框之间可能存在不平衡,在这种条件下,对框scale具有invariance可能不一定是最好的,我们可能需要做一些reweight。

3、anchor free

这里我们没提到anchor free的目标检测框回归计算方式,但是思路是类似的,基于上述的思路,可以很自然地想到anchor free目标检测器里框回归会如何设计。

 

 
反对 0举报 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 目标检测(R-CNN)和实例分割 mask R-CNN
    目标检测(R-CNN)和实例分割 mask R-CNN
    目标检测•   RCNN        RCNN(Regions with CNN features)是将CNN方法应用到目标检测问题上的一个里程碑,由年轻有为的RBG大神提出,借助CNN良好的特征提取和分类性能,通过RegionProposal方法实现目标检测问题的转化。        算法可以分为
    03-08
  • 目标检测综述 目标检测综述2022
    目标检测综述 目标检测综述2022
    目标检测的综述~总体介绍  目标检测是计算机视觉里面十分重要的任务,其主要解决检测在数字图像中某一类别可见的实例。最终的目的是为了开发一种计算模型和技术,来提供计算机视觉应用所需要的一个基础的信息即:目标在哪?  作为计算机视觉中众多基础问
    03-08
  • EfficientDet框架详解 | 目前最高最快最小模型,可扩缩且高效的目标检测(附源码下载)
    EfficientDet框架详解 | 目前最高最快最小模型
    EfficientDet框架详解 | 目前最高最快最小模型,可扩缩且高效的目标检测(附源码下载)昨天收录于话题3 12 51 4 29欢迎关注“计算机视觉研究院”计算机视觉研究院专栏作者:Edison_G疫情以来,已经被研究出很多高效高精度的框架,在深度学习领域,模型效
    03-08
  • YOLOV3目标检测模型训练实例 yolo5目标检测
    YOLOV3目标检测模型训练实例 yolo5目标检测
    从零开始学习使用keras-yolov3进行图片的目标检测,比较详细地记录了准备以及训练过程,提供一个信号灯的目标检测模型训练实例,并提供相关代码与训练集。DEMO测试YOLO提供了模型以及源码,首先使用YOLO训练好的权重文件进行快速测试,首先下载权重文件https:
    03-08
  • 10行Python代码实现目标检测
    10行Python代码实现目标检测
    要知道图像中的目标是什么?或者你想数一幅图里有多少个苹果?在本文中,我将向你展示如何使用Python在不到10行代码中创建自己的目标检测程序。如果尚未安装python库,你需要安装以下python库:opencv-pythoncvlibmatplotlibtensorflow下面的代码导入所需的pytho
    03-08
  • 目标检测中的AP计算 目标检测precision计算
    目标检测中的AP计算 目标检测precision计算
    转载自:https://blog.csdn.net/lppfwl/article/details/108018950目标检测中的AP计算最近在学习目标检测,对模型评价指标AP的计算过程有点疑问,经过查找资料、问师兄,最终算是有了一个相对明确的了解,特此记录一下,方便以后查看,不足之处还请大家批评指
    03-08
  • 目标检测数据集分析 目标检测数据预处理
    目标检测数据集分析 目标检测数据预处理
    目录目标检测数据集分析图片数量、标注框数量、类别信息所有图片宽度和高度的散点图所有标注框宽度和高度的散点图标注框宽度和高度之比每一类的标注框数量每一类图片数量每一张图片上的标注框数量不同尺寸的图片数量每一类标注框的宽度高度散点图使用方法Inst
    03-08
  • 目标检测算法-Mask-RCNN 目标检测算法的主要目的是找到图像中用户感兴趣的
    目标检测算法-Mask-RCNN 目标检测算法的主要目
    Mask_RCNN是何凯明基于以往的faster-rcnn构架提出的新的卷积网络,该方法再有效的目标的同时完成了高质量的语义分割。主要思路就是把原有的faster-rcnn进行扩展,添加一个分支使用现有的检测对目标进行并行预测,可以很方便的应用其他的应用领域,向目标检测
    03-08
  • 手机端 19FPS 的实时目标检测算法:YOLObile
    手机端 19FPS 的实时目标检测算法:YOLObile
    本文转载自机器之心。本文提出了一套模型压缩和编译结合的目标检测加速框架,根据编译器的硬件特性而设计的剪枝策略能够在维持高 mAP 的同时大大提高运行速度,压缩了 14 倍的 YOLOv4 能够在手机上达到 19FPS 的运行速度并且依旧维持 49mAP(COCO dataset)的
    03-08
  • 复旦大学Ph.D沈志强:用于目标检测的DSOD模型
    复旦大学Ph.D沈志强:用于目标检测的DSOD模型
    复旦大学Ph.D沈志强:用于目标检测的DSOD模型 玄学酱 2017-10-24 09:59:00 浏览1318深度学习 性能 HTTPS github 目标检测作为一个基础的计算机视觉任务,在自动驾驶、视频监控等领域拥有非常广泛的应用前景。目前主流的目标检测方法都严重依赖于在大规
    02-10
点击排行