博文参考:https://blog.csdn.net/u014380165/article/details/80793334
看了文章,觉得还不错,在现有的best object-detection model上能增加3%~4%个mAP点。

SNIP的主要思想

基本思想是:浅层的feature map语义特征比较弱,但是小物体特征比较明显,适合在较浅的层检测小物体,但是对于大物体,由于语义特征比较弱,不太适合在浅层进行检测;深层的feature map语义特征很强,但是对于小物体,在该层的特征基本上消失,所以在深层对大物体进行检测比较合适,而小物体则已不适合。

SNIP的思想就是,在不同层scale的feature map中定义的有效anchor范围不同,在浅层的feature map,这里检测小物体,此时的anchor box尺寸占原始图像的大小较小,在深层的feature map,此时的anchor box尺寸占原始图像的大小较大。也就是说在浅层的feature map上只对小的物体对应的ground truth标签(就是定位框)进行误差计算/梯度回传,更新网络,此时忽略大的和中型的物体;同样,在较深的feature map中,只对大的物体进行误差计算(此时的anchor box设定的比较大)/梯度回传,忽略小的物体。这样即可保证在对应scale层中提取最佳的特征,从而增加检测的准确率。

不管是训练检测器还是RPN网络,都是基于所有ground truth来定义proposal和anchor的标签。正如前面所述,某个ROI在某次训练中是否回传梯度是和预训练模型的数据尺寸相关的,也就是说当某个ROI的面积在指定范围内时,该ROI就是valid,也就是会在此次训练中回传梯度,否则就是无效的(如下图中右边的紫色框所示)。这些invalid ROI所对应的invalid ground truth会用来决定RPN网络中anchor的有效性确定。invalid anchor的定义是和invalid ground truth的IOU大于0.3的anchor就是invalid anchor,如下图中左边的黑色框所示。

这里需要解释下,每个scale尺度下的feature map都会设定三类,有效的anchor box、无效的anchor box、背景。经过RPN处理后,会生成一系列的推荐框,但是这些推荐框不能全部都送到分类和回归层,需要进一步的进行处理,这个时候采用的就是SNIP的主要思想了。

关于RPN网络中不同标签的anchor比例作者也做了分析,我们知道在RPN网络中,一个anchor的标签是根据该anchor和ground truth的IOU来决定的,只有两种情况下才会认为某个anchor的标签是正样本(标签为1):1、假如该anchor和某个ground truth的IOU超过某个阈值(阈值默认采用是0.7),那么该ancho就是正样本。2、假如一个ground truth和所有anchor的IOU都没超过该阈值,那么和该ground truth的IOU最大的那个anchor就是正样本。同样,作者将conv4的输出作为RPN网络的输入,然后设置了15种anchor(5 scales,3 aspect ratios),接下来就有意思了,作者发现在COCO数据集上(图像大小为800*1200),只有30%的ground truth满足前面第一种情况!即便将阈值调整为0.5,也只有58%的ground truth满足第一种情况!这说明什么?说明即便阈值等于0.5,仍有40%的正样本anchor和ground truth的IOU小于0.5(这些anchor是因为满足前面的情况2才被定义为正样本)!显然,这样的正样本质量不算很高。而这篇文章因为引入多种分辨率的图像作为输入,所以在一定程度上缓解了这种现象。另外,作者也尝试将conv4和conv5的特征做融合并预测,不过这部分文章只是一笔带过,还需要看源码才能知道具体是怎么做的。

举例说明:

  • 在scale_1上的有效anchor box主要针对小物体,这时候,RPN推荐的anchor box尺寸过大,或者处于中型尺寸,则被判为无效的anchor box,在sacel_1上大的和中型anchor box不参与训练和梯度回传。
  • 在scale_2上,有效的anchor box主要针对中型物体,这时候,RPN推荐的anchor box过大或者过小,都不是有效的anchor box,在scale_2上大的和小的anchor box不参与训练和梯度回传。
  • 在scale_3上,有效的anchor box主要针对大型物体,这时候,RPN推荐的anchor box过小或者中型尺寸,都不是有效的anchor box,在scale_3上中型和小的anchor box不参与训练和梯度回传。

当然实际在训练的时候,可能不止三个scale下的feature map,可能包含5~6个甚至更多,所以不管对于哪一尺寸的物体,不管是大是小,总是可以找到最佳scale下的feature,并在该scale下的feature map上进行特征提取。

需要注意的是对目标的尺寸做限制是在训练过程,而不是预先对训练数据做过滤,训练数据还是基于所有数据进行。实验证明这种做法对小目标物体的检测非常有效。

