SEA~~

article/2025/10/14 20:36:39

抹平One-Stage与Two-Stage目标检测之间的差距 ,重新讨论了单阶段和两阶段的检测器蒸馏任务

在这讨论了单阶段和两阶段的检测器蒸馏任务,并提出了一个简单而有效的语义感知框架来填补它们之间的空白。作者通过设计类别Anchor来生成每个类别的代表性模式,并规范像素级的拓扑距离和类别Anchor之间的拓扑距离,以进一步加强它们的语义联系,从而解决像素级的语义失衡问题。

作者将本文的方法命名为SEA(SEmantic-aware Alignment)蒸馏,因为通过语义依赖提取密集的细粒度信息的本质,以很好地促进蒸馏效果。

SEA很好地适用于两种检测管道,并在单阶段和两阶段检测器上的具有挑战性的COCO目标检测任务上取得了新的最先进的结果。其在实例分割上的优越性能进一步体现了其泛化能力。2x-distilled RetinaNet和使用ResNet50-FPN的FCOS均优于相应的3x ResNet101-FPN教师,分别达到40.64和43.06 AP。

在目标检测中,设计良好的骨干网络为强大的目标检测器提供了强大的支持,以解决具有挑战性的任务。延迟和准确性之间的平衡是目标检测中不可避免的权衡,特别是当在移动设备上部署模型时。与改变原始模型权重和存储位的剪枝和量化不同,知识蒸馏通过将知识从训练有素的教师模型转移到相对较小的学生模型来保持目标模型的完整,这现在成为模型加速的常见做法。

近年来,由于没有专门设计的算子,单阶段检测器有利于移动应用。然而,单阶段检测器的蒸馏性能仍落后于两阶段检测器。其原因是大多数用于目标检测的蒸馏方法主要是为两阶段检测器设计的。例如,DSIG将两阶段检测器提高了2%以上。但当应用于FCOS时,其性能降低了0.8%。

这种不一致性主要来自于单阶段和两阶段检测管道之间的差异(图1)。在两阶段管道中,先前的proposals由Region Proposal Network生成,以提取感兴趣区域(RoI)特征,使预测来自像素集合。而在没有建议的单阶段检测器(也称为密集检测器)中,密集特征映射是通过连续卷积处理的。单个像素被直接用于产生预测。

在单阶段检测器中存在的一个潜在问题是,“感兴趣的区域”(即选定的单个像素)与密集检测器中真正感兴趣的区域(即边界框)不对齐。相比之下,在两阶段设计中采用的区域建议自然适合于实例级的框预测。此外,在单阶段教师和学生模型之间的像素到像素蒸馏过程中,对不重要或错误像素的预测可能会引入不必要的噪声,从而导致基于关系的方法可能错误地利用元素之间的相关性,从而导致性能推断。

为了解决这个问题,作者提出了一个新的视角来理解密集检测器的知识蒸馏。如前所述,密集检测器由多个层的特征图组成,其中像素级训练样本极不平衡,并且不能从密集特征图中利用任何显式实例级关系。此外,密集检测器还有另一个并行分支来处理定位信息,这可以被更好地利用。

解决不平衡问题

不同于将前景(FG)样本与背景(BG)样本的比例正规化的两阶段检测器,只有单阶段的检测器。这导致了FG和BG之间更高水平的不平衡,甚至是不同类别的前景之间的不平衡。Two stage oriented distillers倾向于将FG与BG分离,并以不同的方式调整其损失重量。在单阶段检测器中,FG和BG很难在密集的特征图上进行分割和调谐。如果施加正则化,剧烈的不平衡会使蒸馏的效果降低。为了解决这个问题,作者编码了一种名为类别Anchor的新知识表示,它被设计为每个现有类别的通用模式。它还可以作为场景图像的密集特征图的语义摘要。当涉及到提取类别锚时,类别之间的不平衡(包括BG)得到了缓和。

2、在像素级中挖掘稀疏关系

两阶段风格的实例级关系很难转移到单阶段管道中。uniformly-sampled dense relation distillation甚至降低了检测性能。这说明需要更好地定义每个语义像素内的丰富信息之间的关系。此外,如果能筛选出不相关的密集关系,那将会更好。

为此,作者将空间像素表示映射到一个单位超球体中,其中保留了与附近元素的空间局部相似性,而不失去对那些具有明显特征的元素的识别能力。这里不是测量所有元素之间的关系,而是只量化这些元素和类别Anchor之间的距离。它允许大量毫无意义的关系被丢弃,并自动完成稀疏化。作者将这种策略命名为拓扑距离蒸馏法(_Topological Distance Distillation_)。

解纠缠分支中的不同语义

