目标检测中region proposal的作用?

ssd,yolo训练网络的时候为什么要用anchor box,图片不是有标ground truth box 吗?为什么不能直接用这个训练呢?

先更正下提问者的描述,yolo本身不含有anchor机制。

以下回答适合对目标检测中anchor的作用和机制比较了解的读者阅读。

首先我们明确一个定义,当前主流的Object Detection框架分为1 stage和2 stage,而2 stage多出来的这个stage就是Regional Proposal过程,明确这一点后,我们继续讲。

Regional Proposal的输出到底是什么?

我们首先看一下以Faster R-CNN为代表的2 stage目标检测方法

图1

可以看到,图中有两个Classification loss和两个Bounding-box regression loss,有什么区别呢?

1、Input Image经过CNN特征提取,首先来到Region Proposal网络。由Regio Proposal Network输出的Classification,这并不是判定物体在COCO数据集上对应的80类中哪一类,而是输出一个Binary的值p,可以理解为  ,人工设定一个threshold=0.5。

RPN网络做的事情就是,如果一个Region的  ,则认为这个Region中可能是80个类别中的某一类,具体是哪一类现在还不清楚。到此为止,Network只需要把这些可能含有物体的区域选取出来就可以了,这些被选取出来的Region又叫做ROI (Region of Interests),即感兴趣的区域。当然了,RPN同时也会在feature map上框定这些ROI感兴趣区域的大致位置,即输出Bounding-box

----打个比方----

我上午第四节课饿得不行,我就想着中午要吃什么?附近好多西餐厅和中餐厅,餐厅里菜品有很多。但是我生活费不够了。。gg。。不太想吃(吃不起)西餐,所以无论西餐厅里有什么菜品,我都不会考虑;只有路过中餐厅时,我才会进去看看具体吃什么菜。

----------真是尴尬的栗子----------

So, RPN网络做的事情就是,把一张图片中,我不感兴趣的区域——花花草草、大马路、天空之类的区域忽视掉,只留下一些我可能感兴趣的区域——车辆、行人、水杯、闹钟等等,然后我之后只需要关注这些感兴趣的区域,进一步确定它到底是车辆、还是行人、还是水杯(分类问题)。。。。

你可能会看到另一对通俗易懂的词语,前景(车、人、杯)背景(大马路、天空)

图2.天空和草地都属于背景

图3.天空和马路也都是背景

啊 好的,到此为止,RPN网络的工作就完成了,即我们现在得到的有:在输入RPN网络的feature map上,所有可能包含80类物体的Region区域的信息,其他Region(非常多)我们可以直接不考虑了(不用输入后续网络)。


接下来的工作就很简单了,假设输入RPN网络的feature map大小为  ,那么我们提取的ROI的尺寸一定小于 ,因为原始图像某一块的物体在feature map上也以同样的比例存在。我们只需要把这些Region从feature map上抠出来,由于每个Region的尺寸可能不一样,因为原始图像上物体大小不一样,所以我们需要将这些抠出来的Region想办法resize到相同的尺寸,这一步方法很多(Pooling或者Interpolation,一般采用Pooling,因为反向传播时求导方便)。


假设这些抠出来的ROI Region被我们resize到了  或者  ,那我们接下来将这些Region输入普通的分类网络,即第一张Faster R-CNN的结构图中最上面的部分,即可得到整个网络最终的输出classification,这里的class(车、人、狗。。)才真正对应了COCO数据集80类中的具体类别。

同时,由于我们之前RPN确定的box\region坐标比较粗略,即大概框出了感兴趣的区域,所以这里我们再来一次精确的微调,根据每个box中的具体内容微微调整一下这个box的坐标,即输出第一张图中右上方的Bounding-box regression。


整个Faster R-CNN网络就到此结束了,下面总结一下,同时也回答你的问题:

Region Proposal有什么作用?

1、COCO数据集上总共只有80类物体,如果不进行Region Proposal,即网络最后的classification是对所有anchor框定的Region进行识别分类,会严重拖累网络的分类性能,难以收敛。原因在于,存在过多的不包含任何有用的类别(80类之外的,例如各种各样的天空、草地、水泥墙、玻璃反射等等)的Region输入分类网络,而这些无用的Region占了所有Region的很大比例。换句话说,这些Region数量庞大,却并不能为softmax分类器带来有用的性能提升(因为无论怎么预测,其类别都是背景,对于主体的80类没有贡献)。

2、大量无用的Region都需要单独进入分类网络,而分类网络由几层卷积层和最后一层全连接层组成,参数众多,十分耗费计算时间,Faster R-CNN本来就不能做到实时,这下更慢了。


最后有个小小的说明,针对不了解Anchor的同学们,我在文中始终在说对于感兴趣的区域“框定一个坐标”,这是为了便于理解,其实这样说是不准确的。

具体就是:我们整张图像上,所有的框,一开始就由Anchor和网络结构确定了,这些框都有各自初始的坐标(锚点)。所有后续的工作,RPN提取前景和背景,其实就是保留包含前景的框,丢掉包含背景的;包括后续的NMS,也都是丢掉多余的,并非重新新建一个框

