“  要得到,你必须要付出,要付出,你还要学会坚持。如果你真的觉得很难,那你就放弃,但放弃你就不要抱怨。”

2018年8月31日12:00:00

8月的最后一天了~

真的好累

坚持,再坚持。

一想到上了这么多年学就是为了现在,就~

好吧,不废话了

把自己最近总结的关键点记录下来:

先解释下吧(自己总结的):

Faster-RCNN是2015年提出的第一个真正意义上的端到端的深度学习检测算法,其最大的创新之处就在于通过添加RPN网络,基于Anchor机制来生成候选框,(代替selective search),最终将特征提取、候选框选取、边框回归和分类都整合到一个网络中,从而有效的提高检测精度和检测效率。具体的流程就是将输入图像缩放以后进入到卷积层提取特征得到feature map,然后特征图送入RPN网络生成一系列object可能的候选框,接下来将原始的feature maps和RPN输出的所有候选框(ROI矩阵(N*5))输入到ROI pooling层,提取收集proposal,并计算出固定大小7×7的proposal feature maps,送入全连接层进行目标分类与坐标回归。

好像只要知道Faster-RCNN的,都知道其创新之处在于RPN网络,但是却有很少真正懂ROI Pooling的,其实Faster-RCNN最关键的就是这两部分,下面分别来说:

Region Proposal Networks(RPN):

RPN:RPN的核心思想就是使用”滑动窗口+anchor机制”来生成候选框。具体方法是在前面卷积层卷积得到的40*60的特征图(256)上,利用滑动窗口的方式(也就是3×3卷积核),在每个滑动窗口中心点构造9个不同长宽比不同尺度的候选框(40*60*9≈2万个),并将其映射(映射比例16)到rescale图像中框出来,舍弃超出边界的预proposal,再根据每个区域的softmax score进行从大到小排序,提取前2000个预proposal,对这个2000个进行NMS(非极大值抑制),最后将得到的再次进行排序,输出300个proposal给faster RCNN进行预测。(注意此时rcnn的预测类别不包括背景,因为RPN输出的已经默认是前景了)

RPN是一个卷积层(256维)+ relu(激活函数) + 左右两个层的(clc layer 和 reg layer)的小网络。RPN在feature map上用3×3的滑动窗口进行卷积,卷积步长stride=1,填充padding=2得到可以被9个anchor区域共享的256d特征,输给clc layer和reg layer后,也就是只要一次前向,就同时预测k个区域的前景、背景概率(1个区域2个scores,所以得到2k个scores),以及bounding box(1个区域4个coordinates,所以是4k个coordinates),最终每一个bbox都有一个6维的向量,前2维用来判断该框内是否有物体,后面4个维度用来判断该bbox里物体的坐标。另外,在训练RPN筛选候选框时,设定跟任意ground truth(GT) IOU的阈值为0.7,大于0.7的anchor标记为前景(正标签),小于0.3的标定为背景(负样本),然后在分类层,损失函数用softmax loss,RPN只对有标签的区域计算loss,非正非负的区域不算损失,对训练没有作用。

而且,在训练的过程中,FasterRCNN采用交替训练的方式,用初始化的权值训练RPN,再用RPN提取的候选区域训练卷积网络,更新权值。

ROI-Pooling

ROI-Polling:Roi pooling其实就是将RPN得到的大约300个候选框映射到卷积特征图上并抠出来的过程,并且最重要的是经过ROI池化,不同大小的方框可以得到固定大小的特征图。具体的操作如下:1)根据输入的image,将Roi映射到feature map对应的位置;2)将映射后的区域划分为7×7大小的sections(sections数量和输出的维度相同7×7); 3)对每个section(可以不一样大)进行max pooling操作。这样我们就可以从不同大小的方框得到固定大小的对应的maps。而且输出的feature maps的大小不取决于ROI和卷积feature maps大小。ROI pooling最大的好处就在于极大地提高了训练和测试速度(处理速度)。

下面进行补充:(概念性解释)

说说GDA吧

随机梯度下降算法(GDA)成了训练深度网络的主流方法。尽管随机梯度下降法对于训练深度网络简单高效,但是它有个毛病,就是需要我们人为的去选择参数,比如学习率、参数初始化、权重衰减系数、Drop out比例(丢弃)等。这些参数的选择对训练结果至关重要,以至于我们很多时间都浪费在这些的调参上。

