学习记录:正负样本分配策略之yolox|simota-简单易懂版

Double-Zh Double-Zh     2022-11-30     131

关键词:

学习记录:正负样本分配策略之YoloX | SimOTA-简单易懂版

文献阅读和分享

《Bridging the Gap Between Anchor-based and Anchor-free Detection via Adaptive Training Sample Selection》 ,首先来感受下这篇2020年目标检测领域最有价值之一的文章;

原文链接:https://arxiv.org/abs/1912.02424

个人感觉文章最大的亮点就是揭露anchor-based和anchor-free两类算法本质的区别、以及提出了一种名为ATSS的正负样本选择方法。文章具体创新点如下:

目标检测领域趋势

近年来,模型结构重参化动态标签分配已逐渐成为目标检测中的重要优化方向。

正负样本分配策略——SimOTA

网络训练(恋爱历程)

  1. 首先,我们把网络训练比作小白、小里和小腾等多个同学的谈恋爱过程;SimOTA比作为中介;(注:多个同学是因为图片中往往不止一个目标)

  2. 接着,SimOTA给目标框定义正负样本,即中介给这些同学分配多个对象;(注:多个对象是重点,也是这个中介的厉害之处)

  3. 开始训练,反向优化,即开始谈恋爱,总结经验。

SimOTA具体流程(中介分配对象流程)

一、初步筛选(外貌协会)

  1. 首先,根据Anchor Box中心点是否落在Ground-truth Box范围内,筛选出符合的Anchors;
    (即,依照小白他们各自对颜值的需求,选出一批满意的对象)

  2. 接着,根据Ground-truth Box中心点上下左右2.5的距离,形成一个边长为5的矩形框,筛选出中心点落在这个区域的Anchors;
    (即,根据小白他们各自的年龄,选出一批跟他们年龄相差不超过2.5年的对象)

  3. 最终这两部分Anchors即为初步筛选出的对象。

二、精细筛选(深入接触)

  1. 首先,提取初筛Anchors的信息,位置IoU、前背景目标、类别等;
    (即,获得这些对象的地区、性格、共同点等信息)

  2. 接着,计算Loss函数并构建cost矩阵;
    (即,开始给这些对象打分,地区权重为3,看来这个中介也知道异地很难)

  3. 重点!!:根据前10个IoU给每个目标框动态分配k个候选框,具体为:
    a)根据上一步算得的IoU矩阵(目标框和候选框),排序并取前10个候选框;
    b)对这10个候选框的IoU进行相加,并向下取整(int操作),最终得到k的具体数值,即为该目标框的分配候选框对象个数;
    (即,根据地域远近,中介给小白他们确定对象的分配个数)

  4. 最后,根据cost矩阵挑出前k个候选框,并去除重复候选框。
    (即,根据之前给对象的打分,挑选出最满意的k个对象;然而,小白看上的对象可能小腾也看上了,难道谁充钱多这个对象就给谁吗?中介很正直,谁跟这个对象更合适就给谁分配!)

个人疑惑

个人疑惑:为什么k值不直接设定成固定值?如果要固定,那具体设置多大才合适呢?

个人理解(不一定正确,欢迎交流):k设置成一个随着训练而动态变化的值,大概也符合网络通过不断学习,其精度不断改善的变化趋势吧。就比如小白、小里和小腾(渣男们)通过不断和多个对象谈恋爱,逐渐知道找对象不仅要注意外在形象,也要提升自己的内在修养,自然才能吸引到更多的对象(也就是说训练过程中,k值会变大,正样本会变多),最终才能找到合适自己的人,对吧hhh!

以上就是个人对SimOTA的一点学习记录,希望能够对大家起到一定的帮助!

ps:PPT已放到参考链接[2],有需要可自取。

参考
[1]: https://zhuanlan.zhihu.com/p/397993315
[2]: https://github.com/Double-zh/PPT-YoloX-SimOTA.git

yolov7|模型结构与正负样本分配解析(代码片段)

...。看论文的时候看到比较乱,这里可能会比较杂乱的记录一下我觉得有点启发的东西。对于yolov7的代码,我也没有仔细的看,只是大概的看了下其他博客提到的些细节。所以这里也不会具体的解析代码。文章目录1.相... 查看详情

损失函数解读之focalloss(代码片段)

...ff0c;解决了目标检测中 正负样本极不平衡 和难分类样本学习 的问题。论文名称:FocalLossforDenseObjectDetection目录什么是正负样本极不平衡?two-stage样本不平衡问题one-stage样本不平衡问题交叉熵损失 查看详情

机器学习数据预处理之缺失值:样本删除(代码片段)

机器学习数据预处理之缺失值:样本删除garbagein,garbageout.没有高质量的数据,就没有高质量的数据挖掘结果,数据值缺失是数据分析中经常遇到的问题之一。当缺失比例很小时,可直接对缺失记录进行舍弃或进行... 查看详情

