参考B站视频Pytorch 搭建自己的Faster-RCNN目标检测平台(Bubbliiiing 深度学习 教程)_哔哩哔哩_bilibili

什么是Faster-RCNN

显然,我们可以人眼可以一眼就看到猫在图片的位置,但是计算机要怎么确认呢,即框怎么确定,需要中心点的x轴,y轴,宽和高四个参数。

确定边界框位置的四个参数怎么由Faster-RCNN得到呢

当一张图片被传入到Faster-RCNN中,一般会被resize到600*800尺寸(长宽比不变,不会失真),再被传入主干特征提取网络,可以得到38*50的特征层,相当于将图片分成38*50大小的网格,每个网格里有若干个先验框,利用RPN可以获得先验框的调整参数和是否包含物体,此时便得到了建议框,利用建议框在公共特征层上进行截取,截取到的不同特征层可以反应图片上的不同位置,截取到的内容传输到ROI pooling层中,为了满足不同大小图片的检测,ROI pooling层会将截取到的不同大小的特征层resize到一样的大小,然后利用分类和回归网络判断截取到的图片中是否包含目标,并对建议框进行调整,调整后的结果即是我们最终的预测结果。

Faster-RCNN整体结构介绍

Faster-RCNN是一种two-stage算法,与one-stage算法相比,更加复杂和慢,但是检测精度更高。

在Faster-RCNN中,首先将图像短边resize为600,长宽比不变,即图像不会失真。

然后经过特征提取获得的公用特征层在图像中就是Feature Map,其有两个应用,一个是和ROIPooling结合使用、另一个是进行一次3x3的卷积后,进行一个18通道的1x1卷积,还有一个36通道的1x1卷积。18通道的卷积可以拆分为9 x 2的卷积,36通道的卷积可以拆分为9 x 4的卷积。

Q:为什么要这么拆分呢

A:跟共享特征层有关,当我们输入的图片的shape是600x600x3的时候,公用特征层的shape就是38x38x1024,相当于把输入进来的图像分割成38x38的网格,然后每个网格存在9个先验框,这些先验框有不同的大小。

在Faster-RCNN中,num_priors也就是先验框的数量是9,所以两个1x1卷积的结果实际上是:

9 x 4的卷积-先验框的调整: 4—代表是对先验框的4个参数进行调整。用于预测公用特征层上每一个网格点上每一个先验框的变化情况。(为什么说是变化情况呢,这是因为Faster-RCNN的预测结果需要结合先验框获得预测框,预测结果就是先验框的变化情况。)

9 x 2的卷积 -先验框内部是否包含物体:2—一个代表背景,一个代表有物体。用于预测公用特征层上 每一个网格点上每一个先验框内部是否包含了物体。

到此位置还只是粗略的一个框的获取,也就是一个建议框。然后我们会在建议框里面继续找东西。

两次卷积之后,得到建议框,建议框和共享特征层Feature Map结合后传入到ROIPooling层中,在ROIPooling层利用建议框对共享特征层进行截取,因为建议框的大小不一致,所以截取后得到的图像尺寸也不一样,然后对所有的局部特征层进行分区域的池化,获得的局部特征层大小就一样,再利用获得的所有的局部特征层进行分类和回归预测,回归预测对建议框进行调整得到最终的预测框,分类是确定建议框是否有物体和物体类别。

Resnet50主干提取网络介绍(论文中用的是VGG)

ResNet50有两个基本的块,分别名为Conv Block和Identity Block,这两个都是残差网络结构。其中Conv Block输入和输出的维度是不一样的,所以不能连续串联,它的作用是改变网络的维度;Identity Block输入维度和输出维度相同,可以串联,用于加深网络的。

由下面两图可知,Conv Block和Identity Block的最大差别是残差边上是否有卷积,通过改变卷积的步长和通道数可以改变维度,因此Conv Block可以改变网络的维度。

Conv Block的结构如下:

Identity Block的结构如下:

当我们的输出维度和输入维度不一致时,bottleneck(瓶颈结构)是Conv Block,当维度不发生变化,bottleneck(瓶颈结构)是Identity Block。瓶颈结构可以更好地提取特征,加深整个网络,减少参数量。

Resnet50就是bottleneck(Conv Block+Identity Block)堆叠构成的。

Faster-RCNN的主干特征提取网络部分只包含了长宽压缩了四次的内容,第五次压缩后的内容在ROI中使用。即Faster-RCNN在主干特征提取网络所用的网络层如图所示。
以输入的图片为600x600为例,shape变化如下:

整体流程

扩展(R-CNN和FastRCNN)

参考B站视频1.1Faster RCNN理论合集_哔哩哔哩_bilibili

R-CNN算法流程

可分为四个步骤

---一张图像生成1k~2k个候选区域(使用selective search方法)

---对每个候选区域,使用深度网络提取特征

---特征送入每一类的SVM分类器,判别是否属于该类

---使用回归器精细修正候选框位置

1、候选区域的生成

2、对每个候选区域,使用深度网络提取特征

3、特征送入每一类的SVM分类器,判定类别

4、使用回归器精细修正候选框位置

Fast-RCNN

