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。

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


总结

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

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

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

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

  1. 论文阅读笔记六十三:DeNet: Scalable Real-time Object Detection with Directed Sparse Sampling(CVPR2017)

    论文原址:https://arxiv.org/abs/1703.10295 github:https://github.com/lachlants/denet 摘要 本文重新定义了目标检测,将其定义为 ...

  2. Sparse R-CNN: End-to-End Object Detection with Learnable Proposals 论文解读

    前言 事实上,Sparse R-CNN 很多地方是借鉴了去年 Facebook 发布的 DETR,当时应该也算是惊艳众人.其有两点: 无需 nms 进行端到端的目标检测 将 NLP 中的 Transf ...

  3. Histograms of Sparse Codes for Object Detection用于目标检测的稀疏码直方图

    AbstractObject detection has seen huge progress in recent years, much thanks to the heavily-engineer ...

  4. Paper Reading: Relation Networks for Object Detection

    Relation Networks for Object Detection笔记  写在前面:关于这篇论文的背景知识,请参考我前面的两篇随笔(<关于目标检测>和<关于注意力机制> ...

  5. CVPR2022 | A ConvNet for the 2020s & 如何设计神经网络总结

    前言 本文深入探讨了如何设计神经网络.如何使得训练神经网络具有更加优异的效果,以及思考网络设计的物理意义. 欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结.最新技术跟踪.经典论文解读.CV招聘 ...

  6. 【DL论文精读笔记】Object Detection in 20 Y ears: A Survey目标检测综述

    目标检测20年综述(2019) 摘要 Abstract 该综述涵盖了400篇目标检测文章,时间跨度将近四分之一世纪.包括目标检测历史上的里程碑检测器.数据集.衡量指标.基本搭建模块.加速技术,最近的s ...

  7. ArcGis for flex查询FeatureLayer数据

    1. 首先实例化一个FeatureLayer对象 private var featureLayer:FeatureLayer=new FeatureLayer(); 2.指定FeatureLayer对 ...

  8. yolo类检测算法解析——yolo v3

    每当听到有人问“如何入门计算机视觉”这个问题时,其实我内心是拒绝的,为什么呢?因为我们说的计算机视觉的发展史可谓很长了,它的分支很多,而且理论那是错综复杂交相辉映,就好像数学一样,如何学习数学?这问题 ...

  9. 【尺度不变性】An Analysis of Scale Invariance in Object Detection – SNIP 论文解读

    前言 本来想按照惯例来一个overview的,结果看到1篇十分不错而且详细的介绍,因此copy过来,自己在前面大体总结一下论文,细节不做赘述,引用文章讲得很详细,另外这篇paper引用十分详细,如果做 ...

  10. (生产)vue-router:路由

    参考:https://router.vuejs.org/zh-cn/ 安装 直接下载 / CDN https://unpkg.com/vue-router/dist/vue-router.js 使用: ...

随机推荐

  1. P2617 Dynamic Rankings 解题报告

    link 整体二分是一种东西,比如上面这道题. 先考虑一个不带修版本的,也就是经典问题区间 kth,显然我们可以主席树但是我知道你很想用主席树但是你先别用不用主席树,用一种离线的算法,叫整体二分. 首 ...

  2. .net core Ubuntu下docker部署(精简版)

    一.首先先添加一个.netCore 项目,选择启用docker(我用的是vs2019,之前的可能需要手动点击项目添加docker支持) 没有的话需要手动添加 之后你的项目会存在这个dockerfile ...

  3. RocketMQ - 消费者Rebalance机制

    客户端是通过Rebalance服务做到高可靠的.当发生Broker掉线.消费者实例掉线.Topic 扩容等各种突发情况时,消费者组中的消费者实例是怎么重平衡,以支持全部队列的正常消费的呢? Rebal ...

  4. Eureka服务治理

    Eureka是由Netflix开发的一款服务治理开源框架,Spring-cloud对其进行了集成.Eureka既包含了服务端也包含了客户端,Eureka服务端是一个服务注册中心(Eureka Serv ...

  5. SFTP实现密钥登陆并上传文件

    什么是SFTP,公开键认证,SFTP可不是FTP协议的扩展,他是基于SSH的文件传输协议. 而当SFTP服务器登录有客户端的公开键时,客户端就可以用自己的私有键去跟服务器握手(handshake)已实 ...

  6. 如何使用visual studio code的插件remote ssh远程操作virtual box虚拟机

    0 Remote-SSH是什么?为什么要用它? The Remote-SSH extension lets you use any remote machine with a SSH server a ...

  7. cat /dev/null > file后,ls查看文件大小未减小,du查看变为0

    一句话总结: 其他程序正在使用command > file写入文件:将command程序kill后使用command >> file写入文件,即可在command写入file时,用c ...

  8. CentOS7 yum设置阿里源

    1.备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2.下载新的CentOS-Base ...

  9. GUI程序设计——班级信息收集系

    import pymysql import wx class MyFrame(wx.Frame): def __init__(self,parent,id): wx.Frame.__init__(se ...

  10. Nginx日志切割工具logrorate

    1.logrotate系统工具 linux自带logrotate工具 主流的linux系统版本,都默认安装logrotate包,作为分割日志的系统工具,可以方便将日志按周期(日,周,月)和大小进行分割 ...