图像 检测 - RetinaNet: Focal Loss for Dense Object Detection (arXiv 2018)

news2024/12/24 3:13:58

图像 检测 - RetinaNet: Focal Loss for Dense Object Detection - 密集目标检测中的焦点损失(arXiv 2018)

  • 摘要
  • 1. 引言
  • 2. 相关工作
  • References

声明:此翻译仅为个人学习记录

文章信息

  • 标题:RetinaNet: Focal Loss for Dense Object Detection (arXiv 2018)
  • 作者:Tsung-Yi Lin, Priya Goyal, Ross Girshick, Kaiming He, Piotr Dollár
  • 文章链接:https://arxiv.org/pdf/1708.02002.pdf
  • 文章代码:https://github.com/facebookresearch/Detectron
    (推荐:亦可参考 图像 处理 - 开源算法集合)

摘要

  迄今为止,最高精度的目标检测器是基于R-CNN推广的两阶段方法,其中将分类器应用于候选目标位置的稀疏集。相比之下,对可能的目标位置进行定期、密集采样的单级检测器有可能更快、更简单,但迄今为止的精度落后于两级检测器。在本文中,我们调查了为什么会出现这种情况。我们发现,在密集检测器的训练过程中遇到的极端前景-背景类不平衡是主要原因。我们建议通过重塑标准交叉熵损失来解决这种类别不平衡问题,使其对分配给分类良好的示例的损失进行加权。我们的新颖的Focal Loss将训练集中在一组稀疏的困难例子上,并防止在训练过程中大量容易出现的阴性影响淹没检测器。为了评估我们损失的有效性,我们设计并训练了一个简单的密集检测器,我们称之为RetinaNet。我们的结果表明,当使用焦点损失进行训练时,RetinaNet能够与以前的单级检测器的速度相匹配,同时超过所有现有最先进的两级检测器的精度。代码位于:https://github.com/facebookresearch/Detectron.

在这里插入图片描述

图1. 我们提出了一种新的损失,我们称之为焦点损失,它在标准交叉熵标准中添加了一个因子 ( 1 − p t ) γ (1−p_t)^γ (1pt)γ。设置 γ > 0 γ>0 γ>0可以减少分类良好的示例的相对损失 ( p t > . 5 ) (p_t>.5) (pt>.5),从而更加关注难以分类的错误示例。正如我们的实验所证明的那样,所提出的焦点损失能够在大量简单背景示例的情况下训练高精度的密集目标检测器。

在这里插入图片描述

图2. COCO test-dev的速度(ms)与精度(AP)。由于焦点损失,我们的简单单级RetinaNet检测器优于以前的所有单级和两级检测器,包括[20]中报道最好的Faster R-CNN[28]系统。我们展示了在五个尺度(400-800像素)上具有ResNet-50-FPN(蓝色圆圈)和ResNet-101-FPN(橙色菱形)的RetinaNet变体。忽略低精度状态(AP<25),RetinaNet形成了所有当前检测器的上包络,改进的变体(未显示)达到40.8 AP。详细信息见§5。

