检测系列--RCNN系列

一.RCNN

框架:

1.selective search

2,区域预处理,尺寸缩放到227×227

3.利用Alexnet(去掉最后分类层,4096维向量),做特征提取,一个物体一个SVM分类,(当时认为SVM比softmax分类好)bounding box回归

4.正负样本选择方法

全连接层最后一层换成分类数+背景,IOU>0.5,正样本,IOU<0.5,负样本,每个类别对应一个SVM分类器

5.回归,利用的是第五层卷积特征做回归

6.测试,测试出来的最大分值的框,做NMS去掉多余的框

7.评价指标,召回率例如是坏人就抓回监狱

速度慢的原因:每个区域都需要卷积,用于SVM、b-box 回归的特征需要存储到磁盘中,这将需要占用大量的磁盘空间,而且提取这些特征也会耗费好多时间。

问题:训练时间很长(84小时),Fine-tune(18)+ 特征提取(63)+ SVM/Bbox训练(3),测试阶段很慢:VGG16一张图片47s,复杂的多阶段训练。

二.SPP-Net

1.改进:(1)共享卷积,直接在Conv5用特征

(2)引入空间金字塔池化(spp),为不同尺寸的区域在conv5输出上提取特征,映射到尺寸固定的全连接层

2.spp网络结构

3.分块,块里面做最大池化

4.特征位置与原图对应

5.训练过程:注意与RCNN区别,冻结卷积层权重

问题:
• 继承了R-CNN的剩余问题,需要存储大量特征,复杂的多阶段训练,训练时间仍然长(25.5小时),Fine-tune(16)+ 特征提取(5.5)+ SVM/Bbox训练(4),带来了新问题,SPP层之前的所有卷积层参数不能fine tune,误差过不了spp层,因为计算困难。

三.Fast R-CNN

1.改进:

比R-CNN,SPP-Net更快的trainng/test,更高的mAP, 实现end-to-end(端对端)单阶段训练,多任务损失函数(Multi-task loss), 所有层的参数都可以fine tune, 不需要离线存储特征文件

2.引入新技术

感兴趣区域池化层(RoI pooling layer)替换spp层, 多任务损失函数(Multi-task loss)

3.roi pooling,注意:spp和roi的区域都是通过slective search选择的,此时误差可传过roi了。

roi pooling缺点:

由于两次量化带来的误差;

(1)将候选框边界量化为整数点坐标值。

(2)将量化后的边界区域平均分割成 k x k 个单元(bin),对每一个单元的边界进行量化。

针对修改的roi align

  • 遍历每一个候选区域,保持浮点数边界不做量化。
  • 将候选区域分割成k x k个单元,每个单元的边界也不做量化。
  • 在每个单元中计算固定四个坐标位置,用双线性内插的方法计算出这四个位置的值,然后进行最大池化操作。

对小目标检测有很大改善 

https://www.cnblogs.com/zf-blog/p/9934086.html

4.重叠区域误差传播做法

5

5.修正框

6.损失函数

7.奇异值分解,加速全连接

8.性能比较

四,Faster R-CNN

1.网络结构

如上图,一副P*Q的图像,先缩放到M*N大小,然后进入backbone提取特征,对于RPN,先用3*3卷积,在两个1*1卷积分别生成positive anchors和对应bounding box regression偏移量,然后proposal层负责综合positive anchors和对应bounding box regression偏移量获取proposals.而roi pooling则利用proposals提取出相应的feature map进入后续的全连接分类.

2.改进

RPN理解

https://blog.csdn.net/bingochenjx/article/details/78422290

rpn代替selective search

3.RPN,conv5经3x3卷积核,1x1卷积核得到的特征去做回归,另一个1x1卷积核得到的特征去做分类。

4.anchor选择方法,一般k=9

首先我们需要知道 anchor 的本质是什么,本质是 SPP(spatial pyramid pooling) 思想的逆向。而SPP本身是做什么的呢,就是将不同尺寸的输入 resize 成为相同尺寸的输出。所以SPP的逆向就是,将相同尺寸的输出,倒推得到不同尺寸的输入。接下来是 anchor 的窗口尺寸,这个不难理解,三个面积尺寸(128^2,256^2,512^2),然后在每个面积尺寸下,取三种不同的长宽比例(1:1,1:2,2:1).这样一来,我们得到了一共9种面积尺寸各异的 anchor 。示意图如下 
archor 
至于这个 anchor 到底是怎么用的,这个是理解整个问题的关键。 
下面是整个 Faster RCNN 结构的示意图: 
这里写图片描述

