目标检测20年(三)

对这篇论文感兴趣的小伙伴可以订阅笔者《目标检测》专栏,关注笔者对该文献的阅读和理解。

前两篇解读链接:

目标检测20年(一)-CSDN博客

目标检测20年(二)-CSDN博客


目录

四、 检测器的加速发展

4.1 特征映射共享计算

4.2 级联检测

4.3 网络修剪和量化

4.4 轻量化网络设计

4.4.1 分解卷积

4.4.2 组卷积

4.4.3 深度可分离卷积

  4.4.4 瓶颈设计

4.4.5 NAS检测

4.5 数值加速

4.5.1 积分图像加速

4.5.2 频域加速

4.5.3 矢量量化


四、 检测器的加速发展

让检测器变得更快一直是一项具有挑战性的工作。加速技术可以分为“检测流水线”加速、“检测骨干(backbone)”加速和“数值计算”加速三个层次,如下图所示:

加速技术从下至上形成金字塔结构:数值计算包括积分图像、快速傅里叶变换(Fast Fourier Transform)、矢量量化和约阶近似。检测引擎/骨干的加速包括网络修剪和量化以及轻量化网络设计。最后,流水线加速包括特征映射共享计算和级联检测。

下面对这些技术分别进行介绍:

4.1 特征映射共享计算

检测器不同计算阶段中,特征提取占据计算量的主导地位。减少特征计算冗余最常用的方法就是只计算一次整幅图像的特征映射,该方法已实现数十倍甚至百倍的加速。

4.2 级联检测

级联检测是一种常用技术,采用从“粗”到“精”的检测理念,使用简单计算过滤简单的背景窗口,用复杂窗口处理困难窗口。该方法适用于大场景小物体检测任务,如人脸、行人的检测。

4.3 网络修剪和量化

“网络修剪”和“网络量化”是两种加速CNN模型的方法。前者修剪网络结构或权值,后者减少代码长度。最初网络修剪采用迭代训练和修剪,每个训练阶段后只去除一小组不重要的权值并重复该操作。目前的工作集中于网络二值化,通过激活或权重量化为二进制(0/1)压缩网络,将浮点运算转为逻辑运算。

标准的卷积如下图所示:

4.4 轻量化网络设计

除了有“少通道多层”的方法外,近年来也提出了许多其他方法。

4.4.1 分解卷积

这是轻量级CNN最直接的方法。一般有两组分解方法:第一组是将大的卷积滤波器分解成一组小的,如下图所示:

我们可以将一个7×7的滤波器分解成三个3×3的滤波器,并且它们享受相同的感受野,后者的效率却更高。第二组则是对通道维度的卷积进行因式分解,如下图所示:

4.4.2 组卷积

 组卷积就是将特征通道分成不同组,在每个组上进行卷积,从而减少卷积层中参数数量。如下图所示:

                                                                                                                                                            理论上,其他条件相同情况下,将特征均匀分成m组,计算量将减少1/m。

4.4.3 深度可分离卷积

深度可分离卷积可以看作是组卷积的一种特殊情况(即组的个数和通道数相同)。使用多个1×1滤波器进行维度转换以得到具有所需通道数量的输出。通过深度可分离卷积,计算量可以从O(dk^{2}c)减少到O(ck^{2})+O(dc)。该思想可以应用于目标检测和细粒度分类。如下图所示:

  4.4.4 瓶颈设计

与前几层相比,神经网络瓶颈层包含节点较少。瓶颈的设计通常被用来设计轻量级网络。可以对输入层网络进行压缩,减少检测开始的计算量。也可以压缩特征图,加快后续检测。                        

4.4.5 NAS检测

基于深度学习的检测器越来越复杂,也严重依赖手工构建的网络架构和训练参数。神经结构搜索(Nerual Architecture Search,NAS)主要关注确定候选网络适当空间,改进快速准确搜索策略,以低成本验证搜索结果。在设计检测模型时,NAS可以减少人为干预网络骨干网和锚盒设计需求。

