当前位置:   article > 正文

天池——街景字符编码识别 3_街景文本识别faster rcnn

街景文本识别faster rcnn

字符识别模型

目前主流的模型有CNN(卷积神经网络),RCNN(region with CNN features),Fast-RCNN,Faster-RCNN,YOLO等等

模型简介

CNN : 卷积神经网络

卷积神经网络(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。是以卷积为核心的一大类网络。
特点:由一个或多个卷积层和顶端的全连通层(对应经典的神经网络)组成,同时也包括关联权重和池化层(pooling layer)。
CNN结构演化历史图

CNN结构演化历史图

RCNN

在CNN的基础上,主要通过提取多个Region Proposal(候选区域)来判断位置。当样本较少时,使用大量的辅助样本对模型进行预训练,之后用自己的样本对网络进行微调。

  1. 输入图像
  2. 利用selective search对图像生成1K~2K的候选区域(region proposal),这个量比传统的算法要少得多。具体一点,选出region proposal的方法是运行图像分割算法,对于分割算法跑出来的块,把它作为可能的region proposal输出。
  3. 提取特征:将region proposal resize为统一大小,送进去掉了softmax的CNN,对每个候region proposal提取特征
  4. 对区域进行分类:对从CNN output出来的特征向量送进每一类的SVM分类, 如果我有十个类别,那么每个region proposal要跑10个SVM,得到类别。这里为什么要用SVM而不是softmax,有一种说法是为了解决样本不均衡的问题,另外是早期神经网络还不如现在这样发达,当时SVM还是比较领先的分类器。
  5. 修正:对CNN output的特征向量(这个特征向量和第4步中拿去喂给SVM的是一个向量)做回归(左上角右下角的四个坐标),修正region proposal的位置。
    在这里插入图片描述
Fast R-CNN

Fast R-CNN组合了classification和regression, 做成single Network,实现了端到端的训练,实际上它相对RCNN最大的改进是抛弃了多个SVM分类器和bounding box回归器的做法,一起输出bbox和label, 很大程度上提升了原始RCNN的速度。

  1. 将任意size的图片输入CNN,得到特征图。在RCNN中,先生成region proposals再做卷积,相当于做了多次卷积,浪费时间。
  2. 对原始图片使用selective search算法得到约2k region proposals(相当于RCNN的第一步)
  3. 在特征图中找到每一个region proposals对应的特征框。在ROI池化层中将每个特征框池化到统一大小
  4. 统一大小的特征框经过全连接层得到固定大小的特征向量,分别进行softmax分类(使用softmax代替了RCNN里面的多个SVM分类器)和bbox回归
    在这里插入图片描述
    在这里插入图片描述
  1. R-CNN是将每个RP送入CNN中进行特征提取,导致RP之间的大量重叠,特征提取冗余。Fast-RCNN将整张图像归一化后送入CNN进行特征提取,在最后一层feature map上将RP进行映射,避免了重复特征的提取,共享了特征,减少了运算能力的浪费。
  2. R-CNN在用SVM分类之前,把通过CNN提取的特征存储在硬盘上。在硬盘上大量读写数据会造成训练性能低、训练速度慢。Fast-RCNN的训练数据在GPU内存里直接进入Loss层,不再需要把大量的数据存储在硬盘。
Faster RCNN

Faster RCNN将特征抽取(feature extraction),proposal提取,bounding box regression,classification都整合在了一个网络中,使得综合性能有较大提高,在检测速度方面尤为明显。对比起它哥哥Fast-RCNN, 其实最重要的一点就是使用RPN(下面会详细解说)来代替原来使用分割算法生成候选框的方式,极大的提升了检测框生成速度。

  1. 提取特征:输入固定大小的图片,进过卷积层提取特征图feature maps
  2. 生成region proposals: 然后经过Region Proposal Networks(RPN)生成region proposals。该层通过softmax判断anchors属于foreground或者background,再利用bounding box 回归修正anchors获得精确的proposals(候选区域)。
  3. ROI Pooling: 该层的输入是feature maps和proposals,综合这些信息后提取proposal feature maps
  4. Classification: 将Roi pooling生成的proposal feature maps分别传入softmax分类和bounding box regression获得检测物体类别和检测框最终的精确位置。
    在这里插入图片描述
    Region Proposal Network(RPN) : Faster-RCNN的巨大优势主要在于第二步Region Proposal Networks(RPN)的设计。传统的Selective Search方法生成检测框都很耗时。而使用RPN生成就会快很多,

Faster-RCNN中的产生RP的RPN和目标检测的CNN共享。

YOLO(You Only Look Once)

该方法的特点是实现快速检测的同时还达到较高的准确率。比Faster-RCNN快。
模型采用卷积神经网络结构。开始的卷积层提取图像特征,全连接层预测输出概率。模型结构类似于GoogleNet,如图3所示。作者还训练了YOLO的快速版本(fast YOLO)。Fast YOLO模型卷积层和filter更少。最终输出为7×7×30的tensor。
在这里插入图片描述
YOLO检测网络包括24个卷积层和2个全连接层。其中,卷积层用来提取图像特征,全连接层用来预测图像位置和类别概率值。采用了多个下采样层,网络学到的物体特征并不精细,因此也会影响检测效果。YOLO网络借鉴了GoogLeNet分类网络结构。不同的是,YOLO未使用inception module,而是使用1x1卷积层(此处1x1卷积层的存在是为了跨通道信息整合)和3x3卷积层简单替代。

参考文章:
https://blog.csdn.net/tystuxd/article/details/85317037
https://zhuanlan.zhihu.com/p/55856134
https://blog.csdn.net/u011808673/article/details/78702396

模型构建

在Pytorch中构建CNN模型非常简单,只需要定义好模型的参数和正向传播即可,Pytorch会根据正向传播自动计算反向传播。

import torch
torch.manual_seed(0)
torch
  • 1
  • 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/250253
推荐阅读
相关标签
  

闽ICP备14008679号