目标检测之Neck选择

news2024/10/6 11:47:50

文章来自于:曲終人不散丶@知乎,
连接:https://www.zhihu.com/people/qu-zhong-ren-bu-san-zhu-45/posts, 本文仅用于学术分享,如有侵权,前联系后台做删文处理。

在这里插入图片描述
Neck是目标检测框架中承上启下的关键环节。它对Backbone提取到的重要特征,进行再加工及合理利用,有利于下一步head的具体任务学习,如分类、回归、keypoint、instance mask等常见的任务。本文将对主流Neck进行阶段性总结。

总体概要

根据它们各自的论文创新点,大体上分为六种,这些方法当然可以同时属于多个类别。

  • 上下采样:SSD (ECCV 2016),STDN (CVPR 2018)
  • 路径聚合:DSSD (Arxiv 2017),FPN (CVPR 2017),PANet (CVPR 2018),Bi-FPN (CVPR 2020),NETNet (CVPR 2020)
  • NAS搜索:NAS-FPN (CVPR 2019)
  • 加权聚合:ASFF (Arxiv 2019), Bi-FPN
  • 非线性聚合:Feature Reconfiguration (ECCV2018, TIP 2019)
  • 无限堆叠:i-FPN (Arxiv 2020)

上下采样

该方法的特点是不具有特征层聚合性的操作,如SSD,直接在多级特征图后接head。
在这里插入图片描述
STDN是基于SSD的模型,其思想是构造法。由于STDN使用了DenseNet作为主干,因此后面的特征图在尺寸上是相同的,所以需要构造出各种大小的特征图来检测不同大小的物体。中间尺寸特征图直接使用,大尺寸特征图以尺寸变换层上采样获得,小尺寸特征图以池化获得。
在这里插入图片描述

STDN

在这里插入图片描述

拼图式尺寸变换,每四张小特征图拼成一张大特征图

路径聚合

该方法基于一个最基本的观察:深层特征图尺寸小,经过层层卷积下采样使得小物体的信息严重丢失,所以深层不利于小物体检测,就将小物体检测交给浅层来做。这也是为什么SSD需要多级head的原因。

然而光是这样还不够,由于深层特征图具有非常丰富的语义信息,那么最好把深层特征再往浅层传,以增加浅层语义信息。于是乎就诞生了最为人所熟知的FPN。在如何上采样方面,FPN使用最邻近上采样,当然还有使用反卷积的DSSD。

在这里插入图片描述

FPN与DSSD

在这里插入图片描述
这类方法的共性就是反复利用各种上下采样、拼接、点和或点积,来设计聚合策略。可改进的点还包括加上Deformable ConvAttention、门控机制、跨FPN level的label assignment等,都已有文章。

比较特殊的还有一种名为NETNet (CVPR 2020)的方法,其认为上述路径聚合方案无论怎么设计,对于预测小物体而言,大物体的特征一直存在,因为高层语义信息被传了下来,再加上其本身浅层自带的大物体特征,这对小物体来说会是一种干扰,如下图所示。

在这里插入图片描述

小物体在相应的特征图中并不突出

因此需要人为地进行干预,为浅层消除大物体特征。思路也很简单,随着下采样的进行,小物体特征会丢失,那么深层必然已经都是大物体的特征。此时对深层上采样,得到的还是大物体特征,再把原来的浅层减去经过上采样的深层,于是浅层就不再有了大物体的特征。那么小物体的特征将被突出化。

在这里插入图片描述
在这里插入图片描述
对小物体确实改进比较显著,值得一试。

NAS搜索

在这里插入图片描述

NAS-FPN

即利用神经网络搜索方法来搜索合适的聚合路径,但是搜索的时间成本极高,且数学可解释性低。最新的研究已表明,人工设计的路径聚合在精度上亦可超过NAS搜索出来的结构 (大力出奇迹)。

加权聚合

