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

  • 正负样本定义
  • 分类和回归head如何学习和利用划分后的正负样本(loss如何计算)
    • 正负样本在分类中loss计算的处理
    • 正样本在bbox 回归中的loss计算

在目标检测中,经常说起正负样本。本文仔细说一下,如何定义正负样本;定义正负样本之后,在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_wty = (y - anchor_y) / anchor_htw = 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来解决的。

如果有用,记得点赞

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

  1. 目标检测扩散模型DiffusionDet登场,扩散模型正在不同任务中“扩散”

    原文链接:https://www.techbeat.net/article-info?id=4342 作者:seven_ 本文介绍一项来自香港大学和腾讯AI Lab的工作,该工作提出了一个新的Diff ...

  2. vue中data定义数字类型_[乐意黎原创] Vue中data定义的三种方式和区别

    在 Vue中,定义data时,经常有好几种写法,一不小心会混淆,这里彻底详述一下,以便记分清 . 一.在vue中,定义data可以有三种写法. 1. 第一种写法,data是一个对象. var app ...

  3. angular中如何定义全局变量_如何在Angular 2 / Typescript中声明全局变量?

    这是最简单的解决方案,Service没有/ 也没有Observer: 将全局变量放在文件中,然后导出它们. // // ===== File globals.ts // 'use strict'; e ...

  4. yolo 负样本_目标检测正负样本区分策略和平衡策略总结(二)

    0 简介 本文抛弃网络具体结构,仅仅从正负样本区分和正负样本平衡策略进行分析,大体可以分为正负样本定义.正负样本采样和平衡loss设计三个方面,主要是网络预测输出和loss核心设计即仅仅涉及网络的he ...

  5. 基于Co-Attention和Co-Excitation的少样本目标检测 | NeurIPS 2019

    「免费学习 60+ 节公开课:投票页面,点击讲师头像」 作者 | VincentLee 来源 | 晓飞的算法工程笔记(ID: gh_084c810bc839) 导读:论文提出CoAE少样本目标检测算法 ...

  6. 目标检测中的性能提升方法综述

    文章目录 一.多尺度检测 1.什么是多尺度检测? 2.降低下采样率与空洞卷积 3.多尺度训练 4.优化Anchor尺寸训练 5.深层与浅层特征融合 6.SNIP,尺度归一化 7.TridentNet, ...

  7. PPDet:减少Anchor-free目标检测中的标签噪声,小目标检测提升明显

    本文转载自AI算法修炼营. 这篇文章收录于BMVC2020,主要的思想是减少anchor-free目标检测中的label噪声,在COCO小目标检测上表现SOTA!性能优于FreeAnchor.Cent ...

  8. 什么是目标检测?理论+实操(github全面解析)?(持续更新中)

    温馨提示:文章内容完整但是过长,由于前后内容有关联,读者学习可以多开几个浏览器分屏有助于定位 目录 目标检测理论部分: 1.目标检测介绍 2.YOLOv5的检测原理 3.目标检测的意义 4.目标检测的 ...

  9. 目标检测中的mAP和AP计算原理

    目录 前言 一. 基本概念 1.1 分类问题中的四类样本 1.2 精确率(precision) 1.3 召回率(recall) 1.4 准确率(accuracy) 1.5 其他 1.6 讨论 二. m ...

最新文章

  1. 京东员工因两年一毛钱没涨而离职,618后跳槽涨薪翻倍
  2. SpringMVC 中的异常处理
  3. 网站停办了 服务器有备份吗,网站在服务器上四种备份方法
  4. Linux运维:查看磁盘空间的大小
  5. 《剑指offer》替换空格
  6. Web开发中实用小工具
  7. django 1.8 官方文档翻译: 3-3-3 文件储存API
  8. 开源 = 打破商业垄断?
  9. RedHat Linux安装Informix v10.x(图文详解)
  10. wcf中如何Host多个WCF服务?
  11. Atitit 互联网2018风口与趋势大盘点 目录 1.1. 短视频 1 1.2. 互联网金融 1 1.3. 区块链 1 1.4. 新零售 1 2. 2018热度榜丨你能抓住的风口有几个?.html
  12. 2022年全球与中国微型电机市场展望
  13. java根据公历获得农历1921年到2050年
  14. python编写英文字符频率统计小程序
  15. 从输出海外吃鸡游戏浅谈创新
  16. Coherence X for mac(网站转换为mac应用的工具)
  17. android摇一摇功能实现
  18. httpqyl.php,php使用base64加密解密图片示例分享_PHP
  19. 安装RAC小记(Oracle11gR2)
  20. 【PaddleOCR】一、PaddleOCR安装、测试(Win10)

热门文章

  1. 【Kaggle Learn】Python 1-4
  2. 2022-2028年中国汽车零配件行业研究及前瞻分析报告
  3. 更改Jenkins升级站点
  4. 2022-2028年中国导热硅胶行业市场研究及前瞻分析报告
  5. python 浮点数未解之谜
  6. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))) TNS-12541: TNS:no li
  7. 合肥工业大学—SQL Server数据库实验四:数据库的分离和附加
  8. 客快物流大数据项目(十五):DockeFile常用命令
  9. python 爬取手机app的信息
  10. 【网站汇总】安装教程系列