精华内容
下载资源
问答
  • 本数据集包括3273类汉字,共47万张汉字图片,解压后,每类汉字归类在一个文件夹下,各图像尺寸不一,包含在自然场景下能见到的各种字体。本人由于需要大量的自然场景中文汉字数据集,因此从各处搜来大量标注的自然...
  • mser场景文字块检测,优化后的tesseract识别引擎对单行进行识别
  • 自然场景文本检测识别技术综述

    万次阅读 多人点赞 2018-06-30 09:05:52
    其它机器学习、深度学习算法的全面系统讲解可以阅读...白蛇: 白纸黑字的扫描文档识别技术已经很成熟,而自然场景图像文本识别的效果还不理想。倾斜字、艺术字、变形字、模糊字、形似字、残缺字、光影遮蔽、多语...

    其它机器学习、深度学习算法的全面系统讲解可以阅读《机器学习-原理、算法与应用》,清华大学出版社,雷明著,由SIGAI公众号作者倾力打造。

    番外青蛇: 姐, 图像文本检测和识别领域现在的研究热点是什么?

    白蛇: 白纸黑字的扫描文档识别技术已经很成熟,而自然场景图像文本识别的效果还不理想。倾斜字、艺术字、变形字、模糊字、形似字、残缺字、光影遮蔽、多语言混合文本等应用落地面临的技术难题还没被彻底解决。

    青蛇: 文本检测模型CTPN中为什么选用VGG16作基础网络?

    白蛇: CTPN是2016年被推出的, 而VGG16是那年很流行的特征提取基础网络。如果今年实施文本检测, 可以试试Resnet、FCN、Densenet等后起之秀作基础网络,或许有惊喜。


    摘要本文介绍图像文本识别(OCR)领域的最新技术进展。首先介绍应用背景,包括面临的技术挑战、典型应用场景、系统实施框架等。接着介绍搭建图文识别模型过程中经常被引用到的多种特征提取基础网络、物体检测网络框架,以及它们被应用到图文识别任务中所面临的场景适配问题。然后介绍最近三年来出现的各种文本边框检测模型、文字内容识别模型、端到端图文识别模型。最后介绍图文识别领域的大型公开数据集。

    应用概述

    OCR(Optical Character Recognition, 光学字符识别)传统上指对输入扫描文档图像进行分析处理,识别出图像中文字信息。场景文字识别(Scene Text Recognition,STR) 指识别自然场景图片中的文字信息。自然场景图像中的文字识别,其难度远大于扫描文档图像中的文字识别,因为它的文字展现形式极其丰富:

    ·允许多种语言文本混合,字符可以有不同的大小、字体、颜色、亮度、对比度等。
    ·文本行可能有横向、竖向、弯曲、旋转、扭曲等式样。
    ·图像中的文字区域还可能会产生变形(透视、仿射变换)、残缺、模糊等现象。
    ·自然场景图像的背景极其多样。如文字可以出现在平面、曲面或折皱面上;文字区域附近有复杂的干扰纹理、或者非文字区域有近似文字的纹理,比如沙地、草丛、栅栏、砖墙等。

    也有人用OCR技术泛指所有图像文字检测和识别技术, 包括传统OCR技术与场景文字识别技术。这是因为,场景文字识别技术可以被看成是传统OCR技术的自然演进与升级换代。

    图像文字检测和识别技术有着广泛的应用场景。已经被互联网公司落地的相关应用涉及了识别名片、识别菜单、识别快递单、识别身份证、识别营业证、识别银行卡、识别车牌、识别路牌、识别商品包装袋、识别会议白板、识别广告主干词、识别试卷、识别单据等等。

    已经有不少服务商在提供图像文字检测和识别服务,这些服务商既包括了腾讯、百度、阿里、微软、亚马逊、谷歌等大型云服务企业,也包括了一些活跃在物流、教育、安防、视频直播、电子政务、电子商务、旅游导航等垂直细分行业的服务企业。这些企业既可以使用提前训练好的模型直接提供场景图文识别、卡证识别、扫描文档识别等云服务,也可以使用客户提供的数据集训练定制化模型(如票据识别模型),以及提供定制化AI服务系统集成等。

    如下图所示,传统技术解决方案中,是先分别训练文字检测和文本识别两个模型,然后在服务实施阶段将这两个模型串联到数据流水线中组成图文识别系统。

    如下图所示,最近流行的技术解决方案中,是用一个多目标网络直接训练出一个端到端的模型。在训练阶段,该模型的输入是训练图像及图中文本坐标、文本内容,模型优化目标是输出端边框坐标预测误差与文本内容预测误差的加权和。在服务实施阶段,原始图片流过该模型直接输出预测文本信息。相比于传统方案,该方案中模型训练效率更高、服务运营阶段资源开销更少。

    文本检测和识别技术处于一个学科交叉点,其技术演进不断受益于计算机视觉处理和自然语言处理两个领域的技术进步。它既需要使用视觉处理技术来提取图像中文字区域的图像特征向量,又需要借助自然语言处理技术来解码图像特征向量为文字结果。

    模型基础

    从公开论文中可以看到,起源于图像分类、检测、语义分割等视觉处理任务的各个基础网络(backbone network),纷纷被征用来提取图像中文字区域的特征向量。同时,起源于物体检测、语义分割任务的多个网络框架,也被改造后用于提升图文识别任务中的准确率和执行速度。本章将简单温习一下这些基础网络、网络框架的实现原理,并介绍图文识别任务中应用它们时所面临的各种场景适配问题。

    基础网络

    图文识别任务中充当特征提取模块的基础网络,可以来源于通用场景的图像分类模型。例如,VGGNet,ResNet、InceptionNet、DenseNet、Inside-Outside Net、Se-Net等。

    图文识别任务中的基础网络,也可以来源于特定场景的专用网络模型。例如,擅长提取图像细节特征的FCN网络,擅长做图形矫正的STN网络。

    由于大家对通用网络模型已经很熟悉,所以本节只简单介绍上述专用网络模型。

    FCN网络

    全卷积网络(FCN,fully convolutional network), 是去除了全连接(fc)层的基础网络,最初是用于实现语义分割任务。FC的优势在于利用反卷积(deconvolution)、上池化(unpooling)等上采样(upsampling)操作,将特征矩阵恢复到接近原图尺寸,然后对每一个位置上的像素做类别预测,从而能识别出更清晰的物体边界。基于FCN的检测网络,不再经过候选区域回归出物体边框, 而是根据高分辨率的特征图直接预测物体边框。因为不需要像Faster-RCNN那样在训练前定义好候选框长宽比例,FCN在预测不规则物体边界时更加鲁棒。由于FCN网络最后一层特征图的像素分辨率较高,而图文识别任务中需要依赖清晰的文字笔画来区分不同字符(特别是汉字),所以FCN网络很适合用来提取文本特征。当FCN被用于图文识别任务时,最后一层特征图中每个像素将被分成文字行(前景)和非文字行(背景)两个类别。

     

    STN网络

    空间变换网络(STN,Spatial Transformer Networks)的作用是对输入特征图进行空间位置矫正得到输出特征图,这个矫正过程是可以进行梯度传导的,从而能够支持端到端的模型训练。

    如下图所示,STN网络由定位网络(Localization Network) ,网格生成器(Grid generator),采样器(Sampler)共3个部分组成。定位网络根据原始特征图U计算出一套控制参数,网格生成器这套控制参数产生采样网格(sampling grid),采样器根据采样网格核函数将原始图U中像素对应采样到目标图V中。

    空间变换的控制参数是根据原始特征图U动态生成的,生成空间变换控制参数的元参数则是在模型训练阶段学习到的、并且存放于定位网络的权重(weights)矩阵中。

    选自arXiv: 1506.02025,’Spatial Transformer Networks

     

    检测网络框架

    Faster RCNN作为一个检测网络框架,其目标是寻找紧凑包围被检测对象的边框(BBOX,Bounding Box)。如下图所示,它在Fast RCNN检测框架基础上引入区域建议网络(RPN,Region Proposal Network),来快速产生与目标物体长宽比例接近的多个候选区域参考框(anchor);它通过ROI(Region of Interest) Pooling层为多种尺寸参考框产生出归一化固定尺寸的区域特征;它利用共享的CNN卷积网络同时向上述RPN网络和ROI Pooling层输入特征映射(Feature Maps),从而减少卷积层参数量和计算量。训练过程中使用到了多目标损失函数,包括RPN网络、ROI Pooling层的边框分类loss和坐标回归loss。通过这些loss的梯度反向传播,能够调节候选框的坐标、并增大它与标注对象边框的重叠度/交并比(IOU,Intersection over Union)。RPN网格生成的候选框初始值有固定位置以及长宽比例。如果候选框初始长宽比例设置得与图像中物体形状差别很大,就很难通过回归找到一个紧凑包围它的边框。

    摘自arXiv:1506.01497,’Faster R-CNN: Towards Real-Ti

     

    SSD(Single Shot MultiBox Detector),是2016年提出的一种全卷积目标检测算法,截止到目前仍是主要的目标检测框架之一,相比Faster RCNN有着明显的速度优势。如下图所示,SSD是一种one stage算法,直接预测被检测对象的边框和得分。检测过程中,SSD算法利用多尺度思想进行检测,在不同尺度的特征图(feature maps)上产生与目标物体长宽比例接近的多个默认框(Default boxes),进行回归与分类。最后利用非极大值抑制(Non-maximum suppression)得到最终的检测结果。训练过程中,SSD采用Hard negative mining策略进行训练,使正负样本比例保持为1:3,同时使用多种数据增广(Data augmentation)方式进行训练,提高模型性能。

    摘自arxiv: 1512.02325, “SSD: Single Shot MultiBox

     

    文本检测模型

    文本检测模型的目标是从图片中尽可能准确地找出文字所在区域。

    但是,视觉领域常规物体检测方法(SSD, YOLO, Faster-RCNN等)直接套用于文字检测任务效果并不理想, 主要原因如下:

    ·相比于常规物体,文字行长度、长宽比例变化范围很大。
    ·文本行是有方向性的。常规物体边框BBox的四元组描述方式信息量不充足。
    ·自然场景中某些物体局部图像与字母形状相似,如果不参考图像全局信息将有误报。
    ·有些艺术字体使用了弯曲的文本行,而手写字体变化模式也很多。
    ·由于丰富的背景图像干扰,手工设计特征在自然场景文本识别任务中不够鲁棒。
    

    针对上述问题根因,近年来出现了各种基于深度学习的技术解决方案。它们从特征提取、区域建议网络(RPN)、多目标协同训练、Loss改进、非极大值抑制(NMS)、半监督学习等角度对常规物体检测方法进行改造,极大提升了自然场景图像中文本检测的准确率。例如:

    ·CTPN方案中,用BLSTM模块提取字符所在图像上下文特征,以提高文本块识别精度。
    ·RRPN等方案中,文本框标注采用BBOX +方向角度值的形式,模型中产生出可旋转的文字区域候选框,并在边框回归计算过程中找到待测文本行的倾斜角度。
    ·DMPNet等方案中,使用四边形(非矩形)标注文本框,来更紧凑的包围文本区域。
    ·SegLink 将单词切割为更易检测的小文字块,再预测邻近连接将小文字块连成词。
    ·TextBoxes等方案中,调整了文字区域参考框的长宽比例,并将特征层卷积核调整为长方形,从而更适合检测出细长型的文本行。
    ·FTSN方案中,作者使用Mask-NMS代替传统BBOX的NMS算法来过滤候选框。
    ·WordSup方案中,采用半监督学习策略,用单词级标注数据来训练字符级文本检测模型。
    

    下面用近年来出现的多个模型案例,介绍如何应用上述各方法提升图像文本检测的效果。

    CTPN模型

    CTPN是目前流传最广、影响最大的开源文本检测模型,可以检测水平或微斜的文本行。文本行可以被看成一个字符sequence,而不是一般物体检测中单个独立的目标。同一文本行上各个字符图像间可以互为上下文,在训练阶段让检测模型学习图像中蕴含的这种上下文统计规律,可以使得预测阶段有效提升文本块预测准确率。CTPN模型的图像预测流程中,前端使用当时流行的VGG16做基础网络来提取各字符的局部图像特征,中间使用BLSTM层提取字符序列上下文特征,然后通过FC全连接层,末端经过预测分支输出各个文字块的坐标值和分类结果概率值。在数据后处理阶段,将合并相邻的小文字块为文本行。

    选自arXiv: 1609.03605,’Detecting Text in Natural Im

     

    RRPN模型

    基于旋转区域候选网络(RRPN, Rotation Region Proposal Networks)的方案,将旋转因素并入经典区域候选网络(如Faster RCNN)。这种方案中,一个文本区域的ground truth被表示为具有5元组(x,y,h,w,θ)的旋转边框, 坐标(x,y)表示边框的几何中心, 高度h设定为边框的短边,宽度w为长边,方向是长边的方向。训练时,首先生成含有文本方向角的倾斜候选框,然后在边框回归过程中学习文本方向角。

    选自arXiv: 1703.01086,’Arbitrary-Oriented Scene Tex

    RRPN中方案中提出了旋转感兴趣区域(RRoI,Rotation Region-of-Interest)池化层,将任意方向的区域建议先划分成子区域,然后对这些子区域分别做max pooling、并将结果投影到具有固定空间尺寸小特征图上。

    选自arXiv: 1703.01086,’Arbitrary-Oriented Scene Tex

     

    FTSN模型

    FTSN(Fused Text Segmentation Networks)模型使用分割网络支持倾斜文本检测。它使用Resnet-101做基础网络,使用了多尺度融合的特征图。标注数据包括文本实例的像素掩码和边框,使用像素预测与边框检测多目标联合训练。

    选自arXiv: 1709.03272,’Fused Text Segmentation Netw

     

    基于文本实例间像素级重合度的Mask-NMS, 替代了传统基于水平边框间重合度的NMS算法。下图左边子图是传统NMS算法执行结果,中间白色边框被错误地抑制掉了。下图右边子图是Mask-NMS算法执行结果, 三个边框都被成功保留下来。

    DMPNet模型

    DMPNet(Deep Matching Prior Network)中,使用四边形(非矩形)来更紧凑地标注文本区域边界,其训练出的模型对倾斜文本块检测效果更好。

    如下图所示,它使用滑动窗口在特征图上获取文本区域候选框,候选框既有正方形的、也有倾斜四边形的。接着,使用基于像素点采样的Monte-Carlo方法,来快速计算四边形候选框与标注框间的面积重合度。然后,计算四个顶点坐标到四边形中心点的距离,将它们与标注值相比计算出目标loss。文章中推荐用Ln loss来取代L1、L2 loss,从而对大小文本框都有较快的训练回归(regress)速度。

    选自arXiv:1703.01425,’Deep Matching Prior Network:

     

    EAST模型

    EAST(Efficient and Accuracy Scene Text detection pipeline)模型中,首先使用全卷积网络(FCN)生成多尺度融合的特征图,然后在此基础上直接进行像素级的文本块预测。该模型中,支持旋转矩形框、任意四边形两种文本区域标注形式。对应于四边形标注,模型执行时会对特征图中每个像素预测其到四个顶点的坐标差值。对应于旋转矩形框标注,模型执行时会对特征图中每个像素预测其到矩形框四边的距离、以及矩形框的方向角。

    根据开源工程中预训练模型的测试,该模型检测英文单词效果较好、检测中文长文本行效果欠佳。或许,根据中文数据特点进行针对性训练后,检测效果还有提升空间。

    上述过程中,省略了其他模型中常见的区域建议、单词分割、子块合并等步骤,因此该模型的执行速度很快。

    选自arXiv: 1704.03155,’EAST: An Efficient and Accur

     

    SegLink模型

    SegLink模型的标注数据中,先将每个单词切割为更易检测的有方向的小文字块(segment),然后用邻近连接(link )将各个小文字块连接成单词。这种方案方便于识别长度变化范围很大的、带方向的单词和文本行,它不会象Faster-RCNN等方案因为候选框长宽比例原因检测不出长文本行。相比于CTPN等文本检测模型,SegLink的图片处理速度快很多。

    选自arXiv: 1703.06520,’Detecting Oriented Text in Na

     

    如下图所示,该模型能够同时从6种尺度的特征图中检测小文字块。同一层特征图、或者相邻层特征图上的小文字块都有可能被连接入同一个单词中。换句话说,位置邻近、并且尺寸接近的文字块都有可能被预测到同一单词中。

    选自arXiv: 1703.06520,’Detecting Oriented Text in Na

     

    PixelLink模型

    自然场景图像中一组文字块经常紧挨在一起,通过语义分割方法很难将它们识别开来,所以PixelLink模型尝试用实例分割方法解决这个问题。

    该模型的特征提取部分,为VGG16基础上构建的FCN网络。模型执行流程如下图所示。首先,借助于CNN 模块执行两个像素级预测:一个文本二分类预测,一个链接二分类预测。接着,用正链接去连接邻居正文本像素,得到文字块实例分割结果。然后,由分割结果直接就获得文字块边框, 而且允许生成倾斜边框。

    上述过程中,省掉了其他模型中常见的边框回归步骤,因此训练收敛速度更快些。训练阶段,使用了平衡策略,使得每个文字块在总LOSS中的权值相同。训练过程中,通过预处理增加了各种方向角度的文字块实例。

    选自arXiv: 1801.01315,’Detecting Scene Text via Inst

     

    Textboxes/Textboxes++模型

    Textboxes是基于SSD框架的图文检测模型,训练方式是端到端的,运行速度也较快。如下图所示,为了适应文字行细长型的特点,候选框的长宽比增加了1,2,3,5,7,10这样初始值。为了适应文本行细长型特点,特征层也用长条形卷积核代替了其他模型中常见的正方形卷积核。为了防止漏检文本行,还在垂直方向增加了候选框数量。为了检测大小不同的字符块,在多个尺度的特征图上并行预测文本框, 然后对预测结果做NMS过滤。

    选自arXiv: 1611.06779,’TextBoxes: A Fast Text Detect

     

    (Textboxes++是Textboxes的升级版本,目的是增加对倾斜文本的支持。为此,将标注数据改为了旋转矩形框和不规则四边形的格式;对候选框的长宽比例、特征图层卷积核的形状都作了相应调整。

    选自arXiv: 1801.02765,’TextBoxes++: A Single-Shot O

     

    WordSup模型

    如下图所示,在数学公式图文识别、不规则形变文本行识别等应用中,字符级检测模型是一个关键基础模块。由于字符级自然场景图文标注成本很高、相关公开数据集稀少,导致现在多数图文检测模型只能在文本行、单词级标注数据上做训练。WordSup提出了一种弱监督的训练框架, 可以文本行、单词级标注数据集上训练出字符级检测模型。

    如下图所示,WordSup弱监督训练框架中,两个训练步骤被交替执行:给定当前字符检测模型,并结合单词级标注数据,计算出字符中心点掩码图; 给定字符中心点掩码图,有监督地训练字符级检测模型.

    选自arXiv: 1708.06720,’WordSup: Exploiting Word Anno

     

    如下图,训练好字符检测器后,可以在数据流水线中加入合适的文本结构分析模块,以输出符合应用场景格式要求的文本内容。该文作者例举了多种文本结构分析模块的实现方式。

    文本识别模型的目标是从已分割出的文字区域中识别出文本内容。

    CRNN模型

    CRNN(Convolutional Recurrent Neural Network)是目前较为流行的图文识别模型,可识别较长的文本序列。它包含CNN特征提取层和BLSTM序列特征提取层,能够进行端到端的联合训练。 它利用BLSTM和CTC部件学习字符图像中的上下文关系, 从而有效提升文本识别准确率,使得模型更加鲁棒。预测过程中,前端使用标准的CNN网络提取文本图像的特征,利用BLSTM将特征向量进行融合以提取字符序列的上下文特征,然后得到每列特征的概率分布,最后通过转录层(CTC rule)进行预测得到文本序列。

    选自arXiv: 1507.05717,’An End-to-End Trainable Neura

     

    RARE模型

    RARE(Robust text recognizer with Automatic Rectification)模型在识别变形的图像文本时效果很好。如下图所示,模型预测过程中,输入图像首先要被送到一个空间变换网络中做处理,矫正过的图像然后被送入序列识别网络中得到文本预测结果。

    如下图所示,空间变换网络内部包含定位网络、网格生成器、采样器三个部件。经过训练后,它可以根据输入图像的特征图动态地产生空间变换网格,然后采样器根据变换网格核函数从原始图像中采样获得一个矩形的文本图像。RARE中支持一种称为TPS(thin-plate splines)的空间变换,从而能够比较准确地识别透视变换过的文本、以及弯曲的文本.

    选自arXiv: 1603.03915,’Robust Scene Text Recognition

     

    端到端模型

    端到端模型的目标是一站式直接从图片中定位和识别出所有文本内容来。

    FOTS Rotation-Sensitive Regression

    FOTS(Fast Oriented Text Spotting)是图像文本检测与识别同步训练、端到端可学习的网络模型。检测和识别任务共享卷积特征层,既节省了计算时间,也比两阶段训练方式学习到更多图像特征。引入了旋转感兴趣区域(RoIRotate), 可以从卷积特征图中产生出定向的文本区域,从而支持倾斜文本的识别.

     

    选自arXiv: 1801.01671,’FOTS: Fast Oriented Text Spot

     

    STN-OCR模型

    STN-OCR是集成了了图文检测和识别功能的端到端可学习模型。在它的检测部分嵌入了一个空间变换网络(STN)来对原始输入图像进行仿射(affine)变换。利用这个空间变换网络,可以对检测到的多个文本块分别执行旋转、缩放和倾斜等图形矫正动作,从而在后续文本识别阶段得到更好的识别精度。在训练上STN-OCR属于半监督学习方法,只需要提供文本内容标注,而不要求文本定位信息。作者也提到,如果从头开始训练则网络收敛速度较慢,因此建议渐进地增加训练难度。STN-OCR已经开放了工程源代码和预训练模型。

    选自arXiv: 1707.08831,’STN-OCR: A single Neural Netw

     

    训练数据集

    本章将列举可用于文本检测和识别领域模型训练的一些大型公开数据集, 不涉及仅用于模型fine-tune任务的小型数据集。

    Chinese Text in the Wild(CTW)

    该数据集包含32285张图像,1018402个中文字符(来自于腾讯街景), 包含平面文本,凸起文本,城市文本,农村文本,低亮度文本,远处文本,部分遮挡文本。图像大小2048*2048,数据集大小为31GB。以(8:1:1)的比例将数据集分为训练集(25887张图像,812872个汉字),测试集(3269张图像,103519个汉字),验证集(3129张图像,103519个汉字)。

    文献链接:https://arxiv.org/pdf/1803.00085.pdf 
    数据集下载地址:https://ctwdataset.github.io/
    

     

    Reading Chinese Text in the Wild(RCTW-17)

    该数据集包含12263张图像,训练集8034张,测试集4229张,共11.4GB。大部分图像由手机相机拍摄,含有少量的屏幕截图,图像中包含中文文本与少量英文文本。图像分辨率大小不等。

    下载地址http://mclab.eic.hust.edu.cn/icdar2017chinese/dataset.html
    文献:http://arxiv.org/pdf/1708.09585v2
    

     

    ICPR MWI 2018 挑战赛

    大赛提供20000张图像作为数据集,其中50%作为训练集,50%作为测试集。主要由合成图像,产品描述,网络广告构成。该数据集数据量充分,中英文混合,涵盖数十种字体,字体大小不一,多种版式,背景复杂。文件大小为2GB。

    下载地址:
    https://tianchi.aliyun.com/competition/information.htm?raceId=231651&_is_login_redirect=true&accounttraceid=595a06c3-7530-4b8a-ad3d-40165e22dbfe 
    

     

    Total-Text

    该数据集共1555张图像,11459文本行,包含水平文本,倾斜文本,弯曲文本。文件大小441MB。大部分为英文文本,少量中文文本。训练集:1255张 测试集:300

    下载地址:http://www.cs-chan.com/source/ICDAR2017/totaltext.zip
    文献:http:// arxiv.org/pdf/1710.10400v
    

     

    Google FSNS(谷歌街景文本数据集)

    该数据集是从谷歌法国街景图片上获得的一百多万张街道名字标志,每一张包含同一街道标志牌的不同视角,图像大小为600*150,训练集1044868张,验证集16150张,测试集20404张。

    下载地址:http://rrc.cvc.uab.es/?ch=6&com=downloads
    文献:http:// arxiv.org/pdf/1702.03970v1
    

     

    替换高清大图

    COCO-TEXT

    该数据集,包括63686幅图像,173589个文本实例,包括手写版和打印版,清晰版和非清晰版。文件大小12.58GB,训练集:43686张,测试集:10000张,验证集:10000张

    文献: http://arxiv.org/pdf/1601.07140v2
    下载地址:https://vision.cornell.edu/se3/coco-text-2/
    

     

    Synthetic Data for Text Localisation

    在复杂背景下人工合成的自然场景文本数据。包含858750张图像,共7266866个单词实例,28971487个字符,文件大小为41GB。该合成算法,不需要人工标注就可知道文字的label信息和位置信息,可得到大量自然场景文本标注数据。

    下载地址:http://www.robots.ox.ac.uk/~vgg/data/scenetext/
    文献:http://www.robots.ox.ac.uk/~ankush/textloc.pdf
    Code: https://github.com/ankush-me/SynthText (英文版)
    Code https://github.com/wang-tf/Chinese_OCR_synthetic_data(中文版)
    

     

    Synthetic Word Dataset

    合成文本识别数据集,包含9百万张图像,涵盖了9万个英语单词。文件大小为10GB

    下载地址:http://www.robots.ox.ac.uk/~vgg/data/text/
    

     

    Caffe-ocr中文合成数据

    数据利用中文语料库,通过字体、大小、灰度、模糊、透视、拉伸等变化随机生成,共360万张图片,图像分辨率为280x32,涵盖了汉字、标点、英文、数字共5990个字符。文件大小约为8.6GB

    下载地址:https://pan.baidu.com/s/1dFda6R3
    

     

    参考文献

    1. “光学字符识别技术:让电脑像人一样阅读”, 新浪微博, 霍强

    http://tech.sina.com.cn/d/i/2015-04-03/doc-icczmvun8339303.shtml

    2. “Fully Convolutional Networks for Semantic Segmentation”, arXiv:1411.4038,Jonathan Long, Evan Shelhamer, Trevor Darrell

    https://arxiv.org/pdf/1411.4038

    3. “Spatial Transformer Networks”,arXiv:1506.02025,Max Jaderberg, Karen Simonyan, Andrew Zisserman, Koray Kavukcuoglu

    https://arxiv.org/pdf/1506.02025

    4.“Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks”,arXiv:1506.01497,Shaoqing Ren, Kaiming He, Ross Girshick, Jian Sun

    https://arxiv.org/pdf/1506.01497

    5.“SSD: Single Shot MultiBox Detector”,arxiv:1512.02325,Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, Scott Reed, Cheng-Yang Fu, Alexander C. Berg

    https://arxiv.org/pdf/1512.02325

    6.“Detecting Text in Natural Image with Connectionist Text Proposal Network”,arXiv:1609.03605,Zhi Tian, Weilin Huang, Tong He, Pan He, Yu Qiao

    https://arxiv.org/pdf/1609.03605

    7.“Arbitrary-Oriented Scene Text Detection via Rotation Proposals”,arXiv:1703.01086,Jianqi Ma, Weiyuan Shao, Hao Ye, Li Wang, Hong Wang, Yingbin Zheng, Xiangyang Xue

    https://arxiv.org/pdf/1703.01086

    8.“Fused Text Segmentation Networks for Multi-oriented Scene Text Detection”,arXiv:1709.03272,Yuchen Dai, Zheng Huang, Yuting Gao, Youxuan Xu, Kai Chen, Jie Guo, Weidong Qiu

    https://arxiv.org/pdf/1709.03272

    9.“Deep Matching Prior Network: Toward Tighter Multi-oriented Text Detection”,arXiv:1703.01425,Yuliang Liu, Lianwen Jin

    https://arxiv.org/pdf/1703.01425

    10.“EAST: An Efficient and Accurate Scene Text Detector”,arXiv:1704.03155,Xinyu Zhou, Cong Yao, He Wen, Yuzhi Wang, Shuchang Zhou, Weiran He, Jiajun Liang

    https://arxiv.org/pdf/1704.03155

    11.“Detecting Oriented Text in Natural Images by Linking Segments”,arXiv:1703.06520,Baoguang Shi, Xiang Bai, Serge Belongie

    https://arxiv.org/pdf/1703.06520

    12. “Detecting Scene Text via Instance Segmentation”,arXiv:1801.01315,Dan Deng, Haifeng Liu, Xuelong Li, Deng Cai

    https://arxiv.org/pdf/1801.01315

    13.“TextBoxes: A Fast Text Detector with a Single Deep Neural Network”,arXiv:1611.06779,Minghui Liao, Baoguang Shi, Xiang Bai, Xinggang Wang, Wenyu Liu

    https://arxiv.org/pdf/1611.06779

    14.“TextBoxes++: A Single-Shot Oriented Scene Text Detector”,arXiv:1801.02765,Minghui Liao, Baoguang Shi, Xiang Bai

    https://arxiv.org/pdf/1801.02765

    15.“WordSup: Exploiting Word Annotations for Character based Text Detection”,arXiv:1708.06720,Han Hu, Chengquan Zhang, Yuxuan Luo, Yuzhuo Wang, Junyu Han, Errui Ding

    https://arxiv.org/pdf/1708.06720

    16.“An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition”,arXiv:1507.05717,Baoguang Shi, Xiang Bai, Cong Yao

    https://arxiv.org/pdf/1507.05717

    17. “Robust Scene Text Recognition with Automatic Rectification”,arXiv:1603.03915,Baoguang Shi, Xinggang Wang, Pengyuan Lyu, Cong Yao, Xiang Bai

    https://arxiv.org/pdf/1603.03915

    18.“FOTS: Fast Oriented Text Spotting with a Unified Network”,arXiv:1801.01671,Xuebo Liu, Ding Liang, Shi Yan, Dagui Chen, Yu Qiao, Junjie Yan

    https://arxiv.org/pdf/1801.01671

    19.“STN-OCR: A single Neural Network for Text Detection and Text Recognition”,arXiv:1707.08831,Christian Bartz, Haojin Yang, Christoph Meinel

    https://arxiv.org/pdf/1707.08831

    20.“Chinese Text in the Wild”,arXiv:1803.00085,Tai-Ling Yuan, Zhe Zhu, Kun Xu, Cheng-Jun Li, Shi-Min Hu

    https://arxiv.org/pdf/1803.00085.pdf

    21.“ICDAR2017 Competition on Reading Chinese Text in the Wild (RCTW-17)”,arXiv:1708.09585,Baoguang Shi, Cong Yao, Minghui Liao, Mingkun Yang, Pei Xu, Linyan Cui, Serge Belongie, Shijian Lu, Xiang Bai

    http://arxiv.org/pdf/1708.09585

    22.“Total-Text: A Comprehensive Dataset for Scene Text Detection and Recognition”,arXiv:1710.10400,Chee Kheng Chng, Chee Seng Chan

    https://arxiv.org/pdf/1710.10400

    23.“End-to-End Interpretation of the French Street Name Signs Dataset”,arXiv:1702.03970,Raymond Smith, Chunhui Gu, Dar-Shyang Lee, Huiyi Hu, Ranjith Unnikrishnan, Julian Ibarz, Sacha Arnoud, Sophia Lin

    https://arxiv.org/pdf/1702.03970

    24.“COCO-Text: Dataset and Benchmark for Text Detection and Recognition in Natural Images”,arXiv:1601.07140,Andreas Veit, Tomas Matera, Lukas Neumann, Jiri Matas, Serge Belongie

    http://arxiv.org/pdf/1601.07140

    25. “Synthetic Data for Text Localisation in Natural Images”,arXiv:1604.06646, Ankush Gupta, Andrea Vedaldi, Andrew Zisserman

    https://arxiv.org/pdf/1604.06646

    推荐阅读

    [1]机器学习-波澜壮阔40年【获取码】SIGAI0413.

    [2]学好机器学习需要哪些数学知识?【获取码】SIGAI0417.

    [3] 人脸识别算法演化史【获取码】SIGAI0420.

    [4]基于深度学习的目标检测算法综述 【获取码】SIGAI0424.

    [5]卷积神经网络为什么能够称霸计算机视觉领域?【获取码】SIGAI0426.

    [6] 用一张图理解SVM的脉络【获取码】SIGAI0428.

    [7] 人脸检测算法综述【获取码】SIGAI0503.

    [8] 理解神经网络的激活函数 【获取码】SIGAI2018.5.5.

    [9] 深度卷积神经网络演化历史及结构改进脉络-40页长文全面解读【获取码】SIGAI0508.

    [10] 理解梯度下降法【获取码】SIGAI0511.

    [11] 循环神经网络综述—语音识别与自然语言处理的利器【获取码】SIGAI0515

    [12] 理解凸优化 【获取码】 SIGAI0518

    [13] 【实验】理解SVM的核函数和参数 【获取码】SIGAI0522

    [14]【SIGAI综述】行人检测算法 【获取码】SIGAI0525

    [15] 机器学习在自动驾驶中的应用—以百度阿波罗平台为例(上)【获取码】SIGAI0529

    [16]理解牛顿法【获取码】SIGAI0531

    [17] 【群话题精华】5月集锦—机器学习和深度学习中一些值得思考的问题【获取码】SIGAI 0601

    [18] 大话Adaboost算法 【获取码】SIGAI0602

    [19] FlowNet到FlowNet2.0:基于卷积神经网络的光流预测算法【获取码】SIGAI0604

    [20] 理解主成分分析(PCA)【获取码】SIGAI0606

    [21] 人体骨骼关键点检测综述 【获取码】SIGAI0608

    [22]理解决策树 【获取码】SIGAI0611

    [23] 用一句话总结常用的机器学习算法【获取码】SIGAI0611

    [24] 目标检测算法之YOLO 【获取码】SIGAI0615

    [25] 理解过拟合 【获取码】SIGAI0618

    [26]理解计算:从√2到AlphaGo ——第1季 从√2谈起 【获取码】SIGAI0620

    [27] 场景文本检测——CTPN算法介绍 【获取码】SIGAI0622

    [28] 卷积神经网络的压缩和加速 【获取码】SIGAI0625

    [29] k近邻算法 【获取码】SIGAI0627

    [30]自然场景文本检测识别技术综述 【获取码】SIGAI0627

    [31] 理解计算:从√2到AlphaGo ——第2季 神经计算的历史背景 【获取码】SIGAI0704

    [32] 机器学习算法地图【获取码】SIGAI0706

    [33] 反向传播算法推导-全连接神经网络【获取码】SIGAI0709

    [34] 生成式对抗网络模型综述【获取码】SIGAI0709.

    [35]怎样成为一名优秀的算法工程师【获取码】SIGAI0711.

    [36] 理解计算:从根号2到AlphaGo——第三季 神经网络的数学模型【获取码】SIGAI0716

    [37]【技术短文】人脸检测算法之S3FD 【获取码】SIGAI0716

    [38] 基于深度负相关学习的人群计数方法【获取码】SIGAI0718

    [39] 流形学习概述【获取码】SIGAI0723

    [40] 关于感受野的总结 【获取码】SIGAI0723

    [41] 随机森林概述 【获取码】SIGAI0725

    [42] 基于内容的图像检索技术综述——传统经典方法【获取码】SIGAI0727

    [43] 神经网络的激活函数总结【获取码】SIGAI0730

    [44] 机器学习和深度学习中值得弄清楚的一些问题【获取码】SIGAI0802

    [45] 基于深度神经网络的自动问答系统概述【获取码】SIGAI0806

    [46] 机器学习与深度学习核心知识点总结 写在校园招聘即将开始时 【获取 码】SIGAI0808

    [47] 理解Spatial Transformer Networks【获取码】SIGAI0810


     

    展开全文
  • 自然场景中文汉字数据集 本数据集包括3273类汉字,共47万张汉字图片,每类汉字归类在一个文件夹下,各图像尺寸不一,包含在自然场景下能见到的各种字体。 本人由于需要大量的自然场景中文汉字数据集,而手头只有少...

    自然场景中文汉字数据集

      本数据集包括3273类汉字,共47万张汉字图片,每类汉字归类在一个文件夹下,各图像尺寸不一,包含在自然场景下能见到的各种字体。
      本人由于需要大量的自然场景中文汉字数据集,而手头只有少部分汉字数据集,但是如果自己生成汉字数据集,这数据集的汉字和我项目需要的自然场景汉字数据集并非同分布,在我自己的项目数据集下识别效果特别差。因此,从网上搜来大量标注的自然场景图片数据集,处理之后得到汉字数据集。使用这些汉字数据集进行训练之后,在我自己的项目数据上也能识别很好。
      如需下载该数据集,请移步至:https://download.csdn.net/download/u011754972/11236720
    [汉字数据集文件夹展示]:
    Alt
    [灰度图片展示]:
    Alt
    [灰度图片展示]:
    Alt

    [彩色图片展示]:
    Alt
      另附上自然场景下的特定场景下的汉字数据集,即,不包含自然场景下的手写体、过度扭曲图、以及艺术体,可以参考道路交通路标上的规范字体,此数据集包含2602类汉字,如需下载该数据集,请移步至:https://download.csdn.net/download/u011754972/11237131

    展开全文
  • 自然场景人脸检测技术实践

    千次阅读 2020-02-07 17:57:13
    一、 背景 人脸检测技术是通过人工智能分析的方法自动返回图片中的人脸坐标位置和尺寸大小,是人脸智能分析应用...因拍摄的场景不同,自然场景环境复杂多变,光照因素也不可控,人脸本身多姿态以及群体间的相互遮挡...

    一、 背景

    人脸检测技术是通过人工智能分析的方法自动返回图片中的人脸坐标位置和尺寸大小,是人脸智能分析应用的核心组成部分,具有广泛的学术研究价值和业务应用价值,比如人脸识别、人脸属性分析(年龄估计、性别识别、颜值打分和表情识别)、人脸Avatar、智能视频监控、人脸图像过滤、智能图像裁切、人脸AR游戏等等。因拍摄的场景不同,自然场景环境复杂多变,光照因素也不可控,人脸本身多姿态以及群体间的相互遮挡给检测任务带来了很大的挑战(如图1所示)。在过去20年里,该任务一直是学术界和产业界共同关注的热点。

    自然场景人脸检测在美团业务中也有着广泛的应用需求,为了应对自然场景应用本身的技术挑战,同时满足业务的性能需求,美团视觉智能中心(Vision Intelligence Center,VIC)从底层算法模型和系统架构两个方面进行了改进,开发了高精度人脸检测模型VICFace。而且VICFace在国际知名的公开测评集WIDER FACE上达到了行业主流水平。

    图1 自然场景人脸检测样本示例

    二、 技术发展现状

    跟深度学习不同,传统方法解决自然场景人脸检测会从特征表示和分类器学习两个方面进行设计。最有代表性的工作是Viola-Jones算法[2],它利用手工设计的Haar-like特征和Adaboost算法来完成模型训练。传统方法在CPU上检测速度快,结果可解释性强,在相对可控的环境下可以达到较好的性能。但是,当训练数据规模成指数增长时,传统方法的性能提升相对有限,在一些复杂场景下,甚至无法满足应用需求。

    随着计算机算力的提升和训练数据的增长,基于深度学习的方法在人脸检测任务上取得了突破性进展,在检测性能上相对于传统方法具有压倒性优势。基于深度学习的人脸检测算法从算法结构上可以大致分为三类:

    1)基于级联的人脸检测算法。

    2)两阶段人脸检测算法。

    3)单阶段人脸检测算法。

    其中,第一类基于级联的人脸检测方法(如Cascade CNN[3]、MTCNN[4])运行速度较快、检测性能适中,适用于算力有限、背景简单且人脸数量较少的场景。第二类两阶段人脸检测方法一般基于Faster-RCNN[6]框架,在第一阶段生成候选区域,然后在第二阶段对候选区域进行分类和回归,其检测准确率较高,缺点是检测速度较慢,代表方法有Face R-CNN[9] 、ScaleFace[10]、FDNet[11]。最后一类单阶段的人脸检测方法主要基于Anchor的分类和回归,通常会在经典框架(如SSD[12]、RetinaNet[13])的基础上进行优化,其检测速度较两阶段法快,检测性能较级联法优,是一种检测性能和速度平衡的算法,也是当前人脸检测算法优化的主流方向。

    三、 优化思路和业务应用

    在自然场景应用中,为了同时满足精度需求以及达到实用的目标,美团视觉智能中心(Vision Intelligence Center,VIC)采用了主流的Anchor-Based单阶段人脸检测方案,同时在数据增强和采样策略、模型结构设计和损失函数等三方面分别进行了优化,开发了高精度人脸检测模型VICFace,以下是相关技术细节的介绍。

    1. 数据增强和采样策略

    单阶段通用目标检测算法对数据增强方式比较敏感,如经典的SSD算法在VOC2007[50]数据集上通过数据增强性能指标mAP提升6.7。经典单阶段人脸检测算法S3FD[17]也设计了样本增强策略,使用了图片随机裁切,图片固定宽高比缩放,图像色彩扰动和水平翻转等。

    百度在ECCV2018发表的PyramidBox[18]提出了Data-Anchor采样方法,将图像中一个随机选择的人脸进行尺度变换变成一个更小Anchor附近尺寸的人脸,同时训练图像的尺寸也进行同步变换。这样做的好处是通过将较大的人脸生成较小的人脸,提高了小尺度上样本的多样性,在WIDER FACE[1]数据集Easy、Medium、Hard集合上分别提升0.4(94.3->94.7),0.4(93.3->93.7),0.6(86.1->86.7)。ISRN[19]将SSD的样本增强方式和Data-Anchor采样方法结合,模型检测性能进一步提高。

    而VICFace在ISRN样本增强方式的基础上对语义模糊的超小人脸做了过滤。而mixup[22]在图像分类和目标检测中已经被验证有效,现在用于人脸检测,有效地防止了模型过拟合问题。考虑到业务数据中人脸存在多姿态、遮挡和模糊的样本,且这些样本在训练集中占比小,检测难度大,因此在模型训练时动态的给这些难样本赋予更高的权重从而有可能提升这些样本的召回率。

    2. 模型结构设计

    人脸检测模型结构设计主要包括检测框架、主干网络、预测模块、Anchor设置与正负样本划分等四个部分,是单阶段人脸检测方法优化的核心。

    • 检测框架

    近年来单阶段人脸检测框架取得了重要的发展,代表性的结构有S3FD[17]中使用的SSD,SFDet[25]中使用的RetinaNet,SRN[23]中使用的两步结构(后简称SRN)以及DSFD[24]中使用的双重结构(后简称DSFD),如下图2所示。其中,SRN是一种单阶段两步人脸检测方法,利用第一步的检测结果,在小尺度人脸上过滤易分类的负样本,改善正负样本数量的均衡性,针对大尺度的人脸采用迭代求精的方式进行人脸定位,改善大尺度人脸的定位精度,提升了人脸检测的准确率。在WIDER FACE上测评SRN取得了最好的检测效果(按标准协议用AP平均精度来衡量),如表1所示。

    S3FD:

    SFDet:

    SRN:

    DSFD:

    图2 四种检测结构

    表1 Backbone为ResNet50时,四种检测结构在WIDER FACE上的评估结果

    VICFace继承了当前性能最好的SRN检测结构,同时为了更好的融合自底向上和自顶向下的特征,为不同特征不同通道赋予不同的权重,以P4为例,其计算式为:

    其中WC4向量的元素个数与Conv(C4)特征的通道数相等,WP4与Upsample(P5)的通道数相等,WC4与WP4是可学习的,其元素值均大于0,且WC4与WP4对应元素之和为1,结构如图3所示。

    图3 视觉智能中心VICFace网络整体结构图

    • 主干网络

    单阶段人脸检测模型的主干网络通常使用分类任务中的经典结构(如VGG[26]、ResNet[27]等)。其中,主干网络在ImageNet数据集上分类任务表现越好,其在WIDER FACE上的人脸检测性能也越高,如表2所示。为了保证检测网络得到更高的召回,在性能测评时VICFace主干网络使用了在ImageNet上性能较优的ResNet152网络(其在ImageNet上Top1分类准确率为80.26),并且在实现时将Kernel为7x7,Stride为2的卷积模块调整为为3个3x3的卷积模块,其中第一个模块的Stride为2,其它的为1;将Kernel为1x1,Stride为2的下采样模块替换为Stride为2的Avgpool模块。

    表2 不同主干网络在ImageNet的性能对比和其在RetinaNet框架下的检测精度

    • 预测模块

    利用上下文信息可以进一步提高模型的检测性能。SSH[36]是将上下文信息用于单阶段人脸检测模型的早期方案,PyramidBox、SRN、DSFD等也设计了不同上下文模块。如图4所示,SRN上下文模块使用1xk,kx1的卷积层提供多种矩形感受野,多种不同形状的感受野助于检测极端姿势的人脸;DSFD使用多个带孔洞的卷积,极大的提升了感受野的范围。

    图4 不同网络结构中的Context Module

    在VICFace中,将带孔洞的卷积模块和1xk,kx1的卷积模块联合作为Context Module,既提升了感受野的范围也有助于检测极端姿势的人脸,同时使用Maxout模块提升召回率,降低误检率。它还利用Cn层特征预测的人脸位置,校准Pn层特征对应的区域,如图5所示。Cn层预测的人脸位置相对特征位置的偏移作为可变卷积的Offset输入,Pn层特征作为可变卷积的Data输入,经过可变卷积后特征对应的区域与人脸区域对应更好,相对更具有表示能力,可以提升人脸检测模型的性能。

    图5 自研检测模型结构中的预测模块

    • Anchor设置与正负样本划分

    基于Anchor的单阶段人脸检方法通过Anchor的合理设置可以有效的控制正负样本比例和缓解不同尺度人脸定位损失差异大的问题。现有主流人脸检测方法中Anchor的大小设置主要有以下三种(S代表Stride):

    根据数据集中人脸的特点,Anchor的宽高也可以进一步丰富,如{1},{0.8},{1,0.67}。

    在自研方案中,在C3、P3层,Anchor的大小为2S和4S,其它层Anchor大小为4S(S代表对应层的Stride),这样的Anchor设置方式在保证人脸召回率的同时,减少了负样本的数量,在一定程度上缓解了正负样本不均衡现象。根据人脸样本宽高比的统计信息,将Anchor的宽高比设置为0.8,同时将Cn层IoU大于0.7的样本划分为正样本,小于0.3的划分为负样本,Pn层IoU大于0.5的样本划分为正样本,小于0.4的划分为负样本。

    3. 损失函数

    人脸检测的优化目标不仅需要区分正负样本(是否是人脸),还需要定位出人脸位置和尺寸。S3FD中区分正负样本使用交叉熵损失函数,定位人脸位置和尺寸使用Smooth L1 Loss,同时使用困难负样本挖掘解决正负样本数量不均衡的问题。另一种缓解正负样本不均衡带来的性能损失更直接的方式是Lin等人提出Focal Loss[13]。UnitBox[41]提出IoU Loss可以缓解不同尺度人脸的定位损失差异大导致的性能损失。AlnnoFace[40]同时使用Focal Loss和IoU Loss提升了人脸检测模型的性能。引入其它相关辅助任务也可以提升人脸检测算法的性能,RetinaFace[42]引入关键点定位任务,提升人脸检测算法的定位精度;DFS[43]引入人脸分割任务,提升了特征的表示能力。

    综合前述方法的优点,VICFace充分利用人脸检测及相关任务的互补信息,使用多任务方式训练人脸检测模型。在人脸分类中使用Focal Loss来缓解样本不均衡问题,同时使用人脸关键点定位和人脸分割来辅助分类目标的训练,从而提升整体的分类准确率。在人脸定位中使用Complete IoU Loss[47],以目标与预测框的交并比作为损失函数,缓解不同尺度人脸损失的差异较大的问题,同时兼顾目标和预测框的中心点距离和宽高比差异,从而可以达到更好整体检测性能。

    4. 优化结果和业务应用

    在集群平台的支持下,美团视觉智能中心的自然场景人脸检测基础模型VICFace与现有主流方案进行了性能对比,在国际公开人脸检测测评集WIDER FACE的三个验证集Easy、Medium、Hard中均达到领先水平(AP为平均精度,数值越高越好),如图6和表3所示。

    图6 VICFace以及当前主流人脸检测方法在WIDER FACE上的测评结果

    表3 VICFace以及当前主流人脸检测方法在WIDER FACE上的测评结果
    

    注:SRN是中科院在AAAI2019提出的新方法,DSFD是腾讯优图在CVPR2019提出的新方法,PyramidBox++是百度在2019年提出的新方法,AInnoFace是创新奇智在2019提出的新方法,RetinaFace是ICCV2019 Wider Challenge亚军。

    在业务应用中,自然场景人脸检测服务目前已接入美团多个业务线,满足了业务在UGC图像智能过滤和广告POI图像展示等应用的性能需求,前者保护用户隐私,预防侵犯用户肖像权,后者可以有效的预防图像中人脸局部被裁切的现象,从而提升了用户体验。此外,VICFace还为其它人脸智能分析应用提供了核心基础模型,如自动检测后厨工作人员的着装合规性(是否穿戴帽子和口罩),为食品安全增加了一道保障。

    在未来的工作中,为了给用户提供更好的体验,同时满足高并发的需求,在模型结构设计和模型推理效率方面将会做进一步探索和优化。此外,在算法设计方面,基于Anchor-Free的单阶段目标检测方法近年来在通用目标检测领域表现出较高的潜力,也是视觉智能中心未来会关注的重要方向。

    参考文献

    1. Yang S, Luo P, Loy C C, et al. Wider face: A face detection benchmark[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 5525-5533.

    2. Viola P, Jones M J. Robust real-time face detection[J]. International journal of computer vision, 2004, 57(2): 137-154.

    3. Li H, Lin Z, Shen X, et al. A convolutional neural network cascade for face detection[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2015: 5325-5334.

    4. Zhang K, Zhang Z, Li Z, et al. Joint face detection and alignment using multitask cascaded convolutional networks[J]. IEEE Signal Processing Letters, 2016, 23(10): 1499-1503.

    5. Hao Z, Liu Y, Qin H, et al. Scale-aware face detection[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2017: 6186-6195.

    6. Ren S, He K, Girshick R, et al. Faster r-cnn: Towards real-time object detection with region proposal networks[C]//Advances in neural information processing systems. 2015: 91-99.

    7. Lin T Y, Dollár P, Girshick R, et al. Feature pyramid networks for object detection[C]. Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 2117-2125.

    8. Jiang H, Learned-Miller E. Face detection with the faster R-CNN[C]//2017 12th IEEE International Conference on Automatic Face & Gesture Recognition (FG 2017). IEEE, 2017: 650-657.

    9. Wang H, Li Zhif, et al. Face R-CNN. arXiv preprint arXiv: 1706.01061, 2017.

    10. Yang S, Xiong Y, Loy C C, et al. Face detection through scale-friendly deep convolutional networks[J]. arXiv preprint arXiv:1706.02863, 2017.

    11. Zhang C, Xu X, Tu D. Face detection using improved faster rcnn[J]. arXiv preprint arXiv:1802.02142, 2018.

    12. Liu W, Anguelov D, Erhan D, et al. Ssd: Single shot multibox detector[C]//European conference on computer vision. Springer, Cham, 2016: 21-37.

    13. Lin T Y, Goyal P, Girshick R, et al. Focal loss for dense object detection[C]//Proceedings of the IEEE international conference on computer vision. 2017: 2980-2988.

    14. Huang L, Yang Y, Deng Y, et al. Densebox: Unifying landmark localization with end to end object detection[J]. arXiv preprint arXiv:1509.04874, 2015.

    15. Liu W, Liao S, Ren W, et al. High-level Semantic Feature Detection: A New Perspective for Pedestrian Detection[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019: 5187-5196.

    16. Zhang Z, He T, Zhang H, et al. Bag of freebies for training object detection neural networks[J]. arXiv preprint arXiv:1902.04103, 2019.

    17. Zhang S, Zhu X, Lei Z, et al. S3fd: Single shot scale-invariant face detector[C]//Proceedings of the IEEE International Conference on Computer Vision. 2017: 192-201.

    18. Tang X, Du D K, He Z, et al. Pyramidbox: A context-assisted single shot face detector[C]//Proceedings of the European Conference on Computer Vision (ECCV). 2018: 797-813.

    19. Zhang S, Zhu R, Wang X, et al. Improved selective refinement network for face detection[J]. arXiv preprint arXiv:1901.06651, 2019.

    20. Li Z, Tang X, Han J, et al. PyramidBox++: High Performance Detector for Finding Tiny Face[J]. arXiv preprint arXiv:1904.00386, 2019.

    21. Zhang S, Zhu X, Lei Z, et al. Faceboxes: A CPU real-time face detector with high accuracy[C]//2017 IEEE International Joint Conference on Biometrics (IJCB). IEEE, 2017: 1-9.

    22. Zhang H, Cisse M, Dauphin Y N, et al. mixup: Beyond empirical risk minimization[J]. arXiv preprint arXiv:1710.09412, 2017.

    23. Chi C, Zhang S, Xing J, et al. Selective refinement network for high performance face detection[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2019, 33: 8231-8238.

    24. Li J, Wang Y, Wang C, et al. Dsfd: dual shot face detector[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019: 5060-5069.

    25. Zhang S, Wen L, Shi H, et al. Single-shot scale-aware network for real-time face detection[J]. International Journal of Computer Vision, 2019, 127(6-7): 537-559.

    26. Simonyan K, Zisserman A. Very deep convolutional networks for large-scale image recognition[J]. arXiv preprint arXiv:1409.1556, 2014.

    27. He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 770-778.

    28. Xie S, Girshick R, Dollár P, et al. Aggregated residual transformations for deep neural networks[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 1492-1500.

    29. Iandola F, Moskewicz M, Karayev S, et al. Densenet: Implementing efficient convnet descriptor pyramids[J]. arXiv preprint arXiv:1404.1869, 2014.

    30. Howard A G, Zhu M, Chen B, et al. Mobilenets: Efficient convolutional neural networks for mobile vision applications[J]. arXiv preprint arXiv:1704.04861, 2017.

    31. Sandler M, Howard A, Zhu M, et al. Mobilenetv2: Inverted residuals and linear bottlenecks[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018: 4510-4520.

    32. Bazarevsky V, Kartynnik Y, Vakunov A, et al. BlazeFace: Sub-millisecond Neural Face Detection on Mobile GPUs[J]. arXiv preprint arXiv:1907.05047, 2019.

    33. He Y, Xu D, Wu L, et al. LFFD: A Light and Fast Face Detector for Edge Devices[J]. arXiv preprint arXiv:1904.10633, 2019.

    34. Zhu R, Zhang S, Wang X, et al. Scratchdet: Exploring to train single-shot object detectors from scratch[J]. arXiv preprint arXiv:1810.08425, 2018, 2.

    35. Lin T Y, Maire M, Belongie S, et al. Microsoft coco: Common objects in context[C]//European conference on computer vision. Springer, Cham, 2014: 740-755.

    36. Najibi M, Samangouei P, Chellappa R, et al. Ssh: Single stage headless face detector[C]//Proceedings of the IEEE International Conference on Computer Vision. 2017: 4875-4884.

    37. Sa. Earp, P. Noinongyao, J. Cairns, A. Ganguly Face Detection with Feature Pyramids and Landmarks. arXiv preprint arXiv:1912.00596, 2019.

    38. Goodfellow I J, Warde-Farley D, Mirza M, et al. Maxout networks[J]. arXiv preprint arXiv:1302.4389, 2013.

    39. Zhu C, Tao R, Luu K, et al. Seeing Small Faces from Robust Anchor’s Perspective[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018: 5127-5136.

    40. F. Zhang, X. Fan, G. Ai, J. Song, Y. Qin, J. Wu Accurate Face Detection for High Performance. arXiv preprint arXiv:1905.01585, 2019.

    41. Yu J, Jiang Y, Wang Z, et al. Unitbox: An advanced object detection network[C]//Proceedings of the 24th ACM international conference on Multimedia. ACM, 2016: 516-520.

    42. Deng J, Guo J, Zhou Y, et al. RetinaFace: Single-stage Dense Face Localisation in the Wild[J]. arXiv preprint arXiv:1905.00641, 2019.

    43. Tian W, Wang Z, Shen H, et al. Learning better features for face detection with feature fusion and segmentation supervision[J]. arXiv preprint arXiv:1811.08557, 2018.

    44. Y. Zhang, X. Xu, X. Liu Robust and High Performance Face Detector. arXiv preprint arXiv:1901.02350, 2019.

    45. S. Zhang, C. Chi, Z. Lei, Stan Z. Li RefineFace: Refinement Neural Network for High Performance Face Detection. arXiv preprint arXiv:1909.04376, 2019.

    46. Wang J, Yuan Y, Li B, et al. Sface: An efficient network for face detection in large scale variations[J]. arXiv preprint arXiv:1804.06559, 2018.

    47. Zheng Z, Wang P, Liu W, et al. Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression[J]. arXiv preprint arXiv:1911.08287, 2019.

    48. Bay H, Tuytelaars T, Van Gool L. Surf: Speeded up robust features[C]//European conference on computer vision. Springer, Berlin, Heidelberg, 2006: 404-417.

    49. Yang B, Yan J, Lei Z, et al. Aggregate channel features for multi-view face detection[C]//IEEE international joint conference on biometrics. IEEE, 2014: 1-8.

    50. Everingham M, Van Gool L, Williams C K I, et al. The PASCAL visual object classes challenge 2007 (VOC2007) results[J]. 2007.

    51. Redmon J, Farhadi A. Yolov3: An incremental improvement[J]. arXiv preprint arXiv:1804.02767, 2018.

    作者简介

    振华、欢欢、晓林,均为美团视觉智能中心工程师。

    招聘信息

    美团视觉智能中心基础视觉组的主要职责是夯实视觉智能底层核心基础技术,为集团业务提供平台级视觉解决方案。主要方向有基础模型优化、大规模分布式训练、Server效率优化、移动端适配优化和创新产品孵化。

    欢迎计算机视觉相关领域小伙伴加入我们,简历可发邮件至 tech@meituan.com(邮件标题注明:美团视觉智能中心基础视觉组)。

    展开全文
  • 自然场景OCR检测(YOLOv3+CRNN)

    万次阅读 多人点赞 2019-03-14 16:14:27
    简介 目前的主流自然场景OCR模型:文字检测+文字识别 文字检测:解决的问题是哪里有文字,文字的范围有多。 主要方法: 1.CTPN:水平文字检测,四个自由度,类似物体检测(常用成熟基础)。 2.目标检测:如YOLO、...

    (自然场景OCR检测(YOLOv3+CRNN))(中文+英文模型)

    前言

    最近对于自然场景下的OCR比较有兴趣,所以总结了一些目前OCR现状,并且找了一个自然场景OCR的项目练练手。本人新手小白,若出现理解不当的地方,还望指出。

    简介

    目前的主流自然场景OCR模型:文字检测+文字识别
    文字识别步骤

    文字检测:解决的问题是哪里有文字,文字的范围有多大。
    主要方法:
    1.CTPN:水平文字检测,四个自由度,类似物体检测(常用成熟基础)。
    2.目标检测:如YOLO、SSD、Mask-R-CNN。
    3.Seglink:倾斜文本检测,文本框是不规则的四边形,八个自由度。
    4.RRPN:允许带角度的矩形框覆盖。
    5.EAST:允许带角度矩形框或任意四边形覆盖。
    6.TextBox:水平矩形框。
    7.TextBox++:旋转矩形框。
    8.TextSnake:圆盘覆盖的方法。

    文字识别:对定位好的文字区域进行识别,主要解决的问题是每个文字是什么,将图像中的文字区域进转化为字符信息。

    文字检测定位文字图像区域

    主要方法:
    文本行识别2种基本算法框架
    1.CRNN(CNN+RNN(BLSTM)+CTC)
    2.CNN+Seq2Seq+Attention

    此项目采取CTPN + YOLO v3 + CRNN方式进行OCR识别,下面对该方案进行一个大致讲解(需对照源码理解)。
    源码地址:https://github.com/chineseocr/chineseocr
    整个项目代码(包含本人对代码详细注解):https://download.csdn.net/download/qq_39706357/13193446

    一、检测文字朝向,调整文字识别倾斜角度

    1.检测文字朝向(ROTATE = [0,90,180,270])

    剪切图像边缘,将图像变成(224,224,3)尺寸,图像channel中心化处理,读取Angle-model(vgg16 : 5层卷积,2层全连接,最后经过softmax预测),预测文字朝向,旋转图片。

    2. 调整文字识别倾斜角度

    将新生成的图像进行灰度化处理,将图像缩放在一个尺度范围内(600~900),图像归一化处理(原图与归一化之后的运行结果完全一致,说明归一化不会改变图像本身的信息存储,但是通过打印出来的像素值可以发现,取值范围从0~255已经转化为0~1之间了,这个对于后续的神经网络或者卷积神经网络处理有很大的好处),进行多维百分比滤波处理,修剪(原图-模糊处理后的图像+1),裁剪边框。
    计算图像每行的均值向量,得到该向量的方差。如果图像文字不存在文字倾斜(假设所有文字朝向一致),那么对应的方差应该是最大,找到方差最大对应的角度,就是文字的倾斜角度。本项目中,只取了-15到15度,主要是计算速度的影响,如果不考虑性能,可以增大修正角度。

    二、检测文字区域

    1.目标区域检测(text_detect)

    图像预处理:关于图像中文字的标注是范围框选的,然后在每个框中对其进行宽为8,高为Box高的分割,即CTPN,每一个小框作为的true_boxes,如下图所示
    在这里插入图片描述

    1)darknet53:

    Darknet-53的网络结构
    上图是以输入图像256 x 256进行预训练来进行介绍的,常用的尺寸是416 x 416,都是32的倍数。(卷积的strides默认为(1,1),padding默认为same,当strides为(2,2)时padding为valid)。

    2)feature extractor

    在这里插入图片描述
    最后的输出 feature map[y1, y2, y3] ,每个像素num_anchors*(num_classes+5)( 4个边界框偏移量,1个目标性预测)

    3)变换格式

    将图像的标注框true_boxes的标签,变成与预测anchor box相同的格式标签y_true
    现在有很多的true_boxes,我们想要把y_true的表示分为三层,所以就需要将true_boxes分给不同的三层特征,将true_boxes与9个anchors进行iou计算,因为每层的有三个anchors,将true_boxes分给对于9个anchors中与其最大iou的anchor,所在的特征层。最后转换成y_true的表达形式,后转换成y_true的表达形式,得到的y_true是相对feature真实坐标。

    preprocess_true_boxes(true_boxes, input_shape, anchors, num_classes):
    input:
    true_boxes: array, shape=(m, T, 5) m = 批量数 T = 最大框数
    input_shape:图像尺寸
    anchors: array, shape=(N, 2), wh
    output:
    y_true = [num_layers, m, grid_shape[0], grid_shape[1], anchors_number = 3, 5+ num_classes ]
    y_true的第0和1位是中心点xy,范围是(0 ~ 13/26/52),xy的值0 ~ 1(在feature map像素点中),第2和3位是宽高wh,范围是0 ~ 1,第4位是置信度1或0,第5 ~ n位是类别为1其余为0.
    实现方法:设y_true是全0矩阵(np.zeros)列表,即[(m,13,13,3,6),(m,26,26,3,6),(m,52,52,3,6)],将图像中的标注框box在原图中的长宽与9个anchor box长宽进行iou计算,找出与每个标注框box iou值最大的anchor box,因为每个anchor所在的feature map和y_true[4]是固定的,找到这个anchor所在的feature map和y_true[4] (anchor在(0,1,2))中序号位置,再利用true_boxes的xy坐标,确定出其所在feature map的 grid位置(i,j),最后用true_boxes[3]去替换y_true中相应grid中的预测框中心点xy在这个gird的0~1值,wh的0 ~ 1值,confidence(置信度) = 1,所对应的类别 = 1.

    4)Loss function

    将预测的feature map[y1, y2, y3]与y_true送入loss function:
    一、将预测的yolo_outputs (feature map[y1, y2, y3])送入yolo_head函数,输出grid(目标在grid的位置,shape:[gridxgridx1x2]), raw_pred(预测的输出,shape:[Nxgridxgridx3x(5+num_classes)]), pred_xy(预测的xy在grid上归一化的真实值,shape: [Nxgridxgridx3x2]), pred_wh(预测的wh在grid上归一化的真实值,shape: [Nxgridxgridx3x2])。
    yolo_head: 1.grid:建立横纵坐标系生,跟feature map大小一致[gridxgridx1x2], grid是feature map中grid cell的左上角坐标。2. box_xy:将yolo_outputs中的xy坐标,先经过sigmoid函数,后加上偏移量,最后除以grid,也就是(sigmoid(x,y)+grid左上坐标) / grid。3. box_wh:将yolo_outputs中的wh长度,先进行e为底的幂计算,后跟anchor进行乘法计算,然后除以grid。
    二、将y_true中的xywh真实值,通过上述公式换算成偏移量raw_true_xy、raw_true_wh,y_pre也为偏移量。
    (1)xy_loss = confidence * box_loss_scale * 二分类的交叉熵(y_true, y_pred)
    设定 box_loss_scale = 2 – wh,wh是y_true的wh,于是wh越小,box_loss_scale越大, 实际上,我们知道yolov1里作者在loss里对宽高都做了开根号处理,是为了使得大小差别比较大的边框差别减小。因为对不同大小的bbox预测中,想比于大的bbox预测偏差,小bbox预测偏差相同的尺寸对IOU影响更大,而均方误差对同样的偏差loss一样,为此取根号。例如,同样将一个 100x100 的目标与一个 10x10 的目标都预测大了 10 个像素,预测框为 110 x 110 与 20 x 20。显然第一种情况我们还可以接受,但第二种情况相当于把边界框预测大了 1 倍,但如果不使用根号函数,那么损失相同,显然加根号后对小框预测偏差10个像素带来了更大的损失。而在yolov2和v3里,损失函数进行了改进,不再简单地加根号了,而是用scale = 2 - groundtruth.w * groundtruth.h加大对小框的损失。

    (2)wh_loss = confidence * box_loss_scale * 0.5 * 均方误差(y_true, y_pred))
    边框回归最简单的想法就是通过平移加尺度缩放进行微调,这里虽然wh回归不是线性回归,但是当输入的 Proposal 与 Ground Truth 相差较小时,即IOU很大时(RCNN 设置的是 IoU>0.6),可以认为这种变换是一种线性变换,那么我们就可以用线性回归(线性回归就是给定输入的特征向量 X, 学习一组参数 W, 使得经过线性回归后的值跟真实值 Y(Ground Truth)非常接近. 即Y≈WX )来建模对窗口进行微调, 否则会导致训练的回归模型不work(当 Proposal跟 GT 离得较远,就是复杂的非线性问题了,此时用线性回归建模显然就不合理了)
    在这里插入图片描述
    所以,边框回归微调时,可以当作线性回归。
    (3)confidence_loss = confidence * 二分类的交叉熵(y_true, y_pred) + (1- confidence) * 二分类的交叉熵(y_true, y_pred) * ignore_mask)
    ignore_mask:即confidence为反面的mask。将目标y_true中有是否有目标转成bool型生成true_box,然后同pred_box计算iou,pred_box(13,13,3,4)与真实窗口true_box(设有j个)之间的IOU,输出为iou(13,13,3,j),best_iou(13,13,3)值是最大的iou,删掉小于阈值的BBOX,ignore_mask[b]存放的是pred_box(13,13,3,4)iou小于ignore_thresh的grid,即ignore_mask[b]=[13,13,3],如果小于ignore_thresh,其值为0;大于为1。

    (4)class_loss = confidence * 二分类的交叉熵(y_true, y_pred)
    为什么多分类问题用二值交叉熵解决?
    里,我们可以理解为,“所有的分类都预测正确”为一个类1,否则就是另一个类0。这样就把多分类看做是二分类问题,当且仅当所有的分类都预测对时,loss最小
    最后分别对loss进行简单的加总求和取均值.
    loss = [‘class_loss’,‘xy_loss’,‘wh_loss’,‘confidence_loss’]

    细节补充:
    在这里插入图片描述
    其中,Cx,Cy是feature map中grid cell的左上角坐标,在yolov3中每个grid cell在feature map中的宽和高均为1。如下图的情形时,这个bbox边界框的中心属于第二行第二列的grid cell,它的左上角坐标为(1,1),故Cx=1,Cy=1.公式中的Pw、Ph是预设的anchor box映射到feature map中的宽和高。
    在这里插入图片描述
    最终得到的边框坐标值是bx,by,bw,bh即边界框bbox相对于feature map的位置和大小,是我们需要的预测输出坐标。但我们网络实际上的学习目标是tx,ty,tw,th这4个offsets,其中tx,ty是预测的坐标偏移值,tw,th是尺度缩放,有了这4个offsets,自然可以根据之前的公式去求得真正需要的bx,by,bw,bh4个坐标。至于为何不直接学习bx,by,bw,bh呢?因为YOLO 的输出是一个卷积特征图,包含沿特征图深度的边界框属性。边界框属性由彼此堆叠的单元格预测得出。因此,如果你需要在 (5,6) 处访问该单元格的第二个边框bbox,那么你需要通过 map[5,6, (5+C): 2*(5+C)] 将其编入索引。这种格式对于输出处理过程(例如通过目标置信度进行阈值处理、添加对中心的网格偏移、应用锚点等)很不方便,因此我们求偏移量即可。那么这样就只需要求偏移量,也就可以用上面的公式求出bx,by,bw,bh,反正是等价的。另外,通过学习偏移量,就可以通过网络原始给定的anchor box坐标经过线性回归微调(平移加尺度缩放)去逐渐靠近groundtruth。
    那么4个坐标tx,ty,tw,th是怎么求出来的呢?
    tx = Gx – Cx ty = Gy – Cy 这样就可以直接求bbox中心距离grid cell左上角的坐标的偏移量。
    w和th的公式yolov3和faster-rcnn系列是一样的,是物体所在边框的长宽和anchor box长宽之间的比率,不管Faster-RCNN还是YOLO,都不是直接回归bounding box的长宽而是尺度缩放到对数空间,是怕训练会带来不稳定的梯度。因为如果不做变换,直接预测相对形变tw,那么要求tw>0,因为你的框的宽高不可能是负数。这样,是在做一个有不等式条件约束的优化问题,没法直接用SGD来做。所以先取一个对数变换,将其不等式约束去掉,就可以了。
    训练时用的groundtruth的4个坐标去做差值和比值得到tx,ty,tw,th,测试时就用预测的bbox就好了,公式修改就简单了,把Gx和Gy改为预测的x,y,Gw、Gh改为预测的w,h即可。
    网络可以不断学习tx,ty,tw,th偏移量和尺度缩放,预测时使用这4个offsets求得bx,by,bw,bh即可。
    在这里插入图片描述
    这个公式tx,ty为何要sigmoid一下啊?前面讲到了在yolov3中没有让Gx - Cx后除以Pw得到tx,而是直接Gx - Cx得到tx,这样会有问题是导致tx比较大且很可能>1.(因为没有除以Pw归一化尺度)。用sigmoid将tx,ty压缩到[0,1]区间內,可以有效的确保目标中心处于执行预测的网格单元中,防止偏移过多。举个例子,我们刚刚都知道了网络不会预测边界框中心的确切坐标而是预测与预测目标的grid cell左上角相关的偏移tx,ty。如13*13的feature map中,某个目标的中心点预测为(0.4,0.7),它的cx,cy即中心落入的grid cell坐标是(6,6),则该物体的在feature map中的中心实际坐标显然是(6.4,6.7).这种情况没毛病,但若tx,ty大于1,比如(1.2,0.7)则该物体在feature map的的中心实际坐标是(7.2,6.7),注意这时候该物体中心在这个物体所属grid cell外面了,但(6,6)这个grid cell却检测出我们这个单元格内含有目标的中心(yolo是采取物体中心归哪个grid cell整个物体就归哪个grid celll了),这样就矛盾了,因为左上角为(6,6)的grid cell负责预测这个物体,这个物体中心必须出现在这个grid cell中而不能出现在它旁边网格中,一旦tx,ty算出来大于1就会引起矛盾,因而必须归一化。
    看最后两行公式,tw为何要指数呀,这就好理解了嘛,因为tw,th是log尺度缩放到对数空间了,当然要指数回来,而且这样可以保证大于0。 至于左边乘以Pw或者Ph是因为tw=log(Gw/Pw)当然应该乘回来得到真正的宽高。

    记feature map大小为W,H(如13*13),可将bbox相对于整张图片的位置和大小计算出来(使4个值均处于[0,1]区间内)约束了bbox的位置预测值到[0,1]会使得模型更容易稳定训练(如果不是[0,1]区间,yolo的每个bbox的维度都是85,前5个属性是(Cx,Cy,w,h,confidence),后80个是类别概率,如果坐标不归一化,和这些概率值一起训练肯定不收敛)
    只需要把之前计算的bx,bw都除以W,把by,bh都除以H。即
    在这里插入图片描述

    5)检测box和score

    通过yolo_head将out = [y1,y2,y3]中的xywh转换成真实坐标
    box_score = box_confidence * box_class_probs,box_confidence为0或者1
    将box中超出图片尺寸的坐标换成在图像中对应的边缘点
    box.shape = (m,4), 4是box的真实坐标(x1,y1,x2,y2),score = (m, 1)

    6)预测结果

    在这里插入图片描述

    2.检测并合并proposals(TextDetector)

    1. 首先过滤掉scores小于TEXT_PROPOSALS_MIN_SCORE的box
    2. 进行nums,剔除掉重复的文本框

    将scores展开排序,返回相应的index,将scores和boxes在水平方向上平铺,利用非极大抑制,将大于阈值的都淘汰掉,即过滤重复的box
    非极大抑制:
    1将所有框的得分排序,选中最高分及其对应的框
    2遍历其余的框,如果和当前最高分框的重叠面积(IOU)大于一定阈值,我们就将框删除.
    3从未处理的框中继续选一个得分最高的,重复上述过程。

    3. 将scores进行标准化处理

    data = (data-min_)/(max_-min_)

    4. 合并文本行,连接文本区域变成文本行(详见代码)

    TextProposalConnector.get_text_lines()

    4.1) TextProposalGraphBuilder 发现可合并的文本区域

    a) 创建Image.shape [ 1 ] 个[ ],shape = [batch,x,y],也就是对图像中水平方向的每个像素点,建立一个列表 [ [ ] [ ] [ ] [ ] … ] (一共x个[ ]),将每个box的x1所对应坐标的box的index插入到boxes_table的横坐标所对应的[ ]位置,构成boxes_table。
    b) 计算每个index对应的box与其右侧30像素的所有box重合程度高的box的index(get_successions()函数,分别调用了MAX_HORIZONTAL_GAP,MIN_V_OVERLAPS,MIN_SIZE_SIM这三个参数作为匹配的度量),留下该index的box对应successions的box相应scores最高的index。
    c) 判断当前Box的scores是否比它右侧scores最高、重叠度最好的box的左侧30像素scores最高、水平重叠度最好的box的scores还高,如果匹配成功,则将graph[index, succession_index]=True
    d) 迭代查找graph中true,即从做到右依次最匹配的box,填入sub_graphs=[ ],将合并的Box的index放在一个列表里,返回这个列表sub_graphs,如[[50, 36, 58, 135, 198, 191, 204, 218, 227, 177], [52, 21, 14, 12, 9, 10, 16, 24, 120], [96, 29, 74, 171, 186, 248, 268, 277]]。

    4.2) TextProposalConnector:连接文本区域

    将sub_graphs列表中的Box合并,返回text_lines[文本区域的数量,8]
    [0:x0(Boxes中的最小x0),1:拟合box的x0,y0坐标,取x0+offset和x1-offset,得到的lt_y, rt_y的中取最小值(offset的作用:因为存在左或者右倾斜,取最大的范围),2:x1(Boxes中的最大x1),3:拟合box的x0,y1坐标,取x0+offset和x1-offset,得到的lb_y, rb_y取最大值,4:合并的Box的平均值,5:中心点拟合函数中 x一次幂前系数,6:中心点拟合函数中 x零次幂前系数,7:box高度平均值+2.5,返回text_lines,即文本行的信息。最后再进行一个非极大抑制(因文本行较少重复,TEXT_LINE_NMS_THRESH = 0.99 ##文本行之间测iou值。)

    4.3) 变换坐标(get_boxes( ))

    因存在旋转,所有要将之前的文本框变成旋转的矩形,详细转换过程如下图所示
    在这里插入图片描述
    将text_lines的8个值通过get_boxes变换,生成一个(len(bboxes),[x1,y1,x2,y2,x3,y3,x4,y4])数组,四个坐标点分别为左上,右上,左下,右下。再通过sort_bo对bounding box进行排序,根据竖直方向的从上至下排序。

    5. 检测结果

    在这里插入图片描述
    (上述检测结果存在些许问题,由于这张图片检测的难度较大,可以将检测的参数阈值设置高些)
    最后返回[len(bboxes),[x1,y1,x2,y2,x3,y3,x4,y4]] 输入crnnRec进行文字检测

    三、检测文字

    1. 图像预处理

    1.计算每个bounding box的角度
    2.选装bounding box框出的部分,并裁剪出来
    3. 把bounding box旋转到正确的方向
    4. 转为灰度图
    5. 送入网络识别

    2. crnnOcr(test版)

    1) 预处理
    对图片进行按比例裁剪,裁剪出高为32的图片,处理后的图片尺寸为[1,1,32,scale×w]
    2) 加载crnnOcr模型,检测出预测结果
    CRNN模型:
    在这里插入图片描述
    上图为论文模型,仅作参考
    上图为论文模型(输入图片尺寸大小为100×32),这里,我们以128×32大小的图片为例
    partImg[1,128,32]先经过经过以上CNN处理,得到feature map[batch, channels, height, weight] ,cnn输出将height变成1,去掉该维度,把 width 当做LSTM 的时间 time steps, 这样就变成了 [width, batch, channels] = [16, b, 516] 对应LSTM 的输入 [n_steps, batch_size, output]
    也就是将feature map的每一列或者每几列作为一个时间序列输入特征,送入RNN(双向LSTM),最后输出[T, b, n_class(5530个汉字)],最终的输出结果直观上可以想象成将128分为16份,每一份对应5530个类别的概率。
    输出pre为[16,1,5530]
    3) 解码
    1.取5530类中,概率最大的类别[16,1,5530]->[16,1]
    例如:tensor([1770, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 1954])
    2.将以上输出对应到汉字表解码,输出相应的文本。
    转换:促销

    识别结果展示

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    识别结果:
    在这里插入图片描述
    ##########################################################
    如对于上述有疑问,欢迎指出,欢迎留言

    参考

    yolo3 https://github.com/pjreddie/darknet.git
    crnn https://github.com/meijieru/crnn.pytorch.git
    ctpn https://github.com/eragonruan/text-detection-ctpn
    CTPN https://github.com/tianzhi0549/CTPN
    keras yolo3 https://github.com/qqwweee/keras-yolo3.git

    展开全文
  • FOTS:自然场景的文本检测与识别

    千次阅读 2021-03-07 09:48:44
    在这篇文章里,我将分享我实现这篇论文的...可以在任何自然场景中检测和识别任何文本。 在上面的图像中,FOTS给出了结果,它检测到“间隙”文本区域和图像(场景)中的所有文本区域,并识别出它是“间隙”、“50”和“GA
  • 首先介绍应用背景,包括面临的技术挑战、典型应用场景、系统实施框架等。接着介绍搭建图文识别模型过程中经常被引用到的多种特征提取基础网络、物体检测网络框架,以及它们被应用到图文识别任务中所面临的场景适配...
  • 针对新冠肺炎防控期间肉眼识别判断行人是否佩戴口罩效率低且存在较风险的问题, 提出一种改进检测目标边框损失的自然场景下行人是否佩戴口罩的检测算法. 该算法对YOLOv3损失函数进行改进, 应用GIoU计算目标边界框...
  • 深度学习 场景识别Recognizing the environment in one glance is one of the human brain’s most accomplished deeds. While the tremendous recent progress in object recognition tasks originates from the ...
  • 大多数最先进的场景文本检测算法是基于深度学习的方法,其依赖于边界框回归并且执行至少两种预测:文本/非文本分类和位置回归。回归在这些方法中获取边界框中起着关键作用,但它不是必不可少的,因为文本/非文本预测...
  • 今天是进入公司实习的第三周了,在小组内负责的工作主要是和自然场景文本检测相关的内容。这里把看过的论文做一下翻译和整理,也方便自己日后查看。 Paper:STN-OCR: A single Neural Network for Text Detection ...
  • CTPN - 自然场景文本检测

    万次阅读 多人点赞 2017-12-22 14:57:55
    体现在要检测出一个完整的文本线,同一文本线上不同字符可能差异,距离远,要作为一个整体检测出来难度比单个目标更——因此,作者认为 预测文本的竖直位置(文本bounding box的上下边界)比水平位置(文本...
  • MSER — 自然场景文本检测

    千次阅读 2018-11-26 13:08:19
    MSER多用于自然场景的文本检测的前期阶段,产生尽可能多的proposals,首先回顾一下在调用这个函数过程中踩过的坑: 1、不知道如何修改MSER中的参数,如灰度值的变化量,检测到的组块面积的范围以及最大的变化率,...
  • 自然场景实时交互技术是一种能表达自然场景的真实感,同时给用户极强的 沉浸感的元素。自然场景的交互式实时渲染已成为目前的研究热点,尽管目前已 取得了不少成果,但是早期的研究工作主要集中在草体外形的真实感...
  • python+opencv+EAST做自然场景文本检测

    千次阅读 热门讨论 2018-08-21 21:54:01
    自行感受,能定出来部分,但还是有缺漏: 使用方法: 1.下载源码: 打开英文原文链接,点击下载,输入邮箱号,通过邮箱中的链接下载压缩包。 如果下载后解压缩失败的话,可以去我的CSDN资源下载...
  • 本文就自然场景的文本识别问题加以探讨,着重讨论的是Microsoft Corporation 所提出的Stroke Width Transform算法,通过文献阅读,形成个人的总结。
  • http://vision.cornell.edu/se3/coco-text/
  • 基于深度学习的自然场景文字识别

    万次阅读 2017-05-27 09:09:48
    与文档文字识别不同,自然场景中的文字识别 -----图像背景复杂、分辨率低下、字体多样、分布随意等,传统光学字符识别在此类情况下无法应用。 图像理解:仅利用一般的视觉元素(如太阳、大海、山、天空等)及其相互...
  • 总第358篇2019年 第36篇自然场景图像中的文字识别应用广泛,其中文字定位是最重要的一步,但技术上极具挑战。本文提出了一个高效的场景文本检测框架,取得了明显的效果提升...
  • 2020年科大讯飞自然场景文字检测前三名队伍分享

    万次阅读 多人点赞 2020-12-07 14:33:19
    关于识别这块没有做过详细的研究,所以需要数据量的量级不是很清楚。所以只能是在条件成熟了以后,对检测会有帮助。 2. 第二名:华付信息AILab 2.1 团队介绍 2.2 算法方案解析 2.2.1 数据预处理 2.2.2 模型搭建 ...
  • 自然语言处理 典型场景分析

    千次阅读 2019-05-23 11:33:36
    对于一些特定的场景,可以发现正向和反向的输入能够使用过去和未来的信息  通过添加额外的一层,这一层会接受完全相反的副本作为输入,更好利用手上的数据  举个例子(我是天下最帅的男人,反向输入 男人 ...
  • 自然场景文字是图像高层语义的一种重要载体,近些年自然场景图像中的文本检测与识别技术越来越引起人们的重视。特别是近年来ICDAR的历界比赛,更是逐渐将这一领域的score不断提升。如...
  • 文字识别分为两个具体步骤:文字的检测和文字的识别,两者缺一不可,尤其是文字检测,是识别的前提条件,若文字都找不到,那何谈文字识别。今天我们首先来谈一下当今...自然场景下的文本检测有如下几个难点: 文本...
  • 2019-02-07修改,完善NLP关键的实际应用场景描述 一、自然语言处理步骤 1.收集数据:文本信息的常见来源包括-商品评价、用户产出的内容(推文、帖子、提问等)、问题解决方案等 2.清洗数据:去除一切不相关的字符-...
  • 自然语言处理的应用场景

    千次阅读 2020-03-02 01:53:27
    现如今,人工智能已经成为大众耳熟能详的词汇,而自然语言处理却很少有人了解。自然语言处理(Natural Language Processing,NLP)属于人工智能的一个子领域,是指用计算机对自然语言的形、音、义等信息进行处理,即对...
  • 大型场景裁剪渲染

    千次阅读 2017-11-23 16:55:49
    3D游戏特别是网络在线游戏中,室外大场景渲染是一块非常重要的内容,它也是3D图形引擎的核心。它是图形学和图像处理理论最直接的应用,其涉及的技术还可以应用于其它领域,比如虚拟现实、3D GIS、数据可视化等,其...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 234,129
精华内容 93,651
关键字:

关于大自然的场景