我们网络输出的两个Bounding-box regression,都是输出的坐标偏移量,也就是在初始锚点的基础上做的偏移修正和缩放,并非输出一个原图上的绝对坐标。

yolo有类似rpn的机制,那就是最后输出时的confidence值,这个值决定了前景和背景。

ssd是将anchor机制融合在了1 stage模型中,原理与本文所述基本一致。

图4.这张更能体现object detection的state-of-the-art

引用:

图1.https://arxiv.org/abs/1506.01497

图2、3、4均为在Google Image中找到原始图像,我自己做的Object Detection并标注。

◔"L_◔不懂为什么后天考试,现在我还有时间在这码字。。。

########虽然不是大V,但是也花了一点时间写,转载请注明出处!########

编辑于 2019-11-04

​赞同 330​​17 条评论

​分享

​收藏​喜欢收起​

Justin ho

图像算法工程师

42 人赞同了该回答

谢邀。这里以faster rcnn举例。在faster rcnn里面,anchor(或者说RPN网络)的作用是代替以往rcnn使用的selective search的方法寻找图片里面可能存在物体的区域。当一张图片输入resnet或者vgg,在最后一层的feature map上面,寻找可能出现物体的位置,这时候分别以这张feature map的每一个点为中心,在原图上画出9个尺寸不一anchor。然后计算anchor与GT(ground truth) box的iou(重叠率),满足一定iou条件的anchor,便认为是这个anchor包含了某个物体。

目标检测的思想是,首先在图片中寻找“可能存在物体的位置(regions)”,然后再判断“这个位置里面的物体是什么东西”,所以region proposal就参与了判断物体可能存在位置的过程。

region proposal是让模型学会去看哪里有物体,GT box就是给它进行参考,告诉它是不是看错了,该往哪些地方看才对。

建议详细阅读这个领域一系列的论文,从rcnn、sppnet、frcnn、faster rcnn到ssd、yolo,整条线看下来就能大概明白目标检测的“套路”。

编辑于 2018-01-10

​赞同 42​​13 条评论

​分享

​收藏​喜欢

Alex婧

apt-get install perfect

2 人赞同了该回答

首先,说一下test阶段,给一张image,需要得到物体位置和置信概率。

因此需要在train阶段有个画框的model。

其次,回答提问者的问题,anchor box是用来产生一系列矩形框,然后和ground truth比较Iou>0.5是正例,<0.5是负例,用这些数据训练模型。

如果只用ground truth训练,数据毕竟很少,训练VGG16会严重过拟合

编辑于 2019-04-08

​赞同 2​​添加评论

​分享

​收藏​喜欢

尚德机构

广告​

不感兴趣知乎广告介绍

在北京,工作之余读个研究生吧,在职可读,还是名校硕士!

职场竞争这么激烈,学历和能力缺一不可!考个在职研究生,拓展人脉、提升自己,备考名校学历,工作学习两不误!点击了解详情查看详情

知乎用户

楼主弄明白了吗?我也有楼主的困惑,我的理解是K个anchor 是作为初值给RPN回归,输出K个proposals,不知道对不对,望指教

发布于 2019-01-14

​赞同​​1 条评论

​分享

​收藏​喜欢

clks-wzz

CV & Deep learning

1 人赞同了该回答

答主说的方法理论上可行。

但是这是一个label规范化和人工先验的问题。

在我看来,anchor box一方面规范了输出和label。

另一个方面给了输出一个先验(即先给出几个物体可能的位置,同时用到了feature map空间位置的对应关系),方便网络学习收敛。

如果直接学ground truth,那么问题就来了:你怎么设置label?而且直接学不容易收敛啊~

编辑于 2018-01-10

​赞同 1​​添加评论

​分享

​收藏​喜欢

卢毅

合格的听众

感觉可以从Data-mining角度理解,one-stage的方法直接从特征图每一点构造候选区特征预测,首先,太多的“垃圾”样本;其次,轮廓没有代表性;经过region proposal之后相当于精炼了一部分候选框,同事对于最终用于训练的候选框,也有回归模型按照是否有待测物体先一步计算了轮廓。对召回率和准确率有提升,但是two-stage的方法引入了额外的计算。

发布于 2018-01-11

​赞同​​添加评论

​分享

​收藏​喜欢

ShengCiun Liang

反对任何形式的平权

或许我觉得题主的问题是网络的输出是什么?为什么要输出这个?

以我个人的理解,首先使用anchor box的含义就是我不知道这个点是否存在一个物体,其次是这个物体有多大,那么使用anchor box就很好理解了,通过iou计算这个点存在物体的概率,而不同大小的box就是存在不同大小box的物体的概率分别为多少,之后定义一个观点,即一个点只属于一个物体,于网络而言就是对于几个anchor的输出取最大值。

当然这样框到的物体非常粗糙,因为只有几个固定大小的框,于是就有了bbox regression,个人认为也正是bbox这个方法不佳,于是被segmentation取代了,也就是mask rcnn

