目录

一、RCNN存在缺点

二、FeastRCNN改进

(一)模型结构

(二)ROI池化层

(三)SVD全连接层加速网络

三、总结


FastRCNN是2015年有名的两阶段目标检测算法。

基于SPP-Net之后的两阶段目标检测算法优化改进。

  • 论文:https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf
  • 代码:https://gitcode.net/mirrors/rbgirshick/fast-rcnn;

一、RCNN存在缺点

  1. 预测速度慢;
  2. 训练速度慢;
  3. 训练所需空间大。

FastRCNN是RCNN后续之作,在以上缺点当面进行了优化;网络结构参考了SPPNet。

二、FeastRCNN改进

(一)模型结构

它的结构是在RCNN、SPPNet基础上改进的,大致改进3个方面:

  1. 引入感兴趣区域池化层ROI;ROI是SPP的一个特例,SPP有多个金字塔,ROI只有一个金字塔。
  2. 多任务损失函数(Multi-task loss);即分类和边框回归任务能一起完成,去除了SVM分类器;
  3. 利用了截断的奇异值分解(Truncated SVD for faster detection)加速了全连接网络。

网络结构如下图:

网上参考了如下流程图,细节更明了:

  1. 输入图像经过卷积网络提取特征feature maps;
  2. 图像经过SS提取候选框,筛选出约2000个候选区域;
  3. 把建议窗口映射到CNN的最后一层卷积feature map上;
  4. 对各个候选框采用RoI,提取固定长度的特征向量;
  5. 在全连接层上进行fine-tune,所有层都能够fine-tune。(Fast的采样方式与SPP不一样,Fast先采样N个图片,对N个图片进行ROI采样,再训练;SPP训练样本是来自所有图像打散后均匀采样,每个训练样本来自不同的图片,内存耗费大)。
  6. 通过全连接层分别生成softmax分类和边框回归模型。

(二)ROI池化层

它是空间金字塔池化的单层特例,将RoI区域的卷积特征拆分成H×W网格;

下图是SPP和ROI的比较:

SPP有3个金字塔,Roi只有1个金字塔;金字塔数量减少了,那么计算量也相对减少了。

(三)SVD全连接层加速网络

RoI池化层后的全连接层需要进行约2k次(每个建议框都要计算),因此在Fast R-CNN中可以采用SVD分解加速全连接层计算,具体实现如下:

  • 1. 物体分类和窗口回归都是通过全连接层实现的,假设全连接层输入数据为x,输出数据为y,全连接层参数为W,尺寸为u×v,那么该层全连接计算为:

y=Wx(计算复杂度为u×v)

  • 2. 若将W进行SVD分解,并用前t个特征值近似代替,即:

W=U*∑VT≈U(u,1:t)*∑(1:t,1:t)*V(v,1:t)*T

  • 3. 那么原来的前向传播分解成两步:

y=Wx=U*(∑VT)*x=U*z

  • 4. 计算复杂度为u×t+v×t,若t<min(u,v),则这种分解会大大减少计算量;

在实现时,相当于把一个全连接层拆分为两个全连接层,第一个全连接层不含偏置,第二个全连接层含偏置;实验表明,SVD分解全连接层能使mAP只下降0.3%的情况下提升30%的速度,同时该方法也不必再执行额外的微调操作。

三、总结

比R-CNN、SPP-Net更快的trainning/test,更高的mAP。

