Prime Sample

article/2025/9/14 7:32:39

又发现了个框架 但没有代码啊~~ 还是搬来了,重要样本关注机制,一种新颖的目标检测框架

上论文

论文地址: https://arxiv.org/pdf/1904.04821.pdf

在目标检测框架中,平等对待所有样本并以平均性能最大化目标是一种常见的范例。在今天分享中,研究者通过仔细研究不同的样本如何对以mAP衡量的总体性能做出贡献,重新审视了这一范式。

研究表明,每个小批次中的样本既不是独立的,也不是同等重要的,因此平均而言,更好的分类器并不一定意味着更高的mAP。在这项研究的激励下,研究者提出了原始样本的概念,这些样本在推动检测性能方面起着关键作用。研究者进一步开发了一种简单而有效的抽样和学习策略,称为“预防样本注意力”(PISA),将训练过程重点指向此类样本。

研究者的实验表明,在训练检测器时,关注prime sample(其实就是正样本中IoU高的样本和负样本中得分高的样本)通常比关注难样本更有效。特别是,在MSCOCO数据集上,PISA在单级和两级检测器上的性能始终优于随机采样基线和难挖掘方案,例如OHEM和Focal Loss,大约为2%,即使其具有强大的主干ResNeXt-101。

Improvement of NMS with localization confidence

IoUNet建议使用定位置信度而不是NMS的分类分数。它增加了一个额外的分支来预测样本的IoU,并使用NMS的定位置信度,即预测IoU。IoUNet和新提出的方法之间存在一些主要差异。

首先,IoUNet旨在为预测IoU较高的候选提供更高的分数。在这项工作中,研究者发现高IoU并不一定意味着对训练很重要。特别是,围绕目标的候选之间的相对排名也起着至关重要的作用。其次,研究者的目标不是改进NMS,没有利用额外的分支来预测定位置信度,而是调查prime sample的重要性,并建议更多地关注基于重要性的重加权的基础样本,以及将两个分支的训练关联起来的新损失。

Prime Sample

左:白色虚线表示ground truth,红色框表示prime sample,蓝框为难例样本

右:不同采样策略下模型的PR曲线,random表示平等对待各个样本,hard表示重点关注难例样本,prima表示重点关注重要样本

可以看到,基于prime sample的采样策略能够更好地提升检测器的性能,原因是什么呢?

目标检测中,我们的目的是提高mAP,首先就要了解什么是mAP?

AP就是ROC曲线下的面积。在绘制ROC曲线时,检测框的置信度决定了该检测框是否被保留,该检测框与标注框的IOU决定了该检测框是否对应了真实目标,这两个方面都影响了TP,FP和Recall,Precision和AP。

根据map的定义,哪些正样本比较重要?

mAP的工作方式揭示了两个标准:

(1)在与ground truth物体重叠的所有包围盒中,IoU最高的那个是最重要的,因为其IoU值会直接影响 recall。(2)在所有不同对象的最高IoU边界框中,具有较高IoU的边界框更为重要,因为随着θ的增大,它们是最后一个低于IoU阈值θ的边界框,因此对总体精度有很大影响。

在这些标准上,正样本中IoU高的样本对于目标检测器而言更为重要。

根据map的定义,哪些负样本比较重要?

(1)在本地区域内的所有负样本中,得分最高的样本最为重要。(2)在不同地区的所有得分最高的样本中,得分较高的样本更为重要,因为它们是第一个降低精度的样本。

在负样本中,因为很多的负样本会通过NMS(非极大值抑制)而去掉。所以,如果一个负样本旁边有个得分更高的样本,那么这个负样本就不重要,因为它会被NMS去掉。

在这些标准上,负样本中得分高的样本对于目标检测器而言更为重要。

IoU-HLR和Score-HLR

根据样本的重要性将样本分为各个级别Hierarchical Local Rank (HLR).:

正样本的分级方法是基于IOU的,所以成为IoU Hierarchical Local Rank (IoU-HLR)。负样本的分级方法是基于Score的,所以叫做Score Hierarchical Local Rank (Score-HLR)。

IoU-HLR:

(1)获得不同标注框的正样本候选框的IOU

(2)根据IOU将候选框分为不同的rank,IOU最大的为top1rank,从而获得局部的rank