利用anchor是从第二列这个位置开始进行处理,这个时候,原始图片已经经过一系列卷积层和池化层以及relu,得到了这里的 feature:51x39x256(256是层数)

在这个特征参数的基础上,通过一个3x3的滑动窗口,在这个51x39的区域上进行滑动,stride=1padding=2,这样一来,滑动得到的就是51x39个3x3的窗口。对于每个3x3的窗口,作者就计算这个滑动窗口的中心点所对应的原始图片的中心点

然后作者假定,这个3x3窗口,是从原始图片上通过SPP池化得到的,而这个池化的区域的面积以及比例,就是一个个的anchor。换句话说,对于每个3x3窗口,作者假定它来自9种不同原始区域的池化,但是这些池化在原始图片中的中心点,都完全一样。这个中心点,就是刚才提到的,3x3窗口中心点所对应的原始图片中的中心点。

如此一来,在每个窗口位置,我们都可以根据9个不同长宽比例、不同面积的anchor,逆向推导出它所对应的原始图片中的一个区域,这个区域的尺寸以及坐标,都是已知的。而这个区域,就是我们想要的 proposal。所以我们通过滑动窗口和anchor,成功得到了 51x39x9 个原始图片的 proposal

接下来,每个 proposal 我们只输出6个参数:每个 proposal 和 ground truth 进行比较,把与ground truth 中重叠最大的 bounding box 的iou当成是这个proposal的iou, iou>0.7, 认为这个proposal是positiveiou<0.3, 认为这proposal是negative,我们希望positive的proposal包含前景的概率高一些,negative包含背景的概率高一些;iou位于这之间的不做处理。 
然后对每个proposal进行分类和bounding box regression:得到的前景概率和背景概率(2个参数)(对应图上的 cls_score);由于每个 proposal 和 ground truth 位置及尺寸上的差异,从 proposal 通过平移放缩得到 ground truth 需要的4个平移放缩参数(对应图上的 bbox_pred)。 
所以根据我们刚才的计算,我们一共得到了多少个anchor box呢? 51 x 39 x 9 = 17900 
约等于 20 k

4,训练过程,先训练rpn做好anchor,在做fast rcnn,注意共享卷积层以后,要冻结卷积层

5,性能比较

6,网络总体比较

fast rcnn多任务损失函数

7.带FPN的RPN

        

对于FPN的话,也就是需要将每一层feature map逐个输入到RPN网络,同时每个feature map负责不同大小的目标.

 

五.R-FCN

1,全连接会丧失空间信息

2,红色框是R-FCN的特有之处,所有通道数等于分类数+背景

3,每类对应每层通道

4,feature map   可视化

5,损失函数

六.cascade rcnn

faster rcnn存在问题:

train时:RPN阶段选择2000左右proposals,在选择IOU大于一定阈值,比如0.5的,一般会选择128个,满足1:3比例,在进入fast rcnn经过roi pooling 在进行分类与回归;

inference:RPN阶段选择300左右proposals,直接roi pooling进行分类与回归,那么这里就没有iou的选择。这里就能看出train和inference时,回归的框质量明显不一样,也就是mismatch问题。通常阈值取0.5时,mismatch问题还不会很严重

从实验看出来推理时只有RPN选择的iou和训练时候的iou接近是,性能才最好,否则就是mismatch问题.也就看出来了单一阈值训练出的检测器效果非常有限,单一阈值不能对所有的Proposals都有很好的优化作用.

上图就是cascade rcnn框架,RPN提出的proposals大部分质量不高,导致没办法直接使用高阈值的detector,Cascade R-CNN使用cascade回归作为一种重采样的机制,逐stage提高proposal的IoU值,从而使得前一个stage重新采样过的proposals能够适应下一个有更高阈值的stage。对于(b)detector会改变样本的分布,这时候再使用同一个共享的H对检测肯定是有影响的;对于(c)c3高质量检测头容易过拟合,但是还要去预测低质量框,检测效果更差。

