当前位置: 首页 > article >正文

深度学习-目标检测(二)Fast R-CNN

一:Fast R-CNN

Fast R-CNN 是一篇由Ross Girshick 在 2015 年发表的论文,题为 “Fast R-CNN”。这篇论文旨在解决目标检测领域中的一些问题,特别是传统目标检测方法中存在的速度和准确性之间的矛盾。

  论文摘要:本文提出了一种基于快速区域的卷积网络方法来处理目标检测。快速 R-CNN 建立在以前的工作,有效地分类目标建议使用深卷积网络。与以往的工作相比,快速 R-CNN 采用了一些创新,以提高训练和测试速度,同时也提高了检测的准确性。快速 Fast 训练非常深的 VGG16网络比 R-CNN 快9倍,测试速度快213倍,并在 PASCAL VOC 2012上获得更高的 mAP。与 SPPnet 相比,Fast R-CNN 训练 VGG16的速度快3倍,测试速度快10倍,而且更准确。

回顾一下RCNN:

1.获取候选区域:对于一张输入的图像,首先使用selective search算法获取2000个左右的候选区域,由于selective search生成的候选区域是大小不一致的区域,而后续的卷积神经网络中的全连接层需要保证固定大小的输入,因此在输入卷积网络之后将其缩放至固定大小的图像;

2.获取图像特征:将图像输入到卷积神经网络中获取图像特征,这一部分可以采用常用的图像卷积神经网络如VGGNet,AlexNet等。

3.获取区域类别:在初步获得目标的位置之后,需要获取目标的类别,这一步采用SVM分类器来判断当前区域属于哪个类别。

4.微调区域位置:尽管候选区域已经初步目标的位置,但是这个区域比较粗糙,因此使用回归器对区域位置进行微调

1.对于R-CNN改进:

1.提出一个Rol pooling,然后整合整个模型,把CNN、SPP变换层‘分类器’bbox回归几个模块一起训练

2.步骤:

1.将整个图片输入到一个基础卷积网络,得到整张图片的feature map (特征图)

2.将region proposal(Rol候选区域)映射到feature map中

3.Rol pooling layer(感兴趣区域池化)提取一个固定长度的特征向量,每个特征会输入到一系列全连接层,得到一个Rol特征向量(整个步骤是对每一个候选区域都会进行同样的操作)。其中一个全连接层是一个softmax层进行分类,输出类别有K个类别加上"背景"类,另外一个是bounding box regressor(对边框处理的)

4.对第三步输出的分类和边框进行非极大值抑制,得到最终结果

3.Rol pooling

 ROI Pooling有两个输入,一个是图片进入CNN后的特征图,另一个是区域的边框。ROI 的输出是一个region_nums x channels x W x H的向量。

RoI池层使用最大池化将任何有效的RoI区域内的特征转换成具有H×W的固定空间范围的小feature map,其中H和W是超参数 它们独立于任何特定的RoI。

例如:VGG16 的第一个 FC 层(全连接层)的输入是 7 x 7 x 512,其中 512 表示 feature map 的层数。在经过 pooling(池化) 操作后,其特征输出维度满足 H x W。假设输出的结果与FC层要求大小不一致,对原本 max pooling 的单位网格进行调整,使得 pooling 的每个网格大小动态调整为 h/H,w/W, 最终得到的特征维度都是 HxWxD。

它要求 Pooling 后的特征为 7 x 7 x512,如果碰巧 ROI 区域只有 6 x 6 大小怎么办?每个网格的大小取 6/7=0.85 , 6/7=0.85,以长宽为例,按照这样的间隔取网格:[0,0.85,1.7,2.55,3.4,4.25,5.1,5.95],取整后,每个网格对应的起始坐标为:[0,1,2,3,3,4,5]

 三:R-CNN、SPPNET、Faslt R-CNN效果对比

 其中有一项指标为mAP,这是一个对算法评估准确率的指标,mAP衡量的是学出的模型在所有类别上的好坏

四:总结

缺点:使用Selective Search提取Region Proposals,没有实现真正意义上的端对端,操作也十分耗时


http://www.kler.cn/a/299711.html

相关文章:

  • 5.桥模式(Bridge)
  • 单片机基础模块学习——超声波传感器
  • Sqoop源码修改:增加落地HDFS文件数与MapTask数量一致性检查
  • qt-C++笔记之QLine、QRect、QPainterPath、和自定义QGraphicsPathItem、QGraphicsRectItem的区别
  • QT设置应用程序图标
  • 网络工程师 (7)进程管理
  • HCIA--实验十:路由的递归特性
  • 【C++】STL——vector中的迭代器失效问题
  • 【Kubernetes】常见面试题汇总(八)
  • @antv/x6 限制节点或者子节点的移动范围
  • git的使用和gdb工具
  • Xilinx系FPGA学习笔记(六)RAM的IP核学习
  • uni-app实现web-view和App之间的相互通信
  • BRAS介绍
  • tio websocket 客户端 java 代码 工具类
  • 编译u-boot报错configuration written to .config
  • CCS12.2 以及以上版本如何使用C2000ware 4.03版本,发现直接导入工程不能正确识别地址变量?
  • openssl+keepalived安装部署
  • 基于Java+SpringBoot+Vue+MySQL的美容美发管理系统
  • C语言补习课——文件篇
  • 聚簇索引和二级索引
  • 哪些旋转机械会用到本特利振动传感器
  • iOS的传递链与响应链机制
  • 我是如何将 Java 基础 docker 镜像大小从 674Mb 优化到 58Mb的
  • 解锁中东市场新蓝海:Bigo社交媒体如何赋能APP广告营销优势
  • Ubuntu 22.04 make menuconfig 失败原因