QueryDet: Cascaded Sparse Query for Accelerating High-Resolution Small Object Detection(QueryDet:用于加速高分辨率小目标检测的级联稀疏查询)

论文地址:https://arxiv.org/pdf/2103.09136.pdf

代码地址:https://github.com/ ChenhongyiYang/QueryDet-PyTorch


一、研究现状以及提出背景

1.提出背景

深度学习在目标检测方面已经取得巨大成功,但是在对于特定的目标检测上还是存在一定的问题,比如密集物体检测或者小物体检测等。本篇论文就是基于小目标检测而提出的一种检测方法。

2.提出问题解决问题

在目标检测中,众所周知,要想提高小目标检测方法,最有效最直接的方法就是使用高分辨率图像或者是高分辨率特征图等,但是在满足前者的条件下,就不得不提高计算成本了。作者在兼顾二者的情况下提出了QueryDet(一种新颖的查询机制来加速基于特征金字塔的目标检测器的推理速度。在这里实际上没有必要知道QueryDet是什么,只需要知道作者为了解决小目标问题提出了什么东西,这个东西可能跟金字塔哪个结构有关系,至于什么关系,后面会介绍,这种方法怎么做的,也没必要这儿深究,后面作者肯定会对该方法详细论述)。该方法实际上大致上可以分为两步(1)在低分辨率特征上预测小目标的粗略位置;(2)使用由这些粗略位置稀疏引导的高分辨率特征计算准确的检测结果。(论文读到这儿实际上只需要知道这篇论文是基于小目标检测做的工作;然后从标题看到Query,然后想到可能跟transform有关;论文这儿看到FPN,那么网络可能跟金字塔有关;最后就是实验结果,我觉得对看论文,学习论文帮助不是很大,我们要关注的是方法,而不是这些数据。有些人这个时候可能会说没有数据怎么知道方法优劣啊,你要这么说我只能说能发出来的论文,就别管那么多了;这个时候有人会说,还有学术造假呢;又有人说...)。

这个时候,我们是不是大概知道这个论文是做什么工作的,然后可能与什么有关(用到哪方面的东西)。

此时我们既然已经知道了这些,那么我们为什么还要读这篇论文?(我已经知道这是干嘛的啊,没有必要读了啊...)以上我们只是对论文知道了大概,还有一些其他方面并不知,对于我们能力思想的提升并不大,我们只是知道这是什么,并不知道为什么。就比如我们看到一件衣服,然后我们就说这件衣服不咋地,咋滴咋滴,没有试过怎么知道合不合身,对吧(比喻不恰当)~~

3.创新点

(1)提出了一种简单而有效的级联稀疏查询(CSQ)机制。它可以降低所有基于特征金字塔的目标检测器的计算成本。该方法在保持快速推理速度的同时,有效地利用高分辨率特征,提高了对小目标的检测性能。

(2)在COCO上,QueryDet利用高分辨率特性将ret网络基准提高了1.1AP和2.0APS,当采用CSQ时,高分辨率检测速度平均提高了3.0×。在VisDrone上,我们提高了最先进的检测结果,并提高了高分辨率的检测速度平均2.3×。(对于作者来说重要,对于我们读者来说不重要,没必要深究)

二、方法介绍

1.网络介绍

图1

图1就是整篇论文介绍的QueryDet ,该网络由主干网络(用来提取特征,实际上就是一些列的卷积三件套(卷积+池化+激活)组成)、特征金字塔(该网络最开始被设计出来是为了解决多尺度问题,这里不详述)和一些列检测头组成。咋一看不是很懂,没有关系。我们再看图2,图2是RetinaNet网络图(该网络在这里就不赘述了,该网络出现的论文链接是:[1708.02002] Focal Loss for Dense Object Detection (arxiv.org))。

图2

对比图1和图2,网络的不同之处就是在图2上加上了图3的部分。


图3

图3又是什么东西?不论图3是什么,我们都有个前提,那就是:搞懂了图3实际上我就大概知道这篇论文的核心,甚至可以思考是不是可以将这篇论文的这个结构用在自己的论文上面。这实际上是就是一个transform结构(可能这样说不准确),那么我们是不是只要搞懂什么是Q、K、V就行(Q、K、V是什么?自己百度注意力机制,在这里推荐一个网站视频:单细胞生物也能听懂的Transformer和 BERT(理论+Pytorch实战),不听你就亏大了!_哔哩哔哩_bilibili)。

最后来梳理一下整个脉络。首先,我们知道:现代基于FPN设计的检测器,小目标倾向于高分辨率低级特征图中检测到(随着下采样可能会丢失小目标的信息,所以小目标不容易被检测出来),但是小目标在图片中分布比较分散,不容易被检测出来,由于利用高分辨率图检测需要一定的成本,所以本文提出了QueryDet 。第二,提出的QueryDet 是在RetinaNet基础上改进的。第三,改进的方法就是加上了一个查询机制(transform结构)。

