基于深度的目标检测与文本检测和识别

根据本人组会PPT总结整理,复习备用。

一.目标检测与场景文字检测定义

目标检测:给定一张图片或者视频帧,找出其中所有目标的位置,并给出每个目标的具体类别。

场景文字检测:

文字检测(Text Detection):对照片中存在文字的区域进行定位,即找到单词或者文本行(word/linelevel)的边界框(bounding box);

文字识别(Text Recognition):对定位后的文字进行识别。

将这两个步骤合在一起就能得到文字的端到端检测(End-to-end Recognition)。

二.图像分类模型

卷积神经网络(Convolutional Netural Network,CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元。CNN的经典结构始于1998年的LeNet,成于2012年历史性的AlexNet,从此大盛于图像相关领域。主要包括:

1.LeNet,1998年

2.AlexNet,2012年

3.ZF-Net,2013年

4.GoogleNet,2014年

5.VGG,2014年

6.ResNet,2015年

7.ResNeXt,2017年

8.DenseNet,2017年

1.LeNet

1998年的LeNet标志着CNN的真正面试,但是这个模型在后来的一段时间并未能真正火起来。主要原因包括:

1)当时没有GPU,计算能力低;

2)SVM等传统机器学习算法也能达到类似的效果甚至超过。

2.AlexNet

AlexNet的top-5错误率为15.3%,是2012年的ILSVRC大赛的冠军。

AlexNet相比传统的CNN有哪些重要改动呢?

1)数徐增强。如水平翻转,随机剪裁,平移变换,颜色,光照变换。

2)dropout。防止过拟合。

3)Relu激活函数。代替传统的Tanh或者Sigmoid。

4)Local Response Normalization。利用临近的数据做归一化。

5)Overlapping Pooling。

6)多GPU并行。

3.ZF-Net

ZF-Net的top-5错误率为11.2%,是2013年ILSVRC大赛的冠军。ZF-Net基于AlexNet进行了微调。

1)使用Relu激活函数和交叉熵代价函数;

2)使用较小的filter,以保留更多的原始像素信息。

4.GoogleNet

GoogleNet的top-5错误率为6.7%,是2014年ILSVRC大赛的冠军。其特点是:

1)共有9个inception模块,将CNN原来的串行结构改为并行,共有22层。

2)不使用FC层,而使用平均池化代替,量级从7*7*1024变为1*1*1024,从而减少大量参数计算。

3)将同一输入的多个修建版本输入网络,故softmax为平均概率。

5.VGG-Net

其中,最具有代表性的包括VGG16(D)和VGG19(E)。VGG与AlexNet相比,估值更精确,更省空间。改动如下:

1)增加每层中卷积层的个数(1-> 2~4)

2)降低卷积核的大小(7*7->3*3)

3)增加通道数量

下图为VGG16的示意图:

6.ResNet

ResNet(residual network)的top-5错误率为3.6%,是2015年ILSVRC大赛的冠军。

在“平整”网络中,随着网络层数的增加,训练误差也随之增加。

如何避免训练误差?

假设:原始层由一个已经学会的较浅模型复制而来,附加层设置为恒等映射。

那么,原始层与附加层叠加,至少具有与原始层相同的训练误差。

上图左边为resnet-34的残差单元,右边为resnet-50/101/152的残差单元。

下表为典型的残差网络结构。

7.ResNeXt

1)同时采用VGG堆叠的思想和 GoogleNet inception的split-transform-merge的思想;

2)提出了aggregrated transformations,用一种平行堆叠相同拓扑结构的blocks代替原来的ResNet的三层卷积的block;

3)证明了增加cardinality比增加深度和宽度更有效果(cardinality:size of the set of transformations);

4)在增准确率的同时基本不改变或降低模型的复杂度。

下图左边是resnet的block,右边是resnext的block,cardinality = 32

8. DenseNet

DenseNet每一层的变换:

,其中指的是第0个到第l-1个层的连接。

类别ResNet的变换:

特点:

1)让网络中的每一层都直接与前面层相连,实现特征的重复利用;

2)同时把网络中的每一层都设计得比较“窄”,即只学习非常少的特征图(最极端情况就是每一层只学习一个特征图),达到降低冗余性的目的。

