One-stage网络以yolo系列网络为代表的,two-stage网络以faster-rcnn为代表的,

它们的主要区别

1.one-stage网络速度要快很多
2.one-stage网络的准确性要比two-stage网络要低

为什么one-stage网络速度要快很多?

首先来看第一点这个好理解,one-stage网络生成的ancor框只是一个逻辑结构,或者只是一个数据块,只需要对这个数据块进行分类和回归就可以,不会像two-stage网络那样,生成的 ancor框会映射到feature map的区域(rcnn除外),然后将该区域重新输入到全连接层进行分类和回归,每个ancor映射的区域都要进行这样的分类和回归,所以它非常耗时

为什么one-stage网络的准确性要比two-stage网络要低?

我们再来看第二点,为什么two-stage网络要准确些,我们来看rcnn,它是首先在原图上生成若干个候选区域,这个候选区域表示可能会是目标的候选区域,注意,这样的候选区域肯定不会特别多,假如我一张图像是100x100的,它可能会生成2000个候选框,然后再把这些候选框送到分类和回归网络中进行分类和回归,fast-rcnn其实差不多,只不过它不是最开始将原图的这些候选区域送到网络中,而是在最后一个feature map将这个候选区域提出来,进行分类和回归,它可能最终进行分类和回归的候选区域也只有2000多个并不多,再来看faster-rcnn,虽然faster-rcnn它最终一个feature map它是每个像素点产生9个ancor,那么100x100假如到最终的feature map变成了26x26了,那么生成的ancor就是26x26x9 = 6084个,虽然看似很多,但是其实它在rpn网络结束后,它会不断的筛选留下2000多个,然后再从2000多个中筛选留下300多个,然后再将这300多个候选区域送到最终的分类和回归网络中进行训练,所以不管是rcnn还是fast-rcnn还是faster-rcnn,它们最终进行训练的ancor其实并不多,几百到几千,不会存在特别严重的正负样本不均衡问题,但是我们再来看yolo系列网络,就拿yolo3来说吧,它有三种尺度,13x13,26x26,52x52,每种尺度的每个像素点生成三种ancor,那么它最终生成的ancor数目就是(13x13+26x26+52x52)*3 = 10647个ancor,而真正负责预测的可能每种尺度的就那么几个,假如一张图片有3个目标,那么每种尺度有三个ancor负责预测,那么10647个ancor中总共也只有9个ancor负责预测,也就是正样本,其余的10638个ancor都是背景ancor,这存在一个严重的正负样本失衡问题,虽然位置损失,类别损失,这10638个ancor不需要参与,但是目标置信度损失,背景ancor参与了,因为总的损失 = 位置损失 + 目标置信度损失 + 类别损失,所以背景ancor对总的损失有了很大的贡献,但是我们其实不希望这样的,我们更希望的是非背景的ancor对总的损失贡献大一些,这样不利于正常负责预测ancor的学习,而two-stage网络就不存在这样的问题,two-stage网络最终参与训练的或者计算损失的也只有2000个或者300个,它不会有多大的样本不均衡问题,不管是正样本还是负样本对损失的贡献几乎都差不多,所以网络会更有利于负责预测ancor的学习,所以它最终的准确性肯定要高些

总结下:
说了那么多,用一个句话总结,one-stage网络最终学习的ancor有很多,但是只有少数ancor对最终网络的学习是有利的,而大部分ancor对最终网络的学习都是不利的,这部分的ancor很大程度上影响了整个网络的学习,拉低了整体的准确率;而two-stage网络最终学习的ancor虽然不多,但是背景ancor也就是对网络学习不利的ancor也不会特别多,它虽然也能影响整体的准确率,但是肯定没有one-stage影响得那么严重,所以它的准确率比one-stage肯定要高

那么什么情况下背景ancor不会拉低这个准确率呢?
那你就要设置阀值,与真实grundTtruth iou阀值设得小一点,只要大于这个阀值,我就认为你是非背景ancor(注意这部分ancor只负责计算目标置信度损失,而位置、类别损失仍然还是那几个负责预测的ancor来负责)或者假如一个图片上有非常多的位置都是目标,这样很多ancor都不是背景ancor;总之保证背景ancor和非背景ancor比例差不多,那样可能就不会拉低这个准确率,但是只要它们比例相差比较大,那么就会拉低这个准确率,只是不同的比例,拉低的程度不同而已

解决one-stage网络背景ancor过多导致的不均衡问题方案

1.采用focalloss,将目标置信度这部分的损失换成focalloss,具体如下:


pt越大,1-pt越小,在给他加一个大于1的指数,会将整个缩得更小,它能够有效的降低整个背景ancor的损失,对非背景ancor也有影响,但是影响并不大

2.增大非背景ancor的数量
某个像素点生成的三个ancor,与真实grundtruth重合最大那个负责预测,它负责计算位置损失、目标置信度损失、类别损失,这些不管,它还有另外两个ancor,虽然另外两个ancor不是与真实grundtruth重合最大,但是只要重合大于某个阀值比如大于0.7,我就认为它是非背景ancor,但注意它只计算目标置信度损失,位置和类别损失不参与计算,而小于0.3的我直接不让它参与目标置信度损失的计算,实现也就是将它的权重置0,这个思想就类似two-stage网络那个筛选机制,从2000多个ancor中筛选300个参与训练或者计算目标置信度损失,相当于我把小于0.3的ancor我都筛选掉了,让它不参与损失计算