什么是BN层?有什么用

BN(Batch Normalization)层的作用 Batch Normalization是由google提出的一种训练优化方法,在网络的每一层输入的时候,插入了一个归一化层,归一化处理以后再进入网络的下一层。这样可以(1)加速收敛(2)控制过拟合,可以少用或不用Dropout和正则(3)降低网络对初始化权重不敏感(4)允许使用较大的学习率。Dropout是在训练期间,将隐含层的一些神经元随机丢弃,防止模型出现过拟合。

什么是过拟合(over-fitting)和欠拟合(under-fitting)?以及解决方法?

所谓过拟合(over-fitting)其实就是在模型训练时,所提取的特征过于丰富,以至于模型在训练集中表现得过于优越而在验证数据集以及测试数据集中表现不佳。举个例子:我要训练一个识别狗的模型,而我的样本中恰好都是泰迪,等样本训练完以后我那一张金毛的测试图片,很可能结果就输出不是一条狗,因为这个模型在训练的时候基本上是按照泰迪的特征来打造的,这就造成了模型的过拟合。欠拟合(under-fitting)则是提取泰迪的特征比较少,导致训练出来的模型不能很好地匹配,表现得很差,甚至泰迪都无法识别。(多增加一些特征提取层或采用更复杂的网络)

方法:正则化(regulation)即在定义的损失函数后面加了一项永不为0的部分,这样采用梯度下降算法就不会使模型中的损失函数趋近0。另外增大训练样本规模同样也可以防止过拟合。

pooling 、Roi pooling 和Roi align的区别:

General Pooling其实就是对卷积层得到的特征图进行降采样,一方面缩小了特征图尺寸(也可以说降低卷积层输出的特征向量),起到了降维的作用,另一方面丢掉了一些特征信息一定程度上提高了模型的泛化能力,可以防止出现过拟合。一般有平均池化mean pooling和最大池化max pooling。ROI Pooling顾名思义,是Pooling层的一种,而且是针对RoIs的Pooling,他的特点是输入特征图尺寸不固定,但是输出特征图尺寸固定。

RoIPooling 采用的是INTER_NEAREST(即最近邻插值),即在resize时,对于 缩放后坐标不能刚好为整数 的情况,采用了 粗暴的四舍五入,相当于选取离目标点最近的点。RoIAlign把最近邻插值换成了双线性插值,即从原图到特征图的ROI映射直接使用双线性插值,不取整,这样误差会小很多,经过池化后再对应回原图的准确性也更高些,可以保证图像的空间对称性(Alignment)。

mAP咋计算的?

平均精度(AP)、平均精度均值(mAP)、精确率(precision)、召回率(recall)、交并比IOU、置信度阈值(confidence thresholds)

那到底啥是准确率 – precision 和召回率 – recall:

若一个待检测的物体为狗,我们将被正确识别的狗,即检测为狗实际也为狗,称为True positives。将被正确识别的猫,即检测为猫实际也为猫,称为True negatives。被错误识别为狗的猫称为 False positives,被错误识别为猫的狗称为 False negatives。

准确率可以反映一个类别的预测正确率 。
recall 的计算为:

准确率和召回率是互相影响的,因为如果想要提高准确率就会把预测的置信率阈值调高,所有置信率较高的预测才会被显示出来,而那一些正确正预测(True Positive)可能因为置信率比较低而没有被显示了。一般情况下准确率高、召回率就低,召回率低、准确率高,如果两者都低,就是网络出问题了。一般情况,用不同的阀值,统计出一组不同阀值下的精确率和召回率,如下图:

Precision其实就是在识别出来的图片中,True positives所占的比率。也就是所有被识别出来的狗中,真正的狗所占的比例。Recall 是测试集中所有正样本样例中,被正确识别为正样本的比例。也就是被正确识别出来的飞机个数与测试集中所有真实飞机的个数的比值。Precision-recall 曲线:改变识别阈值,使得系统依次能够识别前K张图片,阈值的变化同时会导致Precision与Recall值发生变化,从而得到曲线。曲线下的面积就是AP,mAP是多个类别AP的平均值。

具体的呢:

