当前位置: 首页 > news >正文

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机制

  1. 对于每一个anchor,与所有gt的最大IOU 小于 0.3,视为负样本,也就是背景0类
  2. 对任何一个gt,与其最大的IOU的anchor视为正样本
  3. 对任意一个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机制

  1. 首先通过GT框的中心落点选出对应的grid cell
  2. 然后计算GT框与该grid cell中所有anchors的IoU
    选择其中IoU最大的anchor做为positive
  3. 计算GT与该grid cell预测的Proposal的IoU
    IoU大于0.6的proposal对应的anchor为ignore
  4. 剩下的anchor为negative

YOLOv3 中label assignment机制

  1. 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。
  2. 举例对于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)
  3. 那么具体的label assignment过程就是那么现在有一个gt,它在13x13尺度特征图下,其gt中心点左上角为原点,对应着该尺度下、该原点的3个先验框,将gt与这3个先验框(anchors)分别计算iou,并分别在26x26 feature map、52x52 feature map下执行相同操作,得到与gt最大iou的那个anchor作为正样本,小于定阈值的作为负样本,大于设定阈值但不是最大iou的为忽略样本。
    如下图所示!
    在这里插入图片描述
    在这里插入图片描述
  4. 可以看到,最左边小汽车在13*13尺度下的中心坐标为[4.82,5.81,1.9,2.7],分别对应中心点x、y,宽高w、h。
  5. 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个真实目标的图像时:

  1. 首先,获得第m个目标在所有特征层的先验框,在每一特征层上利用L2L_2L2距离选择k个距离最近的先验框作为候选正样本;

  2. 其次,计算这些候选正样本,一共有k∗Lk*LkL个正样本,L是特征层的数目,与真实框的IoU 值,将这些候选正样本的IoU的均值mgm_gmg与方差vgv_gvg进行求和,获得最终的IoU 阈值tg=mg+vgt_g=m_g+v_gtg=mg+vg

  3. 再次,将候选正样本的IoU 值与阈值进行比较,选择IoU 值大于阈值的候选正样本作为正样本,否则为负样本;

  4. 重复上述步骤,直到找到所有真实目标的正负样本,最后,输出正负样本进行网络的回归训练。

相关文章:

FasterRcnn,Yolov2,Yolov3中的Label Assignment机制 和 ATSS

一般把anchor到gt之间如何匹配的方法称为label assignment,也就是给预设的anchor打上正负样本等标签,方便我们后续进一步回归。 其实RPN和Yolo有各自的label assignment方法, 在Faster rcnn,yolo,RetinaNet中&#xf…...

使用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是客户端与服务端通信的协议,格式有五种:正常回复&#xff1…...

Geoserver 发布wmts服务,以及cesium加载发布的wmts服务

WMTS提供了一种采用预定义图块方法发布数字地图服务的标准化解决方案。WMTS弥补了WMS不能提供分块地图的不足。WMS针对提供可定制地图的服务,是一个动态数据或用户定制地图(需结合SLD标准)的理想解决办法。WMTS牺牲了提供定制地图的灵活性&am…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage)&#xff1a…...

生成 Git SSH 证书

🔑 1. ​​生成 SSH 密钥对​​ 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​: -t rsa&#x…...

Spring Boot面试题精选汇总

🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...

ip子接口配置及删除

配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

Bean 作用域有哪些?如何答出技术深度?

导语: Spring 面试绕不开 Bean 的作用域问题,这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开,结合典型面试题及实战场景,帮你厘清重点,打破模板式回答&#xff0c…...

抽象类和接口(全)

一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...

Ubuntu系统复制(U盘-电脑硬盘)

所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...