FasterRcnn,Yolov2,Yolov3中的Label Assignment机制 和 ATSS
一般把anchor到gt之间如何匹配的方法称为label assignment,也就是给预设的anchor打上正负样本等标签,方便我们后续进一步回归。
其实RPN和Yolo有各自的label assignment方法,
在Faster rcnn,yolo,RetinaNet中,基本都是根据anchor和gt的iou,然后定义阈值去进行label的分配。
例如,在Faster rcnn 的RPN阶段,假设backbone得到的feature map是HW,那么一共会有HW*9个anchors,然后通过分类和回归网络得到每一个anchor的前景概率和偏移量。

RPN分类和回归网络为了得到的是模型的预测值,为了计算这个预测损失,我们需要真正的类别和预测值的偏移量,具体指的是,anchor是否对应着真实物体 GT,anchor相对于它对应的gt的偏移量。
总体就是
生成anchor —> anchor和gt匹配 —> anchor筛选 —> 求解偏移量
Faster rcnn中label assignment机制
- 对于每一个anchor,与所有gt的最大IOU 小于 0.3,视为负样本,也就是背景0类
- 对任何一个gt,与其最大的IOU的anchor视为正样本
- 对任意一个anchor,与所有标签的最大IOU大于0.7,视为正样本。
条件2覆盖了1,条件3是对2的补充。
另外faster rcnn里面应该GT可以有多个anchors,而一个anchor只对应一个GT。
RetinaNet 中label assignment机制
- IoU低于0.4为negative,高于0.5为positive,其他为ignore
Yolov2 中label assignment机制
- 首先通过GT框的中心落点选出对应的grid cell
- 然后计算GT框与该grid cell中所有anchors的IoU
选择其中IoU最大的anchor做为positive - 计算GT与该grid cell预测的Proposal的IoU
IoU大于0.6的proposal对应的anchor为ignore - 剩下的anchor为negative
YOLOv3 中label assignment机制
- yolov3输出了三个feature map 13x13,26x26,52x52。anchors设置了9种形状,
(10×13),(16×30),(33×23),(30×61),(62×45),(59× 119), (116 ×90), (156 × 198),(373 × 326) ,顺序为w × h,注意anchors是在原图基础上设置的!
其中大的anchor对应小的feature map。 - 举例对于13x13的feature map来说,先验框由416x416尺度下的 (116 × 90), (156 ×
198),(373 × 326) 缩小32倍,变成 (3.625× 2.8125), (4.875× 6.1875),(11.6563×
10.1875),其共有13x13个grid cell,则这每个169个grid cell都会被分配3个13*13尺度下的
先验框(anchors) - 那么具体的label assignment过程就是那么现在有一个gt,它在13x13尺度特征图下,其gt中心点左上角为原点,对应着该尺度下、该原点的3个先验框,将gt与这3个先验框(anchors)分别计算iou,并分别在26x26 feature map、52x52 feature map下执行相同操作,得到与gt最大iou的那个anchor作为正样本,小于定阈值的作为负样本,大于设定阈值但不是最大iou的为忽略样本。
如下图所示!


- 可以看到,最左边小汽车在13*13尺度下的中心坐标为[4.82,5.81,1.9,2.7],分别对应中心点x、y,宽高w、h。
- yolov3中的build_targets函数的目的就是找出与该gt最匹配的anchor,并且返回
return tcls, tbox, indices, anch
其中tbox(该gt中心点相对于该先验框锚点的偏移量,为0.82,0.81,以及该gt在该尺度下的宽、高,为1.9,2.7);
tcls(该gt所属类别,为汽车类别);
indices(与gt匹配的anchor的x,y坐标,为4,5);
anch(与gt匹配的anchor的宽高,为2.2, 2.2)。
FCOS 中label assignment机制
没有anchor
对于每一层feature map,将其中每个grid cell对应回原图,对应回去之后如果落在某个GT框内,则该grid cell为positive,如果同时落在多个GT框内,选择面积小的GT框与该grid cell对应
其余grid cell为negative
没有ignore
TopK Label Assignment 策略
在assign anchor label的时候,对于每个GT,我们都找到与它的iou的TopK个anchors,并且把他们当成正样本,这样做的好处很明显:对于小物体GT,可能和它匹配的anchor很少,这个时候如果还根据IoU来找正样本的anchor,那么可能大GT被分配了很多anchor来训练,而小GT被assign到的anchor数就比较少。**我们保证了不同大小的物体都能够得到一定的anchor进行训练。**不至于像Faster Rcnn里面那样,GT样本分配到的anchors完全不均匀。
Adaptive Training Samples Selection (ATSS)
ATSS综合了FCOS和RetinaNet。
主要就是在每个 FPN 层选取离 GT 框中心点最近的 k 个 anchor,之后对所有选取的 anchor 与 GT 计算 IOU,同时计算 IOU 均值m和方差v;最后保留 IOU 大于均值加方差(m+v) 并且中心点在 GT之内的 anchor 作为正样本。
下面是ATSS的流程图,来自论文地址

