QueryDet: Cascaded Sparse Query for Accelerating High-Resolution Small Object Detection(QueryDet:用于加速高分辨率小目标检测的级联稀疏查询)
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层的映射:
\]
这里的l层充当Q,l-1层充当K,生成的特征图为V。
行文至此,网络讲的差不多了,至于后续的一些什么细节什么的,这里就不讲了,留给以后复现看代码在交代。
总结
第一次写博客,有什么不好或者理解有误的地方希望批评指正。以后的博客总共分为三个板块,一个是关于论文的交流,一个是关于深度学习算法的交流(比如感知机啊等等一些的算法)和一些项目的共同交流。
与其无休止的抬杠,不如来一次思想火花的碰撞。期待各位的批评指正和交流。
骂完博主记得给个关注!!!
QueryDet: Cascaded Sparse Query for Accelerating High-Resolution Small Object Detection(QueryDet:用于加速高分辨率小目标检测的级联稀疏查询)的更多相关文章
- 论文阅读笔记六十三:DeNet: Scalable Real-time Object Detection with Directed Sparse Sampling(CVPR2017)
论文原址:https://arxiv.org/abs/1703.10295 github:https://github.com/lachlants/denet 摘要 本文重新定义了目标检测,将其定义为 ...
- Sparse R-CNN: End-to-End Object Detection with Learnable Proposals 论文解读
前言 事实上,Sparse R-CNN 很多地方是借鉴了去年 Facebook 发布的 DETR,当时应该也算是惊艳众人.其有两点: 无需 nms 进行端到端的目标检测 将 NLP 中的 Transf ...
- Histograms of Sparse Codes for Object Detection用于目标检测的稀疏码直方图
AbstractObject detection has seen huge progress in recent years, much thanks to the heavily-engineer ...
- Paper Reading: Relation Networks for Object Detection
Relation Networks for Object Detection笔记 写在前面:关于这篇论文的背景知识,请参考我前面的两篇随笔(<关于目标检测>和<关于注意力机制> ...
- CVPR2022 | A ConvNet for the 2020s & 如何设计神经网络总结
前言 本文深入探讨了如何设计神经网络.如何使得训练神经网络具有更加优异的效果,以及思考网络设计的物理意义. 欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结.最新技术跟踪.经典论文解读.CV招聘 ...
- 【DL论文精读笔记】Object Detection in 20 Y ears: A Survey目标检测综述
目标检测20年综述(2019) 摘要 Abstract 该综述涵盖了400篇目标检测文章,时间跨度将近四分之一世纪.包括目标检测历史上的里程碑检测器.数据集.衡量指标.基本搭建模块.加速技术,最近的s ...
- ArcGis for flex查询FeatureLayer数据
1. 首先实例化一个FeatureLayer对象 private var featureLayer:FeatureLayer=new FeatureLayer(); 2.指定FeatureLayer对 ...
- yolo类检测算法解析——yolo v3
每当听到有人问“如何入门计算机视觉”这个问题时,其实我内心是拒绝的,为什么呢?因为我们说的计算机视觉的发展史可谓很长了,它的分支很多,而且理论那是错综复杂交相辉映,就好像数学一样,如何学习数学?这问题 ...
- 【尺度不变性】An Analysis of Scale Invariance in Object Detection – SNIP 论文解读
前言 本来想按照惯例来一个overview的,结果看到1篇十分不错而且详细的介绍,因此copy过来,自己在前面大体总结一下论文,细节不做赘述,引用文章讲得很详细,另外这篇paper引用十分详细,如果做 ...
- (生产)vue-router:路由
参考:https://router.vuejs.org/zh-cn/ 安装 直接下载 / CDN https://unpkg.com/vue-router/dist/vue-router.js 使用: ...
随机推荐
- LG P4213【模板】杜教筛(Sum)
\(\text{Problem}\) 求 \[\sum_{i=1}^n \varphi(i) \] 和 \[\sum_{i=1}^n \mu(i) \] \(1 \le n < 2^{31}\) ...
- 推荐系统[八]算法实践总结V0:腾讯音乐全民K歌推荐系统架构及粗排设计
1.前言:召回排序流程策略算法简介 推荐可分为以下四个流程,分别是召回.粗排.精排以及重排: 召回是源头,在某种意义上决定着整个推荐的天花板: 粗排是初筛,一般不会上复杂模型: 精排是整个推荐环节的重 ...
- Computed 和 Watch 的区别
1.computed计算属性: 作用:(1)解决模板中放入过多的逻辑会让模板过重且难以维护的问题.例如两个数据的拼接或字体颜色的判断. (2)它支持缓存,只有依赖的数据发生了变化,才会重新计算.例如模 ...
- 关于Visual Studio使用头文件"stdafx.h"报错原因
当我们需要使用"stdafx.h"该头文件时,Visual Studio会报错,提示我们无法打开源文件"stdafx.h",实际上在Visual Studio中 ...
- Postgresql架构体系解析
一.PostgreSQL物理架构 postgresql的物理架构非常简单,它由共享内存.一系列后台进程和数据文件组成. 二.Shared Memory 共享内存是服务器服务器为数据库缓存和事务日志缓存 ...
- java数据结构与算法(day2)--简单排序
模式:设计api实现api 简单排序 举例(商品排序) 1.1Comparable接口介绍(排序算法更有通用性:对象排序) 创建对象,并且生成豆子.创建Comparable接口 1 package c ...
- 如何批量删除office文档属性
在文件资源管理器界面全选所有office文档, 右键->属性->详细信息->删除属性和个人信息->从此文件中删除以下信息->全选->确定,即可.
- ES6判断对象是否为空
1.ES6判断对象是否为空{} let obj = {} if(Object.keys(obj).length == 0){ console.log("对象是空的") }else{ ...
- bootstrapTable的一些属性
url : 'firmSoftTable.action', // 请求后台的URL(*) method : 'post', // 请求方式(*)post/get contentType: " ...
- calico 关闭SNAT
calico 关闭SNAT 默认情况下,calico 访问集群外网络是通过 SNAT 成宿主机 ip 方式,在一些金融客户环境中为了能实现防火墙规则,需要直接针对 POD ip 进行进行规则配置,所以 ...