(3)不同目标的对应的rank组合在一起,并按照他们的IOU排序,这是全局的rank

(4)最后得到排序结果

这样排序的原因:满足了上面的两个原则

第一个是,同一目标,IOU最大的最重要,它将那些局部排序较高的样本放在前面,这些样本对于每一个单独的gt来说是最重要的;

第二个是,不同目标,IOU大的更重要,在每个rank组内,根据IoU对样本进行重新排序

右侧是负样本按照SCORE的排序方式,他和前面的排序方式是类似的

在下图中绘制了随机样本、难样本和的prime sample分布,以及IoU和分类损失。顶行显示正样本,底行显示负样本。据观察,难正性样本倾向于具有高分类损失,并且沿着IoU轴在更宽的范围内分散,而prime sample正样本趋向于具有高IoU和低分类损失。难负性样本往往具有高分类损失和高IuU,而prime sample负样本也覆盖了一些低损失样本,IuU分布更为分散。这表明这两类样品具有本质上不同的特征。                              whaosoft aiot http://143ai.com 

 

ISR 

 研究者提出了一种soft Sampling的方法——Importance-based Sample Reweighting (ISR), 它根据重要程度给samples分配了不同的loss weights,用线性方程可以将ri(第i个样本所在的rank)转换为ui(类别j的第i个样本的重要性),如下所示:

 

ui和wi存在着一个简单的递增的关系:

 

cross entropy classification loss可以被改写为: 

n和m分别是正样本和全部样本的总量。注意到简单的增加loss weights将会改变loss的全部值和正样本负样本之间的比例,所以我们将wi归一化到wi’为了保证全部正样本的loss不变。

实验及可视化

Examples of PISA (bottom) and random sampling (top) results. The score threshold for visualization is 0.2:

 

 

 

 


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

相关文章

Prime Factors

此题需要使用到质因子分解的算法,可以参考以下链接: https://blog.csdn.net/qq_42410605/article/details/100150140 题目描述: Given any positive integer N,you are supposed to find all of prime factors,and write them in the form…

SpringBoot实现分布式锁

SpringBoot实现分布式锁 先了解一下线程数: 线程锁 线程锁:主要用来给类,方法,代码加锁,当某个方法或者某块代码使用synchronize关键字来修饰,那么在同一时刻最多只能有一个线程执行该代码,如…

深入理解ConcurrentHashMap原理分析以及线程安全性问题

在之前的文章提到ConcurrentHashMap是一个线程安全的,那么我么看一下ConcurrentHashMap如何进行操作的。 ConcurrentHashMap与HashTable区别? HashTable put()源代码 我们来看一下put 操作: 方法体 被 同步锁标记,由于同步锁的…

Redis分布式锁到底安全吗?

若有收获,请记得分享和转发哦 这篇文章我想和你聊一聊,关于 Redis 分布式锁的「安全性」问题。 Redis 分布式锁的话题,很多文章已经写烂了,我为什么还要写这篇文章呢? 因为我发现网上 99% 的文章,并没有把这个问题真正…

Java线程安全

前段时间有测试一个后端对账单和话单采集服务,在测试过程中有涉及到数据库读写逻辑和并发的场景,所以结合经验针对系统技术架构设计了部分并发场景结合数据库读写时可能出现的一些问题的用例,也确实出现了一些测试环境容易忽视,线上环境确确实实可能出现的问题,当然最后还是得到…

线程安全之 - ThreadLocal

ThreadLocal的底层原理 ThreadLocal是Java中所提供的线程本地存储机制(线程内共享),可以利⽤该机制将数据缓存在某个线程内部, 该线程可以在任意时刻、任意⽅法中获取缓存的数据;ThreadLocal底层是通过ThreadLocalMap…

线程锁(ReentrantLock、synchronized)为何不能用作分布式锁

为什么使用分布式锁 分布式锁实现目前有三种: 数据库乐观锁;ZooKeeper的分布式锁;Redis的分布式锁; 在以前单体架构Web应用场景下,我们可以使用ReentrantLock或synchronized进行上锁,保证资源安全,现如今大…

Redis分布式锁真的安全吗?

大家好,今天我们来聊一聊Redis分布式锁。 首先大家可以先思考一个简单的问题,为什么要使用分布式锁?普通的jvm锁为什么不可以? 这个时候,大家肯定会吧啦吧啦想到一堆,例如java应用属于进程级,…