机器学习积累

1、样本不平衡问题正样本多余正样本:1)欠采样,随机抽取负样本去除,使的正负样本比例平衡。缺点是会丢失多数类的一些重要信息,不能够充分利用已有的信息2)过采样,增加一些正样本,使得正负样本比例接近。最简单... 查看详情

深入理解java虚拟机原理之内存分配策略

更多Android高级架构进阶视频学习请点击:https://space.bilibili.com/4743806801、对象优先在Eden分配大多情况,对象在新生代Eden区分配。当Eden区没有足够空间进行分配时,虚拟机将进行一次MinorGC。虚拟机提供了参数-XX:+PrintGCDetails,在... 查看详情

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

...hardnegativemining最原始的一种方法,主要使用在传统的机器学习方法中。比如,训练cascade类型分类模型的时候,可以将每一级分类错误的样本继续添加进下一层进行训练。比如,SVM分类中去掉那些离分界线较远的样本,只保留离... 查看详情

垃圾收集器与内存分配策略之内存分配与回收策略

垃圾收集器与内存分配策略(六)——内存分配与回收策略对象的内存分配,一般来说就是在堆上的分配(但也可能经过JIT编译后被拆散为标量类型并间接地栈上分配),对象分配的细节取决于当前使用的是哪一种垃圾收集器组合... 查看详情

jvm之垃圾收集器(gc)与内存分配策略

1.为什么要学习GC?GC(GarbageCollection)早于java出现,60年代出现的Lisp中最早使用了GC。当需要排查各种内存溢出、内存漏斗问题时,当垃圾回收成为系统达到更高并发量的瓶颈时,就需要用到gc了。总之,写出高性能的Java程序需要... 查看详情

angularjs学习笔记之directive——scope选项与绑定策略

开门见山地说,scope:{}使指令与外界隔离开来,使其模板(template)处于non-inheriting(无继承)的状态,当然除非你在其中使用了transclude嵌入,这点之后的笔记会再详细记录的。但是这显然不符合实际开发中的需求,因为实际上,我们... 查看详情

机器学习之类别不平衡问题——各种评估指标(代码片段)

在二分类问题中,通常假设正负类别相对均衡,然而实际应用中类别不平衡的问题,如100,1000,10000倍的数据偏斜是非常常见的,比如疾病检测中未患病的人数远超患病的人数,产品质量检测中合格产品数量远超不合格产品等。在... 查看详情

模型评价指标(ctr)

参考技术A本文记录的目的是方便自己学习和复习,有误之处请谅解,欢迎指出。  之前的文章没有对评价指标进行一个梳理,此小结补充一下建模过程中一些常用的评价指标。    最近项目在做点击率预估... 查看详情

deepstream系列之yolox调用(代码片段)

...查看系列文章目录该文转载于我同事的文章【Deepstream之YoloX部署】,版权归原作者所有。github:egbertYeah/yolox_deepstream(github.com)https://github.com/egbertYeah/yolox_deepstream0.目标检测算法YoloXYoloX是旷视科技于2021年提出的目标检测算法... 查看详情

deepstream系列之yolox调用(代码片段)

...查看系列文章目录该文转载于我同事的文章【Deepstream之YoloX部署】,版权归原作者所有。github:egbertYeah/yolox_deepstream(github.com)https://github.com/egbertYeah/yolox_deepstream0.目标检测算法YoloXYoloX是旷视科技于2021年提出的目标检测算法... 查看详情

deepstream系列之yolox调用(代码片段)

...查看系列文章目录该文转载于我同事的文章【Deepstream之YoloX部署】,版权归原作者所有。github:egbertYeah/yolox_deepstream(github.com)https://github.com/egbertYeah/yolox_deepstream0.目标检测算法YoloXYoloX是旷视科技于2021年提出的目标检测算法... 查看详情

[深度学习][yolox]yolox整体架构图

...ff1a;Pytorch搭建自己的YoloX目标检测平台(Bubbliiiing深度学习教程)_哔哩哔哩_bilibili 查看详情

jvm之内存分配与回收策略

前言   对象的内存分配,往大的方向上讲,就是在堆上分配,少数情况下也可能会直接分配在老年代中,分配的规则并不是百分之百固定的,其细节决定于当前使用的是哪种垃圾收集器组合,当然还有虚拟机中与内存... 查看详情

jvm学习十-(复习)内存分配与回收策略

...参数配置。以下列举几条最普遍的内存分配规则,供大家学习。对象优先在Eden分配大多数情况下,对象在新生代Eden区中分配。当Eden区没有足够空间进行分配时,虚拟机将发 查看详情

论文翻译:牛xx的yolox

...式并进行其他高级检测技术,即解耦头和领先的标签分配策略SimOTA,以在大量模型中实现最先进的结果:对于YOLONano仅0.91M参数和1.08GFLOPs,我们在COCO上获得25.3 查看详情