原文标题:Focal Loss for Dense Object Detection

概要

目标检测主要有两种主流框架,一级检测器(one-stage)和二级检测器(two-stage),一级检测器,结构简单,速度快,但是准确率却远远比不上二级检测器。作者发现主要原因在于前景和背景这两个类别在样本数量上存在很大的不平衡。作者提出了解决这种不平衡的方法,改进了交叉熵损失,使其对容易分类的样本产生抑制作用,使得损失集中在数量较少的难分类样本上。同时,作者提出了著名的RetinaNet,这个网络不仅速度快,而且精度不比二级检测器低,是个一出色的目标检测网络。

focal loss

一般来讲,如果对一个样本进行分类,这个样本分类很容易,比如说概率为98%,它的损失相应来讲也会很小。但是有一种情况,如果样本中存在极大的不平衡,这个容易分类的样本数量占很大的比例,那么它所产生的损失也会占大部分比例,就会使得难分类的样本占的损失比例较少,使得模型难以训练。
作者由此提出了focal loss,来解决样本不平衡的问题。
$ FL(p_t)=-(1-p_t)^rlog(p_t) $

RetinaNet 网络结构

retinaNet 是一个简单,一致的网络,它有一个主干网络(backbone)以及两个具有特殊任务的子网络。主干网络用来提取特征,有好多现成的,可以直接用。第一个子网络执行分类任务,第二个字网络执行回顾任务。

1.backbone

使用了特征金字塔(FPN)作为backbone,它可以提取不同尺度的特征。金字塔的每一层都可以用来检测物体,小特征可以检测大物体,大特征可以检测小物体。
将FPN建立在resnet的基础上,构成了从P3到P7的金字塔,(\(P_l\)比输入的图片尺寸小\(2^l\)倍)。所有的金字塔层,都有256个通道。

2.Anchors

  • 使用具有平移不变特性的Anchors。它们的大小从\(32^2\)到\(512^2\),对应P3到P7。Anchors使用3种长宽比,{1:2,1:1,2:1},使用3种大小比例{\(2^0,2^{1/3},2^{2/3}\)}.这样的设置可以提高AP。每个位置中anchor 的个数A= 3X3=9。
  • 每个Anchor都会分配一个长度为K的one-hot编码,K是类别的数量,包含背景类。并且分配一个长度为4的向量,代表框子的大小和定位。
  • 设置前景是IoU大于0.5的框,背景是IoU小于0.4的框,其他的忽略掉。每个Anchor都有一个one-hot编码,对应类别为1,其他为0.

    3.分类子网络

    这是一个小的全卷积神经网络,每个空间位置都会产生KA个预测,K是类别数,A是Anchor个数(9)。
    注意:只有一个分类子网络,金字塔的所有层都共享这一个网络中的参数。步骤如下:从金字塔中提取出C(256)通道的特征,然后子网络有4个卷积层,每个卷积层都使用3X3的卷积核.最后在跟着一个(KA)通道的卷积层。

    4.回归子网络

    这也是一个全卷积神经网络,与分类子网络并行存在着,它的任务是对预测框与距离最近的标注框(真实值,如果有的话)进行回归。它在每个空间位置有4A个预测。与其他方式不同,这种回归方式对于分类,是独立的,不可知的。这使用了更少的参数,但是同样有效。

    推断与训练

    推断

    为了提高速度,把阈值设置为0.05,最多使用前1000个最高分的回归框预测。最后融合所有层级的预测结果,使用非极大值抑制,阈值为0.5.

    focal loss

    r=2的时候效果好,focal loss 将用在每张图片的10万个anchors上,也就是说,focal loss是这10 万个anchor(经过归一化)产生的损失的和。参数a也有一个稳定的范围。这两个参数成反比关系。

    初始化

    除了最后一个卷积层,所有的卷积层都用b=0,高斯权重0.01.对于最后一个卷积层,b的设置有所不同,这是为了避免在训练开始的时候,出现不稳定现象

    实验结果