ThreadLocal能解决线程安全问题?胡扯!本文教你正确的使用姿势【享学Java】

跟对领导很重要:愿意教你的,并且放手让你做的领导要珍惜。 目录 前言正文ThreadLocal是什么?ThreadLocal怎么用?局限性InheritableThreadLocal向子线程传递数据开源框架使用示例 ThreadLocal不能解决共享变量的线程安全问题Thread…

Java线程安全详细总结

以下是我的PPT文档,不知道怎么复制到博客,只能一个一个插入图片发上来了。感觉总结的不错,分享一下。 文档地址:http://download.csdn.net/detail/csujiangyu/9526641

分布式系统详解--基础知识(线程)

分布式系统详解--基础知识(线程) 一、导读 前面跟大家讲了一下 分布式系统详解--基础知识(概论) ,可以稍微了解一下大体上分布式是怎么一回事了。这片篇文章主要是讲述一下线程的问题分别介绍一下,什么线…

分布式项目线程安全问题(电商扣减库存的安全问题1)

电商减库存存在的安全问题 Override public void deductStock(Map<Long, Integer> skuMap) {for (Map.Entry<Long, Integer> entry : skuMap.entrySet()) {Long skuId entry.getKey();Integer num entry.getValue();// 查询skuSku sku getById(skuId);// 判断…

分布式项目中 如何保证线程安全问题?-------ZooKeeper

前沿&#xff1a; 上篇文章我们聊到了在解决分布式项目中线程安全问题&#xff0c;提到解决方案还有其他的&#xff0c;那么在此提出 基于 zookeeper 解决分布式项目中的线程安全问题 也是目前市面上比较流行的。做为一个高级开发工程师也是必须要学习的。 ZooKeeper是什么东…

分布式线程安全(redis、zookeeper、数据库)

https://blog.csdn.net/u010963948/article/details/79006572 Q:一个业务服务器&#xff0c;一个数据库&#xff0c;操作&#xff1a;查询用户当前余额&#xff0c;扣除当前余额的3%作为手续费 synchronized lock db lock Q&#xff1a;两个业务服务器&#xff0c;一个数据库&…

分布式集群中如何保证线程安全?

目录 分布式集群中的线程安全问题 解决方法 串行化 分布式锁 Redis如何实现呢&#xff1f; 问题&#xff1a;setnx刚好获取到锁&#xff0c;业务逻辑出现异常&#xff0c;导致锁无法释放 问题&#xff1a;可能会释放其他服务器的锁。 问题&#xff1a;删除操作缺乏原子…

java outlook 发送邮件_基于java使用JavaMail发送邮件

一、邮件的相关概念 邮件协议。主要包括&#xff1a; SMTP协议&#xff1a;Simple Mail Transfer Protocol&#xff0c;即简单邮件传输协议&#xff0c;用于发送电子邮件 POP3协议&#xff1a;Post Office Protocol 3&#xff0c;即邮局协议的第三个版本&#xff0c;用于接收邮…

java 发邮件(有正文,有图片,有附件)

一 需求: 1 java实现邮件发送 2 发送内容: ① 正文: 图片说明和图片 ② 附件一: 图片作为附件发送 ③ 附件二: Excel表格 二 思路: 1首先创建一个 Java 工程&#xff0c;把下载好的 javax.mail.jar 作为类库加入工程 2邮件创建步骤: 配置连接邮件服务器的参数( 邮件服务器SM…

java接收邮件_Java实现邮件收发

一. 准备工作 1. 传输协议 SMTP协议-->发送邮件: 我们通常把处理用户smtp请求(邮件发送请求)的服务器称之为SMTP服务器(邮件发送服务器) POP3协议-->接收邮件: 我们通常把处理用户pop3请求(邮件接收请求)的服务器称之为POP3服务器(邮件接收服务器) 2. 邮件收发原理 闪电…

java发送邮件工具类

1. 普通java实现邮件发送 1.1 创建maven项目&#xff0c;配置pom.xml文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance&qu…

java发送邮件带附件

一、 开启SMTP服务 1.基本都在邮箱设置里&#xff0c;开启后会获得神秘代码&#xff0c;后面有用。 2.记得添加依赖&#xff0c;或者自己添加jar包。 <dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>…