顾名思义,简单的聚合对所有参与的特征层都是一视同仁的,而实际上,这些来自不同层级的特征图对于单个物体而言,必然只有某一个是最适合检测它的。因此对聚合进行加权就显得尤为重要。

ASFF引入了可参与训练加权因子来体现不同层级特征图的重要性。

在这里插入图片描述
在这里插入图片描述

非线性聚合

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

无限堆叠

EfficientDet通过重复堆叠多个Bi-FPN block来获得性能的提升。
在这里插入图片描述
显然这样的操作会造成大量的计算开销与显存占用。

那么有没有更好的方法呢?当然有,比如权重共享,即只使用一个FPN block,backbone提取到的特征图会反复经过这个block,由于权重共享,显存占用很少,参数量也少,但是计算量仍然随着重复的次数而增加,因为每迭代一次,对该block的更新最终都需要增加一次反向传播。

但是上述过程有一个有趣的现象,就是当重复计算的次数趋于无穷多次时,这个FPN block的参数会收敛到一个固定点,即特征平衡态。那么如何利用有限次前向传播即可求解这样的网络参数固定点呢?就是《Deep Equilibrium Models》(NeurIPS 2019) 的厉害之处了。只要我们求得了该固定点,我们就直接得到了单个block重复前后向传播无数次的结果。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

Golang Gin 多数据格式返回请求结果

下面介绍返回类型如下: [ ]byte和stringJSON格式HTML模板渲染静态资源设置 背景 在前面的课程中,我们已经学习和掌握了多类型的网络请求和处理,还掌握了提交数据与结构体绑定的操作。我们都知道,一个完整的请求包含请求、处理请求…

掌握Linux操作系统:一步步引导您成为Linux专家

Linux是一种流行的操作系统,我们可以在服务器、桌面电脑和移动设备上使用它。基本的Linux知识可以帮助您理解操作系统如何工作,以及如何为您的计算机提供安全和可靠的环境。下面是一些方法,可以帮助您学习Linux: 安装Linux操作系统…

4月京东生鲜水果行业数据报告:榴莲销量增长400%,市场格局剧变

众所周知,今年水果领域的一个重磅消息就是:榴莲价格暴跌。目前全国多地线下水果专卖店、农贸市场的榴莲价格都在下滑,有的地区在4月底甚至已经降至最低每斤20元左右。预测在5月的销售旺季,价格还有望一路向下。 •榴莲逆袭苹果&am…

二十一、线索转换2:线索公司信息到客户表,线索中个人信息到联系人

功能需求 1.线索的关联公司信息--》客户表 2.线索的个人信息--》联系人 3.线索的公司备注信息--》客户备注 4.线索的个人信息---》联系人备注 5.线索-市场 --> 联系人和市场 6.创建交易,交易表添加记录 7.创建交易,线索的备注-->交易备注 …

JMeter自动化压力测试-http

下载: Apache JMeter - Download Apache JMeterhttps://jmeter.apache.org/download_jmeter.cgi 安装: JDK 版本要求为 1.8。 一、Jmeter 介绍 1.1、Jmeter 有什么样功能 Apache JMeter 是一个开源、纯 Java、优秀的性能测试工具 能够测试许多不同的应…

lua | 运算符与字符串

目录 一、运算符 算数运算符 关系运算符 逻辑运算符 其他运算符 运算符优先级 二、字符串 转义字符 方法与用途 字符串截取 字符串大小转换 字符串查找与反转 字符串格式化 字符与整数的转换 匹配模式 本文章为笔者学习分享 学习网站:Lua 基本语法 | …

分享三种高效的方法,快速将一个PDF文件分割成两个!

如何将一个PDF分割成两个?PDF文件在学习和工作中都是常用的文件格式,但是有时候我们可能只需要其中的一部分内容,这时候就需要将PDF文件分割成两个或多个。本文将分享三种不同的方法,供大家参考。 一、使用在线工具分割 记灵在线…