论文阅读|Focal loss的更多相关文章

  1. [论文理解]Focal Loss for Dense Object Detection(Retina Net)

    Focal Loss for Dense Object Detection Intro 这又是一篇与何凯明大神有关的作品,文章主要解决了one-stage网络识别率普遍低于two-stage网络的问题 ...

  2. 深度学习笔记(八)Focal Loss

    论文:Focal Loss for Dense Object Detection 论文链接:https://arxiv.org/abs/1708.02002 一. 提出背景 object detect ...

  3. 论文阅读笔记四十四:RetinaNet:Focal Loss for Dense Object Detection(ICCV2017)

    论文原址:https://arxiv.org/abs/1708.02002 github代码:https://github.com/fizyr/keras-retinanet 摘要 目前,具有较高准确 ...

  4. Focal Loss for Dense Object Detection 论文阅读

    何凯明大佬 ICCV 2017 best student paper 作者提出focal loss的出发点也是希望one-stage detector可以达到two-stage detector的准确 ...

  5. 论文阅读笔记四十七:Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression(CVPR2019)

    论文原址:https://arxiv.org/pdf/1902.09630.pdf github:https://github.com/generalized-iou 摘要 在目标检测的评测体系中,I ...

  6. Focal loss论文解析

    Focal loss是目标检测领域的一篇十分经典的论文,它通过改造损失函数提升了一阶段目标检测的性能,背后关于类别不平衡的学习的思想值得我们深入地去探索和学习.正负样本失衡不仅仅在目标检测算法中会出现 ...

  7. 论文阅读 | FCOS: Fully Convolutional One-Stage Object Detection

    论文阅读——FCOS: Fully Convolutional One-Stage Object Detection 概述 目前anchor-free大热,从DenseBoxes到CornerNet. ...

  8. 论文阅读 | FoveaBox: Beyond Anchor-based Object Detector

    论文阅读——FoveaBox: Beyond Anchor-based Object Detector 概述 这是一篇ArXiv 2019的文章,作者提出了一种新的anchor-free的目标检测框架 ...

  9. 论文阅读 | Region Proposal by Guided Anchoring

    论文阅读 | Region Proposal by Guided Anchoring 相关链接 论文地址:https://arxiv.org/abs/1901.03278 概述 众所周知,anchor ...

随机推荐

  1. jdk8-》日期时间及其格式处理类特性

    一.JDK8之时间⽇期处理类 核⼼类: LocalDate:不包含具体时间的⽇期. LocalTime:不含⽇期的时间. LocalDateTime:包含了⽇期及时间. LocalDate 常⽤API ...

  2. AcWing 148. 合并果子

    #include <iostream> #include <algorithm> #include <queue> using namespace std; int ...

  3. html中实现数据的显示和隐藏

    Author: YangQingQing <!DOCTYPE html><html><meta http-equiv="Content-Type" c ...

  4. [NLP]Transformer-XL论文解读

    关于Transformer的具体内容,可以访问:https://www.cnblogs.com/mj-selina/p/12369797.html 简介 Transformer是Google Brai ...

  5. 计算机网络 - TCP_NODELAY 和 TCP_CORK, TCP_NOPUSH

    参考 https://www.cnblogs.com/biyeymyhjob/p/4670502.html https://stackoverflow.com/questions/3761276/wh ...

  6. GCC的编译过程和链接

    GCC编译过程 一个C/C++文件要经过预处理(preprocessing).编译(compilation).汇编(assembly).和连接(linking)才能变成可执行文件. gcc的常用选项 ...

  7. SqlDataReader阅读器关闭时尝试调用 HasRows 无效

    SqlDataReader阅读器关闭时尝试调用 HasRows 无效 原创长白山上放羊娃 发布于2018-07-25 00:29:27 阅读数 538  收藏 展开 在SqlHelper中封装好的Sq ...

  8. JQuery/JS插件 jsTree加载树,预先加载,初始化时加载前三级节点,当展开第三级节点时 就加载该节点下的所有子节点

    jsTree加载树, 初始化时 加载前三级节点, 当展开第三级节点时 就加载该节点下的所有子节点 html: <!DOCTYPE html> <html> <head&g ...

  9. 1.4 Eclipse 自动补全功能

    1.访问Content Assit 菜单项  window--preferences --Java---Editor--Content Assit 2. auto activation delay : ...

  10. django model 高级进阶

    十.model高级用法: 10.1 ORM映射: Object Relational Mapping: orm映射的任务: 将list ,object 的操作转化为sql语句,根据对象生成数据表,将查 ...