优点:省参数,省计算,抗过拟合

二.目标检测方法

1.传统目标检测方法

传统目标检测的三个阶段:

1)区域选择:利用滑动窗口遍历整幅图像,设置不同尺度和不同长宽比。

2)特征提取:利用目标的形态多样性,光照变化多样性,背景多样性等,进行特征提取。常用特征提取方法有:SIFT, HOG。

3)分类器分类:主要有SVM,Adaboost等。

缺点:

1)基于滑动窗口的区域选择策略没有针对性,时间复杂度高,窗口冗余;

2)手工设计的特征对于多样性的变化没有很好的鲁棒性。

2.基于Region Proposal的深度学习目标检测算法

对于传统目标检测任务存在的两个主要问题,我们该如何解决呢?

-区域选择:Region Proposal

region proposal是预先找出图中目标可能出现的位置。由于region proposal利用了图像中的纹理,边缘,颜色等信息,可以保证在选取较少窗口(几千个甚至几百个)的情况下保持较高的召回率。

-特征提取+分类:CNN分类模型

获得候选区域后可以使用CNN分类模型对其进行图像分类。

1)R-CNN(CVPR 2014, TPAMI 2015)

Rich Feature Hierarchies for Accurate Object Detection and Segmentation

RCNN算法分成四个步骤:

(1)一张图像生成1k~2k个候选区域;

(2)对每个候选区域,使用深度网络提取特征;

(3)将特征送入每一类的SVM,判断是否属于该类;

(4)使用回归器精细修正候选框位置。

效果:R-CNN在pascal voc2007上的检测结果从DPM HSC的34.3%直接提升到了66%(mAP)。

R-CNN速度慢的原因:对图像提取region proposal(2000个左右)之后将每个proposal当成一张图像进行后续处理(利用CNN提取特征+SVM分类),实际上对一张图像进行了2000次提取特征和分类的过程。

2)Fast R-CNN(ICCV 2015)

与R-CNN框架图对比,有两处不同:

(1)最后一个卷积层后加了一个RoI(Regions of Interest) pooling layer;

(2)损失函数使用了多任务损失函数(multi-task loss),将边框回归直接加入到CNN网络中进行训练。

Fast R-CNN改进:

(1)RoI pooling layer:SPP-NET对每个proposal使用了不同大小的金字塔映射,将RoI pooling layer只需要下采样到一个7*7的特征图;

(2)使用softmax代替SVM分类,将多任务损失函数边框回归加入到网络中:除了region proposal提取阶段以外,其他的训练过程是端到端的;

(3)微调部分卷积层。

存在问题:要先提取region proposal,没有实现真正意义上的端到端训练。

3)Faster R-CNN(ICCV 2015)

Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

整个网络可以分为四个部分:

(1)Conv layers。首先使用一组基础的conv+relu+pooling层提取image的feature maps。该feature maps被共享用于后续的RPN层和全连接层。

(2)Region Proposal Networks。RPN网络用于生成region proposals。该层通过softmax判断anchors属于foreground或者background,再利用bounding box regression来修正anchors来获得精确的proposals。

(3)RoI Pooling。该层收集输入的feature maps和proposals,送入后续全连接层判定目标类别。

(4)Classification。利用proposal feature maps计算proposals的类别,同时再次利用bounding box regression获得检测框最终的精确位置。

主要贡献:提出了区域推荐网络(RPN,Region Proposal Networks),实现了真正意义上的端到端训练。

RPN网络:在提取特征的最后的卷积层上滑动一遍,利用anchor机制和边框回归,得到多尺度多长宽比的region proposals。

Anchor机制:

对于提取特征的最后的卷积层的每一个位置,考虑9个可能的候选窗口:

三种面积(128*128,256*256,512*512) * 三种比例(1:1,1:2,2:1)。这些候选窗口称为anchors。

4)Mask R-CNN(ICCV 2017)

Mask R-CNN是一个小巧灵活的通用对象实例分割框架。它不仅可以对图像中的目标进行检测,还可以对每一个目标给出一个高质量的分割结果。它在Faster R-CNN基础之上进行扩展,并行地在bounding box recognition分支上添加一个用于预测目标掩模(object mask)的新分支。