参考:

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/493450.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Verilog HDL语言设计实现D触发器+计数器

分别采用结构描述和行为描述方式设计一个基本的D触发器&#xff0c;在此基础上&#xff0c;采用结构描述的方式&#xff0c;用8个D触发器构成一个8位移位寄存器。进行功能仿真&#xff0c;查看结果&#xff0c;把上述内容整理到实验报告。&#xff08;1&#xff09;行为描述:单…

2018年全球十大新兴技术:细胞植入人体、营养人造肉……你想试试吗?

来源&#xff1a;光明日报摘要&#xff1a;在不久的将来&#xff0c;技术革新将如何改变我们的生活&#xff1f;人工智能将大幅提升新药物和新材料的开发速度&#xff1b;新型诊断工具将打造更先进的个性化医疗&#xff1b;如果你生病了&#xff0c;医生将可以在你体内植入活细…

检测系列--YOLO系列

开头语&#xff1a;RCNN系列&#xff0c;需要区域候选框&#xff0c;即便最后是多任务损失函数&#xff0c;但回归和分类各是一块是很明显的&#xff0c;而yolo要把分类问题转换成回归&#xff0c;这样的話就全是回归。 一.yolo v1 1,介绍&#xff0c;此时输入size要一致448*…

Verilog HDL语言实现ROM、RAM+有限状态机

利用MegaWizard实现创建RAM和ROM。&#xff08;1&#xff09;建立1个32单元8bit的RAM&#xff0c;并将0-31填入该RAM&#xff1b;&#xff08;2&#xff09;建立1个32单元8bit的ROM&#xff0c;建立.mif文件填入数据&#xff0c;并读出来显示。 (1)、RAM 功能代码: module sh…

重磅!亚马逊将在2019年全面弃用Oracle数据库

来源&#xff1a;AI 前线摘要&#xff1a;11 月 29 日&#xff0c;AI 前线获悉&#xff0c;亚马逊 AWS 首席执行官 Andy Jassy 在正在美国拉斯维加斯召开的 AWS re&#xff1a;Invent 2018 中表示&#xff1a;到 2019 年底&#xff0c;亚马逊将全面放弃使用 Oracle 数据库&…

数字图像处理实验6图像编码

一、实验目的 &#xff08;1&#xff09;了解图像编码的目的及意义&#xff0c;加深对图像编码的感性认识。 &#xff08;2&#xff09;熟练掌握哈夫曼编码的实现与应用。 &#xff08;3&#xff09;掌握行程长度编码的实现与应用&#xff0c;尤其是BMP和PCX文件的行程长度编…

机器人日行十万步却无需动力源!究竟如何完美的机械结构让你开始怀疑人身...

来源&#xff1a;机器人大讲堂摘要&#xff1a;上图这个机器人可不简单&#xff0c;它是世界纪录的保持者&#xff0c;目前最新的纪录是连续步行27小时&#xff0c;总长72公里&#xff08;相当于十万步还要多&#xff09;。而最最关键的是&#xff0c;它完全凭借自己完美的机械…

数字图像处理实验5图像复原

一、实验目的 &#xff08;1&#xff09;了解图像复原的目的及意义&#xff0c;加深对图像复原理论的认识。 &#xff08;2&#xff09;掌握维纳滤波复原基本原理。 &#xff08;3&#xff09;掌握约束最小二乘方复原方法。 &#xff08;4&#xff09;掌握盲解卷积复原方法…

MVVM模式的一个小例子

使用SilverLight、WPF也有很长时间了&#xff0c;但是知道Binding、Command的基本用法&#xff0c;对于原理性的东西&#xff0c;一直没有深究。如果让我自己建一个MVVM模式的项目&#xff0c;感觉还是无从下手&#xff0c;最近写了一个小例子&#xff0c;贴上代码&#xff0c;…

实现两个点集的欧式距离和cos距离和索引值寻找(含有两种解法,for循环和矩阵操作)

一.计算欧式距离 1&#xff0c;直接for循环 两个点集points1&#xff0c;points2&#xff0c;用dist来存储距离 points1np.array([[1,2],[3,4]]) points2 np.array([[5, 6],[7,8]]) dist np.zeros(shape[points1.shape[0],points2.shape[0]]) for i in range(points1.sha…