4.5 数值加速

数值加速旨在加速目标检测器底层实现过程。

4.5.1 积分图像加速

积分图像是图像处理的一种方法,其有助于快速图像子区域的和。本质就是信号处理中卷积的积分-微分可分性。

f(x)*g(x)=(\int f(x)dx)*(\frac{dg(x)}{dx})

其中dg(x)/dx是稀疏信号,之后卷积部分就能通过方程右边部分进行加速。

积分图像也可以用于加速更多的目标检测常见特征,如颜色直方图、梯度直方图。很典型的是通过计算积分HOG映射加速HOG,如下图所示:

积分HOG地图用于行人检测,并在不损失精度条件下加速数十倍。

4.5.2 频域加速

卷积是一种重要的运算,由于线性检测器检测可以看作是特征映射和检测器权重之间的窗口内积,通过卷积实现。傅里叶变换是一种加速卷积的方法。在适当条件下,两个信号I*W的卷积傅里叶变换F是他们傅里叶空间中的点积:

I*W=F^{-1}(F(I)\odot F(W))

F是傅里叶变换,F-1是傅里叶反变换。上述公式可以通过快速傅里叶变换和快速傅里叶反变换实现加速。

4.5.3 矢量量化

VQ(vector quantization)是信号处理的常用量化方法。通过一组小的原型向量近似一组大数据分布。可以用于数据压缩和加速目标检测内积运算。

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/898912.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/898912.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能手持终端PDA在设备巡检管理中的应用

在工业制造、能源电力、轨道交通等领域,设备巡检是保障生产安全与连续性的核心环节。传统巡检模式存在效率低、易出错、数据滞后等痛点。上海岳冉智能设备巡检手持终端PDA,以智能化、数字化、高可靠为核心设计理念,集RFID、条码扫描、AI图像识…

AI知识补全(二):提示工程(Prompting)是什么?

名人说:人生如逆旅,我亦是行人。 ——苏轼《临江仙送钱穆父》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:AI知识补全(一):tokens是什么…

C++友元:跨墙访问的三种姿势

目录 友元 友元之普通函数形式 友元之成员函数形式 友元类 友元的特点 友元 什么叫友元? 一般来说,类的私有成员只能在类的内部访问,类之外是不能访问它们的。但如果将其他类/函数设置为类的友元,那么友元类/函数就可以在前…

位运算[找出唯一成对的数]