发布于 2018-01-10

​赞同​​添加评论

​分享

​收藏​喜欢

赵路加

网站销售

Anchor box,顾名思义锚点产生的框。注意,是”产生”,也就意味着自然存在的,不需要通过人为或者神经网络而得到。在faster rcnn中,也就是经过骨干网络输出的高阶特征或者说下采样特征,基于尺寸映射回原图的锚点所产生的框,是一组函数映射值。锚点框的存在,主要意义在于通过与gt框计算iou得到rpn网络的标签,然后经过rpn修正得到faster rcnn的roi区域。不过,从另一方面来说,anchor box也可以说是rpn的输入,你可以把rpn理解成一个AE网络,anchor box就是先验知识,你需要rpn根据anchor box,产生更与gt相匹配的box。

发布于 2020-03-13

​赞同​​添加评论

​分享

​收藏​喜欢

万能布偶先生

前阿里达摩院程序员,现卖酒up主,tb搜“猫脱酒馆”

感觉本质就是神经网络对回归搞不定呀搞不定~~~和人去处理也是类似的,你看个局部信息也只能对大小有一定概念,但是没有准确的位置,然后你要依赖这个对物体检测做分割,当然会有问题。所以现在用region proposal来做个预测再refine。靠谱的当然是先出检测再出分割,只是大术未出

目标检测中region proposal的作用?相关推荐

  1. 目标检测中region proposal的作用

    作者:YJHMITWEB 链接:https://www.zhihu.com/question/265345106/answer/294410307 来源:知乎 著作权归作者所有.商业转载请联系作者获得 ...

  2. 目标检测中Regional Proposal到底是什么,RPN和Region Proposal、Proposals三者联系

    候选区域-Region Proposal 目标检测是计算机视觉当中很重要的一个任务,不仅要识别出图像中包含物体的类别,还要对各个物体进行较精确的定位,定位的方式为给出一个包含该物体的框. 简单来说就是 ...

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

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

  4. 目标检测中的anchor-base与anchor-free

    前言 本文参考目标检测阵营 | Anchor-Base vs Anchor-Free 如何评价zhangshifeng最新的讨论anchor based/ free的论文? - 知乎 基础知识 | 目 ...

  5. 目标检测中的样本不平衡处理方法——OHEM, Focal Loss, GHM, PISA

    GitHub 简书 CSDN 文章目录 1. 前言 2. OHEM 3. Focal Loss 3.1 Cross Entropy 3.2 Balanced Cross Entropy 3.3 Foc ...

  6. 小目标检测中的数据扩展

    参考:https://blog.csdn.net/abrams90/article/details/89371797 论文:Augmentation for small object detectio ...

  7. 目标检测中的Two-stage的检测算法

    比较详细,作个备份 什么是目标检测(object detection): 目标检测(object detection),就是在给定的一张图片中精确找到物体所在的位置,并标注出物体的类别.所以,目标检测 ...

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

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

  9. 综述:解决目标检测中的样本不均衡问题

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨SFXiang 来源丨AI算法修炼营 编辑丨极市平台 极市导 ...

  10. 目标检测中的分类和定位冲突问题

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:steven Li | 来源:知乎 https://zhuanlan.zhihu.com/p/1 ...

最新文章

  1. 开源 java CMS - FreeCMS2.8 模板管理
  2. 理解Golang的Time结构
  3. hgameweek4 secret
  4. 深度学习-机器学习(5.1支持向量机)
  5. #1066 : 无间道之并查集
  6. maven 关联源码插件_繁琐的任务简单化,Maven的插件机制
  7. 计算机网络 --- 数据链路层CSMA协议
  8. android 获取monkey日志_Android压力测试:monkey压力测试实战
  9. 动态创建php 类函数或函数
  10. python读取文档中有很多指标的数据 写成矩阵_图像处理与特征提取 —— 从 MATLAB 到 Python(一)图像、矩阵与数据的读写...
  11. 使用checked关键字处理“溢出”错误
  12. C/C++内存使用之malloc/free,new/delete
  13. 计算机中数据存储--ASCII码
  14. oracle聚合函数
  15. 关闭Apple Watch 上的激活锁的方法
  16. 哲学家进餐问题 C++实现
  17. 蓝筹股是什么意思?低估值蓝筹股有哪些?拥有蓝筹股的好处?
  18. 【测开方法论】测开平台pk心得-抉择
  19. 回归评价指标(MSE、RMSE、MAE、R-Squared、拟合优度)
  20. Windows10字符映射表的搜索功能

热门文章

  1. 把EditPlus添加到右键快捷菜单
  2. 【redis】内存优化方案
  3. 信息安全技术——(九)基于MATLAB数字水印系统设计
  4. im即时通讯开发:浅析MQTT通信协议
  5. C# WinForm菜单和工具栏控件
  6. Andriod.mk用法
  7. 如何在AI中复制路径制作唯美动画
  8. target triplets
  9. 【uniapp小程序】uploadFile文件上传
  10. java stringbuilder 构造函数_java---StringBuilder类的用法(转载)