训练过程中,当输入1 张包含G个真实目标的图像时:
-
首先,获得第m个目标在所有特征层的先验框,在每一特征层上利用L2L_2L2距离选择k个距离最近的先验框作为候选正样本;
-
其次,计算这些候选正样本,一共有k∗Lk*Lk∗L个正样本,L是特征层的数目,与真实框的IoU 值,将这些候选正样本的IoU的均值mgm_gmg与方差vgv_gvg进行求和,获得最终的IoU 阈值tg=mg+vgt_g=m_g+v_gtg=mg+vg;
-
再次,将候选正样本的IoU 值与阈值进行比较,选择IoU 值大于阈值的候选正样本作为正样本,否则为负样本;
-
重复上述步骤,直到找到所有真实目标的正负样本,最后,输出正负样本进行网络的回归训练。
相关文章:
FasterRcnn,Yolov2,Yolov3中的Label Assignment机制 和 ATSS
一般把anchor到gt之间如何匹配的方法称为label assignment,也就是给预设的anchor打上正负样本等标签,方便我们后续进一步回归。 其实RPN和Yolo有各自的label assignment方法, 在Faster rcnn,yolo,RetinaNet中…...
使用Java技术WebSocket创建聊天、群聊,实现好友列表,添加好友,好友分组,聊天记录查询功能。
文章目录 引入依赖主要代码配置WebSocket创建通讯完整后台项目代码下载WebSocket的由来: 之前只有一个http协议,http协议是请求响应,存在缺陷,就是请求只能由客户端发起,然后请求到服务器,服务器做响应,但是如果服务器状态做了改变,客户端并不能即使的更新,之前的是按照…...
【Redis07】Redis基础:Bitmap 与 HyperLogLog 相关操作
Redis基础学习:Bitmap 与 HyperLogLog 相关操作继续进行 Redis 基础部分的学习,今天我们学习的是两种另外的数据类型。说是数据类型,但其实它们实际上使用的都是 String 类型做为底层基础,只不过是在存储的时候进行了一些特殊的操…...
华为路由器 VRRP主备配置
组网需求 如下图所示,PC1通过SW1双归属到R1和R2。为保证用户的各种业务在网络传输中不中断,需在R1和R2上配置VRRP主备备份功能。 正常情况下,主机以R1为默认网关接入Internet,当R1故障时,R2接替R1作为网关继续进行工作…...
docker容器安装ES
1.拉取镜像 docker pull elasticsearch:6.5.42.修改别名 docker tag [容器ID] es65:6.5.42.启动应用 docker run -it -d -p 9200:9200 -p 9300:9300 --name es -e ES_JAVA_OPTS"-Xms128m -Xmx128m" es65:6.5.43.拷贝配置文件到宿主机 docker cp es:/usr/share/ela…...
Python Module — prompt_toolkit CLI 库
目录 文章目录目录prompt_toolkit示例化历史记录热键自动补全多行输入Python 代码高亮自定义样式prompt_toolkit prompt_toolkit 是一个用于构建 CLI 应用程序的 Python 库,可以让我们轻松地构建强大的交互式命令行应用程序。 自动补全:当用户输入命令…...
springboot mybatis-plus 调用 sqlserver 的 存储过程 返回值问题
问题: 在使用 mybatis-plus 调用sqlserver 存储过程 没有返回值 经过资料查找 注意点 此处使用Map传参,原因在于存储过程的返回值,通常在参数定义中实现,如In 入参、out 出参。 这样当执行后有结果返回时,则可以将结…...
【0180】PG内核读取pg_hba.conf并创建HbaLine记录(1)
文章目录 1. pg_hba.conf文件是什么?2. postmaster何时读取pg_hba.conf?2.1 pg内核使用pg_hba.conf完成客户端认证的原理2.2 读取pg_hba.conf的几个模块3. pg内核读取pg_hba.conf过程3.1 VFD机制获取文件描述符3.2 根据fd读取文件内容相关阅读: 【0178】DBeaver、pgAdmin I…...
【原型设计工具】上海道宁为您提供Justinmind,助力您在几分钟内形成原型,并现场测试,无需编写任何代码
Justinmind是用于 Web和应用程序的原型制作工具 在几分钟内形成原型 并在现场进行测试 无需编写任何代码 单击一下即可轻松在线获取您的设计 并与整个团队共享 享受高效的沟通和快速反馈 以实现持续改进和利益相关者的支持 开发商介绍 JustinMind是由西班牙JustinMind公…...
计算机网络中---HDLP协议和PPP协议
目录 HDLC协议PPP协议HDLC协议和PPP协议HDLC协议 HDLC协议【高级数据链路控制协议】是一种数据链路层协议,用于在两个节点之间传输数据。以下是HDLC协议的重点知识: HDLC协议定义了一种标准的帧格式,包括起始标志、地址字段、控制字段、信息字段、校验字段和结束标志。HDLC…...
k8s之节点kubelet预留资源配置
k8s之kubelet预留资源配置1 前言2 预留资源Kube-reservedSystem-reservedEviction Thresholds实施节点可分配约束3 Pod优先级4 生产应用配置文件重启kubelet服务查看节点资源1 前言 最近k8s在使用过程中遇到这样一个问题 由于Pod没有对内存及CPU进行限制,导致Pod在…...
机器学习笔记之前馈神经网络(四)反向传播算法[数学推导过程]
机器学习笔记之前馈神经网络——反向传播算法[数学推导过程]引言回顾:感知机算法非线性问题与多层感知机反向传播算法(BackPropagation,BP\text{BackPropagation,BP}BackPropagation,BP)场景构建求解各权重更新量图示描述反向传播过程总结引言 上一节介绍了M-P\tex…...
vscode+elementui校园跑腿系统 nodejs+vue
本系统从用户的角度出发,结合当前的校园环境而开发的,在开发语言上是使用的Java语言,在框架上我们是使用的Vue框架,数据库方面使用的是MySQL数据库,开发工具为IDEA。 基于Vue的校园跑腿管理系统中的管理员配送用户都可…...
[蓝桥杯单片机8]定时器的简单应用
1、本实验内容 利用51单片机的定时/计数器T0的模式1实现间隔定时,每隔1秒L1指示灯闪烁一下,也就是点亮0.5秒,熄灭0.5秒;每隔2秒L8指示灯闪烁一下,即点亮1秒,熄灭1秒。2、基础知识 定时/计数器,是…...
node-HTTP协议
文章目录一. 概念二. 请求报文的组成三.HTTP请求行四.HTTP请求头五.HTTP的请求体六.响应报文的组成七.创建HTTP服务八.获取HTTP请求报文九.HTTP设置响应十.GET和POST请求的区别一. 概念 HTTP协议. 中文叫超文本传输协议; 是一种基于TCP/IP的应用层通信协议; 这个协议详细规定了…...
基于springboot+vue的地方美食分享网站
081-springboot基于vue的地方美食分享网站开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包&am…...
【Android】之【Aplication】
一、Application简介 Application和Activity,Service一样是Android框架的一个系统组件,当Android程序启动时系统会创建一个Application对象,用来存储系统的一些信息。 Android系统自动会为每个程序运行时创建一个Application类的对象且只创建…...
社区之声|Grant Program支持Moonbeam生态壮大
在本次社区之声会议中,Moonbeam基金会解释生态系统Grant流程、一个由社区成员组成的圆桌讨论表达各自对此次Grant的看法,Moonbeam开发者关系工程师演示了如何在Snapshot对申请生态系统Grant项目的投票。观看视频回顾 请注意,内容仅供参考&am…...
GO实现Redis:GO实现Redis协议解析器(2)
本文实现Redis的协议层,协议层负责解析指令,然后将指令交给核心database执行echo database用来测试协议层的代码https://github.com/csgopher/go-redis RESP协议 RESP是客户端与服务端通信的协议,格式有五种:正常回复࿱…...
Geoserver 发布wmts服务,以及cesium加载发布的wmts服务
WMTS提供了一种采用预定义图块方法发布数字地图服务的标准化解决方案。WMTS弥补了WMS不能提供分块地图的不足。WMS针对提供可定制地图的服务,是一个动态数据或用户定制地图(需结合SLD标准)的理想解决办法。WMTS牺牲了提供定制地图的灵活性&am…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
大数据治理的常见方式
大数据治理的常见方式 大数据治理是确保数据质量、安全性和可用性的系统性方法,以下是几种常见的治理方式: 1. 数据质量管理 核心方法: 数据校验:建立数据校验规则(格式、范围、一致性等)数据清洗&…...
起重机起升机构的安全装置有哪些?
起重机起升机构的安全装置是保障吊装作业安全的关键部件,主要用于防止超载、失控、断绳等危险情况。以下是常见的安全装置及其功能和原理: 一、超载保护装置(核心安全装置) 1. 起重量限制器 功能:实时监测起升载荷&a…...