Mask R-CNN改进:

(1)基础网络的增强:ResNeXt-101 + FPN(Feature Pyramid Network);

(2)RoI Align层的加入:即对feature map的插值,直接对RoI pooling的量化操作会使得得到的mask与实际物体位置有一个微小偏移;

(3)掩模表示:一个掩模编码了一个输入对象的空间布局。使用一个FCN来对每个RoI预测一个m*m的掩模,保留了空间结构信息;

(4)分割loss的改进:对每个类别独立地预测一个二值掩模,没有引入类间竞争,每个二值掩模的类别依靠网络RoI分类分支给出的分类预测结果。

Mask-RCNN比一般的state-of-the-art方法(用Faster-RCNN+ResNet-101+FPN实现)的mAP高3.6%:

1.1%来自RoI Align;0.9%来自多任务训练;1.6%来自更好的基础网络(ResNeXt-101 + FPN).

3.基于回归学习的深度学习目标检测算法

目前的深度学习目标检测算法可以分为两类:两步检测和一步检测

两步检测:Region Proposal + CNN

Faster R-CNN的方法目前是主流的目标检测算法,但是速度上并不能满足实时的要求。

一步检测:

直接利用CNN的全局特征预测每个位置可能的目标。代表方法:YOLO,SSD

1)YOLO(CVPR 2016)

You Only Look Once: Unified, Real-Time Object Detection

YOLO目标检测流程:

(1)给定一个输入图像,将图像划分为7*7的网格;

(2)对于每个网格,都预测2个边框;

(3)根据上一步可以预测出7*7*2个目标窗口,然后根据阈值去除可能性比较低的目标窗口,最后NMS去除冗余窗口即可。

如何回归:

最后一层为7*7*30维(7*7:划分的网格数;30维:4维坐标信息(中心点坐标+长宽)+1维目标置信度+20维类别)

利用前面的4096维的全图特征直接在每个网格上回归出目标检测所需要的信息(边框信息+类别)。

2)SSD(ECCV 2016)

SSD:Single Shot MultiBox Detector

SSD和YOLO的异同:

相同:SSD获取目标位置和类别的方法和YOLO一样,都是使用回归;

不同:YOLO预测某个位置使用的是全局的特征,SSD预测某个位置使用的是该位置周围的特征。

假如某一层特征图(图b)大小为8×8,那么就使用3×3的滑动窗口提取每个位置的特征,然后进行特征回归得到目标的坐标信息和类别信息(图c)。

如何建立某个位置和其特征的对应关系呢?

-在多个feature map上,使用Faster RCNN的anchor机制,利用多层的特征并且自然地达到多尺度提取。

Prior box与Faster rcnn中anchor的区别?

-相同:都是目标的预设框,没有本质的区别;

-不同:每个位置的prior box一般是4~6个,少于Faster RCNN默认的9个;同时,prior box是设置在不同尺度的feature maps上的,而且大小不同。

4.提高目标检测性能的方法

(1)难分样本挖掘(hard negative mining)

R-CNN在训练SVM分类器时使用了难分样本挖掘的思想,但Fast R-CNN和Faster R-CNN由于使用端到端的训练策略并没有使用难分样本挖掘,只是设置了正负样本的比例并随机抽取。CVPR2016的Training Region-based Object Detectors with Online Hard Example Mining将难分样本挖掘(hard example mining)机制嵌入到SGD算法中,使得Fast R-CNN在训练的过程中根据region proposal的损失自动选取合适的region proposal作为正负例训练。实验结果表明使用OHEM(Online Hard Example Mining)机制可以使得Fast R-CNN算法在VOC2007和VOC2012上mAP提高4%左右。

(2)多层特征融合

Fast R-CNN和Faster R-CNN都是利用了最后卷积层的特征进行目标检测,而由于高层的卷积层特征已经损失了很多细节信息(pooling操作),所以在定位时不是很精确。HyperNet等一些方法则利用了CNN的多层特征融合进行目标检测,这不仅利用了高层特征的语义信息,还考虑了低层特征的细节纹理信息,使得目标检测定位更精准。

(3)使用上下文信息