分类和边界框回归在经验上并不是互补的。因此,它们是由两个独立的分支独立完成的,以解开特征,并使它们专注于优化自己的任务。此外,实验结果(表5)表明,仅仅通过边界框分支中的MSE损失来匹配像素并不利于其性能。

如图4所示,高激活通常聚集在分支中的对象周围,用于回归边界框,而分类分支的激活更有可能从对象区域开始广泛传播。考虑到这种差异,作者没有采用简单的像素-像素匹配,而是开发了定位分布对齐法来通过概率分布匹配学生和教师之间的相对定位回归。这样就避免了提取每个激活图的绝对值,并找到了另一种方法来建模空间域中相对位置的信息。

主要贡献:

解决了上述问题,并提出了很少研究的单阶段检测器蒸馏的最终解决方案。为了在多个尺度和层次中利用密集的特征映射,作者设计了一个合适的知识表示类别Anchor来总结场景中的一般语义模式。在此基础上,引入了拓扑距离来保持像素级样本中的语义联系。最后,将定位蒸馏作为一个分布对齐问题,以有效地传递定位信息的知识。作者将本文的方法命名为语义感知的对齐蒸馏,这涉及到从语义感知的角度利用细粒度知识的本质。

本文的方法在COCO检测任务上的性能大大优于之前所有最先进的目标检测蒸馏器,并显示了其在COCO实例分割任务上的通用性。此外,我们在两阶段检测器上取得了与最先进水平相当的强大性能。

虽然两阶段和一阶段的检测器采用不同的处理方案,但它们都有一个共同点:大部分参数都用于生成高级语义特征图,作为后续任务的基础。在这个交叉点上蒸馏是弥合它们之间差距的关键。在消融研究中分析了每个组件的影响,并测试了超参数的敏感性。

本文的方法是稳定的训练,并不引入额外的参数来进行蒸馏训练。据作者描述,这是第一次尝试实现单阶段目标检测器蒸馏。

相关方法

目标检测

基于深度学习的目标检测器分为两种,即两阶段检测器和单阶段检测器。前者生成提取区域特征的prior proposals,而后者在没有先验的情况下完成目标检测。

两阶段的方法主要源于R-CNN,在下一步工作进一步细化R-CNN管道,以生成更精确的proposals并保证实时性。还有许多优秀的方法来进一步改进两阶段检测器。它们都按区域包围提取的特征,并将其视为分类和定位中的实例。

在没有生成proposals的情况下,单阶段检测器设计为低延迟,同时保持高精度。YOLO最初引入Anchor来从特征图中预测类和边界框。为了缓解密集检测中的前景背景不平衡问题,RetinaNet提出了Focal Loss来减轻分类良好的简单示例的权重。

此外,ATSS改进了标签分配算法,GFL提出了优化的Focal Loss和box distribution loss。也有Anchor-free检测器丢弃先前的边界框,例如FCOS,它仅从点进行检测。在本文中对这些检测器进行了实验,包括两阶段、单阶段 Anchor -based和Anchor-free 的检测器。

2.2 知识蒸馏

知识蒸馏将知识从大的教师模型转移到轻量级的学生模型。Hinton等人首先将输出层的soft logits视为需要提炼的知识表示。此外,中间特征表示和注意力映射也被于匹配学生和教师。最近,一些知识蒸馏框架进一步挖掘了这种潜力,如Mutual Learning、Noisy Student 和TAKD。

目标检测从知识蒸馏中获益很多,因为它以更低的推理成本和内存占用实现了相当大的准确性。这里将检测蒸馏方法分为4组:

  1. Region-based

Chen等人首先提出了一个用于两阶段检测器的检测知识蒸馏框架,并专门重新设计了用于检测的logits distillation loss。Wang等人从GT中生成细粒度Mask以提取特征图中选定的近目标区域。Sun等人提出了一种高斯Mask以增加对目标中心附近区域的关注,并采用学习率衰减策略来提高泛化性。最近,Guo等人将这些特征分为前景和背景,处理方式不同。这些方法都首先提取注意力区域,然后对这些选定的像素进行蒸馏。

  1. Relation-based

Chen等和Dai等在检测中利用实例关系将学生与教师相结合。这些方法还使用先前的区域(即建议和GT框)来选择区域特征作为元素,以建立关系,以进行进一步的蒸馏。

  1. Backbone-based

Zhang等人利用了注意力模块,并生成了一个level的注意力图,用于在检测器中进行主干蒸馏。但是,它没有使用以下的检测头,它也包含了足够的信息。

  1. Segmentation-based

Liu等人提出了一种结构化的方法来转移规则像素块之间的关系。请注意,在检测中,这种关系由于背景的比例较高而带来了很大的噪声。Shu等人提取的通道信息-检测器的激活图与分割的不同。

语义感知对齐蒸馏