3.设置权重
在目标置信度损失计算时,将背景ancor的权重设置得很小,非背景ancor的权重设置得很大

one-stage和two-stage网络的区别相关推荐

  1. flash中Stage,stage,root和this的区别用法

    转载自:http://aresleecool.blog.163.com/blog/static/120715798201011895334718/ http://cctv566888.blog.163 ...

  2. one stage 与two stage解释

    one stage 与two stage 解释 Two stage:首先产生候选区域(region proposals),然后利用卷积神经网络对候选区域分类(一般还需要对位置精修) stage 1:从 ...

  3. 二层网络和三层网络的区别

    大家经常可以听到二层网络.三层网络的说法,我们这里提到的二层.三层是按照逻辑拓扑结构进行的分类,并不是ISO七层模型中的数据链路层和网络层,而是指核心层.汇聚层和接入层.这三层都部署的就是三层网络结构 ...

  4. nas和san网络存储区别_存储区域网络或SAN

    nas和san网络存储区别 什么是存储区域网络或SAN? (What Is Storage Area Network or SAN?) In computing, a storage area net ...

  5. 什么是A.B.C类网络 怎么区别和划分

     什么是A.B.C类网络 怎么区别和划分 违规检举侵权投诉| | 2006-05-20 13:39 fuliang907 | 浏览 15948 次 网络 网络地址的最高位必须是"10 指 ...

  6. 目标检测之one-stage和two-stage网络的区别

    One-stage网络以yolo系列网络为代表的,two-stage网络以faster-rcnn为代表的, 它们的主要区别 1.one-stage网络的准确性要比two-stage网络要低 2.one ...

  7. 中国移动CMnet和CMwap两种网络的区别?

    中国移动CMnet和CMwap两种网络的区别? 一.目的不同 CMwap是为手机wap上网设立的; cmnet是为手体电脑,掌上电脑等移动设备上互联网设立的; 二.实现方式不同 WAP应用采用的实现方 ...

  8. 点对点网络与广播式网络的区别

    目录 一.点对点网络与广播式网络的区别 二.结点和节点 一.点对点网络与广播式网络的区别 写下本文的原因是笔者在学习计算机网络第一章时看到了下面王道书上的一句话,我不理解这句话想表达的是谁需要&quo ...

  9. 人脸识别之DeepFace、DeepID以及FaceNet网络的区别

    前面几篇博客介绍了目前基于深度学习比较常用的神经网络,并且在准确度方面都已经超越了人眼的效果.本篇博客就主要从表面介绍一下他们之间的区别.之所以是表面主要是因为目前只是从理论的层面来比较他们之间的差异 ...

  10. 虚拟机三种虚拟网络的区别

    文章更新于:2020-03-04 一.Workstation 三种虚拟网络的区别 1.vmnet0 仅主机模式 虚拟机只可与主机通信,与外网隔离. 2.vmnet1 桥接模式 虚拟机与主机处于同一网段 ...

最新文章

  1. Oracle11g新特性:在线操作功能增强-Oracle11g在线重定义功能对物化视图... (转载)
  2. php代码审计zhuru,[php 代码审计]Espcms 暴力注入
  3. 标记三维点_SSW系统在地下大型停车场三维建模中的应用研究
  4. Firewald 防火墙使用手册
  5. python微信api_python调用企业微信API
  6. pyHook pyHook3 区别_“get+过去分词”表被动语态与系表结构的三大区别及四大特点...
  7. 架构师进阶篇-什么是架构师
  8. 2.2析取范式与合取范式
  9. java 中奖,用Java实现中奖代码,持续更新
  10. CVPR 2019 Oral 论文解读 | 百度提出关于网络压缩和加速的新剪枝算法
  11. 深度学习:GCN(图卷积神经网络)理论学习总结
  12. 【Matlab学习手记】三维矢量场图
  13. mybatis的switch标签
  14. 8位数码管动态显示8个字符以上1字符的程序,例如0-F。
  15. 湖南大学计算机考研群2021,湖南大学2021年硕士研究生拟录取名单公示
  16. 英语长语法难句——状语和状语从句
  17. 【模型检测学习笔记】9:Binary Decision Diagrams
  18. android socket-udp通信
  19. C++学习——cc1: all warnings being treated as errors 解决办法
  20. 【linux】循序渐进学运维-基础篇-top命令

热门文章

  1. 蛮力法/01背包问题
  2. Bootsrap,我爱你啥子嘛?
  3. 婚宴座位图html5,婚宴酒席座位安排图 20桌婚宴座位安排图
  4. Cuba 设置studio的主题
  5. sudo日志文件跟踪
  6. 写给MatheMagician读者的新年来信2
  7. 成功解决:curl: (7) Failed connect to github-production-release-asset-2e65be.s3.amazonaws.com:443; 拒绝连接
  8. html图片的宽度和高度设置,CSS设置img图片的宽度和高度
  9. SSM整合Ueditor的上传图片功能常见错误解决办法
  10. SQL Server DATEADD() 函数和DATEDIFF() 函数