首先设定一组阈值,[0, 0.1, 0.2, …, 1]。然后对于recall大于每一个阈值(比如recall>0.3),我们都会得到一个对应的最大precision。这样,我们就计算出了11个precision。AP即为这11个precision的平均值。这种方法英文叫做11-point interpolated average precision。​

当然PASCAL VOC CHALLENGE自2010年后就换了另一种计算方法。新的计算方法假设这N个样本中有M个正例,那么我们会得到M个recall值(1/M, 2/M, ..., M/M),对于每个recall值r,我们可以计算出对应(r' > r)的最大precision,然后对这M个precision值取平均即得到最后的AP值。

好啦~

加油,各位,

自己也加油!

Faster-RCNN的关键点总结相关推荐

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

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

  2. Faster R-CNN改进篇(一): ION ● HyperNet ● MS CNN

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/linolzhang/article/details/74159463 一. 源起于Faster 深度 ...

  3. 如何用深度学习进行CT影像肺结节探测(附有基于Intel Extended Caffe的3D Faster RCNN代码开源)

    近期宜远智能参加阿里天池医疗AI大赛,用3D Faster RCNN模型在CT影像的肺结节探测上,取得了较好的成绩,特别是在计算资源充足的情况下,模型效果表现优异.这是他们的经验分享(https:// ...

  4. 人工智能目标检测模型总结(一)——R-CNN、Fast R-CNN、Faster R-CNN

    前言 目标检测是人工智能的一个重要应用,就是在图片中要将里面的物体识别出来,并标出物体的位置,一般需要经过两个步骤: 1.分类,识别物体是什么 2.定位,找出物体在哪里 除了对单个物体进行检测,还要能 ...

  5. 深度学习目标检测之RCNN、SPP-net、Fast RCNN、Faster RCNN

    一.目标检测介绍 目标检测(目标提取)是一种基于目标几何和统计特征的图像分割,将目标的分割和识别合二为一,主要是明确从图中看到了什么物体.它们分别在什么位置.传统的目标检测方法一般分为三个阶段:首先在 ...

  6. 【论文解读】Faster R-CNN 实时目标检测

    前言 Faster R-CNN 的亮点是使用RPN来提取候选框:RPN全称是Region Proposal Network,也可理解为区域生成网络,或区域候选网络:它是用来提取候选框的.RPN特点是耗 ...

  7. 理解Faster R-CNN

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

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

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

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

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

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

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

最新文章

  1. 控制编译文件控制代码质量
  2. CTFshow php特性 web126
  3. 《大红包》电影观后感
  4. Python 编码规范 PEP 8
  5. json阅读器_Flutter小说阅读器系列一:使用Bloc模式获取起点小说关键字提示
  6. 折叠菜单,选择下拉(手风琴)
  7. qtableview删除选中行_如何批量删除PPT备注+如何修改模板信息
  8. 最强自定义PHP集成环境,系统缺失dll和vc也能正常运行
  9. ActiveX控件dsoFramer的使用(word、excel、PPT)
  10. 相同数据源情况下,使用Kafka实时消费数据 vs 离线环境下全部落表后处理数据,结果存在差异...
  11. sklearn中digits手写字体数据集
  12. Linux下SPI Flash-W25Q64驱动调试
  13. 集成运算放大器对输入级的要求
  14. 疫情期间大学生在线学习效果调查报告
  15. win10系统pyCharm安装及最新2018激活码
  16. 【物联网】物联网关键技术与应用分析
  17. 如何使用MDK建立STM32H7双核编译工程
  18. 怎么用python生成带二维码的照片_怎么制作二维码图片-Python 生成个性二维码
  19. 实验11-1-7 藏头诗 (15 分)
  20. 全球最受欢迎电商平台有哪些?这些平台怎么快速增加销量?

热门文章

  1. 接口授权时已经有access_token了为啥还需要refresh_token
  2. 论文阅读一《Region Proposal by Guided Anchoring》
  3. CODEVS 3977 炉石传说——圣骑士的逆袭
  4. 搭档之家|打造信息交互平台,推进合作新发展
  5. Linux GDB的实现原理
  6. 修改php fpm监听端口,怎样修正php fpm监听端口_后端开发
  7. MySQL中GA、RC、Alpha的区别
  8. 基于线性函数近似的安全强化学习 Safe RL with Linear Function Approximation 翻译 2
  9. 转:原来可以这样出书、写书?
  10. 左手手型投篮姿势教程