目标检测中如何定义正负样本,和正负样本在学习过程中loss计算起的作用

2023-11-11

在目标检测中,经常说起正负样本。本文仔细说一下,如何定义正负样本;定义正负样本之后,在loss计算中,正负样本分别参与到classification head和regression head中,是如何使用正负样本信息进行监督学习的。loss如何从正负样本中,直接得到这两类样本对不同任务的损失函数和梯度更新。

正负样本定义

在ROI RPN过程中,整个图像中,正样本的区域少,大部分是负样本,因此,要处理好正负样本不平衡问题,网络提取特征,feature中的绝大多数都是negative,只有和ground truth,iou较高的区域,才被assign为positive sample。因此,2000个proposal,几十个是positive,大多数是negative,极度不平衡。此时,就有一些正负样本采样的方法,提出来。anchor 和gt的最大iou,大于某个a阈值,为positive,anchor 和gt的最大iou 小于 某个b阈值,为negative。对于没有被分配到anchor的gt,分配任何一个与他iou 大于某个c阈值的gt。确保每个gt都有一个或多个anchor对应。其他的是ignore。

positive,negative,比例1:3。这是roi的选择,rpn阶段,同理,rcnn阶段,再进行样本采样。 然后,再进行特征提取,做classification和regression。让模型学到有用的特征。

都会在loss里, 进行处理。负样本,直接在loss里面。如果负样本太多,虽然大多数容易分对,但是对loss的贡献很大,导致正样本难以处理。

对于目标检测算法,主要需要关注的是对应着真实物体的正样本,在训练时会根据其loss来调整网络参数。相比之下,负样本对应着图像的背景,如果有大量的负样本参与训练,则会淹没正样本的损失,从而降低网络收敛的效率与检测精度。

回归方式:从点回归,还是anchor回归。anchor free, anchor based问题的一些区别:正负样本定义;2.回归分支中从point回归还是从anchor回归。从point回归就是指的每个点预测距离4条边的距离模式,而从anchor回归是指的retinanet那种基于anchor回归的模式。 说明正负样本定义的不同是决定anchor-base和anchor-free的本质区别。

RetinaNet 特点:(1) 多尺度预测输出;(2) 采用FPN结构进行多层特征图融合。 网络进行多尺度预测,尺度一共是5个,每个尺度共享同一个head结构,但是分类和回归分支是不共享权重的。

在loss里面,调节,最著名的是focal loss。对预测概率高的,减少loss,对概率低的,增加loss。抑制简单样本对loss的贡献,加大难样本对loss的贡献。难易样本主要是通过调节loss处理。难分,易分。

在这里插入图片描述

分类和回归head如何学习和利用划分后的正负样本(loss如何计算)

正负样本在分类中loss计算的处理

  • 只有正负样本,参与到classification的loss计算中。用来监督classification head对正样本,预测的类别为1,one-hot编码下的位置为1,其余负样本为0。由于ignore的是目标的边缘和背景区域,难以学习和判断,直接忽略掉,不进行loss的计算。只需要将正样本,判断为对应target;负样本, 全部判断为0就行。

RetinaNet FPN 这个结构,对label的编码,是包含在正负样本定义中的。

所有的anchor,计算和gt box的iou。如果与某个anchor与 gt box 的iou,大于0.5, 为正样本1,

如果anchor 的最大iou,小于0.4,为负样本,0。

如果anchor与gt的iou>0.4, <0.5,分配为ignore样本,忽略样本,-1。

一共9个anchor,分别是1:2, 2:1, 1:1, aspect ratio为1, 2^(1/3), 2^(2/3)

分类:

classification: focal loss, ignore cases where cls_tgt == -1只负责0,1正负样本的回归。

pos_neg = cls_targets > -1

给正样本打标签的时候,是将1给到指定的那个class下,为1,其他为0。也就是一个grid位置下的相同形状anchor,只有第i个类别的target为1,其他为0。

(num_classes, num_anchors, fmh, fmw)
(4, num_anchors, fmh, fmw)

Classification targets are defined as
    -  1 if IoU with the anchor box in [0.5, 1.0] (positive label)
    - -1 if IoU with the anchor box in [0.4, 0.5] (to be ignored in the loss)
    -  0 if IoU with the anchor box in [0.0, 0.4] (negative label)

正样本在bbox 回归中的loss计算

  • Bounding Box的回归,只负责处理positive正样本的区域。regression head中,只对划分成正样本的,anchor box,进行 xywh的loss计算。只有正样本,包含了所负责的检测的目标,所以只需要将正样本的anchor回归做好,就能减少bbox 的regression loss。

