关于 Faster RCNN正负样本选取的问题

2023-11-02

faster rcnn的解读这两篇文章写的很好,很清楚。面试时被问了这个问题,专门记录下来。

  1. 一文读懂Faster RCNN
  2. 从编程实现角度学习Faster R-CNN(附极简实现)

回顾fast rcnn样本选取问题

fast rcnn 框架
在faster rcnn 中,首先通过selective search 产生了2000个候选框,在进行一个批次训练的时候选择R_sel个框进行训练(文中batch size=128),一个mini-batch中正负样本的比例按照1:3选取,且与groundtruth的IoU>=0.5的为正样本,0.1<IoU<0.5的为负样本。
P.S. 这里设置为0.1的原因是,作者认为与groundtruth有一定交叠的背景更可能是比较困难的负样本,这样选择负样本有助于收敛和提高准确性,但不难发现,这种选取方法忽略了一些重要的及困难的背景区域。

faster rcnn的正负样本选取问题

faster rcnn相比fast rcnn,主要贡献之处在于提出了RPN(区域建议网络,Region Proposal Networks)代替selective search去获得候选框。网络在训练时先训练rpn网络,这时训练好的rpn网络的作用就类似于selective search 提供候选框,然后再训练rcnn网络。(这是一个迭代的过程,具体见[1])
因此faster rcnn有两次选择正负样本的操作,一次发生在RPN部分,RPN可以产生(提出)大约20,000个框[1],其中大量的框都是无目标的背景,因此要进行选择平衡的正负样本用于训练RPN。在训练了RPN后,我们训练rcnn,先通过RPN产生大约20,000个预测框,通过对前景概率排序,NMS等系列操作(具体见[2]),得到了2000个候选框,与上述的fast rcnn 相同,这2000个候选框也不是全部用于训练,于是出现第二次样本选择。
RPN可以产生的大约20,000个框的分布

RPN的正负样本选择

RPN将20000多个候选的anchor选出256个anchor进行分类和回归位置。选择过程如下:
对于每一个ground truth bounding box(gt_bbox),选择和它重叠度(IoU)最高的一个anchor作为正样本。
对于剩下的anchor,从中选择和任意一个gt_bbox重叠度超过0.7的anchor,作为正样本,正样本的数目不超过128个。
随机选择和gt_bbox重叠度小于0.3的anchor作为负样本。负样本和正样本的总数为256。

rcnn的正负样本选择

2000个候选框不是都拿去训练,而是利用选择128个用以训练。选择过程如下:
候选框和gt_bboxes 的IoU大于0.5的,选择一些作为正样本(比如32个)。
选择 RoIs和gt_bboxes的IoU小于等于0(或者0.1)的选择一些(比如 128-32=96个)作为负样本。

补充 OHEM(在线困难样本挖掘,Online Hard Example Mining)

Online Hard Example Mining
OHEM也是一种对正负样本的采样,OHEM的主要思想认基于这样一个假设:更多地训练困难样本可以提升网络的性能,OHEM认为困难样本即损失较大的样本。
上图以fast rcnn为例说明OHEM的过程,(绿色)对于每一个候选框Ri,只进行前向传播,计算Ri的损失,然后选择损失最大的(比如128)个样本,被认为是困难样本,进行反向传播的训练(红色),最后将学习的参数同步更新到绿色区域的网络。
值得注意的是,fast rcnn中一个mini-batch中正负样本的比例按照1:3选取,而OHEM移除了这个设定。
再值得一提的是,与OHEM相反,在PISA中的作者提出更倾向关注那些与gt目标有最高IOU的样本(更小的loss)。

  1. 目标检测中的样本不平衡处理方法——OHEM, Focal Loss, GHM, PISA
    错误之处,请大家在评论区指正~。: )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于 Faster RCNN正负样本选取的问题 的相关文章