1. 引言

  目前最先进的目标检测器是基于两阶段、提案驱动机制。正如在R-CNN框架[11]中推广的那样,第一阶段生成候选目标位置的稀疏集,第二阶段使用卷积神经网络将每个候选位置分类为前景类之一或背景。通过一系列的进步[10,28,20,14],这个两阶段的框架在具有挑战性的COCO基准[21]上始终实现了最高的准确性。

  尽管两级检测器取得了成功,但一个自然的问题是:一个简单的单级检测器能达到类似的精度吗?单级检测器应用于目标位置、尺度和纵横比的规则、密集采样。最近对单级检测器的研究,如YOLO[26,27]和SSD[22,9],证明了有希望的结果,与最先进的两级方法相比,产生了精度在10-40%以内的更快检测器。

  本文进一步推进了这一概念:我们提出了一种单级目标检测器,它首次与更复杂的两级检测器的最先进的COCO AP相匹配,如特征金字塔网络(FPN)[20]或Faster R-CNN[28]的Mask R-CNN[14]变体。为了实现这一结果,我们将训练过程中的类不平衡确定为阻碍单级检测器实现最先进精度的主要障碍,并提出了一种新的损失函数来消除这一障碍。

  通过两阶段级联和采样启发式算法,解决了类CNN检测器中的类不平衡问题。提议阶段(例如,选择性搜索[35]、边缘框[39]、深度掩码[24,25]、RPN[28])迅速将候选目标位置的数量缩小到一个小数字(例如,1-2k),过滤掉大多数背景样本。在第二个分类阶段,执行采样启发法,如固定的前景与背景比率(1:3)或在线困难示例挖掘(OHEM)[31],以保持前景和背景之间的可管理平衡。

  相比之下,单级检测器必须处理在图像上定期采样的一组更大的候选目标位置。在实践中,这通常相当于列举了大约100k个密集覆盖空间位置、尺度和纵横比的位置。虽然也可以应用类似的采样启发法,但它们效率低下,因为训练过程仍然由容易分类的背景示例主导。这种低效率是目标检测中的一个经典问题,通常通过自举[33,29]或困难示例挖掘[37,8,31]等技术来解决。

  在本文中,我们提出了一个新的损失函数,作为处理类别不平衡的先前方法的更有效的替代方案。损失函数是一个动态缩放的交叉熵损失,其中缩放因子随着对正确类的置信度增加而衰减为零,见图1。直观地说,这个缩放因子可以在训练过程中自动降低简单示例的贡献,并快速将模型集中在困难示例上。实验表明,我们提出的Focal Loss使我们能够训练高精度的单级检测器,该检测器显著优于使用采样启发法或困难示例挖掘进行训练的替代方案,这是以前训练单级检测器的最先进技术。最后,我们注意到焦点损失的确切形式并不重要,我们表明其他实例可以获得类似的结果。

  为了证明所提出的焦点损失的有效性,我们设计了一个名为RetinaNet的简单单级目标检测器,该检测器因其对输入图像中目标位置的密集采样而得名。它的设计特点是一个高效的网络内特征金字塔和使用锚框。它借鉴了[22,6,28,20]中的各种最新思想。RetinaNet高效准确;我们的最佳模型基于ResNet-101-FPN主干,在以每秒5帧的速度运行时,实现了39.1的COCO test-dev AP,超过了之前公布的单级和两级检测器的最佳模型结果,见图2。

2. 相关工作

经典目标检测器:将分类器应用于密集图像网格的滑动窗口范式有着悠久而丰富的历史。最早的成功之一是LeCun等人的经典工作。他将卷积神经网络应用于手写数字识别[19,36]。Viola和Jones[37]使用增强的目标检测器进行人脸检测,导致了此类模型的广泛采用。HOG[4]和整体通道特征[5]的引入产生了行人检测的有效方法。DPM[8]有助于将密集检测器扩展到更通用的目标类别,并在PASCAL[7]上取得了多年的最佳结果。虽然滑动窗口方法是经典计算机视觉中的主要检测范式,但随着深度学习[18]的复兴,接下来描述的两阶段检测器很快就主导了目标检测。

两阶段检测器:现代目标检测的主导范式是基于两阶段方法。正如选择性搜索工作[35]所开创的那样,第一阶段生成一组稀疏的候选提案,该候选提案应包含所有目标,同时过滤掉大多数阴性位置,第二阶段将提案分类为前景类/背景。R-CNN[11]将第二阶段分类器升级为卷积网络,从而在精度上获得了很大的提高,并开创了目标检测的现代时代。多年来,R-CNN在速度[15,10]和使用学习目标提案[6,24,28]方面都有所改进。区域提案网络(RPN)将提案生成与第二阶段分类器集成到单个卷积网络中,形成更快的R-CNN框架[28]。已经提出了对该框架的许多扩展,例如[20,31,32,16,14]。

