第三节,目标检测---R-CNN网络系列
1、目标检测
检测图片中所有物体的
- 类别标签
- 位置(最小外接矩形/Bounding box)

区域卷积神经网络R-CNN
模块进化史

2、区域卷积神经网络R-CNN
- Region proposals+手工特征+分类器

R-CNN模块划分
- 模块1:Selective Search(SS)获取区域
- ~2000个区域Region proposals
- 跟分类无关,包含物体
- 区域预处理
- Bounding box膨胀
- 尺寸变换成227x227
- 模块2:AlexNet 网络
- 对所有区域进行特征提取
- fine-tune
- 模块3:线性SVMs分类器
- 对CNN特征(4096)进行分类
- 每个分类一个SVM
- 模块4:Bounding box回归模型
- 对SS提供的区域进行精化
- 基于CNN特征
- 每个分类一个SVM

正样本:所有Ground-truth区域
负样本:跟Ground-truth重合IoU<0.3的SS区域
R-CNN训练流程
- M<——在ImageNet上对CNN模型进行预训练pre-train
- M‘<——在SS生成的所有区域上对M进行fine-tune
- C<——在M’的Fc7特征上训练线性SVMs分类器
- R<——在M‘的Conv5特征上训练Bounding box回归模型
R-CNN测试阶段
- Selective Search(fast mode)提取~2000区域/图片
- 将所有区域膨胀+缩放到227x227
- 使用fine-tune过的AlexNet计算两套特征
- 为每个类别执行
- Fc7特征——>SVM分类器——>类别分值
- 使用非极大值抑制(IoU>=0.5)获取无冗余的区域子集
- 所有区域分值从大到小排序
- 剔除冗余:与最大分值区域IoU>=0.5的所有区域
- 保留该最大分值区域,剩余区域作为新候选集
- Conv5特征——>Bounding box回归模型——>Bbox偏差
- 使用Bbox偏差修正区域子集
- 为每个类别执行
R-CNN性能评价
True Positive区域:IoU>=0.5
False Positive区域:IoU<0.5
False Negative区域:遗漏的Ground truth区域
准确率precision:TP/(TP+FP)
号召率recall:TP/(TP+FN)
第C类的平均精度(AP):PR曲线之下的面积,是Precision对于Recall的积分。
mAP:所有类别的平均精度求和初一所有类别,即数据集中所有类的平均精度的平均值。
3、SSP-Net
- R-CNN速度慢的原因之一:卷积特征重复计算量太大,每张图片的~2000区域都会计算CNN特征
- 两大改进
- 直接输入整张图片,所有区域共享卷积计算(一遍):在Conv5层输出上提取所有区域的特征
- 引入空间金字塔池化(Spatial Pyramid Pooling):为不同尺寸的区域,在Conv5输出上提取特征;映射到尺寸固定的全连接层上。

SSP-空间金字塔池化:
- 替换Conv5的Pooling层
- 3个level和21个Bin:1x1,2x2,4x4
- Bin内使用Max pooling
SPP-Net训练过程
- M<——在ImageNet上对CNN模型进行pre-train
- F<——计算所有SS区域的SPP特征
- M'<——使用F特征fine tune新fc6——>fc7——>fc8层
- 与R-CNN区别:SPP特征<——Pool5特征;只finetune全连接层
- F'<——计算M'的fc7特征
- C<——使用F'特征训练线性SVM分类器
- R<——适应F特征训练Bounding box回归模型
4、Fast R-CNN网络
改进:
- 比R-CNN,SPP-Net更快的training/test
- 更高的mAP
- 实现end-to-end(端对端)单阶段训练:多任务损失函数(Multi-task loss)
- 所有层的参数都可以fine-tune
- 不需要离线存储特征文件
在SPP-Net基础上引入2个新技术

