迄今为止,我也没有用过R-CNN系列。。。看理论是一回事,实际用是另外一回事。

之前准备用,看理论时候的一些摘录笔记,都忘的差不多了。

实际用的时候,里面的每一个细节就很关键了,尤其是在自己项目需要的特定应用场景下。

细节包括理论细节和代码处理细节,都挺花时间,也都挺关键。

一文读懂目标检测:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD

https://cloud.tencent.com/developer/news/281788

R-CNN文章详细解读

https://www.jianshu.com/p/5056e6143ed5

R-CNN(Selective Search + CNN + SVM)

SPP-net(ROI Pooling)

Fast R-CNN(Selective Search + CNN + ROI)

Faster R-CNN(RPN + CNN + ROI)

R-CNN

先Selective Search许多候选框Region Proposal(比如两千个)-->CNN-->得到每个候选框的特征-->SVM分类--> box regression

(注意:每个候选框都要进行一次CNN

Fast R-CNN  (借鉴了SPPNet的思想,通过ROI Pooling的结构)

一张完整图片-->CNN-->得到Selective Search(原图)的每张候选框的特征-->多任务损失函数:softmax分类+边框回归

(注意:仍然要对原图进行Selective Search许多候选框Region Proposal。并把这些候选区域按照空间位置关系映射到最后的卷积特征层。

Faster R-CNN  

一张完整图片-->CNN-->Region Proposal Network(RPN)得到每张候选框的特征-->多任务损失函数:softmax分类+边框回归

Mask R-CNN  

Fine-tuning

https://www.julyedu.com/question/big/kp_id/26/ques_id/2137

通常,前面的层提取的是图像的通用特征(generic features)(例如边缘检测,色彩检测),这些特征对许多任务都有用。后面的层提取的是与特定类别有关的特征,因此fine-tune时常常只需要Fine-tuning后面的层。

网络前几层学到的是通用特征,后面几层学到的是与类别相关的特征。

关于什么是边框回归,请参看本深度学习分类下第56题:https://www.julyedu.com/question/big/kp_id/26/ques_id/2139

SPP Netspatial pyramid pooling layer

ROI pooling layer实际上是SPP-NET的一个精简版,SPP-NET对每个proposal使用了不同大小的金字塔映射。

加入这个神奇的ROI Pooling层,对每个region都提取一个固定维度的特征表示,再通过正常的softmax进行类型识别。

ROI Pooling 与 SPP 理解https://blog.csdn.net/qq_35586657/article/details/97885290

ROI Pooling是针对RoIs的Pooling,其特点是输入特征图尺寸不固定,但是输出特征图尺寸固定。

ROI Pooling的思想来自于SPPNet中的Spatial Pyramid Pooling,在Fast RCNN中使用时,将SPPNet中多尺度的池化简化了为单尺度。

ROI Pooling 与 SPP 的区别:

两者起到的作用是相同的,把不同尺寸的特征输入转化为相同尺寸的特征输出。SPP针对同一个输入使用了多个不同尺寸的池化操作,把不同尺度的结果拼接作为输出;而ROI Pooling可看作单尺度的SPP,对于一个输入只进行一次池化操作。

在Fast RCNN中, RoI是指Selective Search完成后得到的“候选框”在特征图上的映射。

在Faster RCNN中,候选框是经过RPN产生的,然后再把各个“候选框”映射到特征图上,得到RoIs。

Region Proposal Networks(RPN)

其实RPN最终就是在原图尺度上,设置了密密麻麻的候选Anchor。然后用cnn去判断哪些Anchor是里面有目标的positive anchor,哪些是没目标的negative anchor。所以,仅仅是个二分类而已。

Feature Pyramid Network (FPN) (maskRNN中使用)

FPN的提出是为了实现更好的feature maps融合,一般的网络都是直接使用最后一层的feature maps,虽然最后一层的feature maps 语义强,但是位置和分辨率都比较低,容易检测不到比较小的物体。FPN的功能就是融合了底层到高层的feature maps ,从而充分的利用了提取到的各个阶段的特征(ResNet中的C2-C5)。

FPN是一种精心设计的多尺度检测方法。FPN实际上是一种通用架构,可以结合各种骨架网络使用,比如VGG,ResNet等。

物体探测的两类方法:

two stage 的目标检测算法是先由算法生成一系列作为样本的候选框,再通过卷积神经网络进行样本分类;

one stage 的目标检测算法。则不用产生候选框,直接将目标边框定位的问题转化为回归问题处理。

正是由于两种方法的差异,在性能上也有不同,前者在检测准确率和定位精度上占优,后者在算法速度上占优。

一文读懂Faster RCNN

https://zhuanlan.zhihu.com/p/31426458

令人拍案称奇的Mask RCNN

https://zhuanlan.zhihu.com/p/37998710

Code:

https://github.com/matterport/Mask_RCNN

https://github.com/facebookresearch/Detectron

R-CNN系列学习笔记相关推荐

  1. 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-04-基于Python的LeNet之MLP

    原文地址可以查看更多信息 本文主要参考于:Multilayer Perceptron  python源代码(github下载 CSDN免费下载) 本文主要介绍含有单隐层的MLP的建模及实现.建议在阅读 ...

  2. lasso模型交替方向matlab_TCGA系列学习笔记(7)建模及模型评价

    微信公众号:生信小知识 关注可了解更多的教程及单细胞知识.问题或建议,请公众号留言; TCGA系列学习笔记(7)建模及模型评价 内容目录 前言1. 背景知识1.1 Cox前提假设的验证1.2 lass ...

  3. 【冬察冬见】FFmpeg系列学习笔记

    [冬察冬见]FFmpeg系列学习笔记 综述 FFmpeg是领先的多媒体框架, 能够解码. 编码. 转码. 混流. 解密. 流媒体. 过滤和播放人类和机器创造的几乎任何东西. FFmpeg的名称来自MP ...

  4. Pytorch训练Bilinear CNN模型笔记

    Pytorch训练Bilinear CNN模型笔记 注:一个项目需要用到机器学习,而本人又是一个python小白,根据老师的推荐,然后在网上查找了一些资料,终于实现了目的. 参考文献: Caltech ...

  5. 状态机系列学习笔记01

    状态机系列学习笔记01 有限状态机(FSM)概念 定义 总的来说,有限状态机系统,是指在不同阶段会呈现出不同的运行状态的系统,这些状态是有限的.不重叠的.这样的系统在某一时刻一定会处于其所有状态中的一 ...

  6. 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-03-基于Python的LeNet之LR

    原地址可以查看更多信息 本文主要参考于:Classifying MNIST digits using Logistic Regression  python源代码(GitHub下载 CSDN免费下载) ...

  7. R语言学习笔记(三)多元数据的数据特征、相关分析与图形表示

    文章目录 写在前面 独立性检验 χ2\chi^2χ2独立性检验 Fisher独立性检验 Cochran-Mantel-Haenszel χ2\chi^2χ2独立性检验 相关性分析 相关性检验 相关性检 ...

  8. R语言学习笔记(1~3)

    R语言学习笔记(1~3) 一.R语言介绍 x <- rnorm(5) 创建了一个名为x的向量对象,它包含5个来自标准正态分布的随机偏差. 1.1 注释 由符号#开头. #函数c()以向量的形式输 ...

  9. R语言数据分析笔记——Cohort 存留分析

    作者简介Introduction 杜雨,EasyCharts团队成员,R语言中文社区专栏作者,兴趣方向为:Excel商务图表,R语言数据可视化,地理信息数据可视化. 个人公众号:数据小魔方(微信ID: ...

  10. r语言c函数怎么用,R语言学习笔记——C#中如何使用R语言setwd()函数

    在R语言编译器中,设置当前工作文件夹可以用setwd()函数. > setwd("e://桌面//") > setwd("e:\桌面\") > ...

最新文章

  1. 令牌桶算法和漏桶算法有什么区别_高并发之限流,到底限的什么鬼 (精品长文)...
  2. java虚拟路由器_Java实现模拟路由功能
  3. springboot使用redis(StringRedisTemplate的常用方法)
  4. HTML 中CSS 图像详解
  5. 通过srvctl add命令添加database信息到srvctl管理器
  6. MATLAB图形插入标题
  7. 基于神念TGAM的脑波小车(4)
  8. java发送163邮件
  9. iOS开发:Pokemon Go试玩,未越狱的iPhone伪造GPS定位信息
  10. 【笔记】Ubuntu 18.04 安装 PyQt4
  11. 目标跟踪 | 目标跟踪算法总结
  12. 梦幻手游网页版校验服务器失败,梦幻神域手游服务器验证失败进不去解决办法...
  13. android unity 瘦身,unity/unity3d编译成android apk包瘦身方法
  14. 有意思的hand-crafted features based IQA的论文吧2(图像质量评价)
  15. Word和Excel中的常用办公操作
  16. iOS something is trying to start the receiver simultaneously from more than one thread
  17. nextjs 添加子目录
  18. 基于Java Agent内存马
  19. 银行卡数据标签及其应用
  20. 关于爱情的四个寓言故事

热门文章

  1. 在Excel中世纪秒和时间字符串的转化
  2. Linux的文件管理
  3. flutter apk 打包
  4. pageX、clientX、screenX、offsetX、layerX、x
  5. OrchardHUN.TrainingDemo 学习记录(2)-Migration中,添加contentPart 和widget
  6. 一个实体对象不能由多个 IEntityChangeTracker 实例引用
  7. SQL Server 数据库连接字符串的声明
  8. Proteus模拟STM32F103R6微控制器之串口通信USART的方法
  9. 2020陕西高考全省理科最高分725、文科最高分700
  10. 上拉电阻和下拉电阻的作用详解