在提取region proposal特征进行目标检测时,结合region proposal的上下文信息,检测效果往往会更好一些。

三.场景文字检测方法

1.基于目标检测

1)Symmetry-based text line detection in natural scenes(CVPR 2015)

(1)利用文本行自身上下结构的相似性:设计一个具有对称性的模板,即在不同尺度下扫描图像,通过其相应得到对称的中心点;

(2)在得到对称中心点之后通过文字的高度和连通性得到边界框(bounding box);

(3)使用CNN进行后续的处理。

文本行proposal生成过程:

(1)输入图像;

(2)在多维度进行特征抽取;

(3)生成对称概率映射图;

(4)在对称概率映射图中寻找对称轴;

(5)估计边框;

(6)多维度提取proposal。

2)Reading Text in the Wild with Convolutional Neural Networks(IJCV 2016)

针对文字检测问题对R-CNN进行了改造:

(1)通过edge box或者其他的handcraft feature来计算proposal;

(2)使用分类器对文本框进行分类,去掉非文本区域;

(3)使用CNN对文本框进行回归来得到更为精确的边界框(bounding box regression);

(4)使用文字识别算法进一步过滤出非文本区域。

3)Detecting Text in Natural Image with Connectionist Text Proposal Network(ECCV 2016)

对Faster RCNN进行了改造:

(1)改进了RPN,将anchor产生的window的宽度固定为3;

(2)RPN后面不是直接连接全连接层+回归,而是先通过一个BLSTM,再连接一个全连接层;

(3)坐标仅仅回归一个y,而不是x1,y1,x2,y2;

(4)添加k个anchors的side-refinement offsets。

4)Arbitrary-Oriented Scene Text Detection via Rotation Proposals(2017)

对Faster R-CNN进行了改造,将RoI pooling替换为可以快速计算任意方向的操作来对文本进行自动处理。

(1)带角度信息的anchor:考虑到文字的aspect ratio与一般物体的不同,因此增加了更多类型的aspect ratios;

(2)旋转的RoI:对于RPN网络结构的输出是带有角度的proposal,因此在Faster-RCNN中的RoI阶段需要将proposal进行旋转后再pooling。

5)Deep matching prior network Toward tighter multi-oriented text detection(CVPR 2017)

对SSD框架进行了改造:在生成proposal时回归矩形框不如回归一个任意多边形。

6)TextBoxes: A Fast Text Detector with a Single Deep Neural Network(AAAI 2017)

对SSD框架进行改进:

(1)设计默认框(default box)时包含较长的形状;

(2)长方形的卷积核比常用的1*1或者3*3卷积核更适合文字检测;

(3)使用识别模型对文字进行过滤和判断。

7)Detecting Oriented Text in Natural Images by Linking Segments(CVPR 2017)

对SSD框架进行改进:

(1)将文字视为小块单元,对文字小块同时进行旋转和回归;

(2)通过对文字小块之间的方向性进行计算来学习文字之间的联系;

(3)通过简单的后处理得到任意形状甚至具有形变的文字检测结果。

2.基于目标分割

1)Multi-oriented Text Detection with Fully Convolutional Networks(CVPR 2016)

(1)将文本行视为一个需要分割的目标;

(2)通过分割得到文字的显著性图像,得到文字的大概位置,整体方向及排列方式;

(3)结合其他的特征进行高效的文字检测。

2)East: An Efficient and Accurate Scene Text Detector(CVPR 2017)

同时使用分割(segmentation)和边界框回归(bounding box regression)的方式对场景文字进行检测。

使用PVANet对网络进行优化,加速,并输出三种不同的结果:

(1)边缘部分分割的得分(score)结果;

(2)可旋转的边界框(rotated bounding boxes)的回归结果;

(3)多边形bounding boxes(quadrangle bounding boxes)的结果。

同时对NMS进行改进,得到了很好的效果。

3)Deep Direct Regression for Multi-Oriented Scene Text Detection(2017)

直接对边框进行回归,不产生目标边框。


---------------------
作者:caisunshine1101
来源:CSDN
原文:https://blog.csdn.net/u013250416/article/details/79591263
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自www.cnblogs.com/Donaghys/p/10901194.html