本文提出了一个有效且快速的目标检测器,该目标检测器得速度可以达到200+fps,在Pascal VOC-2007上的mAP比Tiny-Yolo-v2高出14。

本文从以下三个方面对网络进行改进。

  • 网络结构  Network architecture
  • 损失函数  Loss function
  • 训练数据  Training data

网络结构

网络结构如下图:

f17ae279f77d32d9778707288bfa806e.png

  • Dense feature map with stacking。从前面的层merge feature map会提高网络性能。
  • Deep but narrow。网络最后几层,使用1x1卷积来增加网络的深度。

损失函数

知识蒸馏方法的总体框架如下:

96b52630b6336ba54ba24fc9b63449be.png

Objectness scaled Distillation

YOLO目标检测中,每个cell位于最后一层的feature map中,每个cell会预测N个bounding boxes,N表示anchor的数量。因此最后一层的feature map的数量为N*(K+5),其中K是预测的类别数量,5表示4个bbox坐标和1个objectness value。对于每个cell中的每个anchor box,网络会预测bbox的坐标,objectness value(定义为ground truth box与预测的box的IOU)和对应类别的概率。因此,YOLO的loss由3个部分组成,分别为 regression loss, objectness loss, classification loss,公式如下:

f898c80bfc9f5a6b402550b2adc1d2a8.png

由于YOLO最后输出的预测结果中包含大量的background,对于标准的知识蒸馏方法来说,student network会学习大量的teacher network预测的背景bbox,而这些teacher network预测背景的bbox都是没有用的,因此会造成student network学习大量没有用的信息。为了避免这个问题,作者提出 objectness scaled function。具体思路为 只有当teacher network的objectness value高时,才学习bounding box坐标和class probabilities。
因此 objectness部分的损失函数如下:

6a4965cfd3abbc1de7f2f225bfef999f.png

对于classification部分的loss如下,称为 objectness scaled classification function,即在原来公式的基础上,乘上了一个系数,该系数即为objectness value。

d3e8a90ff5a17404cd0ec8cf1e7c04cd.png

对于 bounding box坐标的loss同理,公式如下:

c99636c256cf6feb3be5b38e93735878.png

因此,总体的损失函数如下:

6734600a258a8e42b89bfd88efcb2fad.png

Feature Map-NMS

实际情况中,网络大量的cell和anchor都会预测同一个物体,因此,当我们利用知识蒸馏训练时,当teacher network将信息迁移到student network时,高度重合的检测区域对应的feature map会使得反向传播时,对应于同一个 object class and dimensions,梯度会变得很大,从而导致网络过拟合。
为了解决这个问题,作者提出 Feature Map-NMS (FM-NMS)。具体思想是如果在K * K邻域的cell中,多个候选框都对应同一个类别,那么这很可能是同一个物体。因此,我们只选择objectness值最高的那个候选框。另外,我们会将对应同一类别的其他候选框在最后一层的feature map中的 class probabilities置为0。因此,只有objectness值最大的那个才会对student network产生影响。

Effectiveness of data

增加更多的标注数据或者未标注的数据,都会提高模型的性能。对于增加标注数据,训练方法与之前的一致;对应增加未标注的数据,我们利用teacher network的输出作为soft label,利用知识蒸馏方法进行训练(只计算teacher network部分的损失,不计算ground truth部分的损失)。

结果

下面是知识蒸馏的实验结果:

da4fda94c91a3274592c2a34f79a1013.png

下图是本文提出的方法与其他网络在速度和精度上的对比图:

9d83067bfb51f1a2f6fb7d5425aff48e.png

相关链接:
https://blog.csdn.net/u014380165/article/details/80467007

[论文阅读]Object detection at 200 Frames Per Second的更多相关文章

  1. (转)Awesome Object Detection

    Awesome Object Detection 2018-08-10 09:30:40 This blog is copied from: https://github.com/amusi/awes ...

  2. 论文阅读:Prominent Object Detection and Recognition: A Saliency-based Pipeline

    论文阅读:Prominent Object Detection and Recognition: A Saliency-based Pipeline  如上图所示,本文旨在解决一个问题:给定一张图像, ...

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

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

  4. 论文阅读(Chenyi Chen——【ACCV2016】R-CNN for Small Object Detection)

    Chenyi Chen--[ACCV2016]R-CNN for Small Object Detection 目录 作者和相关链接 方法概括 创新点和贡献 方法细节 实验结果 总结与收获点 参考文献 ...

  5. 论文阅读笔记五十五:DenseBox: Unifying Landmark Localization with End to End Object Detection(CVPR2015)

    论文原址:https://arxiv.org/abs/1509.04874 github:https://github.com/CaptainEven/DenseBox 摘要 本文先提出了一个问题:如 ...

  6. 论文阅读笔记五十三:Libra R-CNN: Towards Balanced Learning for Object Detection(CVPR2019)

    论文原址:https://arxiv.org/pdf/1904.02701.pdf github:https://github.com/OceanPang/Libra_R-CNN 摘要 相比模型的结构 ...

  7. 论文阅读笔记五十二:CornerNet-Lite: Efficient Keypoint Based Object Detection(CVPR2019)

    论文原址:https://arxiv.org/pdf/1904.08900.pdf github:https://github.com/princeton-vl/CornerNet-Lite 摘要 基 ...

  8. 论文阅读笔记五十一:CenterNet: Keypoint Triplets for Object Detection(CVPR2019)

    论文链接:https://arxiv.org/abs/1904.08189 github:https://github.com/Duankaiwen/CenterNet 摘要 目标检测中,基于关键点的 ...

  9. 论文阅读笔记四十八:Bounding Box Regression with Uncertainty for Accurate Object Detection(CVPR2019)

    论文原址:https://arxiv.org/pdf/1809.08545.pdf github:https://github.com/yihui-he/KL-Loss 摘要 大规模的目标检测数据集在 ...

随机推荐

  1. Django_ORM相关操作

    一般的操作 1.all():查询所有的结果 2.filter():包含与所有筛选条件匹配的对象 3.get():返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果对象没有或者超过一个会报错 4 ...

  2. 30天代码day0

    a class is a collection of variables (fields) and functions called methods. A program is a collectio ...

  3. window.location各属性的值

    window.location各属性的值 window.location.href            "https://i.cnblogs.com/EditPosts.aspx?opt= ...

  4. Qt学习2---信号与槽

    connect(&b1,&QPushButton::pressed,this,&MainWidget::close); &b1:信号发出者,指针类型 &QPus ...

  5. js转盘游戏

    1----- @-webkit-keyframes spin { 0%   { -webkit-transform: rotate(0deg); -ms-transform: rotate(0deg) ...

  6. Dubbo的三种连接方式

    1.采用zookeeper作为注册中心 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns ...

  7. LEB128相关知识

    LEB128相关知识 介绍 LEB128(little endian base 128)是一种变长的整数压缩编码形式,它是出自于DWARF debug file format.在Android的Dal ...

  8. MSMQ .NET下的应用

    Message Message是MSMQ的数据存储单元,我们的用户数据一般也被填充在Message的body当中,因此很重要,让我们来看一看其在.net中的体现,如图: 在图上我们可以看见,Messa ...

  9. 【转】Linux环境进程间通信(五) 共享内存(上)

    转自:https://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index1.html 采用共享内存通信的一个显而易见的好处是效率高,因为进程可以 ...

  10. 记一个在移动端调试 web 页面的方法

    1. 工具:Weinre 2. 安装:npm -g install weinre | npm install weinre -g --registry=https://registry.npm.tao ...