OBject-Detection

[TOC]

Object Detection:

1
2
3
4
5
graph LR
RCNN --> SPP_NET
SPP_NET-->Fast_RCNN
Fast_RCNN-->Faster_RCNN
Faster_RCNN-->Mask_RCNN

一、R-CNN

1
2
3
4
5
6
graph LR
image-->Region_Proposal
Region_Proposal-->CNN
CNN-->SVM
CNN-->Regression
Regression-->CNN

1.候选框

使用Region Proposal算法选择区域,一般2k个候选区域

2.CNN提取特征

一般使用AlexNet、VGG-16网络作为提取特征的CNN网络。先对网络进行预训练,使用ILVCR 2012作为数据集进行训练,输出为1000维的标签。与训练完后,将最后的分类层删除,4096维特征直接输入SVM进行分类。

3. SVM分类器分类,打分,非极大值抑制

CNN提取的特征输入SVM,分类

4.回归器finetune

CNN提取的特征输入回归器Regression进行对网络FineTune.

缺点:

  1. 多个候选区域对应的图像需要预先提取,占用较大的磁盘空间;

  2. 针对传统CNN需要固定尺寸的输入图像,crop/warp(归一化)产生物体截断或拉伸,会导致输入CNN的信息丢失;

  3. 每一个ProposalRegion都需要进入CNN网络计算,上千个Region存在大量的范围重叠,重复的特征提取带来巨大的计算浪费。


二、SPP NET

Spatial Pyramid Pooling

1
2
3
4
5
6
7
8
9
graph LR
image-->CNN
image-->Region_Proposal
CNN-->Features
Region_Proposal-->Features
Features-->SPP
SPP-->FC
FC-->SVM
FC-->Regression

改进

使用SPP特殊的pooling使得卷积计算大大减少

1.候选框

和RCNN相同

2.对整个图片做SPP_Net卷积

采用空间金字塔池化(SpatialPyramid Pooling )替换了 全连接层之前的最后一个池化层(上图top).

把整张待检测的图片,输入CNN中,进行一次性特征提取,得到feature maps,然后在feature maps中找到各个候选框的区域,再对各个候选框采用金字塔空间池化,提取出固定长度的特征向量。而R-CNN输入的是每个候选框,然后在进入CNN,因为SPP-Net只需要一次对整张图片进行特征提取,速度会大大提升。

3.SVM

和RCNN相同

4.Regression

和RCNN相同

缺点:

1)和RCNN一样,训练过程仍然是隔离的,提取候选框 | 计算CNN特征| SVM分类 | Bounding Box回归独立训练,大量的中间结果需要转存,无法整体训练参数;

2)SPP-Net在无法同时Tuning在SPP-Layer两边的卷积层和全连接层,很大程度上限制了深度CNN的效果;

3)在整个过程中,Proposal Region仍然很耗时。


三、Fast-RCNN

1
2
3
4
5
6
7
8
9
10
11
graph LR
image-->CNN
CNN-->RIO_Pooling
image-->Region_Proposal
RIO_Pooling-->Features
Region_Proposal-->RIO_Pooling
Features-->SoftmaxLoss
SoftmaxLoss-->Loss
Features-->SmoothL1Loss
SmoothL1Loss-->Loss
Loss-->Features

改进

1)借鉴SPP思路,提出简化版的ROI池化层(注意,没用金字塔),同时加入了候选框映射功能,使得网络能够反向传播,解决了SPP的整体网络训练问题;

2)多任务Loss层

A)SoftmaxLoss代替了SVM,证明了softmax比SVM更好的效果
B)SmoothL1Loss取代Bouding box回归。

将分类和边框回归进行合并(又一个开创性的思路),通过多任务Loss层进一步整合深度网络,统一了训练过程,从而提高了算法准确度。

3)全连接层通过SVD加速

4)结合上面的改进,模型训练时可对所有层进行更新,除了速度提升外(训练速度是SPP的3倍,测试速度10倍),得到了更好的检测效果

1.候选框

同上

2.特征提取

整个图片CNN网络提取特征,取出候选框中的特征进行RIO Pooling得到Features

3.LOSS

使用SoftmaxLoss取代了SVM,SmoothL1Loss取代了回归器,最后两个Loss合并。

缺点

虽然已经很厉害了,但是候选框的选取还是慢啊

=========================================

四、Faster-RCNN

graph LR
image-->CNN
CNN-->Features
Features-->RPN
Features-->Feature
RPN-->Feature
Feature-->RIO_Pooling
RIO_Pooling-->SoftmaxLoss
SoftmaxLoss-->Loss
RIO_Pooling-->SmoothL1Loss
SmoothL1Loss-->Loss

改进

这个就厉害了,直接把候选框选取用一个网络实现了,而且是在特征提取过以后,想想就快啊。