• [公告] 远光软件加入昇思MindSpore社区,通过打造远光OCR应用中心公有云、私有云、软硬一体产品形态,保障企业用户的数据信息安全!
    远光软件完成ISV认证正式加入昇思MindSpore社区。  远光软件简介 远光软件股份有限公司,华为认证级ISV伙伴,是国内主流的企业管理、能源互联和社会服务信息技术、产品和服务提供商。公司专注大型集团企业管理信息化逾30年,深入区块链、人工智能、大数据、边缘计算、物联网等新兴技术,精研软硬一体化整合应用技术,为大型集团企业提供全面的行业解决方案和服务。在该行业企业管理软件领域长期处于领先地位。在新时代全面**和全球命运共同体建设的机遇下,公司始终以先进的信息技术、能源技术等核心技术为根本动力,致力于以优质的产品和服务推动企业升级、能源革命、经济增长和社会进步。昇思MindSpore是华为开源的一款全场景AI计算框架,旨在提供友好设计、高效运行、简捷部署的开发体验,目前应用于医疗、金融、科研等多个领域,提供面向端边云多种场景的主流硬件支持,并针对昇腾硬件平台提供深度优化能力。昇思MindSpore着力构筑面向全球的人工智能开源社区,推动人工智能软硬件应用生态繁荣发展。远光软件在加入MindSpore社区后,基于MindSpore框架开发OCR应用的方案,聚焦于集团资源管理全场景覆盖的OCR需求,探求业务领域的纵向深度,填补市场上业务型OCR产品的空白。OCR应用中心具备有以下三大特色,为企业用户提高更精准、更安全、更省心的OCR解决方案。在满足企业用户对识别准确率高精度要求的基础上,通过打造远光OCR应用中心公有云、私有云、软硬一体产品形态,保障企业用户在产品使用过程中的数据信息安全。基于该解决方案,通过提供标准化服务,圆满解决企业接驳各类业务系统带来的管理困难,省去集成改造的资源投入,解决芯片被卡脖子的问题,实现了华为全场景AI计算框架MindSpore 与远光软件股份有限公司OCR技术的全面融合,结合OCR应用中心,实现以票据、合同等场景的OCR识别应用。近期收到许多小伙伴想为自己的企业申请加入昇思MindSpore社区完成企业ISV认证,感谢大家的信任与支持,昇思MindSpore社区也会继续努力的帮助加入的企业伙伴们更加高效地完成项目落地,昇思MindSpore社区欢迎更多企业加入,一起实现梦想!如您也想加入昇思MindSpore社区,完成技术相关的认证可以将原由发送至邮箱:huxiaoman@huawei.com如有与昇思MindSpore社区相关的任何疑问,添加小助手(微信:mindspore0328)。MindSpore官方资料GitHub : https://github.com/mindspore-ai/mindsporeGitee : https : //gitee.com/mindspore/mindspore官方QQ群 : 486831414
  • [其他] 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
  • [其他] CVPR 2021论文大盘点-文本图像篇(2)
    用于任意形状文本检测TextOCR: Towards large-scale end-to-end reasoning for arbitrary-shaped scene text本文介绍一个在 TextVQA 图像上收集的大型任意场景文本识别数据集 TextOCR,以及一个端到端的模型 PixelM4C,该模型通过将文本识别模型作为一个模块,可以直接在图像上进行场景文本推理。TextOCR,大型且多样化,来自 TextVQA 的 28,134 幅自然图像,有 100 万个任意形状的单词标注(比现有的数据集大3倍),每张图片有 32 个单词。作为训练数据集,在多个数据集上提高了 OCR 算法的精度 ;作为测试数据集,为社区提供新的挑战。在TextOCR上进行训练,可以提供更好的文本识别模型,在大多数文本识别基准上超过最先进的水平。此外,在 PixelM4C 中使用 TextOCR 训练的文本识别模块,可以使用它的不同特征,甚至有可能提供反馈,这使得 PixelM4C超越了 TextVQA 的现有最先进方法。通过 TextOCR 数据集和 PixelM4C 模型,在连接 OCR 和基于 OCR 的下游应用方面迈出了一步,并从直接在 TextOCR 上训练的 TextVQA 结果中所看到的改进,希望该研究能够同时推动这两个领域的发展。作者 | Amanpreet Singh, Guan Pang, Mandy Toh, Jing Huang, Wojciech Galuba, Tal Hassner单位 | Facebook论文 | https://arxiv.org/abs/2105.05486主页 | https://textvqa.org/textocr
  • [技术干货] EI-OCR中的“前置控件-华为云版”如何配置与使用 ||报错信息“flag_token缺失,可能是因为前置组件未添加”
    【EI-OCR中的“前置控件-华为云版”如何配置与使用】或者是【报错信息有“flag_token缺失,可能是因为前置组件未添加”字样】--->      都是需要添加与配置“inputAccountByToken”控件1. 进入 https://console.huaweicloud.com/iam/?region=cn-north-4#/iam/users, 在图1中点击创建用户,需要创建一个子用户,用于填入图2中的“华为云IAM用户名”和“华为云IAM密码”(保证华为云账号名与华为云IAM用户名不一样),过程中有个权限“admin”,需要将其右移(这个在操作的过程中会出现,很简单,看到相应的页面就会了)。图1图22. 点击上一点网页中的左上角的“三条线”按钮,再在输入框中输入“ocr”,之后点击“文字识别 OCR”,如图3图33. 在图4选择“北京四”(此地区包含的服务较多),并在图5中选择需要的产品,在对应的产品描述的后面中选择“开通服务”(有一定免费次数的调用,标号1是未开通的情况,标号2是开通的情况)图4图54. (仅针对华为内网用户) 需要在http、https代理处设置相应的值,http设置为http://W3账号:密码@proxy.huawei.com:8080/,https设置为https://W3账号:密码@proxy.huawei.com:8080/ 。且因为使用的是proxy代理,所以用EI-OCR控件,需要确保图片大小(最好小一些,不然会报错,proxy代理携带不了太大的图片的base值)
  • [其他] ]结合文字识别结果的鲁棒和精确文本视觉问答
    本文简要介绍来自中国传媒大学和中国科学院信息工程研究所合作的ACM MM 2021的论文“Beyond OCR + VQA: Involving OCR into the Flow for Robust and Accurate TextVQA”。文章提出了一个对文字识别结果鲁棒的文本视觉问答方法BOV:通过将光学字符识别(OCR)融入文本视觉问答(TextVQA)的前向处理流程,即借助来自文字检测和文字识别两个阶段的多模态线索,实现在没有准确识别文字的情况下也能获取对文字的合理的语义表示,并利用TextVQA任务丰富的上下文信息对解码的答案进行自适应修正。 一、研究背景为了解决通用视觉问答(VQA)方法无法处理图像中文字信息的缺陷,文本视觉问答(TextVQA)任务被提出。TextVQA为了回答与图像中文字相关的问题,需要同时考虑视觉场景和文字等多个模态的信息及其关系,具有很大挑战。目前主流的方法通过引入一个外部的光学字符识别(OCR)模块作为前处理,再将其与VQA框架结合预测答案,这会使得TextVQA性能很大程度上受到OCR精度的影响,具体表现为以下两种误差累积传播现象:1)OCR错误使得对文字的直接语义编码错误,导致多模态信息的交互推理过程出现偏差,从而无法定位出准确的答案。2)即使是在推理和定位答案正确的情况下,OCR错误仍然会导致最终从OCR结果中“复制”的答案错误。另外,视觉物体模态与图像文字、问题模态交互时存在语义间隔,使得多模态信息无法有效融合。二、方法简介图 1 模型整体框架图1是BOV模型的整体框架,它基于Transformer网络实现问题、图像文字和视觉物体三种模态信息的交互。区别于之前的方法,BOV在文字模态和物体模态分别设计一个模块来实现视觉到语义的映射,从而获得视觉增强的文字表征和语义导向的物体表征,目的是增强特征表示的鲁棒性,减小OCR错误和物体识别错误对推理的影响。另外在答案预测模块提出一个上下文感知的答案修正模块(CRM)对“复制”的答案词进行校正。 各模块具体细节如下: 1.视觉增强的文字表征图 2 文字相关的视觉语义映射网络(TVS)结构图
  • [基础知识] 【MindSpore易点通】机器学习系列:图片文字识别
    时间可过得真快,本周小Mi的更新便是我们机器学习系列的最后一期啦!说了那么多理论,总该来点案例对不对!废话不多说,让我们开始吧~定义那么什么是图片文字识别呢?其实对应的英文全称为Photo Optical Character Recognition,也可以翻译为图片光学字符识别。随着智能手机拍照功能的成熟,OCR技术注重的是如何让计算机读取图片中的文字信息,从而方便以后的自动查找,而不是从成千上万的照片中用鼠标一张张照片点开查询,再逐个关闭(是不是想想都头大呢)。当然啦,从一张给定的图片中识别文字肯定比从一份扫描文档中识别文字要复杂的多。操作流程按照我们正常的理解,图片文字识别的话通常会先将图像扫描一遍,然后找出图片中的文字信息,并重点关注这些文字区域,同时对区域中的文字进行识别,当正确读出这些文字以后,将这些文字内容显示并记录下来。听起来好像很简单,毕竟光学文字识别对于扫描文档来说,已经是一个比较简单的问题了,但是对于常用的图片、照片来说,还算是一个较难的机器学习问题。因此,实现图片OCR技术需要采取如下步骤:1.文字探测(Text detection)——扫描图像并找出有文字的图像区域,将图片上的文字与其他环境对象分离开来;2.字符切分(Character segmentation)——进行文字分离,将文字分割成一个个单一的字符;3.字符分类(Character classification)——确定每一个字符是什么。流程图也能够非常直观地表达这个学习问题,每一项任务都可以单独拆解开来进行处理:如果成功解决了这样的问题,不仅可以帮助计算机更好地理解图像中的内容,还可以做一些更有意义的事情,比如可以为盲人提供一种相机,该相机可以识别出盲人前面的各种潜在危险路障。滑动窗口滑动窗口是一项用来从图像中抽取对象的技术。假使我们需要在一张图片中识别行人,首先要做的是用许多固定尺寸的图片来训练一个能够准确识别行人的模型。然后用之前训练识别行人的模型时所采用的图片尺寸在我们要进行行人识别的图片上进行剪裁,将剪裁得到的部分交给模型,让模型判断是否为行人,继而不断地在图片上滑动剪裁区域重新进行剪裁,同样将新剪裁的部分交给模型进行判断,如此循环直至将图片全部检测完。一旦完成后,按比例放大剪裁的区域,再以新的尺寸对图片进行剪裁,将新剪裁的部分按比例缩小至模型所采纳的尺寸,交给模型进行判断,如此循环。滑动窗口技术也被用于文字识别,首先训练模型能够区分字符与非字符,然后运用滑动窗口技术识别字符,一旦完成了字符的识别,我们将识别得出的区域进行一些扩展,然后将重叠的区域进行合并。接着便可以以宽高比作为过滤条件,过滤掉高度比宽度更大的区域(默认单词的长度通常比高度要大)。下图中绿色的区域是经过这些步骤后被认为是文字的区域,而红色的区域是被忽略的。下一步是训练一个模型来完成将文字分割成一个个字符的任务,需要的训练集由单个字符的图片和两个相连字符之间的图片来训练模型。模型训练完后,我们仍然是使用滑动窗口技术来进行字符识别。最后一个阶段是字符分类阶段,利用神经网络、支持向量机或者逻辑回归算法训练一个分类器即可。数据获取如果我们的模型是低方差的,那么获得更多的数据用于训练模型是能够有更好的效果的。问题在于,怎样获得更多的数据,可能还需要人工地创造一些数据。以文字识别应用为例,可以从字体网站下载各种字体,然后利用这些不同的字体配上各种不同的随机背景图片创造出一些用于训练的实例,这将会帮助大家获得一个无限大的训练集。同时,还可以利用已有的数据对其进行修改,例如将已有的字符图片进行一些扭曲、旋转、模糊处理。只要实际数据和经过处理后的数据依旧相似,那么便可以创造大量的数据。因此,获得更多数据可以通过如下方式:1.人工数据合成2.手动收集、标记数据3.众包局部分析在机器学习的应用中,通常需要通过几个步骤才能进行最终的预测,那么如何知道哪一部分是最值得我们花精力去完善的呢?大家可以跟着小Mi再仔细观察一下文字识别应用的流程图:流程图中每一部分的输出都是下一部分的输入,选取某一部分手动提供100%正确的输出结果,然后看最终的整体效果提升了多少。(假使总体效果为72%的正确率)令Text detection部分输出的结果100%正确,发现系统的总体效果从72%提高到了89%。这就意味着需要在Text detection部分多花些功夫啦。接着手动选择数据,使得Character segmentation部分输出的结果100%正确,发现系统的总体效果最终只提升了1%,也就是说Character segmentation部分已经足够好啦。同样Character recognition也是这样的检验方法啦~输出结果100%正确,系统的总体效果又提升了10%,表示完善Character recognition部分可以使得整体系统有较大的提升。虽然整个系列小Mi只在最后介绍了机器学习相关的一个案例,但是已经足够可以展现一个复杂的机器学习系统是如何被组合起来的,同时也介绍了机器学习操作流程的有关概念以及如何分配资源来以作出更好的决定,希望可以帮助到大家学习如何自己开发一个复杂的机器学习应用呦。好啦,相聚总会有离别的时候,却依旧期待着下次的美好相遇,小Mi还记着当初跟大家的约定,后续一定会带来更多的学习系列!PS:再次感谢吴恩达老师!通过观看老师的视频,小Mi也重新对机器学习有了更多更深的理解,感谢大佬!!!好啦,我们,下个系列,再见呦!(挥手24h,太舍不得啦~)
  • [技术干货] 【Manas引擎】图像识别图片在线识别getpicinfo_online的使用方式 OCR在线识别图片USER ID Token
    设计器里【Manas引擎】--【图像识别】以及【自然语言处理】下控件的使用,也可以用于钉钉以及微信的cv操作里。user ID: com.huawei.gts.rparobotToken:hC4Q2yZ8p11h186KcC8b6un6ZS2tcAtegOn89HCJy6CurddgTkCzmm7hXCH3mJJt设计器中如下控件可使用上面的信息用于测试使用。getpicinfo_online在下图的链接里,对于习惯于老版本里的识别率且不满足当前识别结果的开发者可以试试把这里的v3修改成v2。
  • [问题求助] 现在ocr服务支持竖版文字识别吗?
    如题
  • 【SDK案例系列 11】基于 MindX SDK + 文字识别、目标分类、目标检测的多模型推理
    源码下载:cid:link_0快速运行攻略(MindX SDK环境已经部署完毕情况下):1、获取模型文件(1)crnn.onnx文件cid:link_5存放到 image_crnn_resnet50_yolov5/data/models/crnn 目录下(2)resnet50_pytorch_1.3.onnx文件cid:link_3存放到 image_crnn_resnet50_yolov5/data/models/resnet50 目录下(3)yolov5s_sim_t.onnx文件cid:link_4存放到 image_crnn_resnet50_yolov5/data/models/yolov5 目录下2、模型文件转换(1)image_crnn_resnet50_yolov5/data/models/crnn目录下执行模型转换,根据芯片类型,执行atc_310.sh 或 atc_310P3.sh(2)image_crnn_resnet50_yolov5/data/models/resnet50目录下执行模型转换,根据芯片类型,执行atc_310.sh 或 atc_310P3.sh(3)image_crnn_resnet50_yolov5/data/models/yolov5目录下执行模型转换,根据芯片类型,执行atc_310.sh 或 atc_310P3.shbash atc_310.shbash atc_310P3.sh3、修改run_cpp.sh & run_python.sh中MX_SDK_HOME为MindX SDK安装目录export MX_SDK_HOME=/usr/local/sdk_home/mxVision4、执行run_cpp.sh 或者 run_python.shbash run_cpp.shbash run_python.sh一、安装昇腾驱动先安装昇腾驱动,昇腾驱动请参考各个产品安装手册,安装完成后npu-smi info 显示安装成功[root@localhost ~]# [root@localhost ~]# npu-smi info +-------------------------------------------------------------------------------------------------+ | npu-smi 22.0.2 Version: 22.0.2 | +------------------+--------------+---------------------------------------------------------------+ | NPU Name | Health | Power(W) Temp(C) Hugepages-Usage(page) | | Chip Device | Bus-Id | AICore(%) Memory-Usage(MB) | +==================+==============+===============================================================+ | 1 310 | OK | 12.8 45 0 / 0 | | 0 0 | 0000:05:00.0 | 0 2621 / 8192 | +==================+==============+===============================================================+二、安装MindX SDK > mxVision(1)MindX SDK需要通过官网获取。(2)mxVision说明手册:cid:link_1(3)安装MindX SDK./Ascend-mindxsdk-mxvision_3.0.RC2_linux-aarch64.run --install --install-path=/usr/local/sdk_home--install-path为指定安装的路径(4)安装成功后会提示如下信息Installing collected packages:mindx Successfully installed mindx-3.0.RC2(5)安装成功后在对应目录下查看,能看到mxVision[root@localhost sdk_home]# [root@localhost sdk_home]# pwd /usr/local/sdk_home [root@localhost sdk_home]# ls mxVision mxVision-3.0.RC2 [root@localhost sdk_home]# [root@localhost sdk_home]#(6)MindX SDK使用中需要用到OSD功能,安装后需要执行以下命令,生成om文件bash /usr/local/sdk_home/mxVision/operators/opencvosd/generate_osd_om.sh执行成功后,显示如下效果[root@localhost ~]# bash /usr/local/sdk_home/mxVision/operators/opencvosd/generate_osd_om.sh ASCEND_HOME is set to /usr/local/Ascend by user Set ASCEND_VERSION to the default value:ascend-toolkit/latest ATC start working now,please wait for a moment. ATC run success, welcome to the next use. The model has been successfully converted to om,please get it under /usr/local/sdk_home/mxVision/operators/opencvosd. [root@localhost ~]# (9)安装完MindX SDK后,需要配置环境变量.bashrc文件添加以下环境变量# 安装mxVision时配置 . /usr/local/sdk_home/mxVision/set_env.sh用户也可以通过修改~/.bashrc文件方式设置永久环境变量,操作如下:a) 以运行用户在任意目录下执行vi ~/.bashrc命令,打开.bashrc文件,在文件最后一行后面添加上述内容。b) 执行:wq!命令保存文件并退出。c) 执行source ~/.bashrc命令使其立即生效。三、ATC模型转换样例模型快速下载地址:cid:link_41、yolov5-2.0获取权重文件。(yolov5-5.0 跳过此步)(1)pt文件转换为onnx文件python3.7 pytorch 1.5 建议搭配yolov5 2.0下载ultralytics-2.0(软件包名为yolov5-2.0.tar.gz)。wget https://github.com/ultralytics/yolov5/archive/v2.0.tar.gz运行如下命令,解压软件包并修改转换脚本,目前ATC(om文件转换工具)支持的onnx算子版本为opset11。tar -xzf yolov5-2.0.tar.gz vi yolov5-2.0/models/export.py :set number i # 修改第48行opset_version为11 :wq!在yolov5-2.0目录运行如下命令:python models/export.py --weights ./yolov5s.pt --img 640 --batch 1运行结果:生成yolov5s.onnx文件。(2)onnx文件简化及算子处理首先对导出的onnx图使用onnx-simplifer工具进行简化。在yolov5-2.0目录运行如下命令:python -m onnxsim --skip-optimization yolov5s.onnx yolov5s_sim.onnx运行结果:生成yolov5s_sim.onnx文件。然后利用附件脚本image_crnn_resnet50_yolov5/data/models/yolov5/modify_yolov5s_2.0_slice.py修改模型Slice算子。将附件脚本上传yolov5-2.0目录,运行如下命令:python modify_yolov5s_2.0_slice.py yolov5s_sim.onnx运行结果:生成yolov5s_sim_t.onnx文件。2、yolov5-5.0获取权重文件。(yolov5-2.0 跳过此步)(1)pt文件转换为onnx文件python3.8 pytorch 1.7 建议搭配yolov5 5.0下载ultralytics-5.0(软件包名为yolov5-5.0.tar.gz)。wget https://github.com/ultralytics/yolov5/archive/v5.0.tar.gz运行如下命令,解压软件包并修改转换脚本,目前ATC(om文件转换工具)支持的onnx算子版本为opset11。tar -xzf yolov5-5.0.tar.gz vi yolov5-5.0/models/export.py :set number i # 修改第77行opset_version为11 :wq!在yolov5-5.0目录运行如下命令:python models/export.py --weights ./yolov5s.pt --img 640 --batch 1运行结果:生成yolov5s.onnx文件。(2)onnx文件简化及算子处理首先对导出的onnx图使用onnx-simplifer工具进行简化。在yolov5-5.0目录运行如下命令:python -m onnxsim --skip-optimization yolov5s.onnx yolov5s_sim.onnx运行结果:生成yolov5s_sim.onnx文件。然后利用附件脚本image_crnn_resnet50_yolov5/data/models/yolov5/modify_yolov5s_5.0_slice.py修改模型Slice算子。将附件脚本上传yolov5-5.0目录,运行如下命令:python modify_yolov5s_5.0_slice.py yolov5s_sim.onnx运行结果:生成yolov5s_sim_t.onnx文件。3、onnx文件转换为om文件(1)把生成的yolov5s_sim_t.onnx放在image_crnn_resnet50_yolov5/data/models/yolov5目录下[root@localhost yolov5]# [root@localhost yolov5]# ls aipp_yolov5.cfg atc_310.sh atc_310P3.sh coco2014.names modify_yolov5s_2.0_slice.py modify_yolov5s_5.0_slice.py yolov5.cfg yolov5.pt yolov5s_sim_t.onnx [root@localhost yolov5]# (2)执行模型转换命令Ascend310芯片模型转换命令如下:atc \ --model=./yolov5s_sim_t.onnx \ --framework=5 \ --output=./yolov5s \ --input_format=NCHW \ --input_shape="images:1,3,640,640" \ --enable_small_channel=1 \ --insert_op_conf=./aipp_yolov5.cfg \ --soc_version=Ascend310 \ --log=infoAscend310P3芯片模型转换命令如下:atc \ --model=./yolov5s_sim_t.onnx \ --framework=5 \ --output=./yolov5s \ --input_format=NCHW \ --input_shape="images:1,3,640,640" \ --enable_small_channel=1 \ --insert_op_conf=./aipp_yolov5.cfg \ --soc_version=Ascend310P3 \ --log=info参数说明:--model:待转换的ONNX模型。--framework:5代表ONNX模型。--output:输出的om模型。--input_format:输入数据的格式。--input_shape:输入数据的shape。--insert_op_conf=./aipp_yolov5.cfg:AIPP插入节点,通过config文件配置算子信息,功能包括图片色域转换、裁剪、归一化,主要用于处理原图输入数据,常与DVPP配合使用,详见下文数据预处理。详细ATC命令转换学习请参考:cid:link_23、模型转换后,会在目录下生成yolov5s.om[root@localhost yolov5]# [root@localhost yolov5]# ls aipp_yolov5.cfg atc_310.sh atc_310P3.sh coco2014.names modify_yolov5s_2.0_slice.py modify_yolov5s_5.0_slice.py yolov5.cfg yolov5.om yolov5.pt yolov5s_sim_t.onnx [root@localhost yolov5]# 四、使用image_crnn_resnet50_yolov51、修改run_cpp.sh & run_python.sh中MX_SDK_HOME为MindX SDK安装目录export MX_SDK_HOME=/usr/local/sdk_home/mxVision2、执行run_cpp.sh 或者 run_python.shbash run_cpp.shbash run_python.sh3、文字识别、目标分类、目标检测的结果与预期是一致的五、image_crnn_resnet50_yolov5详解1、技术流程图(1)Pytorch CRNN的文字识别视频解码:调用OPENCV解码能力,转换为 YUV 格式图像数据。图像缩放:调用OPENCV,将图像缩放到一定尺寸大小。模型推理:CRNN模型针对文字进行OCR识别。模型后处理:针对推理结果进行后处理文字转换。数据序列化:将stream结果组装成json字符串输出。(2)Pytorch RESNET50的目标分类视频解码:调用OPENCV解码能力,转换为 YUV 格式图像数据。图像缩放:调用OPENCV,将图像缩放到一定尺寸大小。目标分类:RESTNET50模型针对图像进行目标分类。模型后处理:针对推理结果进行后处理文字转换。数据序列化:将stream结果组装成json字符串输出。(2)Pytorch YoLoV5的目标检测视频解码:调用DVPP解码能力,转换为 YUV 格式图像数据。图像缩放:调用DVPP,将图像缩放到一定尺寸大小。目标检测:YoLoV5模型针对图像进行目标检测。模型后处理:针对推理结果进行后处理文字转换。数据序列化:将stream结果组装成json字符串输出。2、pipeline详解(1)Pytorch CRNN的文字识别{ "crnn_ocr": { "stream_config": { ##设置业务流在哪个芯片上处理 "deviceId": "0" }, "mxpi_imagedecoder0": { ##图像解码(OpenCV方式) "props": { "handleMethod": "opencv" }, "factory": "mxpi_imagedecoder", "next": "mxpi_imageresize0" }, "mxpi_imageresize0": { ##图像缩放(OpenCV方式) "props": { "handleMethod": "opencv", "resizeHeight": "32", "resizeWidth": "100", "resizeType": "Resizer_Stretch" }, "factory": "mxpi_imageresize", "next": "mxpi_tensorinfer0" }, "mxpi_tensorinfer0": { ##模型推理 "props": { "dataSource": "mxpi_imageresize0", "modelPath": "data/models/crnn/crnn.om", ##模型路径 "waitingTime": "2000", "outputDeviceId": "-1" }, "factory": "mxpi_tensorinfer", "next": "mxpi_classpostprocessor0" }, "mxpi_classpostprocessor0": { ##模型后处理 "props": { "dataSource": "mxpi_tensorinfer0", "postProcessConfigPath": "data/models/crnn/crnn.cfg", "labelPath": "data/models/crnn/crnn-label.names", "postProcessLibPath": "libcrnnpostprocess.so" }, "factory": "mxpi_textgenerationpostprocessor", "next": "mxpi_dataserialize0" }, "mxpi_dataserialize0": { ##数据序列化 "props": { "outputDataKeys": "mxpi_classpostprocessor0" }, "factory": "mxpi_dataserialize", "next": "appsink0" }, "appsrc0": { "props": { "blocksize": "409600" }, "factory": "appsrc", "next": "mxpi_imagedecoder0" }, "appsink0": { ##输出推理结果 "props": { "blocksize": "4096000" }, "factory": "appsink" } } }参数说明:resizeHeight:模型高度,请根据模型的实际尺寸输入。resizeWidth:模型宽度,请根据模型的实际尺寸输入。modelPath:模型路径,请根据模型实际路径修改。postProcessConfigPath:模型配置文件路径,请根据模型配置文件的实际路径修改。labelPath:标签文件路径,请根据标签文件的实际路径修改。(2)Pytorch RESNET50的目标分类{ "resnet50_classification": { "stream_config": { ##设置业务流在哪个芯片上处理 "deviceId": "0" }, "appsrc0": { "props": { "blocksize": "409600" }, "factory": "appsrc", "next": "mxpi_imagedecoder0" }, "mxpi_imagedecoder0": { ##图像解码(OpenCV方式) "props": { "handleMethod": "opencv" }, "factory": "mxpi_imagedecoder", "next": "mxpi_imageresize0" }, "mxpi_imageresize0": { ##图像缩放(OpenCV方式) "props": { "handleMethod": "opencv", "resizeHeight": "304", "resizeWidth": "304", "resizeType": "Resizer_Stretch" }, "factory": "mxpi_imageresize", "next": "mxpi_opencvcentercrop0" }, "mxpi_opencvcentercrop0": { ##图像裁剪(OpenCV方式) "props": { "dataSource": "mxpi_imageresize0", "cropHeight": "256", "cropWidth": "256" }, "factory": "mxpi_opencvcentercrop", "next": "mxpi_tensorinfer0" }, "mxpi_tensorinfer0": { ##模型推理 "props": { "dataSource": "mxpi_opencvcentercrop0", "modelPath": "data/models/resnet50/resnet50_pytorch.om", ##模型路径 "waitingTime": "2000", "outputDeviceId": "-1" }, "factory": "mxpi_tensorinfer", "next": "mxpi_classpostprocessor0" }, "mxpi_classpostprocessor0": { ##模型后处理 "props": { "dataSource": "mxpi_tensorinfer0", "postProcessConfigPath": "data/models/resnet50/resnet50_aipp_pt.cfg", "labelPath": "data/models/resnet50/imagenet1000_clsidx_to_labels.names", "postProcessLibPath": "libresnet50postprocess.so" }, "factory": "mxpi_classpostprocessor", "next": "mxpi_dataserialize0" }, "mxpi_dataserialize0": { ##数据序列化 "props": { "outputDataKeys": "mxpi_classpostprocessor0" }, "factory": "mxpi_dataserialize", "next": "appsink0" }, "appsink0": { ##输出推理结果 "props": { "blocksize": "4096000" }, "factory": "appsink" } } }参数说明:resizeHeight:模型高度,请根据模型的实际尺寸输入。resizeWidth:模型宽度,请根据模型的实际尺寸输入。modelPath:模型路径,请根据模型实际路径修改。postProcessConfigPath:模型配置文件路径,请根据模型配置文件的实际路径修改。labelPath:标签文件路径,请根据标签文件的实际路径修改。(3)Pytorch YoLoV5的目标检测{ "yolov5_detection": { "stream_config": { ##设置业务流在哪个芯片上处理 "deviceId": "0" }, "mxpi_imagedecoder0": { ##图像解码(纯硬件) "factory": "mxpi_imagedecoder", "next": "mxpi_imageresize0" }, "mxpi_imageresize0": { ##图像缩放(纯硬件) "props": { "parentName": "mxpi_imagedecoder0", "resizeHeight": "640", "resizeWidth": "640", "resizeType": "Resizer_KeepAspectRatio_Fit" }, "factory": "mxpi_imageresize", "next": "mxpi_modelinfer0" }, "mxpi_modelinfer0": { ##模型推理 "props": { "parentName": "mxpi_imageresize0", "modelPath": "data/models/yolov5/yolov5s.om", ##模型路径 "postProcessConfigPath": "data/models/yolov5/yolov5.cfg", "labelPath": "data/models/yolov5/coco2014.names", "postProcessLibPath": "libMpYOLOv5PostProcessor.so" }, "factory": "mxpi_modelinfer", "next": "mxpi_dataserialize0" }, "mxpi_dataserialize0": { ##数据序列化 "props": { "outputDataKeys": "mxpi_modelinfer0" }, "factory": "mxpi_dataserialize", "next": "appsink0" }, "appsrc0": { "props": { "blocksize": "409600" }, "factory": "appsrc", "next": "mxpi_imagedecoder0" }, "appsink0": { ##输出推理结果 "props": { "blocksize": "4096000" }, "factory": "appsink" } } }参数说明:modelPath:模型路径,请根据模型实际路径修改。postProcessConfigPath:模型配置文件路径,请根据模型配置文件的实际路径修改。labelPath:标签文件路径,请根据标签文件的实际路径修改。3、C++源码详解int main(int argc, char* argv[]) { // 读取pipeline配置文件 std::string CrnnPipCfg = ReadPipelineConfig("data/pipeline/crnn.pipeline"); std::string Resnet50PipCfg = ReadPipelineConfig("data/pipeline/resnet50.pipeline"); std::string Yolov5PipCfg = ReadPipelineConfig("data/pipeline/yolov5.pipeline"); if (CrnnPipCfg == "" || Resnet50PipCfg == "" || Yolov5PipCfg == "") { LogError << "Read pipeline failed."; return APP_ERR_COMM_INIT_FAIL; } // 初始化 Stream manager 资源 MxStream::MxStreamManager mxStreamManager; APP_ERROR ret = mxStreamManager.InitManager(); if (ret != APP_ERR_OK) { LogError << GetError(ret) << "Failed to init Stream manager."; return ret; } // 根据指定的pipeline配置创建多个Stream APP_ERROR ret1 = mxStreamManager.CreateMultipleStreams(CrnnPipCfg); APP_ERROR ret2 = mxStreamManager.CreateMultipleStreams(Resnet50PipCfg); APP_ERROR ret3 = mxStreamManager.CreateMultipleStreams(Yolov5PipCfg); if (ret1 != APP_ERR_OK || ret2 != APP_ERR_OK || ret3 != APP_ERR_OK) { LogError << GetError(ret1) << GetError(ret2) << GetError(ret3) << "Failed to create Stream."; return ret1; } //发送测试图片到Stream进行推理 ret1 = InferenceProcess(mxStreamManager, "crnn_ocr", "data/ocr.jpg"); ret2 = InferenceProcess(mxStreamManager, "resnet50_classification", "data/dog.jpg"); ret3 = InferenceProcess(mxStreamManager, "yolov5_detection", "data/bus.jpg"); if (ret1 != APP_ERR_OK || ret2 != APP_ERR_OK || ret3 != APP_ERR_OK) { LogError << GetError(ret1) << GetError(ret2) << GetError(ret3) << "Failed to Inference Process."; return ret; } // 销毁Stream mxStreamManager.DestroyAllStreams(); return 0; }4、Python源码详解if __name__ == '__main__': # 初始化 Stream manager 资源 streamManagerApi = StreamManagerApi() ret = streamManagerApi.InitManager() if ret != 0: print("Failed to init Stream manager, ret=%s" % str(ret)) exit() # 根据指定的pipeline配置创建Stream ReadPipelineConfigAndCreateStream("data/pipeline/crnn.pipeline") ReadPipelineConfigAndCreateStream("data/pipeline/resnet50.pipeline") ReadPipelineConfigAndCreateStream("data/pipeline/yolov5.pipeline") # 发送测试图片到Stream进行推理 InferenceProcess(streamManagerApi, b'crnn_ocr', "data/ocr.jpg") InferenceProcess(streamManagerApi, b'resnet50_classification', "data/dog.jpg") InferenceProcess(streamManagerApi, b'yolov5_detection', "data/bus.jpg") # 销毁Stream streamManagerApi.DestroyAllStreams()
  • [其他] 从二到一:一种带有视觉语言建模网络的新场景文本识别器
    本文简要介绍ICCV2021 录用论文 From Two to One: A New Scene Text Recognizer with Visual Language Modeling Network。有别于以往的分步两阶段工作需要先进行视觉预测再利用语言模型纠正的策略,该工作提出了视觉语言网络 Vision-LAN,直接赋予视觉模型语言能力,将视觉和语言模型当作一个整体。由于语言信息是和视觉特征一同获取的,不需要额外的语言模型,Vision-LAN显著提高39%的前向速度,并且能够自适应考虑语言信息来增强视觉特征,进而达到更高的识别准确率。  一、研究背景现有的场景文本识别方法,大多将文本行识别问题视为字符的分类预测问题,然而对于遮挡以及噪声退化严重的字符,仅通过视觉特征很难准确识别。文本图片包括两方面的信息,视觉特征以及语言信息,受NLP相关方法的启发[1][2],近来的文本识别方法开始探究如何通过语言信息来帮助识别[3,4,5,6],其中两阶段的方法(如图1左上所示)得到了比较多的应用。具体来说,先视觉再语言的两阶段方法,其中视觉模型仅关注视觉特征,语言模型学习预测字符之间的关系。然而上述的方法存在两个缺点,(1)带来额外的计算开销。单独引入语言模型会带来额外的计算量。(2)如何有效的融合两个模型的预测结果。上面两个问题主要源于视觉模型缺少语言能力,受此启发,论文提出使用视觉模型做为基础网络,在训练阶段预测被遮挡的字符,训练视觉模型主动学习视觉上下文中的语言信息。在测试阶段,当存在视觉信息遮挡、噪声大的问题时,视觉模型自适应地考虑视觉空间中的语言信息以进行特征增强,如图1所示。 图1.  yi'you已有方法和本文方法的对比二、 方法原理简述如图2所示,Vision-LAN模型包括三部分,特征提取网络,掩码语言感知模块(Masked Language Aware Module)和视觉推理模块(Visual Reasoning Module)。训练阶段,通过特征提取网络得到视觉特征,接着MLM模块输入视觉特征以及字符索引,通过弱监督的方法在对应字符索引的位置生成掩码Mask。该模块主要用来模拟视觉信息字符遮挡的情况。VRM模块输入带遮挡的文本图片,通过在视觉空间捕获长距离的信息,预测对应的文本行识别内容。在测试阶段,移除MLM模块,只使用VRM模块用于文本识别。由于无需额外的语言模型即可获取语言信息和视觉特征,Vision-LAN 可以零计算成本即获得语言信息。同时,论文中提出一个新的带遮挡数据集(Occlusion Scene Text),用来评价对于带字符遮挡的文本行图片识别性能。 图2.  模型框架介绍 
  • [技术干货] 智能OCR图像文字识别
    体验通过DevStar服务的“智能OCR图像文字识别”模板一站式生成应用代码并部署到函数工作流FunctionGraph,实现识别指定图片中的文字信息并显示在页面上。您将学到什么您将学会如何通过DevStar实现一站式快速开发基于Serverless的智能识别图片文字信息应用,并在此基础上基于华为云EI产品开放能力进行对应用的自定义扩展,体验云上开发的乐趣您需要什么硬件要求PC电脑软件要求Chrome浏览器需要的知识点熟悉常规电脑操作常识具备基本的软件开发能力环境准备注册华为云账号、实名认证如果您已拥有华为账号且已通过实名认证,可直接体验。若您还没有通过实名认证的账号,请注册华为账号,然后完成实名认证(推荐使用“扫码认证”方式,即时完成)。参考如何实名认证和如何扫码认证。应用开发及部署使用Chrome浏览器,登录DevStar,在搜索栏输入“智能OCR图像文字识别”关键字进行搜索,在卡片上点击“开发应用”首次使用可以开通服务“同意授权”并继续创建应用在应用创建页面根据页面提示完成项目、应用名信息输入注:如果没有任何DevCloud项目,可点击“创建项目”新建一个项目注:在创建项目过程中如提示“该企业租户服务处于关闭状态 ”,请点击“立即开通”。然后在DevCloud服务购买页面,选择基础版进行购买操作(基础版5人及以下免费)。开通后,继续完成项目创建注:创建完项目后,点击所属项目选项列表旁的“刷新”图标,可显示新创建的项目,选中并完成页面其它信息输入,点击“立即创建”按钮,进入应用详情界面等待应用使用的代码仓等资源创建完成(约20s),点击左侧的“应用部署”菜单,查看依赖云服务的状态。若有云服务未开通,则点击“去开通”按钮完成服务开通。查看文字识别服务增值税发票识别的开通状态,如果未开通,点击“开通服务”。注意:增值税发票识别API按需付费模式每月0~1千次(含)调用免费,如果超出则会产生费用,计费详情可点击“参考价格”查看。函数工作流FunctionGraph若实际使用量每月调用不超过100万次且计量时间不超过400,000 GB-秒免费,如果超过则会产生费用,计费详情可点击“参考价格”查看。完成服务开通后,点击对应服务的刷新按钮,查看服务开通状态。依赖的云服务全部完成开通后,点击“部署”按钮,进行应用部署。待部署完成后,点击“看看”链接访问部署到函数工作流的云函数。在智能OCR识别页面,点击“选择文件”上传发票图片,体验使用OCR精准识别发票图片上的文字。注:上传的发票图片为JPG/JPEG/BMP/PNG格式,建议大小不超过5M(超出有可能会失败),推荐1M。进阶体验-使用Huawei Cloud Toolkit在本地进行快速开发Huawei Cloud Toolkit是华为云提供的IDE插件工具,支持VSCode平台和Intellij平台。支持查看华为云开放API的文档、SDK、错误码、示例代码、代码模板;基于代码模板快速创建本地工程;智能代码自动补全等场景,能极大提高开发者在本地开发基于华为云API的应用的开发效率。这里我们使用Huawei Cloud Toolkit辅助,给原来的代码快速扩展一个新的“通用文本识别”功能。在应用详情页面的代码仓库栏,点击右边的“克隆/下载”,复制弹出框中的https链接,然后在本地命令行中输入:git clone <仓库链接>,既可把代码仓克隆到本地。(克隆的时候会提示输入用户名和密码,用户名为<华为云账号名>/<华为云账号名形式>,具体可以在codehub的配置页面查找到https://devcloud.cn-north-4.huaweicloud.com/codehub/https)使用本地IDE(使用Intellij或者VSCode)打开刚克隆的代码,这里以Intellij为例。安装 Huawei Cloud Toolkit插件,Intellij点击 File -> Settings -> Plugins,在 Marketplace中搜索“HuaweiCloud Toolkit”,点击“install”进行安装。注:如果您使用VSCode,也可以在VSCode插件市场中搜索“HuaweiCloud”,选择安装“HuaweiCloud Extension Pack”这个插件。打开链接https://console.huaweicloud.com/iam/?region=#/mine/accessKey,点击“新增访问秘钥”添加一个您租户账号的AK/SK。在Intellij中,点击左侧的“Huawei Cloud Toolkit”标签,点击登录图标。将刚才生成的AK/SK(注意excel中的AK/SK后面有一个空格,需要去掉)填入配置中,点击“apply”和“ok”按钮,插件即可登录成功。登录成功后我们在右侧搜索栏搜索“OCR”。选择“云服务”标签下的“文字识别 OCR”,可以看到OCR服务出了支持身份证识别外,还支持很多的其他的文字识别功能。这里我们选择下方的“通用文字识别”,点击“查看文档”。接口文档包含的接口的说明,请求参数,返回参数的详细信息,这里看到这个接口的请求参数只需要一个图片的base64字符串即可。在对要实现的接口有了了解后,我们来改造一下原理的代码。在Intellij中打开代码中的“java”文件。为了方便扩展功能,我们已经在代码中预留好扩展的位置。找到代码的第50行,按注释提示添加一个识别类型:修改后:接着我们来实现调用接口的逻辑,找到代码中第101行的函数“recognizeGeneralText”:把注释删掉,输入我们刚才搜到的api名称“recognizeGeneral”,这是我们看到会有自动提示弹出,选择第一个提示选择后可以看到API调用的基础代码已经被插入:然后我们只需要简单的添加一下输出和输入即可实现API调用的功能,添加下图红框里面的两行代码:到这里我们的代码已经完成,为了使用“通用文本识别”功能,我们需要到OCR服务开通该服务,打开OCR页面:https://console.huaweicloud.com/ocr/#/ocr/overview,找到“通用文本识别”点击开通服务。(按需计费模式下,每个月的前1000次调用免费)将代码push到远端的git仓库,回到我们的应用部署页面,重新部署应用(请参考本文“应用开发及部署小节步骤6、7”),现在可以上传一张带有文字内容的图片,体验添加的通用文本识别功能,识别图片中的文本。到这里我们已经实现了一个新的识别功能的添加,您可以继续查看OCR服务的文档,添加更多的文本识别功能到项目中。恭喜您已完成体验,您还可以了解和体验DevStar AI识图作诗应用开发模板。
  • [AI大赛] 文字识别-Aster算法实战baseline
    本帖是对ModelArts AI Gallery的[文字识别-Aster](https://marketplace.huaweicloud.com/markets/aihub/modelhub/detail/?id=d7107094-bab0-4954-abb6-471eea43a675)算法实战baseline,参赛者可参考本帖选择更多论文算法进行实战。 ### 1、准备工作 ##### [](https://marketplace.huaweicloud.com/markets/aihub/article/detail/?content_id=97aaee75-2175-42be-8cc5-fef369445afe#1.1-创建obs桶(如已有obs桶可跳过此步骤,直接进入下一节))1.1 创建OBS桶(如已有OBS桶可跳过此步骤,直接进入下一节) a.[点击此处](https://console.huaweicloud.com/console/?agencyId=414a22c9ff514e74b1a852e98e6afdac&region=cn-north-4&locale=zh-cn#/obs/manager/buckets) 登录对象存储服务(OBS)管理控制台。 b. 单击页面右上方“创建桶”,在弹出的页面中选择区域(华北-北京四)、自定义桶名称。本baseline创建的桶名称为obs-paper-baseline。 ![1.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202105/06/151335n01789ukcl2wdw5r.png) c. 单击“立即创建”,完成OBS桶的创建。 ##### [](https://marketplace.huaweicloud.com/markets/aihub/article/detail/?content_id=97aaee75-2175-42be-8cc5-fef369445afe#1.2-完成modelarts全局配置(如已完成modelarts全局配置可跳过此步骤,直接进入下一节))1.2 完成ModelArts全局配置(如已完成ModelArts全局配置可跳过此步骤,直接进入下一节) a.[点击此处](https://console.huaweicloud.com/modelarts/?region=cn-north-4#/dashboard)登录ModelArts管理控制台。 b. 单击左侧菜单栏的“全局配置”,参考下图完成访问授权的配置。 ![2.PNG](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202105/06/151412ajdi7tvwmq902fd2.png) ### [](https://marketplace.huaweicloud.com/markets/aihub/article/detail/?content_id=97aaee75-2175-42be-8cc5-fef369445afe#2、下载sem-2016-task-9-datasets数据集)2、下载`SynthText、MJSynth数据集--lmdb格式`数据集 ##### 2.1 [点击此处](https://marketplace.huaweicloud.com/markets/aihub/modelhub/detail/?id=d7107094-bab0-4954-abb6-471eea43a675)进入数据集下载页面。 ##### 2.2 单击页面右侧“下载”按钮,在下载详情页面选择对象存储服务(OBS)路径,新建文件夹等(参考下图)。 ![1.PNG](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202109/27/10422800jflnypgiih0phq.png) ##### 2.3 单击“确定”,进入数据集下载状态。(下载约需要3分钟,可直接进入下一步操作) ### 3、订阅`文字识别-Aster`算法 ##### 3.1 [点击此处](https://marketplace.huaweicloud.com/markets/aihub/modelhub/detail/?id=d7107094-bab0-4954-abb6-471eea43a675)进入算法订阅页面。 ##### 3.2 单击页面右侧“订阅”,订阅之后单击“前往控制台”,选择“华北-北京四”,然后执行下一步第4节训练模型操作。 ![5.PNG](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202104/15/210613iwi1zyqfjojxk3bl.png) ### 4、训练模型 ##### 4.1 等待订阅的算法“就绪”状态后,单击[此处](https://console.huaweicloud.com/modelarts/?region=cn-north-4#/trainingJobs/create/)创建训练作业。 ##### 4.2 在创建训练作业页面,自定义作业名称,选择“数据来源”、“算法名称”、“训练输出”(在OBS桶下新建一个文件夹存储训练生成的模型文件)。 ![2.PNG](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202109/27/143201lhyp6gv4oidwtpvv.png) ![3.PNG](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202109/27/1432142wr1m2x7tnynu9xy.png) ![4.PNG](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202109/27/143221rdqls5wm76ujjpph.png) ##### [](https://marketplace.huaweicloud.com/markets/aihub/article/detail/?content_id=97aaee75-2175-42be-8cc5-fef369445afe#4.3-按照下表设置“超参”。)4.3 按照下表设置“超参”。(epoch选择1,想提高精度可适当提高) ![5.PNG](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202109/27/143551dxvbzbr7midvdniu.png) 作业日志路径:选择/obs-paper-baseline/Aster/log/(自定义) 资源池:公共资源池 规格:\[限时免费\]GPU: 1\*NVIDIA-V100-pcie-32gb(32GB) | CPU: 8 核 64GB,或者根据自己的需要进行选择 计算节点个数:1 ##### 4.4 按照下图选择训练资源,然后单击“下一步”、“提交”进入模型训练。 训练作业的状态会经历“初始化”、“部署中”、“运行中”和“运行成功”四个状态。训练作业运行成功后,在上表中指定的“模型输出”路径下会自动生成model目录,该目录下有模型文件、ModelArts平台推理脚本(config.json、customize\_service.py)和其他运行模型必备的文件。 ![6.PNG](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/20/175529ascxgmoocoippprs.png) ### 5、创建模型 训练作业运行完成后,单击下图“创建模型”按钮进入导入模型页面,自定义模型名称后单击“立即创建”。模型创建需等待几分钟,创建完成后执行下一节操作。 ![7.PNG](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202109/27/150952s35j4y2bf1qfg17j.png) ![7.PNG](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202109/27/151804ave58oakxyv0rfd7.png) ### [](https://marketplace.huaweicloud.com/markets/aihub/article/detail/?content_id=97aaee75-2175-42be-8cc5-fef369445afe#6、将模型发布至ai-gallery)6、将模型发布至AI Gallery ##### 6.1 [点击此处](https://console.huaweicloud.com/modelarts/?region=cn-north-4#/aiMarket/aiMarketCreate?type=model)进入模型发布页面。(首次发布需完成入驻ModelArts AI Gallery操作) ##### 6.2 自定义标题(不能以纯数字串、纯拼音、纯英文命名,可包含算法名称、领域、应用场景等信息),选择上述创建完成的模型,单击“发布”。 ![9.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/21/092309vgkn0ymhiejaumye.png) ##### 6.3 编辑副标题、上传封面图、添加标签、描述及限制后,点击所有“保存”按钮后即发布成功。(执行下一步操作) ![9.PNG](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202109/27/152531gfqda35eekrwd0o8.png) ### [](https://marketplace.huaweicloud.com/markets/aihub/article/detail/?content_id=97aaee75-2175-42be-8cc5-fef369445afe#7、提交实战成果)7、提交实战成果 ##### 7.1 [点击此处](https://ma-competitions-bj4.obs.cn-north-4.myhuaweicloud.com/paper/华为云账号_xx.docx)下载提交文档,按照文档要求填写算法实战成果。 ##### 7.2 [点击此处](https://competition.huaweicloud.com/information/1000041393/submission)进入大赛平台“提交作品”页面,上传提交文档。(可以完成所有算法实战后,一次性提交实战成果) ![13.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202105/06/1530143qtvudeld1wu4hkt.png) 对以上内容有任何疑问,请在本帖回帖或扫描如下二维码回复“论文”加入交流群! ![14.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202105/06/153022do0xxpcqzypbkvsw.png)![8.PNG](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202109/27/151948qsptpzplp1ryzvea.png)
总条数:278 到第
上滑加载中