使用Faster-Rcnn进行目标检测

Object Detection发展介绍

Faster rcnn是用来解决计算机视觉(CV)领域中Object Detection的问题的。经典的解决方案是使用: SS(selective search)产生proposal,之后使用像SVM之类的classifier进行分类,得到所有可能的目标. 使用SS的一个重要的弊端就是:特别耗时,而且使用像传统的SVM之类的浅层分类器,效果不佳。 鉴于神经网络(NN)的强大的feature extraction特征,可以将目标检测的任务放到NN上面来做,使用这一思想的目标检测的代表是: RCNN Fast-RCNNFaster-RCNN YOLO等 简单点说就是:

RCNN 解决的是,“为什么不用CNN做detection呢?”

Fast-RCNN 解决的是,“为什么不一起输出bounding box和label呢?”

Faster-RCNN 解决的是,“为什么还要用selective search呢?”

Faster-Rcnn原理简介

鉴于之上的分析,想要在时间上有所突破就要在如何更快的产生proposal上做工夫。 Faster使用NN来做region proposal,在Fast-rcnn的基础上使用共享卷积层的方式。作者提出,卷积后的特征图同样也是可以用来生成 region proposals 的。通过增加两个卷积层来实现Region Proposal Networks (RPNs) , 一个用来将每个特征图 的位置编码成一个向量,另一个则是对每一个位置输出一个 objectness score 和 regressed bounds for k region proposals.

RPN

RPN的作用有以下几个:

(1) 输出proposal的位置(坐标)和score (2) 将不同scale和ratio的proposal映射为低维的feature vector (3) 输出是否是前景的classification和进行位置的regression

这里论文提到了一个叫做Anchor的概念,作者给出的定义是:

The k proposals are parameterized relative to k reference boxes, which we call anchors

我的理解是:不同ratio和scale的box集合就是anchor, 对最后一层卷积生成的feature map将其分为n*n的区域,进行不同ratio和scale的采样.

RPN的cls和reg

RPN输出对于某个proposal,其是属于前景或者背景的概率(0 or 1),具体的标准论文里给出的是:

和所有的ground-truth的IoU(Intersection-over-union)小于0.3视为negative(背景)

和任意的ground-truth的IoU大于0.7视为positive(前景)

不属于以上两种情况的proposal直接丢掉,不进行训练使用

对于regression,作用是进行proposal位置的修正:

学习k个bounding-box-regressors

每个regresso负责一个scale和ratio的proposal,k个regressor之间不共享权值

RPN Training

两种训练方式: joint trainingalternating training 两种训练的方式都是在预先训练好的model上进行fine-tunning,比如使用VGG16、ZF等,对于新加的layer初始化使用random initiation,使用SGD和BP在caffe上进行训练

alternating training

首先训练RPN, 之后使用RPN产生的proposal来训练Fast-RCNN, 使用被Fast-RCNN tuned的网络初始化RPN,如此交替进行

joint training

首先产生region proposal,之后直接使用产生的proposal训练Faster-RCNN,对于BP过程,共享的层需要combine RPN loss和Faster-RCNN loss

Result

结果自然不用说,肯定是state-of-art,大家自己感受下吧

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器学习、深度学习

级联人脸检测--Detecting Faces Using Inside Cascaded Contextual CNN

Detecting Faces Using Inside Cascaded Contextual CNN ICCV2017 这里也是使用级联思想来进行人脸检...

2268
来自专栏小樱的经验随笔

浅谈关于特征选择算法与Relief的实现

一、 背景 1) 问题 在机器学习的实际应用中,特征数量可能较多,其中可能存在不相关的特征,特征之间也可能存在相关性,容易导致如下的后果: 1.     特征个...

8334
来自专栏老秦求学

[Deep-Learning-with-Python] Keras高级概念

目前为止,介绍的神经网络模型都是通过Sequential模型来实现的。Sequential模型假设神经网络模型只有一个输入一个输出,而且模型的网络层是线性堆叠在...

911
来自专栏数据派THU

基于多篇经典论文综述Attention模型方法(附源码)

先简单谈一谈 attention 模型的引入。以基于 seq2seq 模型的机器翻译为例,如果 decoder 只用 encoder 最后一个时刻输出的 hid...

1225
来自专栏数据派THU

独家 | 手把手教TensorFlow(附代码)

上一期我们发布了“一文读懂TensorFlow(附代码、学习资料)”,带领大家对TensorFlow进行了全面了解,并分享了入门所需的网站、图书、视频等资料,本...

2835
来自专栏机器学习、深度学习

人脸检测--Supervised Transformer Network for Efficient Face Detection

Supervised Transformer Network for Efficient Face Detection ECCV2016 人脸检测: the...

2067
来自专栏PPV课数据科学社区

自创数据集,使用TensorFlow预测股票入门

机器之心编译 参与:蒋思源、李亚洲、刘晓坤 STATWORX 团队近日从 Google Finance API 中精选出了 S&P 500 数据,该数据集包含 ...

3287
来自专栏机器学习算法全栈工程师

基础|认识机器学习中的逻辑回归、决策树、神经网络算法

逻辑回归。它始于输出结果为有实际意义的连续值的线性回归,但是线性回归对于分类的问题没有办法准确而又具备鲁棒性地分割,因此我们设计出了逻辑回归这样一个算法,它的输...

942
来自专栏文武兼修ing——机器学习与IC设计

CapsNet学习笔记理论学习代码阅读(PyTorch)参考资料

理论学习 胶囊结构 胶囊可以看成一种向量化的神经元。对于单个神经元而言,目前的深度网络中流动的数据均为标量。例如多层感知机的某一个神经元,其输入为若干个标量,...

3489
来自专栏杂七杂八

LogisticRegression实验

实验目的 了解logistic regression的原理及在sklearn中的使用 实验数据 鸢尾花数据集是由杰出的统计学家R.A.Fisher在20世纪30...

3284

扫码关注云+社区