• [热门活动] 【已结束】体验10分钟开发增值税发票文字识别应用,赢取手环、帆布包、京东卡等好礼
    活动已结束,如有问题可加群反馈活动说明:随着各类文字识别需求场景的增多,从零开始构建文字识别应用满足需求效率太低?DevStar给你解决,10分钟内生成应用,且可为后续开发提供可扩展开发的图片文字识别框架。现在体验还有机会赢好礼!体验指导书>>>活动时间:整体活动即日起,截止时间不限,礼品放完为止心得文章投稿须知>>>获奖公示:奖品公示(截至5月30日):如有异议请加入体验群进行反馈,谢谢!恭喜以上获奖小伙伴,请获奖小伙伴(抽奖奖项获奖已填写收件小伙伴无需重复填写)2022年6月10日之前点链接>>>填写领奖信息,逾期将自动视为放弃,礼品将于15个工作日内安排发放,请耐心等待~奖品公示(6月1日-6月30日):如有异议请加入体验群进行反馈,谢谢!恭喜以上获奖小伙伴,请获奖小伙伴2022年7月15日之前点链接>>>填写领奖信息,逾期将自动视为放弃,礼品将于15个工作日内安排发放,请耐心等待~体验交流福利群注意事项:1、请务必使用个人账号参与活动(IAM、企业账号等账号参与无效);2、华为云新用户定义:2022年5月16日后注册华为云账号的用户;3、一个新用户最多获取一次“新用户体验有奖”奖项,不能再获得其他三个活动的该奖项,但可以参与其余三个同期体验活动的体验抽奖(其余三个活动可进群了解);4、只有完成产品体验并截图回帖后再进行问卷抽奖才算有效。否则并不具备获奖资格,将不会发放奖品;5、用户回帖只会仅楼主可见,以防冒用截图;6、截图务必包含华为云账号;7、获奖名单将于每月底统一公布直至礼品发放完毕,届时将发布兑奖方式。8、本活动最终解释权归华为云所有。
  • [应用推荐] OCR识别接口需要用到的技术
    有些人感觉开发一个OCR识别接口没有什么难的,如今市面上有不少成熟的OCR接口,比如常见的身份证ocr识别,,接入对于接口使用OCR功能确实很方便,可是要想把产品做的更出色,那还是有很多工作要做,那么OCR识别接口都需要用到哪些技术?图片压缩技术使用市面上的OCR接口,要把照片上传到服务器,随后返回识别结果,上传之前,图片压缩就是非常重要的一环,原图上传容量太大,上传上去就得耗费一段时间,因此要将一张高清大图压得比较小还能保持画质,既保证了速度又确保了识别质量,是做好ocr识别功能的第一步。波浪纹过滤技术有一些用户是直接拍摄电脑显示屏上的照片的上传,识别效果很一般,原来是显示屏上的一片片波浪纹干扰了文字识别,人的双眼是不太能看的出来,当把图片缩小时,就能发现比较明显的的波浪纹,工程师通过研究运用技术手段对波浪纹进行优化,再遇到这些干扰波浪纹。也会把它们很好的过滤掉,确保识别效果。杂乱背景精准识别遇到纸张非常薄的情形下,纸张反面的字会透出来,那样就导致了识别时,可能会把纸反面的字当內容去识别,一般可以根据黑白色彩转换技术,去掉透出来的字或是别的杂乱背景。智能分段技术现阶段的OCR都是一行行的返回结果,为了方便后期编辑修改,需要提供智能分段功能,优化最终文字排版效果,当然当下只能对一般的文字内容进行智能分段,排版复杂的文章还需要继续优化。智能识别文件边界文档拍摄显然没办法保证完全按边界拍出来,只需要文档那一部分,就需要手动剪裁一下,通过工程师的研发,就有了智能识别文档边界的功能,能直接一键裁切。
  • [技术干货] 【AI-OCR】自定义扩展插件aiverifyinput(输入型验证码、健康码颜色识别、抱杆识别)
    此插件有效期到2023年6月30日,如需体验验证码等AI能力,请浏览以下帖子:【ManasAI-OCR】验证码、健康码颜色识别、表格图片识别cid:link_0---------------------------------------------1. 导入后,在studio中的控件界面,显示见图1;图12. 控件帮忙界面见图2;图23. 属性界面见图3,图4。(识别模式有三种,输入型验证码、健康码颜色识别、抱杆识别;输入型验证码中,需要选择是纯数字,还是纯字母,还是数字与字母混合)图3图4
  • [其他] 使用CV2和Keras OCR从图像中删除文本
    介绍本文将讨论如何快速地从图像中删除文本,作为图像分类器的预处理步骤。删除文本可能有多种或多种原因,例如,我们可以使用无文本图像进行数据增强。在本教程中,我们将使用OCR(光学字符识别)检测图像中的文本,并在修复过程中填充照片中丢失的部分以生成完整的图像——以删除我们检测到的文本。处理为了从图像中删除文本,我们将执行以下三个步骤:1.​ 识别图像中的文本,并使用KerasOCR获取每个文本的边界框坐标。1.​ 对于每个边界框,应用一个遮罩来告诉算法我们应该修复图像的哪个部分。1.​ 最后,应用一种修复算法对图像的遮罩区域进行修复,从而得到一个无文本图像。### 实现Keras ocr简介KerasOCR提供现成的ocr模型和端到端训练管道,以构建新的ocr模型(请参见:https://keras-ocr.readthedocs.io/en/latest/).在这种情况下,我们将使用预训练的模型,它对我们的任务非常有效。KerasOCR将自动下载探测器和识别器的预训练权重。当通过Keras orc传递图像时,它将返回一个(word,box)元组,其中框包含四个角的坐标(x,y)。下面是一个快速示例:import matplotlib.pyplot as pltimport keras_ocrpipeline = keras_ocr.pipeline.Pipeline()#read image from the an image path (a jpg/png file or an image url)img = keras_ocr.tools.read(image_path)# Prediction_groups is a list of (word, box) tuplesprediction_groups = pipeline.recognize([img])#print image with annotation and boxeskeras_ocr.tools.drawAnnotations(image=img, predictions=prediction_groups[0])如果我们看一下prediction_groups,我们会看到每个元素对应一组坐标。例如,prediction_groups[0][10]如下:('tuesday',  array(\[\[ 986.2778 ,  625.07764\],         \[1192.3856 ,  622.7086 \],         \[1192.8888 ,  666.4836 \],         \[ 986.78094,  668.8526 \]\], dtype=float32)) 数组的第一个元素对应左上角的坐标,第二个元素对应右下角,第三个元素是右上角,而第四个元素是左下角。#### cv2修复函数使用OpenCV应用修复算法时,需要提供两幅图像:1.​ 输入图像,包含我们要删除的文本。1.​ 遮罩图像,它显示图像中要删除的文本在哪里。第二个图像的尺寸应与输入的尺寸相同。Cv2具有两种修复算法,并允许应用矩形、圆形或线遮罩(请参考:https://opencv24-python-tutorials.readthedocs.io/en/latest/py_tutorials/py_photo/py_inpainting/py_inpainting.html)在这种情况下,我决定使用线遮罩,因为它们更灵活地覆盖不同方向的文本(矩形遮罩只适用于平行或垂直于x轴的单词,圆形遮罩将覆盖比较大的区域)。为了应用遮罩,我们需要提供线的起点和终点坐标以及线的厚度:起点将是框的左上角和左下角之间的中点,终点将是右上角和右下角之间的中点。对于厚度,我们将计算左上角和左下角之间的线长度。import mathimport numpy as npdef midpoint(x1, y1, x2, y2):    x\_mid = int((x1 + x2)/2)    y\_mid = int((y1 + y2)/2)    return (x\_mid, y\_mid)#example of a line mask for the word "Tuesday"box = prediction\_groups\[0\]\[10\]x0, y0 = box\[1\]\[0\]x1, y1 = box\[1\]\[1\] x2, y2 = box\[1\]\[2\]x3, y3 = box\[1\]\[3\] x\_mid0, y\_mid0 = midpoint(x1, y1, x2, y2)x\_mid1, y\_mi1 = midpoint(x0, y0, x3, y3)thickness = int(math.sqrt( (x2 - x1)\*\*2 + (y2 - y1)\*\*2 ))#现在我们可以创建我们的遮罩:mask = np.zeros(img.shape\[:2\], dtype="uint8")cv2.line(mask, (x\_mid0, y\_mid0), (x\_mid1, y\_mi1), 255, thickness)#我们还可以检查遮罩区域,确保其正常工作。masked = cv2.bitwise\_and(img, img, mask=mask)plt.imshow(masked)最后,我们可以修复图像。在这种情况下,我们将使用cv2.INPAINT_NS,指得是“Navier-Stokes, Fluid Dynamics, and Image and Video Inpainting”一文中描述的修复算法。img_inpainted = cv2.inpaint(img, mask, 7, cv2.INPAINT_NS)plt.imshow(img_inpainted)正如你所看到的,“Tuesday”已从图片中删除。
  • [技术干货] 应用场景分享——WeAutomate华为云EI-OCR服务控件的使用
    一、EI-OCR操作控件介绍二、环境准备       华为云EI-OCR提供了两种识别方式:本地识别和华为云识别。其中本地识别是通过连接调用本地环境中的华为一体机上部署的华为云OCR服务,完成OCR识别,华为云识别则是通过用户自己的华为云IAM账号连接华为云端的华为OCR服务,完成OCR识别本地版环境准备:      1. 部署有华为云EI-OCR服务的华为一体机,并保证其服务处于启动状态,由于部署成本较高,非情况特殊不推荐使用华为云版环境准备:1、安装WeAutomate的pc可以连接华为云;2、已完成实名认证的可以正常使用的华为云账号 ,登录后获取账号下IAM账号信息。获取方法:通过登录华为云账号打开进入链接cid:link_1创建用户,生成IAM子用户账号,如下图所示:3、开通订阅所需的相关的OCR服务,通过使用华为云账号登录如下链接 cid:link_0,选择华为云region代号(目前ocr主力region是: 华北-北京一(cn-north-1)、华北-北京四(cn-north-4)、华东-上海一(cn-east-3)、华东-上海二(cn-east-2)、华南-广州(cn-south-1)),然后点击开通服务,如下图所示:注意:账号需要开通对应地区的华为云OCR服务,可自行下单购买。三、EI-OCR操作控件的使用使用EI-OCR识别控件,首先需要使用前置控件连接EI-OCR服务,连接服务的方式分为如下本地版和华为云版两种方式,具体情况如下图所示,填入参数连接服务即可:1、前置控件-本地版/inputAccountNoToken控件的返回值retValue可以看到是否取到token,务必取到token以后再继续下一步。  2、前置控件-华为云版/inputAccountByToken控件的返回值retValue可以看到是否取到token,务必取到token以后再继续下一步。  下图以EI_OCR火车票识别控件为例为例实现识别提取火车票中的文字信息
  • [其他] 文字识别方法全面整理
    文字识别也是目前CV的主要研究方向之一。本文主要总结目前文字识别方向相关内容,包括单独文字识别以及结合文字检测和文字识别的端到端的文字识别。希望这篇文章能够帮助各位。 图0 文字检测Detection与文字识别Recognition对于文字识别,实际中一般首先需要通过文字检测定位文字在图像中的区域,然后提取区域的序列特征,在此基础上进行专门的字符识别。但是随着CV发展,也出现很多端到端的End2End OCR。文字检测(Text Detection)文字检测定位图片中的文本区域,而Detection定位精度直接影响后续Recognition结果。图1.1如图1.1中,红框代表“LAN”字符ground truth(GT),绿色框代表detection box。在GT与detection box有相同IoU的情况下,识别结果差异巨大。所以Detection对后续Recognition影响非常大! 目前已经有很多文字检测方法,包括:EAST/CTPN/SegLink/PixelLink/TextBoxes/TextBoxes++/TextSnake/MSR/... 其中CTPN方法的介绍如下:场景文字检测—CTPN原理与实现https://zhuanlan.zhihu.com/p/34757009文字识别(Text Recognition)识别水平文本行,一般用CRNN或Seq2Seq两种方法(欢迎移步本专栏相关文章):• CRNN:**CNN+RNN+CTC**一文读懂CRNN+CTC文字识别https://zhuanlan.zhihu.com/p/43534801• CNN+Seq2Seq+AttentionSeq2Seq+Attention原理介绍https://zhuanlan.zhihu.com/p/51383402对应OCR代码如下https://github.com/bai-shang/crnn_seq2seq_ocr_pytorch对于特定的弯曲文本行识别,早在CVPR2016就已经有了相关paper:• Robust Scene Text Recognition with Automatic Rectification. CVPR2016.arxiv.org/abs/1603.03915图2.1对于弯曲不规则文本,如果按照之前的识别方法,直接将整个文本区域图像强行送入CNN+RNN,由于有大量的无效区域会导致识别效果很差。所以这篇文章提出一种通过STN网络学习变换参数,将Rectified Image对应的特征送入后续RNN中识别。图2.2其中Spatial Transformer Network(STN)指:arxiv.org/abs/1506.02025核心就是将传统二维图像变换(如旋转/缩放/仿射等)End2End融入到网络中。具体二维图像变换知识请翻阅:Homograph单应性从传统算法到深度学习:https://zhuanlan.zhihu.com/p/74597564• Scene Text Recognition from Two-Dimensional Perspective. AAAI2018.该篇文章于MEGVII 2019年提出。首先在文字识别网络中加入语义分割分支,获取每个字符的相对位置。图2.4其次,在获取每个字符位置后对字符进行分类,获得文字识别信息。该方法采用分类解决识别问题,并没有像传统方法那样使用RNN。图2.5除此之外,在文章中还是使用了Deformable Convolution可变形卷积。相比传统3x3卷积,可变形卷积可以提取文字区域不同形状的特征。图2.6• SqueezedText: A Real-time Scene Text Recognition by Binary Convolutional Encoderdecoder Network. AAAI2018.https://ren-fengbo.lab.asu.edu/sites/default/files/16354-77074-1-pb.pdf该文章引入二值层(-1 or +1)部分替换CRNN中的float浮点卷积,核心是使用很小的网络进行识别。• Handwriting Recognition in Low-resource Scripts using Adversarial Learning. CVPR2019.arxiv.org/pdf/1811.01396.pdf• ESIR: End-to-end Scene Text Recognition via Iterative Image Rectification. CVPR2019.http:openaccess.thecvf.com/content_CVPR_2019/papers/Zhan_ESIR_End-To-End_Scene_Text_Recognition_via_Iterative_Image_Rectification_CVPR_2019_paper.pdf图2.7ESIR采用cascade R-CNN级联思路,通过3次变换将弯曲字符变换为水平,再经过LSTM识别。具体变换思路请查阅论文。End2End OCR (Detection+ Recognition)由于End2End OCR同时涉及文字检测+文字识别两个方向,对于不熟悉的读者建议首先阅读上述CTPN/CRNN/Seq2Seq三篇文章了解相关内容(当然求点赞喽)。在之前介绍的算法中,文字检测和文字识别是分为两个网络分别完成的,所以一直有研究希望将OCR中的Detection+ Recognition合并成一个End2End网络。目前End2End OCR相关研究如下:• Towards End-to-end Text Spotting with Convolutional Recurrent Neural Networks. ICCV2017.http:openaccess.thecvf.com/content_ICCV_2017/papers/Li_Towards_End-To-End_Text_ICCV_2017_paper.pdf图3.1该篇文章采用Faster R-CNN的Two-stage结构:首先Text Proposal Network(即RPN)生成对应的文本区域Text Proposal,后续通过Bounding Box regression和Box Classification进一步精修文本位置。但是不同的是,在RoI Pooling后接入一个LSTM+Attention的文字识别分支中,如图3.2。由于识别与之前介绍的文字识别方法大同小异,后续不再重复介绍。图3.2但是这样的结构存在问题。举例说明:Faster R-CNN的RPN只是初步产生Proposal,后续还需要再经过一次Bounding Box regression才能获取准确的检测框,该问题在CTPN论文(arxiv.org/abs/1609.03605)中有说明,如图3.3:图3.3 CTPN文章中提及RPN生成Proposal不准的问题所以Text Proposal不一定很准会对后续识别分支产生巨大影响,导致该算法在复杂数据集上其实并不是很work。• Deep TextSpotter: An End-to-End Trainable Scene Text Localization and Recognition Framework. ICCV2017.http:openaccess.thecvf.com/content_ICCV_2017/papers/Busta_Deep_TextSpotter_An_ICCV_2017_paper.pdf图3.4 Deep TextSpotter在与Faster R-CNN不同,Deep TextSpotter生成的Region Proposal包含6个数值: 其中 代表Proposal box在图像中的位置, 代表Proposal box与水平方向的夹角, 代表置信度confidence。 对于Region Proposal所在的特征 ,通过双线性插值可以获得 固定高度的变换后的特征 , 其中 代表双线性采样核,本质就是传统的图像旋转+缩放插值变换。图3.5在获得 后,显然可以后接RNN+CTC进行识别。可以看到Deep TextSpotter通过学习角度 ,将proposal通过双线性插值变换为固定高度的水平特征,然后再进行识别,达到一种End2End的效果。与同时期的上一个方法类似,同样存在RPN生成Proposal不准导致识别率低的问题,所以在复杂数据集实际效果可能并不是太好。图3.6 Deep TextSpotter对应的CTC识别• Attention-based Extraction of Structured Information from Street View Imagery. ICDAR2017.arxiv.org/abs/1704.03549图3.7 spatial attention ocr该文章由Google在2017年提出,主要针对多视角的街景采集数据进行OCR,其关键点为:1. 利用CNN提取不同视角的图片的特征,并将特征concat为一个大的特征矩阵2. 计算图片中文的spatial attention , 越大该区域为文字区域的概率越大3. 通过 抽取 中文字区域特征 ,并送入后续RNN进行识别该方法利用spatial attention(arxiv.org/pdf/1502.03044v3.pdf)进行端到端OCR,相比检测+检测方法更加新颖。• Mask TextSpotter: An End-to-End Trainable Neural Network for Spotting Text with Arbitrary Shapes. ECCV2018.arxiv.org/abs/1807.02242图3.8 Mask TextSpotter该方法由旷视科技 (www.zhihu.com/people/c26b4202ed6af1379f52a967235d94b2) 在2018年提出,主要用于解决不规则弯曲字符End2End的识别问题。相比倾斜字符,处理弯曲不规则字符更难,无法简单通过Proposal角度 对特征进行变换。Mask TextSpotter借鉴了Mask RCNN,首先由RPN网络生成Proposal,再由Faster R-CNN分支对Proposal做进一步分类和位置回归,同时通过Mask分支分割出文本所在区域Global word map和每个字符所在中心Background map。这样不仅可以获得整个文本word区域,还可以获得每个字符character区域。图3.9 Mask TextSpotter进行文字识别在文字识别方面Mask TextSpotter设计0~1和A~Z共计36个“one-hot”形式的Character map进行分类,即没有使用RNN直接强行分类。如果用Mask TextSpotter识别汉字,则需要设计4000+ Character map,这显然是不科学的。另外该方法在识别过程中也没有用到文字的序列信息(总体来说该方法与之前的Scene Text Recognition from Two-Dimensional Perspective思路类似)。• Towards End-to-End License Plate Detection and Recognition: A Large Dataset and Baseline. ECCV2018.http:openaccess.thecvf.com/content_ECCV_2018/papers/Zhenbo_Xu_Towards_End-to-End_License_ECCV_2018_paper.pdf在该文章中提出一个包含250k图的中国车牌数据集CCPD,每个标注包含1个box+4个定位点+识别文字GT:图3.10 车牌数据集CCPD在网络方面该文章提出一种PRNet:1. 利用Box Regression layer层预测车牌位置 ;2. 检测出来 确定位置后,采集对应不同尺度的特征图进行ROI Pooling;3. 把不同尺度特征拼接在一起,进行识别。图3.11 PRNet该文章核心内容就是推出了一个车牌OCR数据集CCPD,并在这个数据集上提出一种BaseLine方法。该方向研究人员可以尝试使用该数据集。在这里特别感谢一下所有开放数据集的研究人员!数据才是cv第一生产力!• An end-to-end TextSpotter with Explicit Alignment and Attention. CVPR2018.http:openaccess.thecvf.com/content_cvpr_2018/papers/He_An_End-to-End_TextSpotter_CVPR_2018_paper.pdf改文章与Deep TextSpotter比较类似,首先生成带有角度 的倾斜Text Proposal,然后通过类似于RoI Pooling的Text-alignment提取固定长度的feature sequence,再送入RNN+Seq2Seq+Attention结构进行识别。图3.13与Deep TextSpotter不同的是,Text-alignment在通过双线性插值提取到整个Proposal特征后,再通过一组Inception卷积获取feature sequence送入RNN,而不是直接把双线性插值结果送入RNN。图3.15• FOTS: Fast Oriented Text Spotting with a Unified Network. CVPR2018.arxiv.org/abs/1801.01671FOTS采用Single-Shot结构结合(arxiv.org/abs/1612.03144)直接检测文字区域,输出带角度 的Bounding Box;之后利用双线性插值RoIRotate获取固定大小的特征,送入双向LSTM进行识别。图3.16 FOTS Architecture图3.17 FPN图3.18 RoIRotate由于使用Single-Shot结构,所以应该是相对“Fast”一点。• SEE: Towards Semi-Supervised End-to-End Scene Text Recognition. AAAI2018.arxiv.org/abs/1712.05404图3.19图3.20另外SEE作者2017年在arXiv上放出STN-OCR的论文,应该是没有中任何会议。考虑到完整性也挂在这里。arxiv.org/abs/1707.08831来自 | 知乎    作者 | 白裳链接 | https://zhuanlan.zhihu.com/p/65707543
  • [技术干货] 设计器调用getVatInfoOcr增值税发票识别,报错attributeError("'str' has no attribu
    2.18及之前的设计器调用getVatInfoOcr增值税发票识别,报错attributeError("'str' has no attribute 'get'"),类似错误。则需要把设计器安装路径下的如下路径里的ocr.pyc文件,改个名字如ocr_backup.pycD:\Program Files\Huawei\WeAutomate\Studio 2.18.0\python\Lib\site-packages\wa_aimanas然后把附件里的ocr.py解压出来放在这里即可。注意一定是要修改原来的文件名或者挪走备份。
  • [技术干货] 自定义扩展控件——OCR识别图片生成Excel文件、图片转Excel
    控件插件:见附件 ext_imgToExcel_1_0_1.zip控件功能演示:见附件 ImgToExcel功能演示.zip功能演示脚本:见附件 ImgToExcel_Script.zip功能:主要用OCR识别,将图片转为Excel文件【如果想PDF转Excel,则需要先将PDF转为Img,详情可见 https://bbs.huaweicloud.com/forum/thread-155245-1-1.html】操作说明:     1. 上传图片文件(指定路径)【注意:图片中的表格必须规范的(不含合并单元格),且表格边界线、表格内的分割线较清晰】     2. 指定Excel路径(将OCR识别图片后的表格数据存于此文件中,当前仅支持xls文件。也可不指定excel路径,则表示不生成文件,可直接使用list类型的返回值)     3. 指定工作表Sheet Name,默认Sheet1;若不指定Excel路径,则此Sheet Name属性可不用管使用举例说明:图1执行结果:在指定的路径生成Excel文件,其中list类型的返回值table_ret见图2,效果可见图3图2图3注意:       1. 如果运行出现“no module named 'xlwt'”,则进入黑窗口cmd,设计器是stduio/python/文件夹下(执行器是assistant/python/)执行 python.exe -m pip install xlwt;若黑窗口cmd中,出现Retry等字样信息,则需要将pip.rar(见附件)中的pip文件放入'C:\Users\用户名' 文件夹下,即自己的用户账号下(例如'C:\Users\工号','C:\Users\Administrator', 'C:\Users\Lenovo'等等)。       2. 该插件使用的是体验接口,短时间内不能过于频繁的使用,有流控。
  • [技术干货] 自定义扩展控件——OCR识别图片或PDF文件,生成Word文件
    控件插件:见附件 ext_imgpdftoword_1_0_0.zip控件功能演示:见附件 ImgPDFToWord功能演示.zip功能演示脚本:见附件 ImgPDFToWord_Script.zip功能:主要用OCR识别,将图片或PDF文件转为Word文件操作说明:     1. 上传图片或PDF文件(指定路径)【注意:文件大小大约不超过3M,具体原因是文件base64编码后的大小不能超过3M】     2. 指定OCR识别模式(场景模式:图片、非规范文档;文档模式:规范文档)     3. 指定Word文件路径 使用举例说明:    例1【PDF文件转为Word文件】:图1    执行结果:在指定的路径生成Word文件,其中内容效果见,图2,返回值见图3,图2图3    例2【图片转为Word文件】:图4    执行结果:在指定的路径生成Word文件,其中内容效果见,图5,返回值见图6,图5图6
  • [技术干货] 华为云AI论文精读会2021第八期:探讨文字识别中的语言模型
    2021年6月24日举办了华为云AI论文精读会2021第八期:探讨文字识别中的语言模型嘉宾是中国科学技术大学信息与通信技术博士---王裕鑫博士本次论文精读的领域是CV领域,感兴趣的小伙伴一定不要错过呦!华为云AI论文精读会致力于让更多人低门槛使用经典算法,助力AI开发者基于ModelArts,实现高效率论文复现和挑战!观看地址:https://res-static.hc-cdn.cn/cloudbu-site/china/zh-cn/competition/1624673202271037396.mp4华为云AI论文精读会2021·论文算法实战赛报名地址:https://competition.huaweicloud.com/information/1000041393/introduction
  • [资产园地] 文字识别-Aster
    描述Aster(文字识别/PyTorch)1. 概述此模型是基于ASTER: Attentional Scene Text Recognizer with Flexible Rectification的Pytorch实现版本,该算法需要使用SynthText和MJSynth数据集进行训练,IIIT5k的test数据进行验证。我们提供了训练代码和打包好的合成训练数据集和验证数据,如果有需要用户也可以加入真实数据集进行微调,具体参见ModelArts AI Gallery算法Aster使用指南。训练后生成的模型可直接在ModelArts平台部署成在线服务。对于英文识别任务,一般采用Accuracy作为评价指标:对于网络预测的字符串以及对应的gt,需要先进行归一化(去掉除字母和数字以外的字符,并统一大小写)。如果二者一致,则判定预测正确。Accuracy = 正确的数量 / 总数本算法的其他信息如下表所示:项目说明参考论文ASTER: Attentional Scene Text Recognizer with Flexible Rectification使用框架Pytorch-1.4.0训练集SynthText,MJSynth训练总epoch数7训练batch_size使用1卡训练,每张卡batch_size = 1024训练硬件及耗时1*v100,29小时左右测试集IIIT5K中的测试集推理硬件及速度CPU: 120~130ms/pic GPU: 20~30ms/pic (1*V100, batch_size=1024)输入图像尺寸64*256*3原论文准确率Accuracy (without Lexicon) = 93.4%本算法准确率Accuracy (without Lexicon) = 93.7%2、训练2.1. 算法基本信息任务类型文字识别支持的框架引擎PyTorch-1.4.0-python3.6算法输入存储在OBS上的数据集,必须将训练打包成lmdb格式进行存储,详情请查看下文第4节案例指导算法输出用于Pytorch推理的pth模型代码结构|-- lib| |-- datasets| |-- evaluation_metrics| |-- loss| |-- models| |-- tools| |-- utils| |-- evaluators.py| |-- trainers.py| |-- init.py|-- lib_infer_only| |-- datasets| |-- evaluation_metrics| |-- models| |-- utils|-- trained_model| |-- model| | |-- best_model.pth|-- train.py|-- evaluation.py|-- config.py|-- customize_service.py|-- config.json`-- pip-requirements.txt~~~2.2. 参数说明名称默认值类型是否必填是否可修改描述batch_size1024int是是batch size的大小workers8int是是workers的数量height64int是是网络输入图片的高度width256int是是网络输入图片的宽度voc_typeALLCASES_SYMBOLSString是否表示识别的类别包括大小写字母数字以及标点符号archResNet_ASTERString是否网络backbonecudaTrueString否是是否使用GPU训练evalFalseString是是是否进行模型评估,默认为False,如果设为True,则必须设定load_weight参数,加载指定的pth模型,在创建训练作业时指定的数据存储位置验证集上进行预测,所有预测结果results及模型评估结果eval_result.txt将保存到创建训练作业时指定的训练输出位置train_url上epoch7int是是总训练轮数,建议设置为7。load_weight./trained_model/model/best_model.pthString否是pth模型文件路径,支持加载OBS上保存的模型进行断点续训;不设置时直接进行训练. 默认使用已经预训练的模型,当删除该参数时则train from scratch.training_dataset/home/work/modelarts/inputs/Synth/String是否训练数据集在modelarts上的本地路径training_dataset_subfoldCVPR2016:NIPS2014String是否使用的训练数据集文件夹名。支持多个数据集同时训练,用:分隔多个数据集。testing_dataset/home/work/modelarts/inputs/Synth/benchmark_lmdbs_new/IIIT5K_3000/String是是验证集IIIT5K在modelarts上的本地路径,当eval=False时(训练过程),使用默认参数(对应imdb格式数据集)。当eval=True时,需要将其设置为/home/work/modelarts/inputs/Synth/IIIT5K/test/(对应png格式数据集)或者其他png格式的数据集。gt_path/home/work/modelarts/inputs/Synth/IIIT5K/testdata.matString否是如果eval时未设置gt_path参数,则不会输出统计指标,只保存推理结果。test_freq1000int是是训练过程中,每test_freq次迭代进行一次测试,并保存最优模型。print_freq100int是是训练过程中,每print_freq次迭代,输出一次loss。注1: 当eval设置成True时,只进行模型推理过程。如需对IIIT5K数据集进行推理,需要调整对应的testing_dataset = home/work/modelarts/inputs/Synth/IIIT5K/test/(对应png格式数据集);如需对自己提供的图片进行推理,请将数据集在obs中放置路径与该路径对应。注2: 当eval=True时,推理的结果results文件夹将会保存到train_url指定的obs路径。如果同时设置了gt_path的路径,还会将eval_result.txt保存到train_url路径。注3: 当使用自己提供的数据集进行训练时,需要根据数据集的大小来调整epoch以及test_freq,注意数据集需要放置在Synth目录下,并且将数据集的文件夹名称添加到training_dataset_subfold中,例如CVPR2016:NIPS2014。2.3. 模型输出训练输出的文件结构如下:|-- model | |-- lib_infer_only | | |-- datasets | | |-- evaluation_metrics | | |-- models | | |-- utils | |-- config.json | |-- config.py | |-- customize_service.py | |-- aster_Final.pth `-- logs |-- checkpoint.pth (last model) |-- model_best.pth |-- log.txt `-- cfg.txt设置eval = True,并对IIIT5K数据集进行推理,输出的文件结构如下:|-- results | |-- 1043_1_result.txt | |-- *** `-- eval_result.txt(当设置了gt_path之后输出评价结果)3. GPU/CPU推理利用本算法部署服务进行推理的详细步骤请查看ModelArts AI Gallery算法Aster使用指南4. 案例指导本算法的详细使用方法,请查看ModelArts AI Gallery算法Aster使用指南交付交付方式华为云ModelArts交付区域华北-北京一、华北-北京四、华东-上海一、华南-广州、亚太-**
  • [其他] CVPR 2021论文大盘点-文本图像篇(8)
    Sequence-to-Sequence Contrastive Learning for Text Recognition本次工作提出一个对比性学习方法:SeqCLR,用于文本识别。将每个特征图看作是一系列的独立实例,得到 sub-word 级上的对比学习,例如每个图像提取几个正面的配对和多个负面的例子。另外,为获得有效的文本识别视觉表征,进一步提出新的增强启发式方法、不同的编码器架构和自定义投影头。在手写文本和场景文本上的实验表明,当用学到的表征训练文本解码器时,所提出方法优于非序列对比法。此外,当监督量减少时,与监督训练相比,SeqCLR 明显提高了性能,而当用 100% 的标签进行微调时,SeqCLR 在标准手写文本识别基准上取得了最先进的结果。作者 | Aviad Aberdam, Ron Litman, Shahar Tsiper, Oron Anschel, Ron Slossberg, Shai Mazor, R. Manmatha, Pietro Perona单位 | 以色列理工学院;亚马逊等论文 | https://arxiv.org/abs/2012.10873
  • [其他] CVPR 2021论文大盘点-文本图像篇(7)
    Implicit Feature Alignment: Learn to Convert Text Recognizer to Text Spotter本次工作提出一个简单而有效新范式:IFA,将 text recognizer 转变为 detection-free text spotter,利用神经网络的可学习对齐特性,可以很容易地集成到当前主流的文本识别器中。得到一种全新的推理机制:IFAinference。使普通的文本识别器能够处理多行文本。具体来说,作者将 IFA 整合到两个最流行的文本识别流中(基于注意力和基于CTC),分别得到两种新的方法:ADP 和 ExCTC。此外,还提出基于Wasserstein 的 Hollow Aggregation Cross-Entropy(WH-ACE)来抑制负面噪音,以帮助训练 ADP 和 ExCTC。实验结果表明 IFA 在端到端文档识别任务中取得了最先进的性能,同时保持了最快的速度,而 ADP 和 ExCTC 在不同应用场景的角度上相互补充。作者 | Tianwei Wang, Yuanzhi Zhu, Lianwen Jin, Dezhi Peng, Zhe Li, Mengchao He, Yongpan Wang, Canjie Luo单位 | 华南理工大学;阿里等论文 | https://arxiv.org/abs/2106.05920
  • [其他] CVPR 2021论文大盘点-文本图像篇(6)
    Dictionary-guided Scene Text Recognition本次研究,作者提出一种新的语言感知方法来解决场景文本识别中的视觉模糊性问题。该方法在训练和推理阶段都可以利用字典的力量,可以解决许多条件下的模糊性。另外,创建一个用于越南场景文本识别的新数据集:VinText,它在从多个类似字符中辨别一个字符方面带来了新的挑战。在 TotalText、ICDAR13、ICDAR15 和新收集的 VinText 数据集上的实验结果证明了该字典整合方法的优点。作者 | Nguyen Nguyen, Thu Nguyen, Vinh Tran, Minh-Triet Tran, Thanh Duc Ngo, Thien Huu Nguyen, Minh Hoa单位 | VinAI研究等论文 | https://openaccess.thecvf.com/content/CVPR2021/papers/Nguyen_Dictionary-Guided_Scene_Text_Recognition_CVPR_2021_paper.pdf代码 | https://github.com/VinAIResearch/dict-guidedPrimitive Representation Learning for Scene Text Recognition与常用的基于 CTC 和基于注意力的方法不同,作者通过学习原始表征并形成可用于并行解码的视觉文本表征,提出一个新的场景文本识别框架。又提出一个 pooling aggregator 和一个 weighted aggregator,从 CNN 输出的特征图中学习原始表征,并使用 GCN 将原始表征转换为视觉文本表征。所提出的原始表征学习方法可以被整合到基于注意力的框架中。并在英文和中文场景文本识别任务的实验结果证明了所提出方法的有效性和高效率。作者 | Ruijie Yan, Liangrui Peng, Shanyu Xiao, Gang Yao单位 | 清华大学论文 | https://arxiv.org/abs/2105.04286
  • [其他] CVPR 2021论文大盘点-文本图像篇(3)
    场景文本识别What If We Only Use Real Datasets for Scene Text Recognition? Toward Scene Text Recognition With Fewer Labels本次工作的研究目的是使用更少的标签来运用 STR(场景文本识别) 模型。作者用只占合成数据 1.7% 的真实数据来充分地训练 STR 模型。通过使用简单的数据增广和引入半监督和自监督的方法,利用数百万真实的无标签数据,进一步提高性能。作者称该工作是迈向更少标签的 STR 的垫脚石,并希望这项工作能促进未来关于这个主题的工作。作者 | Jeonghun Baek, Yusuke Matsui, Kiyoharu Aizawa单位 | 东京大学论文 | https://arxiv.org/abs/2103.04400代码 | https://github.com/ku21fan/STR-Fewer-Labels