下面来分析网络中的具体部件。

2.网络具体分析

前提:首先,在粗略特征图上预测小目标的粗略位置,然后集中计算精细特征图上的相应位置 . 这个过程可以看作是一个查询过程:粗略的位置是查询键,用于检测小目标的高分辨率特征是查询值。(看不懂?没有关系)

一张图片进入网络,经过主干网络,FPN,然后生成一系列的特征图(预测图)。查询从P5开始,首先我们知道Query keys是粗略位置,什么意思呢?就是说,Query keys首先是QKV中的K,其次Query keys是特征图,什么特征图呢?就是在没有加入查询机制的时候,RetinaNet生成的特征图,通过Query keys也能检测,只不过效果不好(还没有懂?说白了经过FPN生成的特征图) 。Query value就是QKV中的V ,现在就剩下个Q了,也就是查询了。 论文中说,选择阈值分数大于\(\sigma\)的位置作为查询(即Q)。(什么意思,糊涂了...)实际上网络的大概意思就是:本来通过RetinaNet生成的网络,有了小目标大概的位置,但是此时效果肯定不好,然后我们通过一个查询机制,实际上就是告诉我们在低分辨率特征图上被检测出是小目标,那么在高分辨率上肯定也是啊,那么在将低分辨率特征图上的小目标检测出来的特征让高分辨率特征图去注意,然后实现在高分辨率上的查询。总结起来,Q是低分辨率,K是高分辨率,V是查询过后的特征图。

通过上面的分析我们自然而然的可以认为QueryDet可以实现小目标的检测。

3.训练阶段(公式讲解)

我们设金字塔第l层出来的特征图记为Pl,Vl(i,j)表示网格(i,j)包含一个小目标的概率(这里跟YOLOV3有一点像,有木有?),在预定义一个阈值sl,规定在l层的特征图的尺度小于sl的为小目标。

在开始分析网络之前我们要知道一点,最后生成的特征图(W,H,C),一部分是(W,H,c1)是被用来预测小目标的种类,一部分是(W,H,c2)是用来预测小目标的位置的。其中C=c1+c2

在l层,对特征图进行预测,满足目标尺寸小于s1的视为小目标,同时满足该目标的置信度大于\(\sigma\),该位置即是要查询的位置,或者说在l-1层是要注意的位置。我们此时记该位置的中心点为(xo,yo),并对该位置进行编码(实际上就是位置编码,没有看代码的,这里本人认为跟transform中的位置编码有关),通过下列公式实现l层到l-1层的映射:

\[k_{l-1}^{o}={(2x_{l}^{o}+i,(2y_{l}^{o}+j),{\forall}i,j{\epsilon}{{0,1}}}
\]

这里的l层充当Q,l-1层充当K,生成的特征图为V。

行文至此,网络讲的差不多了,至于后续的一些什么细节什么的,这里就不讲了,留给以后复现看代码在交代。


总结

第一次写博客,有什么不好或者理解有误的地方希望批评指正。以后的博客总共分为三个板块,一个是关于论文的交流,一个是关于深度学习算法的交流(比如感知机啊等等一些的算法)和一些项目的共同交流。

与其无休止的抬杠,不如来一次思想火花的碰撞。期待各位的批评指正和交流。

骂完博主记得给个关注!!!

最新文章

  1. 微信小程序 wx.getUserInfo 解密 C# 代码
  2. jackson反序列化时忽略不需要的字段
  3. WinAPI: ExtCreateRegion - 区域变换
  4. phalcon: 视图集成(内嵌模板)
  5. Adatper中获取宽高为0的问题
  6. Week8(10月28日)
  7. Netty In Action中国版 - 第二章:第一Netty程序
  8. Asp.net MVC4之 一个简单的小例子
  9. HTTP SOAP Request
  10. htmlUtil 网页爬取工具
  11. 如何设制 select 不可编辑 只读
  12. sql选择
  13. Git简介及安装
  14. Tyrion 中文文档(含示例源码)
  15. Django开发笔记五
  16. HDU3534(SummerTrainingDay13-C tree dp)
  17. Drools实战系列(三)之eclipse创建工程
  18. mybatis源码追踪2——将结果集映射为map
  19. QML从文件加载组件简单示例
  20. 将.sql文件导入powerdesigner的实现方法详解

热门文章

  1. layui 手机端时间不能滑动问题
  2. 用于双目重建中的GPU编程:julia-cuda
  3. Linux学习之文件目录指令(部分)
  4. 全国计算机二级python备考
  5. opencv-python 批量更改图像分辨率并且保留图像原有的透明度
  6. navigator跳转
  7. HTML初步了解
  8. 小程序-扩展能力图片上传Uploader组件
  9. Cocos Creator微信登录接入(完全小白教程)(安卓篇)
  10. [转载]Net分布式系统之四:RabbitMQ消息队列应用