单级检测器:OverFeat[30]是第一个基于深度网络的现代单级目标检测器之一。最近,SSD[22,9]和YOLO[26,27]对一阶段方法重新产生了兴趣。这些检测器经过了速度调整,但其精度落后于两阶段方法。SSD的AP降低了10-20%,而YOLO则专注于更极端的速度/精度权衡。见图2。最近的工作表明,只需降低输入图像分辨率和提案数量,就可以快速实现两阶段检测器,但即使计算预算更大,单阶段方法的精度也落后[17]。相比之下,这项工作的目的是了解单级检测器在以类似或更快的速度运行时是否能够匹配或超过两级检测器的精度。

  我们的RetinaNet检测器的设计与以前的密集检测器有很多相似之处,特别是RPN[28]引入的“锚”概念,以及SSD[22]和FPN[20]中特征金字塔的使用。我们强调,我们的简单检测器取得了最佳结果,这不是基于网络设计的创新,而是由于我们的新损失。

类别不平衡:经典的单阶段目标检测方法,如增强检测器[37,5]和DPM[8],以及最近的方法,如SSD[22],在训练过程中都面临着较大的类别不平衡。这些检测器评估每个图像104-105个候选位置,但是只有少数位置包含目标。这种不平衡导致了两个问题:(1)训练效率低下,因为大多数位置都是容易产生阴性影响的,没有提供有用的学习信号;(2) 总的来说,简单的阴性影响可能会淹没训练,并导致退化模型。一种常见的解决方案是执行某种形式的困难阴性挖掘[33,37,8,31,22],在训练或更复杂的采样/重新加权方案[2]期间对困难示例进行采样。相反,我们表明,我们提出的焦点损失自然地处理了单级检测器所面临的类别不平衡,并使我们能够在没有采样的情况下对所有示例进行有效训练,也没有容易的阴性压倒损失和计算的梯度。

鲁棒估计:人们对设计鲁棒损失函数(例如,Huber损失[13])非常感兴趣,该函数通过对具有大误差的示例(困难示例)的损失进行加权来减少异常值的贡献。相反,我们的焦点损失不是解决异常值,而是通过对异常值(简单的例子)进行加权来解决类别不平衡问题,即使它们的数量很大,它们对总损失的贡献也很小。换句话说,焦点损失扮演着与鲁棒损失相反的角色:它将训练集中在一组稀疏的困难例子上。

References