两阶段目标检测详解--FastRCNN相关推荐

  1. 深度学习中的两阶段目标检测

    博主简介 博主是一名大二学生,主攻人工智能研究.感谢让我们在CSDN相遇,博主致力于在这里分享关于人工智能,c++,Python,爬虫等方面知识的分享. 如果有需要的小伙伴可以关注博主,博主会继续更新 ...

  2. 【论文解读】深度学习目标检测的开山鼻祖 |R-CNN详解 | 两阶段目标检测代表

    目录 前言 目标检测近年里程碑 深度学习目标检测 1 R-CNN简介 1.1 何为R-CNN? 1.2 摘要 1.2.1 论文综述 1.2.2 优点汇总 1.2.3 缺点汇总 2. RCNN网络结构解 ...

  3. 两阶段目标检测重要论文总结

    文章目录 Selective Search方法 1.论文简介 2.算法原理 EdgeBoxes方法 1.论文简介 2.算法原理 一.R-CNN 1.论文简介 2.结构设计 3.论文总结及改进点 二.S ...

  4. 教女友学会keras-yolov3目标检测详解——适合新手

    现在网上能找到的博客我现在看起来很明白,虽然讲的很详细,但是对于几天前的我真的看不明白,因为新手会遇到各种各样毫无征兆的问题,所以我决定写一篇面向新手的如何去使用 yolo 和如何去做自己的数据集来训 ...

  5. 独家总结| 基于深度学习的目标检测详解

    欢迎关注微信公众号[计算机视觉联盟] 获取更多前沿AI.CV资讯                                                基于深度学习的目标检测 基于深度学习的目 ...

  6. Seata两阶段提交AT详解

    Seata两阶段提交 和传统2PC的模型类似,Seata定义了3个组件来协调分布式事务的处理过程 Transaction Coordinator(TC):事务协调器,它是独立的中间件,需要独立部署运行 ...

  7. YOLO v2目标检测详解一box生成与转换

    yolo v2会将图片切割成若干个大小为32*32 的小格子,因此,将图片传入时,图片的长和宽都必须是32的倍数,如下所示: 后面的内容中,如果没有说明,都是指的小格子.yolo v2中的box中的数 ...

  8. 计算机视觉:单阶段目标检测模型YOLO-V3

    计算机视觉:单阶段目标检测模型YOLO-V3 单阶段目标检测模型YOLO-V3 YOLO-V3 模型设计思想 产生候选区域 生成锚框 生成预测框 对候选区域进行标注 标注锚框是否包含物体 标注预测框的 ...

  9. 单阶段目标检测算法之YOLOv1详解

    官方网站C语言版本:https://pjreddie.com/darknet/yolov1/ tensorflow版本的代码下载: https://github.com/hizhangp/yolo_t ...

  10. 单阶段目标检测重要论文总结

    文章目录 一.Yolov1 1.论文简介 2.检测原理 3.结构设计 4.疑难问题 5.论文总结 二.Yolov2 1.论文简介 2.更好.更快.更强 1)为什么更好? 2)为什么更快? 3)为什么更 ...

最新文章

  1. 人脸检测--S3FD: Single Shot Scale-invariant Face Detector
  2. Vue:对象更改检测注意事项
  3. 菜鸟成长日记(一)之WMIC简单命令应用
  4. tf.clip_by_value
  5. LeetCode-动态规划背包题-416. 分割等和子集
  6. MSSQL 从备份文件还原数据库脚本
  7. 面试突击32:为什么创建线程池一定要用ThreadPoolExecutor?
  8. linux 启动一个网站_在线试用 200 多种 Linux 和 Unix 操作系统
  9. 如何部署windows服务?
  10. 如何给自己的电脑硬盘分区
  11. leetcode之字符串中的第一个唯一字符
  12. Java学习(16-20天, 线性数据结构)
  13. jquery 一个元素包含多个class时
  14. 离线地图瓦片下载工具
  15. Unity运行时输出场景物体及角色为fbx文件
  16. php 简转繁体,php如何实现简体繁体转换
  17. 国外各国统计机构网址
  18. SMT32的RTC的晶振为什么是32768Hz
  19. 美团点评智能支付核心交易系统的可用性实践
  20. 54家半导体芯片原厂涨价、调价及交期变动通知函!

热门文章

  1. 牛客假日团队赛6 F:Mud Puddles
  2. HttpClient请求https类型的网站接口碰到ssl证书不受信任问题处理
  3. 【总结】最专业最系统的CV内容,有三AI所有免费与付费的计算机视觉课程汇总(2022年7月)...
  4. ios底层是linux,深入iOS系统底层之CPU寄存器介绍
  5. 电容击穿之后是开路还是短路?
  6. linux中的apche服务
  7. [蓝桥杯解题报告]第九届蓝桥杯大赛省赛2018(软件类)真题C++A组 Apare_xzc
  8. 【MySQL用法】MySQL中大于,大于等于,小于,小于等于的转义写法
  9. 【Qt】警告Missing reference in range-for with non trivial type
  10. Python处理excel合并单元格