题目来源:蓝桥云课 不用辅助储存空间 import java.util.Random;public class T_01 {public class Util {public static void swap(int[] arr, int i, int j) {int temp arr[i];arr[i] arr[j];arr[j] temp;}public static void print(int[] arr) {for (int i 0; …

简记_FPGA 硬件最小系统设计

一、FPGA板级设计的五要素 1.1、电源电路 核心电压:一般为固定值 IO电压:FPGA的IO分为多个bank,同一个bank的不同IO引脚电压相同,不同bank的电压可以不同 辅助电压:除了核心电压和IO电压,FPGA工作所需的…

7.2 控件和组件

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的 C#工具箱位于编辑窗口的左侧,它默认内置了大量的控件和组件。控件一般派生于System.Windows.Forms.Control类,显…

Spring Boot中接口数据字段为 Long 类型时,前端number精度丢失问题解决方案

Spring Boot中接口数据字段为 Long 类型时,前端number精度丢失问题解决方案 在Spring Boot中,当接口数据字段为 Long 类型时,返回页面的JSON中该字段通常会被序列化为数字类型。 例如,一个Java对象中有一个 Long 类型的属性 id …

OpenCV第2课 OpenCV的组成结构与图片/视频的加载及展示

1.OpenCV 的组成结构 2.OpenCV 的具体模块 3. 图像的读取 4. 视频的读取 1.OpenCV 的组成结构 OpenCV 是由很多模块组成的,这些模块可以分成很多层: 最底层是基于硬件加速层(HAL)的各种硬件优化。再上一层是opencv_contrib 模块所包含的OpenCV 由其他开发人员所贡献的代…

安装配置Tesseract-OCR

1,下载对应的可执行文件 在Tesseract OCR下载地址Index of /tesseract下载合适的版本安装包,如下: 点击安装包进行安装: 语言选择英文: 如果需要识别中文,则可以在安装过程中勾选下载中文语言包和脚本(也可以按需选择繁体):

关于墙面涂鸦的视觉检测与喷涂修复装置研究(大纲)

公共场所墙面涂鸦视觉检测与精准喷涂修复装置研究 融合视觉识别与自动化喷涂的墙面维护解决方案 第一章 绪论 1.1 研究背景与意义 城市形象与秩序维护: 涂鸦对公共环境的影响(破坏美观、传递不良信息)清除涂鸦的重要性(恢复原貌…

图论 | 98. 所有可达路径

98. 所有可达路径 题目链接: 98. 所有可达路径 思路 先创建邻接矩阵,再深搜写代码是需要注意的是acm格式,输入的格式要转化为int,输出要转化为str,用map()实现。 dfs def dfs(grid,node,n,…

MCP+Hologres+LLM 搭建数据分析 Agent

LLM大模型在数据分析领域的挑战 在数据分析领域,大模型(LLM)具备强大语言理解能力,NL2SQL等各类智能化工具也极大提升了数据分析人员的分析效率,但仍旧面临不少挑战: 传统 LLM 缺乏实时数据接入能力&…

Categorical分布(分类分布):深度学习中的离散建模利器

Categorical分布:深度学习中的离散建模利器 引言 对于深度学习研究者来说,概率分布是模型设计和优化的基石。在许多生成模型中,如变分自编码器(VAE)及其变种VQ-VAE(Vector Quantized Variational Autoenc…

Langchain 提示词(Prompt)

基本用法 1. 基本概念 提示词模板 是一个字符串模板,其中包含一些占位符(通常是 {variable} 形式的),这些占位符可以在运行时被实际值替换。LangChain 提供了多种类型的提示词模板,以适应不同的使用场景。 2. 主要类…

centos7.9镜像源及Python引入ssl问题处理

一、镜像源修改 1. 备份原有的镜像源配置文件 在修改之前,先备份现有的 CentOS-Base.repo 文件: sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2. 编辑镜像源配置文件 使用文本编辑器(如 nano 或 vi)打开 /etc/yum.repos.d/Ce…

Java高频面试之集合-17

hello啊,各位观众姥爷们!!!本baby今天来报道了!哈哈哈哈哈嗝🐶 面试官:JDK 8 对 HashMap 主要做了哪些优化呢?为什么要这么做? JDK 8 对 HashMap 的主要优化及原因 JDK…

计算机二级:函数基础题

函数基础题 第一题 rinput("请输入半径:") c3.1415926*r*2 print("{:.0f}".format(c))输出: Type Error第二题 a7 b2 print(a%2)输出 1第三题 ab4 def my_ab(ab,xy):abpow(ab,xy)print(ab,end"\n") my_ab(ab,2)prin…

C# 属性(Property)‌详解

在 C# 中,‌属性(Property)‌ 是类或结构体中的成员,用于封装对私有字段(称为 ‌backing field‌)的访问,提供更灵活和安全的数据操作方式。属性通过 get 和 set 访问器控制对数据的读写&#x…

iPhone 16如何翻译文档?文档翻译技巧、软件推荐

在全球化的今天,跨语言交流变得越来越频繁,而文档翻译更是成为许多人日常工作和学习中的重要需求。作为苹果公司最新推出的旗舰机型,iPhone 16凭借其强大的硬件性能和丰富的软件生态,为我们提供了多种便捷的文档翻译方式&#xff…

HRP方法全文总结与模型流程解析

背景与问题 传统二次优化方法(如Markowitz的CLA)存在三大问题: 不稳定性:协方差矩阵的高条件数导致逆矩阵计算误差放大,权重剧烈波动。 集中性:优化结果过度集中于少数资产,易受个体风险冲击。…