回归的target为:只负责1,pos样本,也就是正样本anchor的回归。

regression: include all anchor boxes where any class is positive

    pos_loc = cls_targets > 0  
    tx = (x - anchor_x) / anchor_w
      ty = (y - anchor_y) / anchor_h
      tw = log(w / anchor_w)
      th = log(h / anchor_h)
    Classification targets are defined as

    -  1 if IoU with the anchor box in [0.5, 1.0] (positive label)
    -  -1 if IoU with the anchor box in [0.4, 0.5] (to be ignored in the loss)
    -  0 if IoU with the anchor box in [0.0, 0.4] (negative label)

两个gt box,分别是两类,分别为 类别1,2。则编码出来的,是与其 iou最大的anchor box,其负责这一类的分类与回归。例如:第i个anchor,负责第1类,则[0, 1, 0] one hot 编码。 第j个anchor 负责第2类,则[0, 0, 1]。只需要对应的[第i类,第几个anchor,anchor的grid的位置h,anchor所在的grid位置w]=1。

在这里插入图片描述

计算loss的时候,只需要负责处理target为0,1样本,忽略掉ignore样本。

由于RetinaNet采用了Focal Loss进行正负样本的平衡,所以没有使用采样的方法,来平衡样本。

min_pos_iou=0,可以保证每个GT一定有对应的anchor负责预测。0.4以下是负样本,0.5以上且是最大Iou的anchor是正样本0.4~0.5之间的anchor是忽略样本。其不需要正负样本采样器,因为其是通过平衡分类loss来解决的。

如果有用,记得点赞

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

目标检测中如何定义正负样本,和正负样本在学习过程中loss计算起的作用 的相关文章

  • 高频交易系统为何都是基于C++开发的?

    我开源过一个高频框架 说一下高频框架做的事 你就知道为什么要用C 了 高频并不是并发有多少 其实是追求的低延时 如果从网络协议开始优化 可以使用RDMA可编程网卡硬件 也可以使用DPDK这种网卡旁路技术 我们暂且不关注操作系统以下层面的优化
  • 【gmock】Google Mock 入门

    目录 1 概述 1 1 什么是Mock 1 2 Google Mock概述 1 3 参考文档 2 Google Mock使用 2 1 最简单的例子 2 2 典型的流程 2 3 自定义方法 成员函数的期望行为 2 4 Matcher 匹配器
  • Java EE之idea创建和运行jsp项目

    1 点击打开Inteliij点击Create New Project 2 点击java 再左侧Project SDK选择安装的jdk路径 勾选WebApplication和Create web xml 点击next 4 再新弹出的窗口中 P