在本节中介绍了整体蒸馏管道,该管道由类别Anchor蒸馏、拓扑距离蒸馏和定位分布对齐组成。类别Anchor表示从多尺度特征图中挖掘的全局类别信息。它描述了语义原型和单个像素之间的分布,而不会受到类间不平衡的不利影响。因此,在潜在嵌入空间中可以更好地说明拓扑距离。定位分布对齐有效地利用分布匹配损失来提取从教师到学生的回归特征图,其中像素在空间相对位置上表现出语义。

 

Category Anchor Distillation


为了避免来自密集像素匹配的一系列卷积层的不平衡信息,作者设计了类别Anchor作为一个图像批处理中现有实例的分类摘要(图3)。categorical summary functions类似于两阶段检测器,它提取感兴趣的区域以辅助检测。作者选择了使用注意力像素来建立类别Anchor,而不是像素级模仿,而是对类别区域进行学生和教师模型之间的模仿。

考虑到正方形的边框并不代表真实物体的实际形状,作者将边框分为中心部分和边缘部分。因此,每个类别都拥有两个类别Anchor,它们收集了整个图像批处理中属于分类区域的所有像素。

Multi-level Anchor Matching

不同level的Anchor集中了从多分辨率特征图中收集到的信息。提取学生和教师Anchor在所有level的特征图:

Topological Distance Distillation

在起始点检测框架中,我们将每个像素视为一个单独的样本,其中每个像素都拥有足够的信息来支持以下分类和定位回归任务。同样,样本在嵌入空间中分散,且与Structured knowledge distillation之间存在相关性。这里不是建模所有像素之间的密集相关性,而是测量像素和类别Anchor之间的距离。这些距离构建了一个拓扑结构,用于根据Anchor来校准单个样本。训练有素的教师对距离有更精确的测量方法。因此,它规范了学生的拓扑结构。作者设计了学生和教师之间的拓扑距离蒸馏损失为:

Localization Distribution Alignment 

如图4所示,bbox特征图在图像中具有更被激活的像素,这实际上表明了它自身和GT中心之间的相对位置。受此发现的启发在空间域建立了分布对齐模型,并有效KL散度损失将bbox层提取为:whaosoft aiot http://143ai.com  


 实验

 消融实验

组件分析

 

超参数灵敏度 

Loss penalty coefficients

 

主要实验 

Faster RCNN与Cascade R-CNN 

Mask RCNN与SOLOv2 

局限与总结 

局限

一般的限制在于提炼的本质,教师模型不可避免地需要将其知识传递给学生模型。虽然蒸馏主要是针对小的学生模型,但对于大的学生模型很难找到合适的教师模型。

 总结

在本文中提出了用于目标探测器的SEA(SEmantic-Aware Alignment)蒸馏方法。为了弥合单阶段和两阶段检测器蒸馏之间的差距,SEA将每个像素作为实例,设计类别Anchor来总结场景图像中的分类信息,处理密集像素中的剧烈不平衡。在此基础上,对语义关系进行建模,并对其进行稀疏化,使蒸馏更加结构化和完整。此外,还有效地对齐了学生和教师之间的未被充分研究的边界框分支中的定位分布。大量的实验证明了SEA方法在目标检测和实例分割蒸馏任务方面的有效性和鲁棒性。


http://chatgpt.dhexx.cn/article/pUNxRak8.shtml

相关文章

SeaweedFS容器部署(seaweed部署、seaweedfs部署)(文件块chunks概念)(master节点与volume节点通信原理)(seaweed上传seaweed下载)

官网链接:https://github.com/seaweedfs 文章目录 seaweed简介seaweedfs文件块概念(chunks)分布式部署时master节点与volume节点通信原理seaweed容器部署方法单个节点部署部署方法(mastervolum)(mastervolu…

seaweedfs服务启动参数及翻译(seaweed参数、seaweed命令、weed参数、weed命令)(在单个容器同时启动master、volume、filer服务)

文章目录 weed命令翻译weed server命令翻译 weed filer命令 docker容器运行示例(docker run命令)以下是一个在单个容器启动master、volume、filer服务的示例 weed server 容器debug 版本:3.47从官方镜像docker容器里扒下来的,只扒…

Paramiko: Python使用paramiko连接主机报错“Authentication timeout”