- 感兴趣区域池化层(RoI pooling layer)
- 多任务损失函数(Multi-task loss):分类器loss;Bounding box回归L1 loss。
5、Faster R-CNN=Fast R-CNN+RPN
集成Region Proposal Network(RPN)网络:取代离线Selective Search模块,解决性能瓶颈。
进一步共享卷积层计算;基于Attention注意机制;Region proposals量少质优:高precision,高recall。
训练过程:
Step1---训练RPN网络
- 卷积层初始化<——ImageNet上pretrained模型参数
Step2---训练Fast R-CNN网络
- 卷积层初始化<——ImageNet上pretrained模型参数
- Region proposals由Step1的RPN生成
Step3---调优RPN
- 卷积层初始化<——Fast R-CNN的卷积层参数
- 固定卷积层,finetune剩余层
Step4---调优Fast R-CNN
- 固定卷积层,finetune剩余层
- Region proposals由Step3的RPN生成
Region Proposal Network(RPN)网络:全卷积网络
- 3x3,256-d卷积层+ReLU<——输入图片的Conv5特征
- 1x1,4k-d卷积层——>输出k组proposal的offsets(r,c,w,h)
- 1x1,2k-d卷积层——>输出k组(object score,non-object score)
第三节,目标检测---R-CNN网络系列的更多相关文章
- 深度学习与CV教程(12) | 目标检测 (两阶段,R-CNN系列)
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...
- 目标检测复习之YOLO系列
目标检测之YOLO系列 YOLOV1: blogs1: YOLOv1算法理解 blogs2: <机器爱学习>YOLO v1深入理解 网络结构 激活函数(leaky rectified li ...
- 使用Caffe完成图像目标检测 和 caffe 全卷积网络
一.[用Python学习Caffe]2. 使用Caffe完成图像目标检测 标签: pythoncaffe深度学习目标检测ssd 2017-06-22 22:08 207人阅读 评论(0) 收藏 举报 ...
- 目标检测复习之Anchor Free系列
目标检测之Anchor Free系列 CenterNet(Object as point) 见之前的过的博客 CenterNet笔记 YOLOX 见之前目标检测复习之YOLO系列总结 YOLOX笔记 ...
- 深度学习与CV教程(13) | 目标检测 (SSD,YOLO系列)
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...
- AI佳作解读系列(五) - 目标检测二十年技术综述
计算机视觉中的目标检测,因其在真实世界的大量应用需求,比如自动驾驶.视频监控.机器人视觉等,而被研究学者广泛关注. 上周四,arXiv新出一篇目标检测文献<Object Detection ...
- 目标检测复习之Faster RCNN系列
目标检测之faster rcnn系列 paper blogs1: 一文读懂Faster RCNN Faster RCNN理论合集 code: mmdetection Faster rcnn总结: 网络 ...
- 关于目标检测的anchor问题
关于目标检测其实我一直也在想下面的两个论断: Receptive Field Is Natural Anchor Receptive Field Is All You Need 只是一直没有实验.但是 ...
- CNN目标检测系列算法发展脉络——学习笔记(一):AlexNet
在咨询了老师的建议后,最近开始着手深入的学习一下目标检测算法,结合这两天所查到的资料和个人的理解,准备大致将CNN目标检测的发展脉络理一理(暂时只讲CNN系列部分,YOLO和SSD,后面会抽空整理). ...
随机推荐
- Windows 10 安装过程中,在自定义登录页面进入审核模式
按ctrl-f3进入审核模式 https://msdn.microsoft.com/zh-cn/windows/hardware/commercialize/manufacture/desktop/b ...
- Swagger 配置
放行 , 不拦截. @Configuration open class MyWebMvcConfig : WebMvcConfigurationSupport() { override fun add ...
- C Programming Style 总结
对材料C Programming Style for Engineering Computation的总结. 原文如下: C Programming Style for Engineering Com ...
- 通过JS获取URL链接带的参数
1 /** 2 * 获取URL参数的方法 3 */ 4 $.extend({ //以便于通过$引用该方法 5 getUrlVars : function() { //获取多个参数数组 6 var va ...
- 合并K个有序数组(链表)【字节跳动面试算法题】
本题是本人字节跳动一面考的算法题原题是有序数组,一时没想到怎么解决数组的问题,但是如果给的是有序链表数组,则可以用下面的方法解决 可以利用最小堆完成,时间复杂度是O(nklogk),具体过程如下: 创 ...
- 【数学建模】数模day13-灰色系统理论I-灰色关联与GM(1,1)预测
接下来学习灰色系统理论. 0. 什么是灰色系统? 部分信息已知而部分信息未知的系统,我们称之为灰色系统.相应的,知道全部信息的叫白色系统,完全未知的叫黑色系统. 为什么采用灰色系统理论? 在给定信息不 ...
- Activiti工作流框架——快速上手
一.前言 最近在做公司的OA,里面有用到工作流,公司用的是 jbpm4,感觉比较老,资料有点少,就先学学 新一点的 activiti ㄟ(▔▽▔)ㄏ 首先工作流的概念是:工作流(Workfl ...
- 关于base64转码解码
刚好涉及到记录一下 1.JS BASE64 解码和编码 js代码: /** * * Base64 encode / decode * * @author haitao.tu * @date 2010- ...
- mongoDB 数据库简介
背景概念-数据库类型 对比关系型数据库 优点 : 逻辑清晰.容易理解,结构类似表格 使用 sql 语句技术成熟,使用方便 数据一致性好,完整性好 关系型数据库比较成熟,可以使用一些复杂操作 缺点 : ...
- Python【第四篇】函数、内置函数、递归、装饰器、生成器和迭代器
一.函数 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 特性: 减少重复代码 使程序变的可扩展 使程序变得易维护 1.定义 def 函数名(参数): ...