提示:在学习faster-rcnn和anchor的时候,对正负样本有点迷惑,记录下

文章目录

  • Anchor的概念
  • 一、正负样本
  • 二、Anchor free中的正负样本
    • 1、FCOS
    • 2.读入数据
  • 总结

Anchor的概念

  • Faster R-CNN 定义三组纵横比ratio = [0.5,1,2]和三种尺度scale =
    [8,16,32],可以组合成9种不同的形状和大小的边框。
  • YOLO则不是使用预设的纵横比和尺度的组合,而是使用k-means聚类的方法,从训练集中学习得到不同的Anchor。

Yolov3中输入图片大小为416 × 416 × 3,分别经过32倍、16倍、8倍下采样,得到三层特征图,13 × 13 × 255、 26 × 26 × 255、 52 ×52 × 255。

每张特征图上会提前设定3个anchor box。即yolov3中一共9个anchor box。
13 ×13的特征图感受野最大,使用大的anchor(116x90),(156x198),(373x326),
26 × 26特征图使用中等的anchor box (30x61),(62x45),(59x119),适合检测中等大小的目标。
52 × 52特征图感受野最小,使用最小的anchor box(10x13),(16x30),(33x23),适合检测较小的目标。

这些anchor的大小是对于原图像(416× 416)来说的。Anchor的作用是来回归出预测框,当我们标记的ground truth 与anchor 相交时,挑选出IOU最大值所对应的anchor,用这个anchor来回归预测框。

一、正负样本

Loss计算中,主要包含“负责预测目标”(即正样本)和背景(即负样本),以及不参与计算loss的部分.
正样本
如果Ground Truth的中心点落在一个区域中,该区域就负责检测该物体。然后计算这个grid的9个先验框(anchor)和目标真实位置的IOU值(直接计算,不考虑二者的中心位置),取IOU值最大的先验框和目标匹配。
于是,找到的该grid(网格)中的该anchor负责预测这个目标,其余的网格、anchor都不负责。将与该物体有最大IoU的预测框作为正样本。
注意:这里没有用到ignore thresh,即使该最大IoU<ignore thresh也不会影响该预测框为正样本
负样本
YOLOv3中有一个参数是ignore_thresh,在ultralytics版版的YOLOv3中对应的是train.py文件中的iou_t参数(默认为0.225)。
如果一个预测框与所有的Ground Truth的最大IoU<ignore_thresh时,那这个预测框就是负样本。
(再次提醒:即使该最大IoU<ignore thresh也不会影响该预测框为正样本)
不参与计算部分
不参与计算部分就是最大IOU没有超过阈值ignore_thresh的一部分。计算各个先验框和所有的目标ground truth之间的IOU,如果某先验框和图像中所有物体最大的IOU都小于阈值(一般0.5),那么就认为该先验框不含目标,记作负样本,其置信度应当为0。
最大IOU没有超过阈值ignore_thresh的一部分虽然不负责预测对象,但IOU较大,可以认为包含了目标的一部分,不可简单当作负样本,所以这部分不参与误差计算。

参考链接: YOLO-----关于正负样本、Loss、IOU、怎样去平衡正负样本的问题?.

二、Anchor free中的正负样本

1、FCOS

论文链接
代码链接

作为Anchor-free的方法,FOCS直接对feature map中每个位置对应原图的边框都进行回归,如果位置 (x,y) 落入任何真实边框,就认为它是一个正样本,它的类别标记为这个真实边框的类别。可以理解为他是基于物体的一个key point点进行回归的。在实际的anchor-free中也会遇到一些问题,为了解决这些问题,FCOS做了如下工作:

  1. 为了解决anchor-free的方式在真实边框重叠带来的模糊性和低召回率(不像anchor-based可以有多重不同尺寸的anchor),FCOS采用类似FPN中的多级检测,就是在不同级别的特征层检测不同尺寸的目标。
  2. 为了解决距离目标中心较远的位置产生很多低质量的预测边框,FCOS提出了一种简单而有效的策略来抑制这些低质量的预测边界框,而且不引入任何超参数。具体来说,FCOS添加单层分支,与分类分支并行,以预测"Center-ness",可以这这个理解成为一个度量值,于中心距离的一个度量值,与中心点较远,则度量值较低,与中心点越近,度量值越高,以此来让置信度更高的像素产生更高的贡献。

正负样本匹配方式的实现
Step1:分配目标给哪一层预测。 根绝目标的尺寸将目标分配到不同的特征层上进行预测。

具体实现:引入了min_size和max_size,具体设置是0, 64, 128, 256, 512和无穷大。例如,对于输出的第一个预测层而言,其stride=8,负责最小尺度的物体,对于该层上面的任何一个点,如果有gt bbox映射到特征图上,满足0 < max(中心点到4条边的距离) < 64,那么该gt bbox就属于第1层负责,其余层也是采用类似原则。总结来说就是第1层负责预测尺度在0~ 64范围内的gt,第2层负责预测尺度在64~128范围内的gt,以此类推。通过该分配策略就可以将不同大小的gt分配到最合适的预测层进行学习。

Step2:确定正负样本区域。 对于每一层feature map,设定一个以GT中心为圆心,固定半径的圆,如果像素落在该圆内,则标记为positive样本,否则为negative。

具体实现:通过center_sample_radius参数,确定在半径范围内的样本都属于正样本区域,其余区域作为负样本。默认配置center_sample_radius=1.5。例如,第1层的stride=8,那么在该输出层上,对于任何一个gt,基于gt bbox中心点为起点,在半径为1.5*8=12个像素范围内点都属于正样本区域。