[1] S. Bell, C. L. Zitnick, K. Bala, and R. Girshick. Inside-outside net: Detecting objects in context with skip pooling and recurrent neural networks. In CVPR, 2016. 6
[2] S. R. Bulo, G. Neuhold, and P. Kontschieder. Loss maxpooling for semantic image segmentation. In CVPR, 2017.3
[3] J. Dai, Y. Li, K. He, and J. Sun. R-FCN: Object detection via region-based fully convolutional networks. In NIPS, 2016. 1
[4] N. Dalal and B. Triggs. Histograms of oriented gradients for human detection. In CVPR, 2005. 2
[5] P. Doll´ar, Z. Tu, P. Perona, and S. Belongie. Integral channel features. In BMVC, 2009. 2, 3
[6] D. Erhan, C. Szegedy, A. Toshev, and D. Anguelov. Scalable object detection using deep neural networks. In CVPR, 2014.2
[7] M. Everingham, L. Van Gool, C. K. Williams, J. Winn, and A. Zisserman. The PASCAL Visual Object Classes (VOC) Challenge. IJCV, 2010. 2
[8] P. F. Felzenszwalb, R. B. Girshick, and D. McAllester. Cascade object detection with deformable part models. In CVPR, 2010. 2, 3
[9] C.-Y. Fu, W. Liu, A. Ranga, A. Tyagi, and A. C. Berg. DSSD: Deconvolutional single shot detector. arXiv:1701.06659, 2016. 1, 2, 8
[10] R. Girshick. Fast R-CNN. In ICCV, 2015. 1, 2, 4, 6, 8
[11] R. Girshick, J. Donahue, T. Darrell, and J. Malik. Rich feature hierarchies for accurate object detection and semantic segmentation. In CVPR, 2014. 1, 2, 5
[12] R. Girshick, I. Radosavovic, G. Gkioxari, P. Doll´ar, and K. He. Detectron. https://github.com/facebookresearch/detectron, 2018. 8
[13] T. Hastie, R. Tibshirani, and J. Friedman. The elements of statistical learning. Springer series in statistics Springer, Berlin, 2008. 3, 7
[14] K. He, G. Gkioxari, P. Doll´ar, and R. Girshick. Mask R-CNN. In ICCV, 2017. 1, 2, 4
[15] K. He, X. Zhang, S. Ren, and J. Sun. Spatial pyramid pooling in deep convolutional networks for visual recognition. In ECCV. 2014. 2
[16] K. He, X. Zhang, S. Ren, and J. Sun. Deep residual learning for image recognition. In CVPR, 2016. 2, 4, 5, 6, 8
[17] J. Huang, V. Rathod, C. Sun, M. Zhu, A. Korattikara, A. Fathi, I. Fischer, Z. Wojna, Y. Song, S. Guadarrama, and K. Murphy. Speed/accuracy trade-offs for modern convolutional object detectors. In CVPR, 2017. 2, 8
[18] A. Krizhevsky, I. Sutskever, and G. Hinton. ImageNet classification with deep convolutional neural networks. In NIPS, 2012. 2
[19] Y. LeCun, B. Boser, J. S. Denker, D. Henderson, R. E. Howard, W. Hubbard, and L. D. Jackel. Backpropagation applied to handwritten zip code recognition. Neural computation, 1989. 2
[20] T.-Y. Lin, P. Doll´ar, R. Girshick, K. He, B. Hariharan, and S. Belongie. Feature pyramid networks for object detection. In CVPR, 2017. 1, 2, 4, 5, 6, 8
[21] T.-Y. Lin, M. Maire, S. Belongie, J. Hays, P. Perona, D. Ramanan, P. Doll´ar, and C. L. Zitnick. Microsoft COCO: Common objects in context. In ECCV, 2014. 1, 6
[22] W. Liu, D. Anguelov, D. Erhan, C. Szegedy, and S. Reed. SSD: Single shot multibox detector. In ECCV, 2016. 1, 2, 3, 6, 7, 8
[23] J. Long, E. Shelhamer, and T. Darrell. Fully convolutional networks for semantic segmentation. In CVPR, 2015. 4
[24] P. O. Pinheiro, R. Collobert, and P. Dollar. Learning to segment object candidates. In NIPS, 2015. 2, 4
[25] P. O. Pinheiro, T.-Y. Lin, R. Collobert, and P. Doll´ar. Learning to refine object segments. In ECCV, 2016. 2
[26] J. Redmon, S. Divvala, R. Girshick, and A. Farhadi. You only look once: Unified, real-time object detection. In CVPR, 2016. 1, 2
[27] J. Redmon and A. Farhadi. YOLO9000: Better, faster, stronger. In CVPR, 2017. 1, 2, 8
[28] S. Ren, K. He, R. Girshick, and J. Sun. Faster R-CNN: Towards real-time object detection with region proposal networks. In NIPS, 2015. 1, 2, 4, 5, 8
[29] H. Rowley, S. Baluja, and T. Kanade. Human face detection in visual scenes. Technical Report CMU-CS-95-158R, Carnegie Mellon University, 1995. 2
[30] P. Sermanet, D. Eigen, X. Zhang, M. Mathieu, R. Fergus, and Y. LeCun. Overfeat: Integrated recognition, localization and detection using convolutional networks. In ICLR, 2014.2
[31] A. Shrivastava, A. Gupta, and R. Girshick. Training region-based object detectors with online hard example mining. In CVPR, 2016. 2, 3, 6, 7
[32] A. Shrivastava, R. Sukthankar, J. Malik, and A. Gupta. Beyond skip connections: Top-down modulation for object detection. arXiv:1612.06851, 2016. 2, 8
[33] K.-K. Sung and T. Poggio. Learning and Example Selection for Object and Pattern Detection. In MIT A.I. Memo No.1521, 1994. 2, 3
[34] C. Szegedy, S. Ioffe, V. Vanhoucke, and A. A. Alemi. Inception-v4, inception-resnet and the impact of residual connections on learning. In AAAI Conference on Artificial Intelligence, 2017. 8
[35] J. R. Uijlings, K. E. van de Sande, T. Gevers, and A. W. Smeulders. Selective search for object recognition. IJCV, 2013. 2, 4
[36] R. Vaillant, C. Monrocq, and Y. LeCun. Original approach for the localisation of objects in images. IEE Proc. on Vision, Image, and Signal Processing, 1994. 2
[37] P. Viola and M. Jones. Rapid object detection using a boosted cascade of simple features. In CVPR, 2001. 2, 3
[38] S. Xie, R. Girshick, P. Doll´ar, Z. Tu, and K. He. Aggregated residual transformations for deep neural networks. In CVPR, 2017. 8
[39] C. L. Zitnick and P. Doll´ar. Edge boxes: Locating object proposals from edges. In ECCV, 2014. 2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/840981.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Matlab进阶绘图第25期—三维密度散点图

