目标检测方法简介:RPN(Region Proposal Network) and SSD(Single Shot MultiBox Detector)
原文引用:http://lufo.me/2016/10/detection/
最近几年深度学习在计算机视觉领域取得了巨大的成功,而在目标检测这一计算机视觉的经典问题上直到去年(2015)才有了完全使用深度学习的方法,也就是大名鼎鼎的Faster-RCNN以及和它同一时期的工作YOLO。
目标检测就是要找到一张图中所有的物体和它们的位置,在这两篇文章之前,人们通常的做法是先用一些传统视觉的方法如selective search找到proposal,即比较可能是物体的一个区域,然后再用CNN判断这个物体究竟是不是物体,是哪个物体,以及用CNN去优化这个框的位置,这种方法最典型的代表就是Faster-RCNN的前身,RCNN和Fast-RCNN,当然它们也是同样出色的工作。Faster-RCNN和YOLO解决的问题是省去了selective search,直接用CNN得到最后的结果,并且性能比之前的方法有很大提升。这篇文章主要介绍一下Faster-RCNN中替换掉selective search的RPN(Region Proposal Network)以及对RPN的改进:SSD(Single Shot MultiBox Detector)。
Faster-RCNN由RPN和Fast-RCNN组成,RPN负责寻找proposal,Fast-RCNN负责对RPN的结果进一步优化。其实RPN已经可以找到图片中每个物体的种类和位置,如果更注重速度而不是精度的话完全可以只使用RPN。RPN是一个全卷积网络(FCN),由于没有全连接层,所以可以输入任意分辨率的图像,经过网络后就得到一个feature map,然后怎么利用这个feature map得到物体的位置和类别那?这里要先介绍一下文章中提到的anchor这个概念,把这个feature map上的每一个点映射回原图,得到这些点的坐标,然后着这些点周围取一些提前设定好的区域,如选取每个点周围5x5的一个区域,这些选好的区域可以用来训练RPN。假设我们对feature map上的每个点选取了K个anchor,feature map的大小为H*W*C,那么我们再对这个feature map做两次卷积操作,输出分别是H*W*num_class*K和H*W*4*K,分别对应每个点每个anchor属于每一类的概率以及它所对应的物体的坐标,那么怎么训练这个网络那?这个网络的loss function就是一个用于分类的softmax loss和一个用于回归的smooth L1 loss,输出对应的ground truth也很好得到,对于每个anchor,如果它和图片中某个物体的IOU(面积的交/面积的并)大于一个阈值,就认为它属于这一类,否则认为是背景,对于那些是背景的anchor回归的loss就是0,其他anchor位置的ground truth就是它们所对应的物体的位置。RPN其实也很简单,关键的地方就在于选取了一些anchor然后进行pixel-wise的学习。论文中RPN的插图如下图:
但是RPN也有缺点,最大的问题就是对小物体检测效果很差,假设输入为512*512,经过网络后得到的feature map是32*32,那么feature map上的一个点就要负责周围至少是16*16的一个区域的特征表达,那对于在原图上很小的物体它的特征就难以得到充分的表示,因此检测效果比较差。去年年底的工作SSD: Single Shot MultiBox Detector很好的解决了这个问题。
我个人认为SSD可以理解为multi-scale版本的RPN,它和RPN最大的不同在于RPN只是在最后的feature map上预测检测的结果,而最后一层的feature map往往都比较抽象,对于小物体不能很好地表达特征,而SSD允许从CNN各个level的feature map预测检测结果,这样就能很好地适应不同scale的物体,对于小物体可以由更底层的feature map做预测。这就是SSD和RPN最大的不同,其他地方几乎一样。下图是SSD的网络结构,可以看到不同层的feature map都可以做预测。
另外SSD的代码也写得非常简洁优雅,不得不感叹作者真是碉堡,即写得了paper又做得了coding,不得不服。
目标检测方法简介:RPN(Region Proposal Network) and SSD(Single Shot MultiBox Detector)相关推荐
- 目标检测 SSD: Single Shot MultiBox Detector - SSD在MMDetection中的实现
目标检测 SSD: Single Shot MultiBox Detector - SSD在MMDetection中的实现 flyfish 目标检测 SSD: Single Shot MultiBox ...
- SSD(Single shot multibox detector)目标检测模型架构和设计细节分析
先给出论文链接:SSD: Single Shot MultiBox Detector 本文将对SSD中一些难以理解的细节做仔细分析,包括了default box和ground truth的结合,def ...
- 目标检测--SSD: Single Shot MultiBox Detector
SSD: Single Shot MultiBox Detector ECCV2016 https://github.com/weiliu89/caffe/tree/ssd 针对目标检测问题,本文取消 ...
- 目标检测 - 基于 SSD: Single Shot MultiBox Detector 的人体上下半身检测
基于 SSD 的人体上下半身检测 这里主要是通过将训练数据转换成 Pascal VOC 数据集格式来实现 SSD 检测人体上下半身. 由于没有对人体上下半身进行标注的数据集, 这里利用 MPII Hu ...
- 【目标检测】SSD: Single Shot MultiBox Detector 模型fine-tune和网络架构
前言 博主在上一篇中提到了两种可能的改进方法.其中方法1,扩充类似数据集,详见Udacity Self-Driving 目标检测数据集简介与使用 ,由于一些原因,并未对此数据集做过多探索,一次简单训练 ...
- 【目标检测】SSD(Single Shot MultiBox Detector)的复现
文章目录 SSD SSD源码解析 0. 从Git下载代码 1. 下载所需要的库 2. 数据集 3. Training SSD 4. Evaluation 参考资料 SSD 背景 这是一种 single ...
- python ssd目标检测_解读目标检测之SSD:Single Shot MultiBox Detector
注:md文件,Typora书写,md兼容程度github=CSDN>知乎,若有不兼容处麻烦移步其他平台,github文档供下载. 发表在CSDN:https://blog.csdn.net/ha ...
- RPN(Region Proposal Network)
RPN(Region Proposal Network) 学习RPN前最好先过一遍RCNN和Fast RCNN,本文的图来自原论文和bvBV1af4y1m7iL,有纰漏之处欢迎在评论区指出 RPN什么 ...
- SSD+caffe︱Single Shot MultiBox Detector 目标检测+fine-tuning(二)
承接上一篇SSD介绍:SSD+caffe︱Single Shot MultiBox Detector 目标检测(一) 如果自己要训练SSD模型呢,关键的就是LMDB格式生成,从官方教程weiliu89 ...
最新文章
- 20家股东联名施压,要求贝佐斯停止向警方出售面部识别软件
- python绘制三维轨迹_Python学习(一) —— matplotlib绘制三维轨迹图
- 一文梳理水下检测方法
- 可扩展性的builder模式的构建方法
- python id()函数(返回对象在内存地址中的唯一标识)
- INT(M)表示什么意思?
- 【转】HTML5移动端最新兼容问题解决方案
- javaweb--HTTP状态码
- Android使用HttpURLConnection下载图片
- 2021上半年ICPC各类赛事时间日程
- 什么叫pin脚的pad_普思海鸥脚H1102NL百兆网络变压器
- Mybatis学习之接口编程
- 远程桌面登陆不上的解决思路
- Docker container 集装箱说明
- Java网络编程详解
- Carpet-mod常用的用法记录
- mysql lambda查询_SqlSugar常用查询实例-拉姆达表达式
- 机器人工作空间解析分析
- python3安装完,出现 No module named '_ssl',解决方案
- Unity3D热更新技术点——ToLua(上)