Step3:centerness找到目标的中心点。 为了使靠近GT中心的像素能学到更多的信息,故给予他更高的权重,而离GT中心越远的点,贡献则递减。

具体实现:使得离目标中心越近,输出值越大,反之越小。Center-ness的定义如下公式:

可见最中心的点的centerness为1,距离越远的点,centerness的值越小。在推测的时候直接将中心度分数centerness乘到分类分数上,将偏离很远的检测框分值进行惩罚。

总结
FCOS采用物体center的匹配方式来进行回归,在正负样本匹配的时候,采用了top-k的策略进行匹配,并且使用centerness来对不同距离的匹配样本进行不同程度的惩罚,以达到资源倾斜于贡献最佳者的目的。
参考链接

2.读入数据

代码如下(示例):

data = pd.read_csv('https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

anchor和正负样本相关推荐

  1. 【CV】PAA论文解读:在物体检测中利用概率分布来将anchor分配为正负样本

    本文转自|AI公园 导读 又一篇anchor匹配策略的文章,不过确实是简单有效,在ATSS上只需要很小的修改就可以提升性能.GFL2在框的预测上用上了概率分布,这里又在anchor匹配上用上了概率分布 ...

  2. 目标检测算法横向比较,包括backbone、特征融合、loss、proposal/anchor/heatmap、NMS、正负样本设置等

    目标检测算法发展移步:目标检测算法 本文从算法改进的方向,进行横向比较,包括backbone,特征融合.loss.proposal/anchor/heatmap.NMS.正负样本设置等 Referen ...

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

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

  4. 正负样本不平衡处理方法总结

    转载链接: https://blog.csdn.net/qq_14845119/article/details/78930091 1, Bootstrapping,hard negative mini ...

  5. 目标检测中的正负样本

    参考地址:https://www.cnblogs.com/rainsoul/p/6247779.html 以人脸识别为例,如果你的任务是识别教室中的人脸,那么负样本的选取应该是教室中的窗户.椅子.墙. ...

  6. Yolov3-v5正负样本匹配机制

    本文来自公众号"AI大道理". ​ 什么是正负样本? 正负样本是在训练过程中计算损失用的,而在预测过程和验证过程是没有这个概念的. 正样本并不是手动标注的GT. 正负样本都是针对于 ...

  7. 正负样本的分配atss

    1.FCOS 论文链接:https://arxiv.org/abs/1904.01355 代码链接:https://github.com/tianzhi0549/FCOS/ 作为Anchor-free ...

  8. yolov7正负样本分配详解

    来源:知乎-骚骚骚 地址:https://zhuanlan.zhihu.com/p/543160484 整体上在正负样本分配中,yolov7的策略算是yolov5和YOLOX的结合. 首先大概回顾一下 ...

  9. 总结论文中正负样本的选择

    对正负样本的选择 1.ssd:设置一个阈值(0.5),大于这个阈值的框为正样本,其它框作为负样本鉴定为背景.但是负样本还是远大于正样本,因此采用了难样本挖掘.难样本挖掘的具体操作是计算出所以负样本的损 ...

  10. yolox的正负样本分配策略mmdet代码详解

    以mmdet为例,正负样本分配的核心代码在YOLOXHead中的MlvlPointGenerator,SimOTTAssigner,PseudoSampler,_bbox_decode中,其中核心代码 ...

最新文章

  1. C# 用户控件之温度计
  2. [MyBatis]DAO层只写接口,不用写实现类
  3. linux 开启 自动挂载U盘 权限的设置
  4. 前端--3、JavaScript
  5. php 接口怎么响应,Stripe PHP API方法响应的结构是什么?
  6. java char 空_2020重新出发,JAVA入门,数据类型
  7. 在布局空间标注的尺寸量不对_卫生间最佳布局尺寸,合理布局做到1毫米都不浪费!...
  8. STM32H743+CubeMX-定时器TIM发送非对称PWM(使用一个通道)
  9. 拥有触觉分析能力,上交MIT获IROS 2020最佳论文奖
  10. 解题报告:hdu 1556 Color the ball(区间修改,单点查询)
  11. 中小企业信息化的时机如何把握?
  12. libyuv库的测试cpp
  13. 服务器蓝屏显示3b,完美解决0x0000003B蓝屏故障的方法
  14. 解决Github不能下载,下载速度慢的小妙招
  15. 2022年G1工业锅炉司炉考试试题及答案
  16. mui用ajax上拉加载更多,mui 中的一个上拉加载及下拉刷新的方法 ,但是我使用ajax拿不到url中的数据,是为什么?...
  17. sap crm button_如何安装SAP软件?
  18. 03uec++多人游戏【拥有莱福武器】
  19. 从红海里面寻找蓝海,看一个人的思维模式
  20. 互联网跟移动互联网_互联网如何变坏

热门文章

  1. 百度竞价账户能否多少词?
  2. 邮件安全证书(S/MIME),如何申请邮件证书
  3. chrome视频无法播放的解决方法(Solve the problem of Google player cannot be played normally)
  4. node-webkit:开发桌面+WEB混合型应用的神器
  5. linux下计算时间,linux 日期时间计算
  6. 2022智源大会议程公开 | 人工智能新基建论坛
  7. 联想thinkpad bios密码破解,t440,450,460,x240,250,260,x1c,yoga,y70,y50。。。。软件解密
  8. VS2019 关闭安全检查
  9. 关于html中锚点功能的使用
  10. B. Kay and Snowflake(重心的性质)