三维密度散点图本质上是一种特征渲染的三维散点图&#xff0c;其颜色表示某一点所在区域的密度信息。 除了作图&#xff0c;三维密度散点图绘制的关键还在于密度的计算。 当然&#xff0c;不管是作图还是密度的计算&#xff0c;这些在《Matlab论文插图绘制模板》和《Matlab点…

小研究 - 基于 MySQL 数据库的数据安全应用设计(二)

信息系统工程领域对数据安全的要求比较高&#xff0c;MySQL 数据库管理系统普遍应用于各种信息系统应用软件的开发之中&#xff0c;而角色与权限设计不仅关乎数据库中数据保密性的性能高低&#xff0c;也关系到用户使用数据库的最低要求。在对数据库的安全性进行设计时&#xf…

学习笔记-JAVAJVM-JVM的基本结构及概念

申明&#xff1a;文章内容是本人学习极客时间课程所写&#xff0c;文字和图片基本来源于课程资料&#xff0c;在某些地方会插入一点自己的理解&#xff0c;未用于商业用途&#xff0c;侵删。 原资料地址&#xff1a;课程资料 什么是JVM 原文连接&#xff1a; 原文连接 JVM是J…

即将发布的 Kibana 版本可运行 Node.js 18

作者&#xff1a;Thomas Watson Kibana 构建在 Node.js 框架之上。 为了确保每个 Kibana 版本的稳定性和使用寿命&#xff0c;我们始终将捆绑的 Node.js 二进制文件保持为最新的最新长期支持 (LTS) 版本。 当 Node.js 版本 18 升级到 LTS 时&#xff0c;我们开始将 Kibana 升级…

【WebRTC---源码篇】(二十三)JitterBuffer

PacketBuffer packetbuffer类中重要的一些变量 // buffer_.size() and max_size_ must always be a power of two.const size_t max_size_;//能存储的最大元素个数// The fist sequence number currently in the buffer.uint16_t first_seq_num_ RTC_GUARDED_BY(crit_);//这个…

Canmv K210开发板训练自己的模型

文章目录 前言​一、为什么选择Canmv开发板&#xff1f;二、利用Maix Hub在线训练三、配置开发环境1.MaixPy IDE2.刷指定固件 四、部署在Canmv开发板上五、测试模型 前言​ 关于Canmv开发板的介绍&#xff1a; CanMV K210 AI开发板全网首发&#xff0c;项目代码完全开源&#x…

C++数据结构之平衡二叉搜索树(一)——AVL的实现(zig与zag/左右双旋/3+4重构)

本文目录 00.BBST——平衡二叉搜索树01.AVL树02.AVL的插入2.1单旋——zig 与 zag2.2插入节点后的单旋实例2.3手玩小样例2.4双旋实例2.5小结 03.AVL的删除3.1单旋删除3.2双旋删除3.3小结 04.34重构05.综合评价AVL5.1优点5.2缺点 06.代码注意插入算法删除算法完整代码&#xff1a…

Spring Boot3.0(一):入门篇

什么是 Spring Boot Spring Boot 是由 Pivotal 团队提供的全新框架&#xff0c;其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置&#xff0c;从而使开发人员不再需要定义样板化的配置。 用我的话来理解&#xff0c;就是 Spring…

Python自动化实战之使用Pytest进行API测试详解