问题描述: 在用Python Paramiko库去连接主机时 始终无法连接,exception输出错误仅有 Authentication timeout connection paramiko.SSHClient()connection.set_missing_host_key_policy(paramiko.AutoAddPolicy())try:connection.connect(hostname192.1…

安装paramiko模块

使用Python实现自动化运维巡检网络设备,需要使用到paramiko模块 下载过程: 进入至CMD命令提示符 win r 跳转出 " 运行 " 窗口 打开内输入" cmd " 进入命令提示符 安装paramiko模块 cmd输入:pip install paramiko PS&…

python-paramiko安装

paramiko 安装坑比较多 测试环境: python3.7.9 win10 安装步骤: pip install pep517 pip install cryptography pip install paramiko

Python paramiko 模块详解与SSH主要功能模拟

我们知道,通过SSH服务可以远程连接到Linux服务器,查看上面的日志状态,批量配置远程服务器,文件上传,文件下载等,Python的paramiko模块同样实现了这一功能。 首先我们需要安装这一模块,pycharm环…

paramiko的安装

import paramiko 出错 直接通过下列代码即可,无需安装VS之类的 pip install paramiko 再上一步安装了paramiko之后,若您安装了pycharm ,博主安装的是pycharm 2018 community版则可通过File --> setting -->下列方式 步骤1&#xf…

Python模块之paramiko

Paramiko paramiko模块,基于SSH用于连接远程服务器并执行相关操作。 一、安装 1 pip3 install paramiko 二、使用 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: 1 import paramiko2 3 # 创建SSH对象4 ssh paramiko.SSHCli…

python之paramiko模块

paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。 由于使用的是python这样的能够跨平台运行…

Python--paramiko

Paramiko paramiko模块,基于SSH用于连接远程服务器并执行相关操作。 一、安装 1 pip3 install paramiko 二、使用 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: import paramiko# 创建SSH对象 ssh paramiko.SSHClient() # 允…

Python笔记之paramiko模块安装和使用示例

一、paramiko模块简介 paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,基于linux中的ssh服务 。paramiko是第三方模块,需要我们单独安装。通过paramiko模块,我们可以利用python代码程序实现对…

【Python-自动化】paramiko模块

文章目录 运维自动化Python一、模块介绍二、模块应用1.使用paramiko模块,通过ssh协议连接服务器2.解决首次连接known_hosts问题3、执行命令exec_command方法扩展:使用try异常捕获 4、多台服务器执行命令5、从服务器上传下载文件--SFTPClient方法6、多台服…

HttpClient和HtmlUnit的比较总结以及使用技巧(一)

大家在做爬虫、网页采集、通过网页自动写入数据时基本上都接触过这两个组件(权且称之为组件吧),网上入门资料已经很多了,我想从实际的应用角度谈谈我对于这两个组件的看法,并记录在博客中,以便日后翻阅&…

htmlUnit的读取js渲染的页面

htmlUnit的读取js渲染的页面 我这边有个这么的需求,要求前端每次上版本的时候,有一个版本号。然后后端去爬前端,比较禅道的版本发布计划,如果发布计划和生产上的版本号不一致,就告警。 这个跟后端的jar包&#xff0c…

HtmlUnit

HtmlUnit是什么?看下介绍: A java GUI-Less browser, which allows high-level manipulation of web pages, such as filling forms and clicking links; just getPage(url), find a hyperlink, click() and you have all the HTML, JavaScript, and A…

HtmlUnit使用

htmlunit 是一款开源的java 页面分析工具,读取页面后,可以有效的使用htmlunit分析页面上的内容。项目可以模拟浏览器运行,被誉为java浏览器的开源实现。是一个没有界面的浏览器,运行速度迅速。是junit的扩展之一,它采用…

【转】 HtmlUnit简介

HtmlUnit简介: 引自 http://www.javaeye.com/topic/166702 HtmlUnit 是 JUnit 的扩展测试框架之一。HtmlUnit 将返回文档模拟成 HTML,这样您便可以直接处理这些文档了。HtmlUnit 使用例如 table、form 等标识符将测试文档作为 HTML 来处理。它同样需要遵…

HtmlUnit(Java) - 快速入门学习 - 无界面浏览器

文章目录 1. 概述2. 注意2.0 js解析问题2.1 关闭HtmlUnit日志 3. 使用3.1 抓取IT之家周榜内容 - 单页面3.2 抓取IT之家周榜第九篇文章的内容 - 双页面3.3 模拟用户操作 - (这个功能个人感觉非常非常的鸡肋,只能用于非常简单的JS,但是一般网站…

【零基础】快速入门爬虫框架HtmlUnit

迅速的HtmlUnit htmlunit是一款开源的web页面分析工具,理论上来说htmlunit应用于网页的自动化测试,但是相对来说更多人使用它来进行小型爬虫的快速开发。使用htmlunit进行爬虫开发不仅是其运行速度快,更重要的是此框架上手更为容易&#xff0…

保研之路——哈深计算机预推免

哈深计算机预推免 个人情况高校复试参与情况哈工深计算机学院直硕(7.20)结语 嗯!抱着不白花这么多路费住宿费的初衷准备写一个保研经验贴,希望学弟学妹少花点钱吧orz 我的战术大概是只要学校给我发了邀请我就去(除了时…