SNIP物体检测算法理解相关推荐

  1. 中科院自动化所博士带你入门CV物体检测算法

    物体检测通常是指在图像中检测出物体出现的位置及对应的类别,它是计算机视觉中的根本问题之一,同时也是最基础的问题,如图像分割.物体追踪.关键点检测等都依赖物体检测. 从应用来看,物体检测已广泛应用于大家 ...

  2. 基于锚框与无需锚框的通用物体检测算法

    物体检测通常是指在图像中检测出物体出现的位置及对应的类别,是计算机视觉的根本问题,也是最基础的问题.它广泛应用于日常生活中,如浏览器的拍照识图.自动驾驶行人车辆检测.道路目标检测(人行道检测)及图像分 ...

  3. 详解通用物体检测算法:基于锚框与无需锚框

    物体检测通常是指在图像中检测出物体出现的位置及对应的类别,它是计算机视觉中的根本问题之一,同时也是最基础的问题,如图像分割.物体追踪.关键点检测等都依赖物体检测. 从应用来看,物体检测已广泛应用于大家 ...

  4. 激光雷达:最新趋势之基于RangeView的3D物体检测算法

    作者丨巫婆塔里的工程师@知乎 来源丨https://zhuanlan.zhihu.com/p/406674156 编辑丨3D视觉工坊 之前在LiDAR点云物体检测算法的综述中提到了四个发展阶段.在最开 ...

  5. 中科院张士峰:基于深度学习的通用物体检测算法对比探索

    https://www.toutiao.com/a6674792954369933838/ 人工智能论坛如今浩如烟海,有硬货.有干货的讲座却百里挑一.由中国科学院大学主办,中国科学院大学学生会承办,读 ...

  6. 深度学习和目标检测系列教程 13-300:YOLO 物体检测算法

    @Author:Runsen YOLO,是目前速度更快的物体检测算法之一.虽然它不再是最准确的物体检测算法,但当您需要实时检测时,它是一个非常好的选择,而不会损失太多的准确性. YOLO 框架 在本篇 ...

  7. 碎片2:大白话讲解Mask R-CNN及常见物体检测算法

    文章目录 MASK R-CNN调研报告 1.Introduction 1.1 MASK R-CNN简介 1.2 直觉理解MASK R-CNN 2.Algorithm 2.1已有物体检测算法概述 2.1 ...

  8. 大牛讲堂 | 邬书哲:物体检测算法的革新与传承

    大牛讲堂 | 邬书哲:物体检测算法的革新与传承 本文作者:大牛讲堂 2016-11-10 10:01 导语:​邬书哲博士对山世光博士此前讲到的内容在细节上做了补充:R-CNN系列.YOLO和SSD.C ...

  9. 「取长补短」的RefineDet物体检测算法

    基于深度学习的物体检测算法可大致分为"一阶段"和"两阶段"两类.一般而言,以Faster RCNN为代表的两阶段检测器在准确度上有优势:而以SSD为代表的单阶段 ...

  10. FCOS论文复现:通用物体检测算法

    摘要:本案例代码是FCOS论文复现的体验案例,此模型为FCOS论文中所提出算法在ModelArts + PyTorch框架下的实现.本代码支持FCOS + ResNet-101在MS-COCO数据集上 ...

最新文章

  1. 让浏览器不记住表单元素输入过的内容
  2. [译]理解js中的event loop
  3. C#数组按值和按引用传递数组区别
  4. 一个很好的分页存储过程
  5. 读后感《我回阿里的29个月》
  6. php 赋值 递增,PHP 基础(赋值及函数)
  7. 热门专业学习之关于java的一些知识
  8. [Alamofire] 错误总结
  9. 支付验证签名失败_验证码收不到,或许是验证码平台出了问题!
  10. HardSoft-Viewer PHP_index.php
  11. 中文验证码识别 java_opencv Tesseract 验证码识别 文字识别
  12. 前端ajax与后端php数据传输总结
  13. JAVA多线程之男朋友和女朋友之间的故事
  14. python画折线图参数配置
  15. 设计模式系列 — 模板方法模式
  16. ios中文字添加删除线
  17. cocos2dx 制作一个简单的三消游戏
  18. 计算机学情问卷调查报告,学情调查报告及调查问卷(共9篇).docx
  19. datatables分页,排序,ajax请求等参数设置
  20. win10+Ubuntu双系统安装/卸载/扩容/同步时间

热门文章

  1. WebAssembly 介绍
  2. C++标准程序库读书笔记-第二章新的语言特性
  3. 《Android NFC 开发实战详解 》简介+源码+样章+勘误ING
  4. URAL-1998 The old Padawan 二分
  5. Linux Apache Mysql PHP典范设置装备安排-2
  6. SQL 数据库操作类
  7. Android客户端和服务器端数据交互的第二种方法
  8. SqlServer得到生日(闰月考虑)
  9. ElasticHD Windows环境下安装(转载)
  10. 基于C++11实现线程池的工作原理