使用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 条评论
登录 后参与评论

相关文章

来自专栏人工智能LeadAI

Mask R-CNN

Mask R-CNN是何凯明大神最近的新作。Mask R-CNN是一种在有效检测目标的同时输出高质量的实例分割mask。是对faster r-cnn的扩展,与b...

3735
来自专栏机器之心

教程 | 重新发现语义分割,一文简述全卷积网络

语义分割是一种学习如何识别图像中对象范围的机器学习技术。语义分割赋予机器学习系统与人类相似的理解图像内容的能力。它促使机器学习算法定位对象的精准边界,无论是街景...

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

YOLO算法的原理与实现

作者:叶 虎 编辑:祝鑫泉 前言 1 当我们谈起计算机视觉时,首先想到的就是图像分类,没错,图像分类是计算机视觉最基本的任务之一,但是在图像分类的基础上,...

8273
来自专栏AI研习社

从编程实现角度学习 Faster R-CNN(附极简实现)

Faster R-CNN 的极简实现: github: simple-faster-rcnn-pytorch(http://t.cn/RHCDoPv ) 本文插...

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

Mask-RCNN论文解读

Mask R-CNN是基于Faster R-CNN的基于上演进改良而来,FasterR-CNN并不是为了输入输出之间进行像素对齐的目标而设计的,为了弥补这个不足...

5948
来自专栏CSDN技术头条

基于Keras/Python的深度学习模型Dropout正则项

dropout技术是神经网络和深度学习模型的一种简单而有效的正则化方式。 本文将向你介绍dropout正则化技术,并且教你如何在Keras中用Python将其应...

2639
来自专栏AI科技大本营的专栏

别磨叽,学完这篇你也是图像识别专家了

图像识别是当今深度学习的主流应用,而Keras是入门最容易、使用最便捷的深度学习框架,所以搞图像识别,你也得强调速度,不能磨叽。本文让你在最短时间内突破五个流行...

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

视频动作识别--Towards Good Practices for Very Deep Two-Stream ConvNets

Towards Good Practices for Very Deep Two-stream ConvNets http://yjxiong.me/oth...

2108
来自专栏大数据挖掘DT机器学习

深度学习的目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN

object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别。object detection要解决的问题就是物体在哪里...

3665
来自专栏磐创AI技术团队的专栏

TensorFlow 手写数字识别与一步一步实现卷积神经网络(附代码实战)

手写数字识别 接下来将会以 MNIST 数据集为例,使用卷积层和池化层,实现一个卷积神经网络来进行手写数字识别,并输出卷积和池化效果。 数据准备 MNIST 数...

3186

扫码关注云+社区