设计模式:DDD领域驱动设计

领域 Domain-driven design DDD 强调是说得先把 “领域” 中涉及到的数据、流程、规则等都弄明白了,然后以面向对象的观点为其建立一个模型(即领域模型),而这个模型,决定了你将用什么技术、什么架构、什么平台来实现这…

国产仪器 1652A/1652B 函数/任意波形发生器

1652A函数/任意波形发生器采样率2.5GSa/s,垂直分辨率14bits,最高输出频率500MHz(直流耦合模式),双通道,存储深度1G点/通道;1652B函数/任意波形发生器采样率5GSa/s(插值到10GSa/s&…

【Flink】DataStream API使用之执行环境

1. 执行环境 Flink 程序可以在各种上下文环境中运行:我们可以在本地 JVM 中执行程序,也可以提交 到远程集群上运行。不同的环境,代码的提交运行的过程会有所不同。这就要求我们在提交作业执行计算时,首先必须获取当前 Flink 的运…

【Unity3D插件】动态连线插件CustomWire,使用教程

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 CustomWire插件可以在Unity3D中实现动态连线,将三维…

ADAudit Plus的UEBA功能如何解决企业面临的安全挑战

随着企业信息系统的不断发展和扩大,越来越多的安全威胁开始涌现。从内部员工的误操作到外部黑客的入侵,企业信息系统的安全风险日益增加。为了保护企业的关键数据和业务,企业需要采取一系列的安全措施。而其中一项关键的安全措施是实时监控和…

【BingChat】Microsoft Edge/Bing Chat 注册使用完全指南

欢迎关注【youcans的学习笔记】原创作品,火热更新中 【BingChat】Microsoft Edge/Bing Chat 注册使用完全指南 1. BingChat 简介2. BingChat 用户注册2.1 下载微软浏览器 Edge 预览版2.2 申请微软账户2.3 登录 Bing.com2.4 手机/平板使用 BingChat 3. BingChat 的聊…

P1056 [NOIP2008 普及组] 排座椅

题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情。不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的 �D 对同学上课时会交头接耳。 同学们…

【OpenSSH】无需公网IP使用SSH远程连接服务器

文章目录 前言视频教程1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 转…

家里小孩要去学网络安全,网络安全行业前景到底怎么样?

最近接待了很多学生家长来咨询网络安全学习的问题。 家长们最主要关注三点:什么是网络安全?网络安全行业前景好吗?工资能拿多少?哪些专业什么学历可以学习网络安全? 那么盾叔就来综合解答一下。 什么是网络安全&…

UG NX二次开发(C#)-建模-判断一条曲线是否封闭的方法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、前言2、在UG NX中创建一条不封闭的曲线和一条封闭的曲线3、函数说明4、代码5、测试1、前言 前面有个博客介绍了边UG NX二次开发(C#)-建模-判断一条曲线是不是封闭,但是这个博客是判断边对象是…

Interest-aware Message-Passing GCN for Recommendation(www 21)

论文地址:https://arxiv.org/abs/2102.10044 BACKGROUND GCN信息聚合的模式非常适合推荐,但众所周知在模型设计的时候通常只能堆叠2-3层,再多就会出现过平滑问题(结点特征之间没有区分度),LightGCN证明了G…

【是C++,不是C艹】 引用的概念 | 引用的使用 | 引用与指针的区别

💞💞欢迎来到 Claffic 的博客💞💞 👉 专栏:《是C,不是C艹》👈 前言: 前面带大家学习了函数重载等C基础,这期继续C基础的学习:引用。 注&#xff1…

最常用的js混淆加密解

JS混淆加密是一种用于保护JS代码的技术,它能够将代码变得难以理解和修改,从而提高代码的安全性。但是,当我们需要修改和维护这些代码时,我们就会面临困难。因此,在某些情况下,我们需要解这些JS代码。 下面…