概要 每次手动测试API都需要重复输入相同的数据&#xff0c;而且还需要跑多个测试用例&#xff0c;十分繁琐和无聊。那么&#xff0c;有没有一种方法可以让你更高效地测试API呢&#xff1f;Pytest自动化测试&#xff01;今天&#xff0c;小编将向你介绍如何使用Pytest进行API自…

K8s持久化存储(nfs网络存储)

数据卷 emptydir&#xff0c;是本地存储&#xff0c;pod重启&#xff0c;数据就不存在了&#xff0c;需要对数据持久化存储 1.nfs&#xff0c;网络存储 &#xff0c;pod重启&#xff0c;数据还存在的

32.SpringMVC配置

SpringMVC配置 在pom.xml里面将之前的"jar"打包方式更改为"war" 因为之前在JavaWeb创建Maven时就是按web工程来创建的&#xff08;详细可参考5.IDEA里面使用Maven.md博客&#xff09;&#xff0c;所以不需要再创建webapp目录了&#xff0c;完整目录如下&a…

20天学会rust(二)rust的基础语法篇

在第一节&#xff08;20天学rust&#xff08;一&#xff09;和rust say hi&#xff09;我们配置好了rust的环境&#xff0c;并且运行了一个简单的demo——practice-01&#xff0c;接下来我们将从示例入手&#xff0c;学习rust的基础语法。 首先来看下项目结构&#xff1a; 项目…

云原生Kubernetes:阿里云托管k8s集群ACK创建和使用

目录 一、理论 1.容器服务Kubernetes版 2.ACK Pro版集群概述 3.CKA版本说明 二、实验 1.创建专有版Kubernetes集群 三、问题 1.依赖检查未通过 一、理论 1.容器服务Kubernetes版 &#xff08;1&#xff09;概念 阿里云容器服务Kubernetes版&#xff08;Alibaba Cloud…

ChatGPT实战:创业咨询,少走弯路,少踩坑

用九死一生形容创业再适合不过&#xff0c;不过一旦成功回报也很诱人&#xff0c;这也是为什么那么多人下场创业。纸上得来终觉浅&#xff0c;绝知此事要躬行&#xff0c;创过业的人都知道其中的心酸&#xff0c;而他们也建议你去创业&#xff0c;因为那真不是一般人能干的事。…

采油平台状态监测:确保海上能源供应的可靠性与安全性

在全球范围内&#xff0c;保障可靠的能源供应对于每个工业化国家至关重要。某采油平台通过设备数字化平台的相关技术&#xff0c;实现了对海上平台的结构完整性的可靠监测和预测。本文将探讨海上平台在极端环境中的挑战&#xff0c;以及通过设备数字化平台数据分析如何确保采油…

Apache Arrow Acero执行引擎

Apache Arrow流执行引擎 对于许多复杂的计算&#xff0c;在内存或计算时间内&#xff0c;连续的计算函数的直接调用都是不可行的。为了更加有效的提高资源使用率、促进多批数据的消费&#xff0c;Arrow提供了一套流式执行引擎&#xff0c;称为Acero。 目前支持算子有&#xff1…

jvm-程序计数器

1、是什么 4 学习路线 类加载器 内存结构方法区 类堆 对象虚拟机栈程序计数器本地方法栈 执行引擎解释器编译器 热点代码 5 程序计数器–作用 java源代码编译蛏二进制字节码 jvm指令。 对所有平台保持一致性。记住下一条jvm指令的执行地址。寄存器&#xff0c;cpu中读取速度…

CI/CD—Docker中深入学习

1 容器数据卷 什么是容器数据卷&#xff1a; 将应用和环境打包成一个镜像&#xff01;数据&#xff1f;如果数据都在容器中&#xff0c;那么我们容器删除&#xff0c;数据就会丢失&#xff01;需求&#xff1a;数据可以持久 化。MySQL容器删除了&#xff0c;删容器跑路&#…

网络框架重构之路plain2.0(c++23 without module) 环境

开发环境 主开发环境 1、系统 plain因为支持跨平台&#xff0c;所以主要的两个操作系统是linux和windows&#xff0c;而linux中我选择了中小企业中常用的centos 7&#xff08;centos 8 已经停止支持了&#xff0c;但是7还有一段时间才会停&#xff0c;估计之后大家可能会被迫使…