数字图像处理实验四图像频域增强

一、实验目的 &#xff08;1&#xff09;了解图像增强的目的及意义&#xff0c;加深对图像增强的感性认识&#xff0c;巩固所学的图像增强的理论知识和相关算法。 &#xff08;2&#xff09;熟练掌握低通、高通、带通、同态滤波器的使用方法&#xff0c;明确不同性质的滤波器…

卡耐基梅隆大学专家谈核心技术市场化:「AI 周边相关机遇最大」

来源&#xff1a;ZDnet、机器之能编译 | 张玺摘要&#xff1a;技术市场化之难在哪&#xff1f;创业家最常犯什么错误&#xff1f;每位立志创业的朋友都应该研究下这篇对卡耐基梅隆 (CMU) 大学专家的采访。CMU 是全美技术转移最成功的机构之一&#xff0c;斥巨资帮助全校师生实现…

数字图像处理实验三图像增强

一、实验目的 &#xff08;1&#xff09;了解图像增强的目的及意义&#xff0c;加深对图像增强的 感性认识&#xff0c;巩固所学的图像增强的理论知识和相 关算法。 &#xff08;2&#xff09;熟练掌握直方图均衡化和直方图规定化的计算过 程。 &#xff08;3&#xff09;熟…

matplotlib与seaborn的一些使用

1.plt.plot画线画点 a np.array([[1, 2], [3, 4]]) print(a[:, 0]) plt.plot(a[:, 0], a[:, 1]) plt.show() plt.plot(a[:, 0], a[:, 1], o,colorred) plt.show()&#xff03;添加风格 plt.plot(x,y,colorred,linewidth1.0,linestyle--) #设置x轴范围 plt.xlim((-1,2)) # …

无人驾驶汽车想要“普渡众生”,还要经历15个磨难

来源&#xff1a;Forbes 、网易智能摘要&#xff1a;无人驾驶汽车的未来与电动平衡车的历史有什么关系吗&#xff1f;电动平衡车也曾被预言将彻底改变交通。史蒂夫•乔布斯曾经说&#xff0c;城市将围绕这一设备重新设计&#xff1b;约翰•杜尔说&#xff0c;它将比互联网更大…

SQL的各种使用方法

一、Select语句例子 使用子查询查询employees表中&#xff0c;属于某一部门员工的姓名、职位、工薪、部门编号的信息 提示&#xff1a; 1)、需要关联employees表、departments表 2)、已知的信息为部门名称&#xff0c;部门名称由用户自己给出 按照要求写出SQL语句。 答案及…

正常矩形计算IOU与与NMS,多边形计算IOU

一&#xff0e;计算IOU def intersect(box_a, box_b):max_xy np.minimum(box_a[:, 2:], box_b[2:])min_xy np.maximum(box_a[:, :2], box_b[:2])inter np.clip((max_xy - min_xy), a_min0, a_maxnp.inf)return inter[:, 0] * inter[:, 1]def jaccard_numpy(box_a, box_b):&…

产业互联网受瞩目:互联网主战场从To C转向To B | 企鹅经济学

来源&#xff1a;科技日报摘要&#xff1a;最近&#xff0c;要论在互联网圈最火的词&#xff0c;非“产业互联网”莫属。如今&#xff0c;言必提产业互联网&#xff0c;已成为互联网圈的一种风潮。互联网的“上半场”已接近尾声&#xff0c;“下半场”的序幕正被拉开&#xff0…

json的用法

json格式 JSON格式&#xff1a;http://www.json.org/ python和JSON的关系请参考&#xff1a;http://docs.python.org/library/json.html JSON建构有两种结构&#xff1a; 1. “名称/值”对的集合&#xff08;A collection of name/value pairs&#xff09;。不同的语言中&#…

数据库设计方法

一、延续训练题 假设你是一个小的录影带出租店的老板。你的出租店里面有3000部电影。每部电影都有DVD或VHS录像带号码。对于每部电影&#xff0c;需要知道它的标题和类别&#xff08;如&#xff0c;喜剧&#xff0c;悬疑&#xff0c;剧情&#xff0c;动作&#xff0c;战争&…