【CVPR 2022】QueryDet:加速高分辨率小目标检测

2023-10-10 18:10

本文主要是介绍【CVPR 2022】QueryDet:加速高分辨率小目标检测,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

大连不负众望,疫情了,我们又封校了,可能初步封个5678天,微笑jpg

论文地址:https://arxiv.org/pdf/2103.09136.pdf
项目地址:https://github.com/ ChenhongyiYang/QueryDet-PyTorch

1. 简介

背景:对小目标检测的性能和效果不满意

解决办法:先用低分辨率的图片预测到小目标的粗定位;用这些粗位置稀疏引导的高分辨率特征计算出准确的预测结果。

小目标检测中出现性能衰减原因:

(1)由于下采样操作导致引导小目标的特征消失,或被background中的噪声污染。

(2)低分辨率特征对应的感受野无法与小目标的尺度相匹配。

(3)小目标较小的偏差就会导致IoU上较大的扰动,导致小目标检测先天难于大目标。

现有的小目标检测方法通常通过放大输入图像尺寸或减少降采样率来维持较大分辨率的特征,进而提升小目标检测的性能。引入FPN可以在一定程度上缓解高分辨率引入大量计算的问题,但其在low-level特征上检测的计算复杂度仍很高。

本文提出基础:

(1)高分辨率、低层特征层(Low-level feature map)中的特征计算是高度冗余的,小目标的空间分布稀疏,只在特征图中占一小部分。
(2)FPN结构中,即使低分辨率(high-level)的特征层无法精确的检测出小目标,但也能以较高的置信度来粗略判断出小目标是否存在以及对应的区域。特征金字塔的采样特性类似卷积神经网络的卷积特性(平移、缩放、扭曲不变性),可以依据其下采样、上采样的特点进行特征推断。

题外话: 我发现,在Abstract里加一张图可以非常清晰的提出问题,很不错,写论文的时候可以借鉴一下。

2. 干了啥

本文目标:是在引入更浅层高分辨率的特征助力小目标检测的同时,保证计算的轻量化。

基于前面的发现,QueryDet提出了级联稀疏查询(Cascade Sparse Query)机制。其中Query代表使用前一层(higher-level feature with lower resolution)中传递过来的query来指导本层的小目标检测,再预测出本层的query进一步传递给下一层,对下一层的小目标检测进行指导的过程;Cascade表示了这种级联的思想;Sparse表示通过使用稀疏卷积(sparse convolution)来显著减少低层特征层上检测头的计算开销。

说白了,前一层的特征图具有高层特征和低分辨率,负责对小目标的初筛;这种查询传导到具有高分辨率信息的低层后再进行精找,这种“glance and focus”的two-stage结构可以有效的进行动态推理,检测出最终结果。

通过稀疏查询加速推理:

在以往基于特征金字塔的检测器的设计中,小目标倾向于从高分辨率低级特征图中检测到。 然而,由于小目标通常在空间中分布稀疏,高分辨率特征图上的密集计算范式效率非常低。 受此观察的启发,作者提出了一种从粗到细的方法来降低低级金字塔的计算成本:首先,在粗略特征图上预测小目标的粗略位置,然后集中计算精细特征图上的相应位置。这个过程可以看作是一个查询过程:粗略的位置是查询键,用于检测小目标的高分辨率特征是查询值,整个流程如下图所示。

对于简介中的图而言,里面包含了两个级联的查询操作,即:Large->Medium和Medium->Small,以Large->Medium为例,首先,网络会在Large层次的图像中对小目标进行标记(将规模小于预设阈值s的对象定义为小目标),Large层次的网络在预测过程中会对小目标的置信度进行预测,得到包含小目标的网格信息;其次,在推理过程中,网络选择预测分数大于阈值s的位置作为query,并将这个位置映射到Medium的特征图中,最后,Medium上对应的三个head只会在key位置集中对应的位置上计算head和用于下一层的queries,这个计算过程通过稀疏卷积实现。

3.结论

QueryDet利用high-resolution feature来提升小目标检测性能的同时,通过一种新颖的查询机制级联稀疏查询 (CSQ) 来加速基于特征金字塔的密集对象检测器的推理,利用高层低分辨率特征初筛含有小目标的区域,在高分辨特征层上利用初筛获得的位置,并且使用稀疏卷积运算,极大地节约了计算消耗。

要加在v7上,有待解决,估计也解决不了...

这篇关于【CVPR 2022】QueryDet:加速高分辨率小目标检测的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/182169

相关文章

Python实现快速扫描目标主机的开放端口和服务

《Python实现快速扫描目标主机的开放端口和服务》这篇文章主要为大家详细介绍了如何使用Python编写一个功能强大的端口扫描器脚本,实现快速扫描目标主机的开放端口和服务,感兴趣的小伙伴可以了解下... 目录功能介绍场景应用1. 网络安全审计2. 系统管理维护3. 网络故障排查4. 合规性检查报错处理1.

C#自动化实现检测并删除PDF文件中的空白页面

《C#自动化实现检测并删除PDF文件中的空白页面》PDF文档在日常工作和生活中扮演着重要的角色,本文将深入探讨如何使用C#编程语言,结合强大的PDF处理库,自动化地检测并删除PDF文件中的空白页面,感... 目录理解PDF空白页的定义与挑战引入Spire.PDF for .NET库核心实现:检测并删除空白页

Python脚本轻松实现检测麦克风功能

《Python脚本轻松实现检测麦克风功能》在进行音频处理或开发需要使用麦克风的应用程序时,确保麦克风功能正常是非常重要的,本文将介绍一个简单的Python脚本,能够帮助我们检测本地麦克风的功能,需要的... 目录轻松检测麦克风功能脚本介绍一、python环境准备二、代码解析三、使用方法四、知识扩展轻松检测麦

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

C++ 检测文件大小和文件传输的方法示例详解

《C++检测文件大小和文件传输的方法示例详解》文章介绍了在C/C++中获取文件大小的三种方法,推荐使用stat()函数,并详细说明了如何设计一次性发送压缩包的结构体及传输流程,包含CRC校验和自动解... 目录检测文件的大小✅ 方法一:使用 stat() 函数(推荐)✅ 用法示例:✅ 方法二:使用 fsee

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Gradle在国内配置镜像加速的实现步骤

《Gradle在国内配置镜像加速的实现步骤》在国内使用Gradle构建项目时,最大的痛点就是依赖下载贼慢,甚至卡死,下面教你如何配置国内镜像加速Gradle下载依赖,主要是通过改写repositori... 目录引言一、修改 build.gradle 或 settings.gradle 的 reposito

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展