随机推荐

  • Eclipse中创建的新项目没src和JRE System Library

    src JRE System Library 因为现有的JRE System Library不是适合的版本 这时更改版本 方法一 项目右键 Build Path Configure Build path remove删去原有JRE Syst
  • adb connect不成功,提示由于目标计算机积极拒绝,无法连接。

    在Windows的命令窗口敲命令 adb connect 192 168 2 X 连接Android电视adb的时候 出现下面的错误提示 unable to connect to 192 168 2 X 5555 cannot connec
  • 量化投资学习-2:股票与美女2-美女的类型

    人生 股票 的起点差不多 人生 股票 的终点差不多 人生 股票 的过程却大相径庭 你会选择哪个 美女 还是普通女 还是丑女 还是妖艳头牌 大家闺秀美女 还是网红美女 几天的邂逅激情 还是一段美好的旅程的 还是天长地久 关注的人多 价格就高
  • GO基础知识总结

    一 GO关键字25个 引导程序整体结构8个关键字 package import const var func defer go return 声明复合数据结构的4个关键字 struct interface map chan 控制程序结构的1
  • log4cplus源码分析

    1 引题 虽然从本科起就学的C 然后在工作的2年时间中也不断的在用C 写代码 虽然基本的语法和一些常用的库函数已经滚瓜烂熟 可是总觉得自己写的代码还不是很专业 特别是看到那些老外们写得代码 从设计 到编码风格 再到各种编程技法的使用有很多都
  • opencv-python图像处理 ---图像轮廓检测与代码实现

    一 轮廓检测 边缘检测虽然能够检测边缘 但是其边缘并不是连续的 图像轮廓用于检测一个整体 来用于后续进行其他处理 opencv提供了两个函数来完成这些操作 findContours 该函数可以查找轮廓 drawContours 绘制轮廓 轮
  • 用keil的时候没有安装对应MCU的库,以STM32F103F为例

    安装keil的时候没有用到这个芯片就没有安装对应的库 重新安装之后遇到的几个坑 打开keil显示没有这个型号 解决方法是安装对应的库 STM32F103F要安装Keil STM32F1xx DFP 2 4 1 pack 安装完库之后 点击O
  • pytorch部署新利器TorchServer

    pytorch的爬坑指南 排坑不易转载请注明出处 参考文档 https github com pytorch serve 由于本地下载pytorch 1 7有问题 刚又瞅一眼现在是需要1 6 所以采用了docker部署 上干货 1 dock
  • BS4爬取物价局房产备案价以及dataframe的操作来获取房价的信息分析

    因为最近要买房子 然后对房市做了一些调研 发现套路极多 卖房子的顾问目前基本都是一派胡言能忽悠就忽悠 所以基本他们的话是不能信的 一个楼盘一次开盘基本上都是200 300套房子 数据量虽然不大 但是其实看一下也很烦要一页一页的翻 如果是在纸
  • SQL11 获取所有员工当前的manager

    SQL11 获取所有员工当前的manager 一 问题描述 二 基本思路 三 完成代码 一 问题描述 二 基本思路 员工表包括普通员工和经理 员工表左连接部门经理表 然后where筛选非经理的员工即可 三 完成代码 select dept
  • Hibernate笔记_Mapping

    1 对Mapping的最好定义 The mappings are applied to express the various different ways of forming associations in the underlying
  • Android资源文件在配置文件中的使用与java代码对资源文件的操作

    一 学习目标 资源文件很多 本节内容只讲下面四种资源文件 1 字符串资源文件 目录 文件名 文件内容 使用 2 尺寸资源文件 目录 文件名 文件内容 使用 3 颜色资源文件 目录 文件名 文件内容 使用 4 图片资源文件 目录 文件名 使用
  • 面试题:两个按递增顺序排列的整数数组 nums1 和 nums2合并到nums1中,并递增排序,只允许开辟常量空间!!

    给你两个按递增顺序排列的整数数组 nums1 和 nums2 另有两个整数 m 和 n 分别表示 nums1 和 nums2 中的元素数目 请你合并 nums2 到 nums1 中 使合并后的数组同样按 递增顺序 排列 只允许开辟常量空间
  • 目录树的遍历及遍历文件的处理

    在将windows上的jsp网页移植到linux环境中时 发现一个个的转换编码及修改默认编码类型太慢 写此脚本进行尝试文件遍历 bin bash SPATH root cheng DIR WebRoot DPATH web find DIR
  • Kubernetes(K8S)简介

    目录 一 使用容器原因 二 容器与虚拟机区别 虚拟机 Docker 三 使用K8s原因 四 常用概念 Master Node Pod 为什么提出Pod的概念 Labels Namespace Replication Controller R
  • sudo: /etc/sudoers is mode 0777, should be 0440终极解决之道

    不得不说 有时候手贱的把 etc sudoers文件权限改了 是一件很蛋疼的事 因为此时你会发现无论做什么都会弹出一条讨厌的提示 说没有权限执行等等 网上有介绍登入root用户 或者去grub的recovery mode选项去选择root模
  • Java(关系操作符+流程控制语句)

    学习模式 看一遍视频 手抄一遍 再看一遍视频 在线题库 学习方法 把握主线 不偏离主线 熟悉 掌握常规写法 java day3 第一板块 关系操作符 表达式与操作符 1 关系操作符 6个 2 算数操作符 3 逻辑操作福 4 赋值操作符 4
  • vue create -p dcloudio/uni-preset-vue my-project创建文件报错443

    因为使用vue3 vite uniapp vant4报错 uniapp暂不支持vant4 所以所用vue2 uniapp vant2 下载uni preset vue master 放到E Auniapp uni preset vue ma
  • Android APK 由于签名异常无法安装-- INSTALL_FAILED_SHARED_USER_INCOMPATIBLE 解决

    前景 在安装第三方APK中会遇到部分已有签名的APK的情况 会有如下的报错信息 adb failed to install W demo apk Failure INSTALL FAILED SHARED USER INCOMPATIBLE
  • 关于 Faster RCNN正负样本选取的问题

    faster rcnn的解读这两篇文章写的很好 很清楚 面试时被问了这个问题 专门记录下来 一文读懂Faster RCNN 从编程实现角度学习Faster R CNN 附极简实现 回顾fast rcnn样本选取问题 在faster rcnn