与RCNN对比可知,从第二步开始就完全不一样了,第二步两者的对比如下

 注意:RCNN中的分类器类别是20,没有背景类别。

看一下结构的变化(逐渐变成端到端的目标检测器)

关于Faster-RCNN相关推荐

  1. 理解Faster R-CNN

    首先放R-CNN的原理图 显然R-CNN的整过过程大致上划分为四步: 1.输入图片 2.生成候选窗口 3.对局部窗口进行特征提取(CNN) 4.分类(Classify regions) 而R-CNN的 ...

  2. 目标检测——Faster R-CNN论文阅读

    论文阅读--Faster R-CNN:Towards Real-Time Object Detection with Region Proposal Networks 文章目录 论文阅读--Faste ...

  3. 目标检测算法Faster R-CNN简介

    在博文https://blog.csdn.net/fengbingchun/article/details/87091740 中对Fast R-CNN进行了简单介绍,这里在Fast R-CNN的基础上 ...

  4. 里程碑式成果Faster RCNN复现难?我们试了一下 | 附完整代码

    作者 | 已退逼乎 来源 | 知乎 [导读]2019年以来,除各AI 大厂私有网络范围外,MaskRCNN,CascadeRCNN 成为了支撑很多业务得以开展的基础,而以 Faster RCNN 为基 ...

  5. 完整代码+实操!手把手教你操作Faster R-CNN和Mask R-CNN

    点击上方↑↑↑蓝字关注我们~ 「2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑ 机器视觉领域的核心问题之一就是目标检测(Object Detection),它的任务是找出图像当中所有感 ...

  6. Grid R-CNN解读:商汤最新目标检测算法,定位精度超越Faster R-CNN

    作者 | 周强 来源 | 我爱计算机视觉 Grid R-CNN是商汤科技最新发表于arXiv的一篇目标检测的论文,对Faster R-CNN架构的目标坐标回归部分进行了替换,取得了更加精确的定位精度, ...

  7. 你真的理解Faster RCNN吗?捋一捋Pytorch官方Faster RCNN代码

    作者丨白裳@知乎 来源丨https://zhuanlan.zhihu.com/p/145842317 编辑丨极市平台 目前 pytorch 已经在 torchvision 模块集成了 FasterRC ...

  8. 经验 | 详解 Faster R-CNN目标检测的实现过程

    计算机视觉联盟  报道 转载于 :机器之心 Faster R-CNN 实现代码:https://github.com/tryolabs/luminoth/tree/master/luminoth/mo ...

  9. 【资源】Faster R-CNN原理及代码讲解电子书

    <Faster R-CNN原理及代码讲解>是首发于GiantPandaCV公众号的教程,针对陈云大佬实现的Faster R-CNN代码讲解,Github链接如下: https://gith ...

  10. 深度学习目标检测模型全面综述:Faster R-CNN、R-FCN和SSD

    为什么80%的码农都做不了架构师?>>>    Faster R-CNN.R-FCN 和 SSD 是三种目前最优且应用最广泛的目标检测模型,其他流行的模型通常与这三者类似.本文介绍了 ...

最新文章

  1. java加密方式有哪些_面完平安JAVA,他们说了这些
  2. java之包装类与BigInteger、BigDecimal
  3. 武大计算机专业湖北录取分数线,武汉大学2020年本科一批分专业录取分数统计(湖北省)...
  4. opencv4.4.0函数手册_【文档更新】发布100ask_imx6ull用户手册V2.0和全新烧写工具
  5. python自关联_django自关联,auth模块
  6. 新建jsp报错“The superclass javax.servlet.http.HttpServlet was not found on the Java Build Path”...
  7. spriteatlas 白屏的问题_Discuz白屏问题解决思路
  8. 剑指offer——面试题64:数据流中的中位数
  9. java flash_存在漏洞的Java及Flash版本使用者众多
  10. 社区活动 | Apache RocketMQ × Apache Flink Meetup · 上海站
  11. linux操作命令之压缩命令
  12. CMMI4级——几个直接与项目管理相关的PA(PP、PMC、IPM、RSKM、QPM、CAR)
  13. 五面拿下阿里飞猪offer,java基础知识梳理
  14. DotSpatial入门
  15. 视频课程:CMOS模拟集成电路版图设计
  16. 如何用Python写一个小游戏(1)
  17. CSS动画翻转的效果
  18. python结束线程_python终止线程
  19. ASP.Net Core实战——身份认证(JWT鉴权)
  20. axure 彻底删除lib_【AutoCAD 卸载工具,完全彻底删除清理干净AutoCAD各种残留注册表和文件】...

热门文章

  1. SpringBoot应用监控(带邮件警报)
  2. 记一次失败的项目经历
  3. 记模拟器出现横竖屏切换闪屏问题
  4. smartbi v7 Linux,安装Smartbi
  5. Junit Rule的使用
  6. 2019-01-21-mqtt-mosquitto-启动Unable to load CA certificates
  7. pycharm txt编辑器制表符与代码中\t不匹配
  8. mysql索引,索引结构,索引类型,索引失效
  9. ecshop 模板支持php,ecshop模板文件不支持php语句解决办法
  10. javaScript实现a页面触发b页面事件-小小笔记