snip
首先明确物体太小太大都不好检测(都从roi的角度来分析): 1.小物体: a.本身像素点少,如果从anchor的点在gt像素内来说,能提取出来的正样本少
b.小物体会出现iou过低。具体来说,假设a是一个框,b是一个小框(gt),就算a的框和b的框重叠的部分占到了b的90%,但是如果a的框比较大,iou还是会低,正样本也就少了,并且容易错判成负样本
2.大物体:大物体也容易出现iou过低。同理,假设a是一个大框(gt),b是一个框,就算a的框和b的框重叠的部分占到了b的90%,但是如果b的框比较小,iou还是会低,正样本也就少了,并且容易错判成负样本
naiyan说过过小和过大的性能都会下降,https://zhuanlan.zhihu.com/p/36431183 这个的评论里面说的
snip从scale的角度解决小物体问题和scale invariance
网络设计:
整个网络有3个scale,从大到小依次是(480,800)、(800,1200)、(1400,2000),每个scale对应的像素范围为:[0,80]、[40,160]、[120,正无穷]。
[0,80]对应(1400,2000),也就是说大约是把小物体在大像素的图片上检测,中物体在中像素的图片上检测,大物体在小像素的图片上检测。为什么说大约,因为[0,80]、[40,160]都包含了[40,80]这个范围,相当于这个范围的gt同时会在两种resolution上进行识别检测。
原论文中是说roi不在这个范围内就不选择,一般小像素的定义是32,如果原始的定义就是小物体在大尺寸图片检测,那范围的设定应该是[0,32]、[32,96]、[96,正无穷],但如果这样去设定,就会忽略掉很多gt框,因为有些gt框的尺寸可能比32大,比如35、45这种,但这些roi却是对训练有帮助的。所以作者这种范围存在交集的方式,比较有效的解决这个问题,但也会出现一个问题,有些gt会在多个网络训练。
如果是单纯为了达到,小的就在大的尺寸上,大的就在小的尺寸上,其实这个可以把gt的范围设置成[0,32]、[32,96]、[96,正无穷]这种无交集的,roi的范围设置成[0,80]、[40,160]、[120,正无穷]这种有交集的。但是不知道是不是这种单纯在一个尺度上训练会带来更好的效果。
但作者设计这个交集的目的却是:We have an overlap of 40 pixels over adjacent ranges. These ranges were design decisions made during training, based on the consideration that after re-scaling, the resolution of the valid RoIs does not significantly differ from the resolution on which the backbone CNN was trained.
1.train阶段:1.ground_truth: ground_truth在尺寸范围内,标记为有效,超过标记为无效。
2.roi:roi在尺寸范围内,标记为有效,超过标记为无效。
3.anchor:anchor与invalid ground_truth的iou大于0.3的不进行反向传播。
ground_truth、roi与anchor有些不同:ground_truth的框如果不在范围内就不会选取,也就是不会与anchor和roi进行assign;roi如果不在范围内,在proposal阶段不会选取作为训练;原论文中说不符合的anchor不进行反向传播,rpn阶段anchor也是选取一定数目并标记正负样本,那这些不符合的anchor是选进了训练里面然后不反传?还是直接不选取?
这样设计,肯定也会带来每个scale的图片训练的时候,roi个数减少的问题
Since in RPN even a one pixel feature map can generate a proposal we use a validity range of [0,160] at (800,1200) for valid ground truths for RPN.这个有点没理解到
2.test(inference)阶段:
测试阶段anchor和roi都不过滤,而是在每个scale生成框之后,如果框的尺寸不在范围内就过滤掉,最后把所有尺寸有效的框一起用nms。
第二个实验:
1.第一组对比:800和1400
论文中说: training at higher resolutions scales up small objects for better classification, but blows up the medium-to-large objects which degrades performance.作者觉得小物体的性能在放大后应该是提升了,性能提升不明显是因为中等和大的物体的性能下降
2.第二组对比:1400只检测80像素以下,1400检测all
首先我会觉得会不会是过拟合,因为数量减少太多?这个不确定;再者,像论文所说的,可能就是因为scale减少,导致检测性能降低,比如测试集中有两个物体是差不多的,但是尺寸不一样;还有可能就是像naiyan说的大物体可以增加语义信息,但这个点我没想通,是指同一种label吗?还是说其他的label也可以?个人更倾向于同一种label。
延伸问题:为什么大物体可以增加语义信息?
3.第三组对比:mst和之前3个比
论文中说:It ensures training instances are observed at many different resolutions, but it also degraded by extremely small and large objects.
个人感觉这句话的比较对象应该是和1400all比较的,他说的extremely small and large确实可能会比1400all下降,我自己做image pyramid,特别小的物体,你如果用了很小的scale,确实会下降。个人感觉可能特别大的物体放大特别多也可能下降(这个没做实验)。所以他做出来性能没有原尺寸好,是不是因为他自己的image pyramid的尺寸设计的不好,这个不确定。但是他确实给了一些特别重要的点:a.用image pyramid的时候,用哪些scale其实是有讲究的,并不是越放大或者越放小就好 b.大物体可能放大之后性能下降,也就是说过大的物体可能也不好检测。一个点:image pyramid调的合适,是不是能超过snip呢?个人觉得第三个实验如果好好调参数应该是比1400all性能好的,但是不一定赶得上snip。作者其实是想用这种方式表达,image pyramid可以修改,他的snip其实就是在改image pyramid。
本质上,snip就是在改进image pyramid,相当于还是在不同scale上训练,不同scale共享一个网络、共享参数,但是每个scale不是把所有的gt都拿来训练,而是在每种scale图片上选择相应适合的gt(尺寸适合的gt)进行训练(这个scale适合不是说大的gt用大scale的图片,而是小的gt用大的scale图片,因为小物体需要放大提升性能,大物体需要缩小提高性能),并且roi也只训练一个范围的scale,anchor也选择一定尺寸范围(只是实现的方式不同)。如果你只选一定范围的gt,不去修改roi阶段的范围,是有问题的。为什么这么说?因为每个scale的gt虽然都在一定范围内,但是roi阶段是3个scale共享的,其实提取出来的roi的size应该是一样的,如果你不这样去过滤,本质上和image pyramid没区别,其实会造成问题,正样本。同理可以推导到rpn的anchor阶段。
待解决:
1.既然实验2说了大小物体一起训练比单独训练小物体好,为什么要在大scale上只用小物体,不加大物体或者中型物体??
2.anchor阶段为什么不直接用范围去过滤,而要通过这种跟invalid的方式?
3.延伸问题:为什么大物体可以增加语义信息?
4.第一组实验为什么放大了对性能提升不明显?大中型物体检测性能为什么还下降?
目前的detector没有很好解决多尺度的问题,所以每个尺度单独训练
论文到底在讲诉什么问题?
为什么要这样设计能解决问题?
snip类似于图像金字塔,但不同的是他让一定scale的框单独在一个scale的detector上训练和测试,也就是说一个检测器只负责一个尺寸,跟adaboost有点像,而image pyramid是每个检测器都负责所有尺寸。原始的无论是image pyramid还是faster,都是一个检测器训练许多scale,测试的时候,其实也是一个网路检测多个scale,这也就说明,其实目前的检测器并不能很好学习scale这个变量。如果你原本是在大scale上训练的网络,但是要检测小scale的东西可能性能就不好,最有效的方式还是这个网络在训练和测试的时候都处理scale差不多大的物体。
通过这样的一个对比实验,SNIP非常solid地证明了就算是数据相对充足的情况下,CNN仍然很难使用所有scale的物体。个人猜测由于CNN中没有对于scale invariant的结构,CNN能检测不同scale的“假象”,更多是通过CNN来通过capacity来强行memorize不同scale的物体来达到的,这其实浪费了大量的capacity,而SNIP这样只学习同样的scale可以保障有限的capacity用于学习语义信息。
https://blog.csdn.net/qq416261970/article/details/79774909
https://zhuanlan.zhihu.com/p/43579317
https://zhuanlan.zhihu.com/p/35956039
https://zhuanlan.zhihu.com/p/36431183
https://www.imuo.com/a/b9667dec518c3355270e677207a850460ce9ba335dd76ce9dd613115f12c12ed
snip的更多相关文章
- Typora + Mathpix Snip,相见恨晚的神器
word 文档虽然很好,但当我需要输入一大堆公式的时候,word 公式让我疯狂. Why markdown?首先,GitHub 上都在用,那我也得会吧,不然 README.md 怎么写:其次,mark ...
- MacOS下好用的截图软件snip
1 官网下载,腾讯出的 https://snip.qq.com/ 2 下一步下一步安装就好,然后设置一下自己喜欢的快捷键,我的是command + control+J,选择自己喜欢的或者默认都可以 3 ...
- Snip for Mac(桌面截图工具)安装
1.软件简介 Snip 一款用于桌面截图的工具. 2.资源列表 链接 提取密码 系统要求 软件语言 Snip for Mac v2.0 (5771) fgab macOS 10.6.8 及以上 ...
- 【尺度不变性】An Analysis of Scale Invariance in Object Detection – SNIP 论文解读
前言 本来想按照惯例来一个overview的,结果看到1篇十分不错而且详细的介绍,因此copy过来,自己在前面大体总结一下论文,细节不做赘述,引用文章讲得很详细,另外这篇paper引用十分详细,如果做 ...
- mac --snip 滚动截屏
1.snip 下载配置:https://jingyan.baidu.com/article/fec4bce2458d03f2618d8b8e.html 2.mac的火狐浏览器好像不支持,必须在sofa ...
- 文档公式编辑神器-Snip
最近在重新学习统计学的一些基础知识,整理笔记的时候需要输入一些数学公式.从学校毕业之后,就没有在文档中插入过公式了.按照以前的经验,我把输入公式的方式分成两类. 所见即所得的方式,常见的就是微软wor ...
- 将公式直接转化为Latex代码的神器-snip
经常用latex写论文,免不了要敲各种公式,今天和大家分享一个神器-snip,它可以直接将公式转化为代码,不需要我们自己编写公式代码,方便快捷,准确率极高.该神器的下载地址为:https://math ...
- [论文理解] An Analysis of Scale Invariance in Object Detection – SNIP
An Analysis of Scale Invariance in Object Detection – SNIP 简介 小目标问题一直是目标检测领域一个比较难解决的问题,因为小目标提供的信息比较少 ...
- CSS code snip enjoy.
<!-- information-total得是动态获取吧. --> <div class="information-mod"> <div class ...
随机推荐
- 采用DTO和DAO对JDBC程序进行进一步优化
采用DTO和DAO对JDBC程序进行进一步优化 DTO:数据传输对象,主要用于远程调用等需要远程调用对象的地方DAO:数据访问对象,主要实现封装数据库的访问,通过它可以把数据库中的表转换成DTO类 引 ...
- UNIX 高手的另外 10 个习惯
让我们面对现实吧:坏习惯很难改变.但是您已经熟悉的习惯可能更难克服.有时,重新审视某些事情可能让您遇到“啊哈,我没想到它能做到这一点!”的时刻.在 Michael Stutz 的优秀文章“UNIX 高 ...
- idea 版本升级至最新版
前言:当前最新版为官网上的2018.2.3版本 一.下载最新版 官网地址:http://www.jetbrains.com/idea/download/#section=windows 百度网盘地址: ...
- 分布式理论基础(一)一致性及解决一致性的两种方式:2PC和3PC (转载 不错)
分布式理论基础(一)一致性及解决一致性的两种方式:2PC和3PC 1 一致性 1.1 简述 一致性,是指对每个节点一个数据的更新,整个集群都知道更新,并且是一致的 假设一个具有N个节点的分布式系统,当 ...
- 序列化模块2 pickle
import pickle # dump的结果是bytes,dump用的f文件句柄需要以wb的形式打开,load所用的f是'rb'模式# 支持几乎所有对象的序列化# 对于对象的序列化需要这个对象对应的 ...
- HTML5 number类型文本框step属性的验证机制——张鑫旭
我在下一盘很大的棋,本文只是其中的一个棋子. 需要提前知道的: 目前而言,对step雄起的浏览器为IE10+, Chrome以及Opera浏览器. 需要预先知道number类型input的一些基本知识 ...
- HTML5 MutationObserver检测页面劫持
好久没写博客了,业务一直在变化,陆陆续续的做了很多web app,被业务流淹没就很少有机会去反思,前端技术发展如此之快,常常有种不学则退的恐慌,一种技术还没吃透就涌出新的技术,然后一波人又打着各种旗帜 ...
- angular自定义指令 repeat 循环结束事件;limitTo限制循环长度、限定开始位置
1.获取repeat循环结束: 自定义指令: .directive('repeatFinish', function () { return { link: function (scope, elem ...
- Vue 页面15分钟无操作时返回首页
这种需求手机端和pc端一般是不存在的,因为都是可以手动操作刷新的. 最近在做一个户外社区大屏的项目,因为大屏是全屏显示,没法手动刷新,不可能在页面专门做一个刷新按钮,也不好看,那这样的需求就显得格外重 ...
- OG数据预处理
1.影像处理 ogCalcExtent --srs EPSG:26711 --inputdir D:/software/preprocess/data/bugaboos/ --filet ...