随机推荐

  • java包装类自动拆装箱(AutoBoxing)及128陷阱详解

    java包装类自动拆装箱 AutoBoxing 及128陷阱详解 注意 java5之前拆装箱是需要手动完成的 java5之后可以自动的完成 1 装箱 装箱 把基本类型转成对象包装类型 方式一 Integer i Integer valueO
  • Unity3D学习之(习题练习)

    Unity3D学习之 习题拓展 1 使用continue计算1 3 5 99 从上述运算中可以看出 1到99之的奇数相加的和 首先要定义一个int sum 0 从题意可知要用到for循环 for int i 1 i lt 100 i 然后题
  • 爬虫数据提取-正则表达式re提取网页数据信息

    经过上一期我们介绍了xpath和beautifulsoup4提取数据之后 本章我们介绍一种新的提取数据的方法 就是正则表达是提取数据 首先我们介绍什么是正则表达式 正则表达式就是按照一定的规则 从某个字符串中匹配出想要的数据 这个规则就是正
  • PCB各层的含义 (solder paste 区别) 分类: 硬件相关 ...

    PCB层的定义 阻焊层 solder mask 是指板子上要上绿油的部分 因为它是负片输出 所以实际上有solder mask的部分实际效果并不上绿油 而是镀锡 呈银白色 助焊层 paste mask 是机器贴片时要用的 是对应所有贴片元件
  • 前端能力八大等级,每一级附送晋升方法

    文章目录 一 入门级 选秀阶段 能够解决一些问题 怎么进阶 二 解决问题 常在阶段 本阶段特征 进阶之路 三 优化方案 贵人阶段 特征 提升之路 四 全局观 嫔位 特征 提升之路 五 深度 妃位 特征 进阶 六 广度 贵妃 特征 晋升 七
  • 微信小程序开发——map地图组件,定位,并手动修改位置偏差。

    环境搭建 注册 获取APPID 没有这个不能真鸡调试 下载微信web开发者工具 挺多bug 将就用 打开微信web开发者工具 扫码登录 新建小程序 输入APPID 勾选创建quick start项目 工程结构 可以看到工程根目录中有个app
  • HTTP长连接、短连接使用及测试

    概念 HTTP短连接 非持久连接 是指 客户端和服务端进行一次HTTP请求 响应之后 就关闭连接 所以 下一次的HTTP请求 响应操作就需要重新建立连接 HTTP长连接 持久连接 是指 客户端和服务端建立一次连接之后 可以在这条连接上进行多
  • 一文秒懂什么是DDoS攻击

    关注 开源Linux 选择 设为星标 回复 学习 有我为您特别筛选的学习资料 DDoS攻击是目前最常见的网络攻击方式之一 其见效快 成本低的特点 让DDoS这种攻击方式深受不法分子的喜爱 DDoS攻击经过十几年的发展 已经 进化 的越来越复
  • Centos7安装lvs——即安装lvs的管理软件ipvsadm

    1 验证当前linux是具备lvs功能 root nginx master ipvsadm 出现上面的错误提示 就证明当前虚拟机不具备实现lvs的功能 2 安装ipvsadm 因为lvs的具体实现是由这个程序来实现的 2 1 检查内核版本
  • Windows应急响应

    账户排查 账户排查主要包含以下几个维度 登录服务器的途径 弱口令 可疑账号 新增账号 隐藏账号 克隆账号 服务器是否存在被远程登录的途径 3389 smb 445 http ftp 数据库 中间件 弱口令排查维度与上述服务器登录一样 弱口令
  • cgi环境变量

    原文地址 http blog sina com cn s blog 65403f9b0100gpt2 html REOUEST METHOD 这个环境变量指出服务器与CGI程序之间的信息传递方式 一般包括两种 POST和GET 这个环境变量
  • 接口测试常用测试点

    接口测试是测试系统组件间接口的一种测试 接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点 测试的重点是要检查数据的交换 传递和控制管理过程 以及系统间的相互逻辑依赖关系等 测试的策略 接口测试也是属于功能测试 所以跟我们
  • 如何在Android中以编程方式将HTML转换为PDF?

    在各种情况下 您可能需要将HTML页面转换为PDF格式 另一方面 您可能希望从WYSIWYG HTML编辑器的内容生成PDF 对于这种情况 本文介绍如何在Android应用程序中以编程方式将HTML转换为PDF 此外 还将了解用于自定义HT
  • 微信小程序_0

    微信小程序 0 基础库更新日志 开发者工具更新日志 微信云开发 小程序基础库更新日志 云开发部分 wx server sdk 更新日志 IDE 云开发 云控制台更新日志
  • 51单片机学习笔记(十) - AD/DA转换

    文章目录 一 AD DA基本介绍 二 A D D A转换中的主要概念 三 A D D A转换在系统中存在的方式 四 A D转换原理图及ET2046芯片介绍 1 原理图 2 ET2046芯片介绍 3 开发板接线 五 ET2046芯片SPI时序
  • SSH环境搭建,配置整合初步(一)

    1 新Web工程 并把编码设为utf 8 所有的都是uft8数据库也是 就不会乱码了 2 添加框架环境 Junit Struts2 Hibernate Spring 3 整合SSH Struts2与Spring整合 Hibernate与Sp
  • IDEA 指定消息模板(Class\Interface\Enum\Record\) 导致无法Class 提示Unable to parse template “Class“

    IDEA 为Class Interface Enum Record 设置消息模板 File Settings Editor File and Code Templates 消息模板内容 if PACKAGE NAME PACKAGE NAM
  • STM32 TIM预分频计数器

    预分频器 将送给TIM的输入时钟信号按照预分频器分频系数进行分频 然后再作为TIM的输入时钟 例 当输入频率为72M 周期则是0 0138s 输入时钟每增加0 0138s 计数器增加一次 2分频时 周期为0 027s 输入时钟每增加0 02
  • HTML介绍以及常用代码

    HTML 网页基础 html Hyper Text Markup Language 超文本标 记语言 发明者 Tim Berners lee html主要是定义网页内容和结构的 html是编 写网页的语言 html只能运行在浏览器上面 网页
  • 目标检测中如何定义正负样本,和正负样本在学习过程中loss计算起的作用

    如何定义正负样本 和正负样本在学习过程中loss计算起的作用 正负样本定义 分类和回归head如何学习和利用划分后的正负样本 loss如何计算 正负样本在分类中loss计算的处理 正样本在bbox 回归中的loss计算 在目标检测中 经常说
Powered by Hwhale