目标检测中的集合预测 (Set Prediction for Object Detection)

本文探讨了目标检测中的集合预测方法,避免了传统滑动窗口预测的复杂性,实现了端到端的训练与预测。DETR作为代表性工作,引入了Transformer架构,但存在收敛速度慢和小目标检测不佳的问题。Deformable DETR通过变形注意力解决了这些问题,而Rethink Transformer-based Set Prediction则分析了DETR的优化难题,提出了改进策略。此外,SparseRCNN、OneNet等近期方法也对集合预测进行了创新探索。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 简介目标检测中的集合预测

常见的目标检测方法如Faster-RCNN,RetinaNet等都是通过预设anchor的方式进行预测,这种方式本质上就是类似滑动窗口的一种模式。而使用这种滑动窗口的方式其实是人为地给检测任务降低难度,这也确实是早期的传统方式做模式识别的一种主流方式。

而基于集合预测的方式就显得更简单粗暴了,输入一副图像,网络的输出就是最终的预测的集合(也不需要任何后处理)能够直接得到预测的集合就已经达到了检测的目的了。但这种方式从直觉上看会比基于滑动窗口的方式更难。基于滑窗的方式就像人为地给了一个梯子,帮助网络去越过障碍,而集合预测就更需要网络真正懂得图像的语义而直接越过障碍。

集合预测带来的最大好处就是训练与预测变成真正的端到端,无需NMS的后处理,十分方便。同时,也不用人为地预设anchor size/ratio 了。坏处就是这玩意儿能收敛吗?

2 非极大值抑制(NMS)

先简单介绍下NMS吧,一句话解释就是常见的检测方法会产生大量的冗余框,常用的去掉冗余框的方法就是NMS。如下图所示

在这里插入图片描述

每个框有一个分类置信度分数以及框的坐标。算法思路如下,每次从剩下的框中选择分数最大的框作为最终的一个输出并移除它,与该框IoU大于给定阈值的都从剩下的框中移除,一直重复此操作直到剩下的框全被移除。那么每次中间选择的最大分数的框就是最终结果。如果有多个类的话,每个类分开计算。

3 Relation Network

之前试图直接移除NMS的工作也有很多,这里选一个比较有代表性的简单说一下。Relation Network 结构如下

在这里插入图片描述

该文有两个点,一是使用relation模块来建模实例之间的关系,其实也就是类似Non-Local那一套。二是使用relation模块来消除NMS。这里仔细说下第二点吧。

仔细分析NMS算法的过程可以得到,NMS的过程其实用到了两个信息,一个是不同框之间的分数关系,二是不同框之间的几何关系。也就是说如果现在有个万能黑盒,给它输入分数关系与几何关系,那它也就应该可以有NMS的效果。因此作者在这里设计了一个二分网络,用来预测每个框它是否是重复框。输入有分数信息,该框的特征向量,以及该框的实际位置信息,输出就是该框是否为重复框的分数 ∈ [ 0 , 1 ] \in[0,1] [0,1]。网络结构如下

在这里插入图片描述

那训练的时候怎么决定谁才是非重复框,谁是重复框,也就是怎么给这个二分类网络分配GT呢?

这里是采用的动态分配的方式,过程如下:将所有预测框与所有GT框算IoU,对每个GT框选择IoU大于阈值的一些预测框,相当于根据IoU将预测框分为GT框数量个组,然后在每个组中选择预测分数最大的那个框为非重复框,其余全都为重复框。

在预测时需要将 s 0 s_0 s0, s 1 s_1 s1乘起来作为该框的分数,一个质量好的框应该是 s 0 s_0 s0, s 1 s_1 s1都要大。如果 s 0 s_0 s0较大, s 1 s_1 s1较小,说明这很可能就是一个重复框,它们的乘积就很小,在输出最终结果的时候就会被排除,达到了NMS相同的作用。

4 DETR

DETR虽然不是最早预测集合的方式来检测,但应该是很有影响力的一篇文章了。介绍它之前先明确两中GT分配的方式,静态分配动态分配

静态分配就是常见的FasterRCNN,RetinaNet,FCOS等这些方法中分配的方式,即GT的分配不依赖于网络的输出。相反,依赖于网络的输出就是动态分配,像Relation Network中二分类网络那里的分配,以及DETR中的分配方式。

下面简单介绍下DETR,下面是DETR的结构图

在这里插入图片描述

transformer的后面的输出就是最终预测的结果,固定为100个预测结果也就说网络输出就是 100 × 4 100\times 4 100×4 100 × ( C + 1 ) 100\times (C+1) 100×(C+

### 关于面包板电源模块 MB102 的 USB 供电规格及兼容性 #### 1. **MB102 基本功能** 面包板电源模块 MB102 是一种常见的实验工具,主要用于为基于面包板的小型电子项目提供稳定的电压输出。它通常具有两路独立的稳压输出:一路为 5V 和另一路可调电压(一般范围为 3V 至 12V)。这种设计使得它可以满足多种芯片和传感器的不同工作电压需求。 #### 2. **USB 供电方式** MB102 支持通过 USB 接口供电,输入电压通常是标准的 5V DC[^1]。由于其内部集成了 LM7805 稳压器以及可调节电位器控制的直流-直流变换电路,因此即使输入来自电脑或其他低功率 USB 设备,也能稳定地向负载供应电力。不过需要注意的是,如果项目的功耗较高,则可能超出某些 USB 端口的最大电流能力(一般是 500mA),从而引起不稳定现象或者保护机制启动断开连接的情况发生。 #### 3. **兼容性分析** 该型号广泛适用于各种微控制器单元 (MCU),特别是那些像 Wemos D1 R32 这样可以通过杜邦线轻松接入并共享相同逻辑级别的系统[^2]。另外,在提到 Arduino Uno 板时也表明了良好的互操作性,因为两者均采用相似的标准接口定义与电气特性参数设置[^4]: - 对于需要 3.3V 工作环境下的组件来说,只需调整好对应跳线帽位置即可实现精准匹配; - 当涉及到更多外围扩展应用场合下,例如带有多重模拟信号采集任务的情形里,利用 MB102 提供干净无干扰的基础能源供给就显得尤为重要了[^3]。 综上所述,对于打算构建以单片机为核心的原型验证平台而言,选用具备良好声誉记录且易于获取配件支持服务链路上下游资源丰富的品牌产品——如这里讨论过的这款特定类型的配电装置不失为明智之举之一。 ```python # 示例 Python 代码展示如何检测硬件状态 import machine pin = machine.Pin(2, machine.Pin.IN) if pin.value() == 1: print("Power supply is stable.") else: print("Check your connections and power source.") ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值