原文标题: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. rancher布控集群启动失败

    rancher布控集群启动失败 待办 报告缺少某个文件.多线程启动任务部署的时候某些线程跑在前边了, 导致问题出现 解决思路:等待,等待响应的job重启就ok了,都是一些job在跑,失败了会重新开始的 ...

  2. 为什么Oracle等数据库软件可以同时创建多个连接

    首先我们要明确的是一个IP跟一个端口确定的是一个进程的地址,也就是我们运行了一个Oracle的数据库,这时候就已经确定的了. oracle监听器也是一个TCP/IP网络中的进程,默认的端口号是1521 ...

  3. JS高级---新内容课程介绍

    重点: 原型链 重点:不同的继承 原型的另一个作用 重点:this指向要知道到底是谁   复习原型 原型链 原型的指向是否可以改变 继承 如何实现继承 原型的方式继承 借用构造函数继承 组合继承 拷贝 ...

  4. 6_13古代象形符号(UVa1103)<图的连通块的应用>

    给出一幅黑白图像,每行相邻的四个点压缩成一个十六进制的字符.然后还有题中图示的6中古老的字符,按字母表顺序输出这些字符的标号. 输出说明:For each test case, display its ...

  5. 有关C/C++中,表达式计算顺序的问题,以及表达式内部变量“副作用”问题(转)

    经常可以在一些讨论组里看到下面的提问:“谁知道下面C语句给n赋什么值?”m = 1; n = m+++m++;最近有位不相识的朋友发email给我,问为什么在某个C++系统里,下面表达式打印出两个4, ...

  6. Mongodb学习笔记(二)Capped Collection固定集合

    一.Capped Collection固定集合 简单介绍 capped collections是性能出色的有着固定大小的集合(定容集合),以LRU(Least Recently Used最近最少使用) ...

  7. Codeforces Round #598 (Div. 3) F. Equalizing Two Strings

    You are given two strings ss and tt both of length nn and both consisting of lowercase Latin letters ...

  8. python+pygame制作一个可自定义的动态时钟和详解

    1.效果图 2.完整代码 #第1步:导出模块 import sys, random, math, pygame from pygame.locals import * from datetime im ...

  9. FromBase64String 输入的不是有效的 Base-64 字符串,因为它包含非 Base-64 字符、两个以上的填充字符,或者填充字符间包含非法字符

    js前台: <input id="upload_img_input" v-on:change="onFileChange" type="file ...

  10. scrapy下载 大文件处理

    # 一个校花网图片下载的案例,也适合大文件处理,多个文件视频,音频处理 工程流程 -- scrapy startproject xx cd xx scrapy genspider hh www.xx. ...