-
人工智能2022年8月高热贴合集以下是人工智能板块在2022年8月份的高热贴的合集。本月论坛进行了改版,改版后最初还是不太适应,新特性还没有充分使用,所以对于改版后的效果,短时间内也不好进行评论。板块进行了一些调整,在左边栏可以直接看到所有的“产品和服务”分类,也就是之前的主版块。板块名称修改:EI企业智能 修改为 人工智能子板块调整:从EI企业智能 主板块移出:DWS、DGC、FusionInsight、MRS、数据湖探索 等子板块 到 大数据 主板块中本月AI开发平台ModelArts板块的热度高。以往华为Hilens&ModelBox的热度还可以的,这个月就比较冷清。AI开发平台ModelArtsModelArts下发边缘服务失败:cid:link_12ModelArts在线服务停止失败:Failed to stop service automatically, error message: ModelArts.0010:cid:link_0ckpt转AIR模型,无模型输出,也没有报错(获取模型):cid:link_1Notebook老是弹出错误提醒 File Save Error for model_train.ipynb->Failed to fetch,什么问题?怎么处理这个问题?cid:link_2训练作业模型如何离线部署在本地:cid:link_3有些模型只能在tensorflow1.5下跑,有的可以在tensorflow2上跑,这块你们有区分吗:cid:link_4数据集无法上传图片进行标注,上传图片时报错:ModelArts:请求错误:cid:link_5ModelArts.2763 : 选择的支持实例无效,请检查请求中信息的合法性:cid:link_6[ModelArts]模型初始化时,报错Device 0 call rtSetDevice failed, ret[507033](昇腾设备):cid:link_7[ModelArts][parallel][分布式训练]如何在ModelArts上获得RANK_TABLE_FILE,达到并行训练的目的:cid:link_8在modelarts上加载模型时,报错Create python object failed, only support to create 'Cell' or 'Primitive' object.:cid:link_9【modelarts】【自定义镜像】自定义pytorch镜像, ssh连接报错:cid:link_13modelarts上训练yolov4 tiny报错:cid:link_10华为HiLens & ModelBoxHilens Kit在网管注册时,通过华为云账号注册一直失败,请问要怎么解决?cid:link_11
-
由于论坛页面样式改版,可能有很多小伙伴还在慢慢的摸索过程中,为了提升大家的效率 特地整理了一下modelarts区干活合集。希望能帮到大家 谢谢。1.基于ModelArts训练自动驾驶-车道线检测模型 https://bbs.huaweicloud.com/forum/thread-195854-1-1.html 2.ModelArts模型到端侧的落地 - ModelBox端云协同AI开发套件(RK3568)体验 https://bbs.huaweicloud.com/forum/thread-195580-1-1.html 3.基于ModelArts生成“最伟大的作品”歌词 https://bbs.huaweicloud.com/forum/thread-195456-1-1.html 4.使用PyCharm ToolKit工具快速实现模型训练和部署 https://bbs.huaweicloud.com/forum/thread-194351-1-1.html 5.机器学习基础(推荐先学习基础) https://bbs.huaweicloud.com/forum/thread-193942-1-1.html 6.基于ModelArts实现"魔法换天"视频操作 https://bbs.huaweicloud.com/forum/thread-192935-1-1.html 7.VS Code一键连接Notebook https://bbs.huaweicloud.com/forum/thread-192866-1-1.html 8.使用kenlm训练语言模型,并对句子进行打分 https://bbs.huaweicloud.com/forum/thread-189755-1-1.html 9.基于华为云ModelArts深度学习算法的语音识别实践 https://bbs.huaweicloud.com/forum/thread-189298-1-1.html 10.强大的视频抠图(RVM)在AI Gallery的Notebook案例使用(推荐) https://bbs.huaweicloud.com/forum/thread-189183-1-1.html 11.ModelArts新人学习合集(建议收藏) https://bbs.huaweicloud.com/forum/thread-188537-1-1.html(推荐) 12.LSTM + Transformer (RTLM)语言模型 https://bbs.huaweicloud.com/forum/thread-186619-1-1.html 13.RVM(视频人像抠图)论文介绍 https://bbs.huaweicloud.com/forum/thread-186436-1-1.html 14.自动学习项目中,进行增量训练的方法 https://bbs.huaweicloud.com/forum/thread-186407-1-1.html 15.使用A3C算法玩乒乓球游戏案例实操 https://bbs.huaweicloud.com/forum/thread-186406-1-1.html
-
我按照 https://support.huaweicloud.com/bestpractice-modelarts/modelarts_10_0026.html#modelarts_10_0026__zh-cn_topic_0235073536_section87421022184315 提供的样例实践过程中,发现下载数据集、订阅算法后,创建训练作业时,提示“该算法不支持为拆分数据”。但找不到在哪里拆分数据。按照文章里面探索描述的,可以在发布数据集时设置拆分数据,但是目前的发布数据集页面并没有拆分数据的功能。而且几次尝试,都发布失败。下面附上界面图。请专家指教该如何处理?是不是功能更新后,文档没有更新呢?谢谢~
-
模型是从ModelZoo下载的,数据集用的Cifar-10。日志里并没有定位具体问题。之前解决了一些日志定位的bug。目前的部分日志如下:omponent=ma-training-toolkit Platform=ModelArts-Service [2022-08-22T09:13:34+08:00][ModelArts Service Log][sidecar] training is completed [2022-08-22T09:13:34+08:00][ModelArts Service Log][sidecar] the reason for the failure of the training job is under analysis time="2022-08-22T09:13:34+08:00" level=warning msg="the log-preview-size parameter exceeds the limit and will be set to the default value 5242880" file="cli.go:192" Command=analyze Component=ma-training-toolkit Platform=ModelArts-Service [2022-08-22T09:13:34+08:00][ModelArts Service Log][sidecar] stop toolkit_obs_upload_by_channels_pid = 49 by signal SIGTERM time="2022-08-22T09:13:34+08:00" level=info msg="the periodic upload task exiting..." file="upload.go:216" Command=obs/upload_by_channels Component=ma-training-toolkit Platform=ModelArts-Service Task=log_url time="2022-08-22T09:13:34+08:00" level=info msg="the periodic upload task exiting..." file="upload.go:216" Command=obs/upload_by_channels Component=ma-training-toolkit Platform=ModelArts-Service Task=srt_log_collection time="2022-08-22T09:13:34+08:00" level=info msg="the periodic upload task exiting..." file="upload.go:216" Command=obs/upload_by_channels Component=ma-training-toolkit Platform=ModelArts-Service Task=train_url
-
ModelArts是面向AI开发者的一站式开发平台,提供海量数据预处理及半自动化标注、大规模分布式训练、自动化模型生成及端-边-云模型按需部署能力,帮助用户快速创建和部署模型,管理全周期AI工作流。“一站式”是指AI开发的各个环节,包括数据处理、算法开发、模型训练、模型部署都可以在ModelArts上完成。从技术上看,ModelArts底层支持各种异构计算资源,开发者可以根据需要灵活选择使用,而不需要关心底层的技术。同时,ModelArts支持Tensorflow、PyTorch、MindSpore等主流开源的AI开发框架,也支持开发者使用自研的算法框架,匹配您的使用习惯。ModelArts的理念就是让AI开发变得更简单、更方便。面向不同经验的AI开发者,提供便捷易用的使用流程。例如,面向业务开发者,不需关注模型或编码,可使用自动学习流程快速构建AI应用;面向AI初学者,不需关注模型开发,使用预置算法构建AI应用;面向AI工程师,提供多种开发环境,多种操作流程和模式,方便开发者编码扩展,快速构建模型及应用。2022年05月序号功能名称功能描述阶段相关文档1上线Workflow工作流功能开发者可以基于ModelArts提供的Workflow工作流可视化运行AI开发全流程,也可以基于Python SDK开发自己的工作流。公测Workflow介绍2新版训练模式选择功能针对MindSpore类引擎,ModelArts提供训练模式选择,支持用户根据实际场景获取不同的诊断信息。公测训练模式选择3新版训练支持使用自定义镜像创建算法和训练作业新版训练管理中,支持使用自定义镜像的方式创建并运行训练作业。公测使用自定义镜像创建新版训练作业4支持使用VS Code一键连接Notebook在开发环境Console控制台上提供“VS Code”按钮,已开启SSH的实例可通过“VS Code”自动打开VS Code并连接实例。公测VS Code一键连接Notebook5新版训练故障自动恢复功能在训练模型因硬件故障而导致训练失败时,提供容错检查和自动恢复能力。公测训练故障自动恢复6新版训练上线事件查看功能在训练作业运行周期中,可通过查看事件功能,了解训练作业运行过程,遇到任务异常时,更加准确的排查定位问题。公测训练作业事件
-
一直处于同步中
-
【功能模块】modelarts开发环境notebook【操作步骤&问题现象】1、使用ssh连接notebook报错,连接其他官方notebook正常【截图信息】【日志信息】(可选,上传日志内容或者附件)notebook情况
-
在第二步骤中,出现了使用界面和文档不一致的情况,按照文档执行出现了错误,不知道该如何继续。
-
ModelArts是面向AI开发者的一站式开发平台,提供海量数据预处理及半自动化标注、大规模分布式训练、自动化模型生成及端-边-云模型按需部署能力,帮助用户快速创建和部署模型,管理全周期AI工作流。“一站式”是指AI开发的各个环节,包括数据处理、算法开发、模型训练、模型部署都可以在ModelArts上完成。从技术上看,ModelArts底层支持各种异构计算资源,开发者可以根据需要灵活选择使用,而不需要关心底层的技术。同时,ModelArts支持Tensorflow、PyTorch、MindSpore等主流开源的AI开发框架,也支持开发者使用自研的算法框架,匹配您的使用习惯。ModelArts的理念就是让AI开发变得更简单、更方便。面向不同经验的AI开发者,提供便捷易用的使用流程。例如,面向业务开发者,不需关注模型或编码,可使用自动学习流程快速构建AI应用;面向AI初学者,不需关注模型开发,使用预置算法构建AI应用;面向AI工程师,提供多种开发环境,多种操作流程和模式,方便开发者编码扩展,快速构建模型及应用。AI开发平台ModelArts最新动态2022年05月序号功能名称功能描述阶段相关文档1上线Workflow工作流功能开发者可以基于ModelArts提供的Workflow工作流可视化运行AI开发全流程,也可以基于Python SDK开发自己的工作流。公测Workflow介绍2新版训练模式选择功能针对MindSpore类引擎,ModelArts提供训练模式选择,支持用户根据实际场景获取不同的诊断信息。公测训练模式选择3新版训练支持使用自定义镜像创建算法和训练作业新版训练管理中,支持使用自定义镜像的方式创建并运行训练作业。公测使用自定义镜像创建新版训练作业4支持使用VS Code一键连接Notebook在开发环境Console控制台上提供“VS Code”按钮,已开启SSH的实例可通过“VS Code”自动打开VS Code并连接实例。公测VS Code一键连接Notebook5新版训练故障自动恢复功能在训练模型因硬件故障而导致训练失败时,提供容错检查和自动恢复能力。公测训练故障自动恢复6新版训练上线事件查看功能在训练作业运行周期中,可通过查看事件功能,了解训练作业运行过程,遇到任务异常时,更加准确的排查定位问题。公测训练作业事件
-
ModelArts 是面向开发者的一站式 AI 平台,为机器学习与深度学习提供海量数据预处理及交互式智能标注、大规模分布式训练、自动化模型生成,及端-边-云模型按需部署能力,帮助用户快速创建和部署模型,管理全周期 AI 工作流。亮点1:远程开发 - 支持本地IDE远程访问Notebook新版Notebook提供了远程开发功能,通过开启SSH连接,用户本地IDE可以远程连接到ModelArts的Notebook开发环境中,调试和运行代码。对于使用本地IDE的开发者,由于本地资源限制,运行和调试环境大多使用团队公共搭建的CPU或GPU服务器,并且是多人共用,这带来一定的环境搭建和维护成本。而ModelArts的Notebook的优势是即开即用,它预先装好了不同的AI引擎,并且提供了非常多的可选规格,用户可以独占一个容器环境,不受其他人的干扰。只需简单配置,用户即可通过本地IDE连接到该环境进行运行和调试。ModelArts的Notebook可以视作是本地PC的延伸,均视作本地开发环境,其读取数据、训练、保存文件等操作与常规的本地训练一致。对于习惯使用本地IDE的开发者,使用远程开发方式,不影响用户的编码习惯,并且可以方便快捷的使用云上的Notebook开发环境。本地IDE当前支持VS Code、PyCharm、SSH工具。还有专门的插件PyCharm Toolkit和VS Code Toolkit,方便将云上资源作为本地的一个扩展。亮点2:预置镜像 - 即开即用,优化配置,支持主流AI引擎每个镜像预置的AI引擎和版本是固定的,在创建Notebook实例时明确AI引擎和版本,包括适配的芯片。ModelArts开发环境给用户提供了一组预置镜像,主要包括PyTorch、Tensorflow、MindSpore系列。用户可以直接使用预置镜像启动Notebook实例,在实例中开发完成后,直接提交到ModelArts训练作业进行训练,而不需要做适配。ModelArts开发环境提供的预置镜像版本是依据用户反馈和版本稳定性决定的。当用户的功能开发基于ModelArts提供的版本能够满足的时候,比如用户开发基于Minspore1.5,建议用户使用预置镜像,这些镜像经过充分的功能验证,并且已经预置了很多常用的安装包,用户无需花费过多的时间来配置环境即可使用。ModelArts开发环境提供的预置镜像主要包含:常用预置包,基于标准的Conda环境,预置了常用的AI引擎,例如PyTorch、MindSpore;常用的数据分析软件包,例如Pandas、Numpy等;常用的工具软件,例如cuda、cudnn等,满足AI开发常用需求。预置Conda环境:每个预置镜像都会创建一个相对应的Conda环境和一个基础Conda环境python(不包含任何AI 引擎),如预置Mindspore所对应的Conda环境如下:用户可以根据是否使用AI引擎参与功能调试,选择不同的Conda环境。
-
纷享销客作为连接型CRM的开创者,正在依托服务超过5000家大中型企业的行业经验,并基于华为云AI开发生产线ModelArts进行AI应用场景开发,为快消品行业提供全场景CRM解决方案。根据国家统计局的数据,2021年,我国消费支出对经济增长贡献率达65.4%,消费重新成为经济增长第一拉动力。由此,快消品行业正在逐渐走出疫情的影响,实现阶段性复苏。与此同时,数字化的零售服务及可持续发展的消费理念正在释放新的消费潜力,成为拉动中国内需的关键动力。对此,不久前发布的《2022中国快消品产业年度报告》也指出,数智化转型正在引领快消品产业发展,传统的快消品品牌商、零售商、经销商等都要经受一场数字化升级的洗礼,才能更好找到未来新的增长引擎。如今,快消品行业正在积极借助AI应用解放一线业务人员,以提升工作效率和准确性;并借助AI开展海量数据处理,为企业决策提供支撑,进而提升企业整体运营能力并降低成本。面对这一趋势,纷享销客作为连接型CRM的开创者,正在依托服务超过5000家大中型企业的行业经验,并基于华为云AI开发生产线ModelArts进行AI应用场景开发,为快消品行业提供全场景CRM解决方案。由此,纷享销客也与华为云演绎出一条企业服务商与云服务商通过在AI上的创新合作,开辟出AI在行业落地应用的新模式和新途径。01 聚焦行业需求,打造一体化解决方案近年来,由于互联网流量红利逐渐见顶,快消品企业已经不能再简单借助行业渗透率增长的东风。随着用户群体、消费场景的细分以及渠道的进一步多元化,传统营销方式的日渐乏力,快消品企业亟需借助新的手段实时洞察市场和消费者需求,对数据进行深度挖掘和分析,更敏捷地开发市场的个性化和碎片化需求,从而获得新的增长,通过数字化转型加速营销管理创新。于是,快消品行业正在加速数字化转型步伐,并运用云计算、大数据、人工智能等数字化技术,优化企业的运营流程,实现降本增效。为此,纷享销客结合过去多年服务快消品行业数字化转型的经验,打造出融合SaaS、PaaS、BI、BaaS和DTaaS“五位一体”方案,通过技术赋能和管理赋能,对交易模式、链条协同、利益分配进行重构,为快消品企业的数字营销转型提出了从工具、服务,最终到效益的全渠道数字化应用支撑。在此过程中,纷享销客则通过与华为云的深度合作,共同为客户提供安全、可靠的云平台与专业高效的CRM服务。事实上,早在2020年初,纷享销客就已经正式成为华为云战略级合作伙伴。以快消品行业为例,纷享销客借助华为云在AI货架识别领域给予的全方位技术支持,打造了AI货架识别解决方案,解决了快消行业商品包装多样化特性带来的难题。通过集成了华为云AI能力的货架识别方案准确获取商品及其位置信息,在毫秒内计算出排面数量/货架占比等,大大提高业务效率;对于复杂的场景也可进行高精准识别,并通过技术创新打造了以快消行业的货架堆头作为实际场景试点的专业防翻拍方案。AI货架识别纷享销客快消行业研发总监薄川川表示,通过与华为云的合作,纷享销客可以依托华为云在AI算力、算法和开发平台上的技术优势,更加专注于AI在业务层面的落地。目前纷享销客与华为云的合作已经走过平台构建、市场协作两个阶段,正在步入技术协作层面,围绕华为云的AI技术开展更多技术层面的协作和整合。02 增强技术协作,加速AI在快消品行业落地纷享销客应用人工智能技术后,降低了企业运营和开发成本,实现了AI商业项目的复制,这与华为云D-Plan AI生态伙伴计划密不可分。该计划是围绕华为云AI开发生产线 ModelArts推出的一项合作伙伴计划,旨在与合作伙伴一起构建合作共赢的AI生态体系,加速AI应用落地。其中,华为云AI开发生产线ModelArts已全面支持MLOps,并基于该能力和行业知识,打造了一系列开箱即用的UseCase。UseCase之于ModelArts,有如美化模板之于修图软件,通过预置优质AI模板的方式,支持伙伴及客户一键选择并调用,帮助其快速构建行业AI应用。在实际应用中,纷享销客正基于华为云ModelArts提供的UseCase,打造若干个面向快消品行业的场景化AI应用。据华为云EI研发专家介绍,华为云AI开发生产线ModelArts是一个可以为千行百业提供数据处理、算法开发、模型训练、模型管理、模型部署等AI开发全流程技术能力的平台。给伙伴提供自动化的端到端特定场景AI应用构建,以及功能的个性化扩展与编排能力。一方面,华为云AI开发生产线ModelArts提供的UseCase大幅提升AI模型二次开发效率,降低AI应用交付门槛。在新模式下,纷享销客可以将项目交付的时间从1个月缩短到1周;同时仅需要在对业务人员进行简单的算法辅助指导后投入1周时间,便可进行最终业务交付。另一方面,在快消品厂商推出新品并上市的过程中,往往会有新数据产生。这种现象被称为“数据漂移”,会导致AI模型精度下降等问题。华为云AI开发生产线ModelArts提供的UseCase可以在已上线的模型的精度降低时,通过注入少量新增的业务数据,高效地迭代模型应用。这是ModelArts区别于一次**付模型的特点之一。纷享销客基于该模型特征,得以快速完成端到端的训练部署流程,降低数据漂移对实际销售带来的影响。在过去一年间,纷享销客借助在华为云AI开发生产线ModelArts上训练的图像识别模型,已经为快消品行业企业打造了商品识别、货品识别等一系列核心的场景化应用。华为云AI开发生产线ModelArts提升快消品行业AI模型二次开发效率03 加快价值释放,共同探索生态共赢新模式对于快消品企业来说,纷享销客通过将华为云在AI方面的能力与连接型CRM的融合,不仅大大降低了企业应用大数据、AI等新技术的门槛,也可以更加快速地实现技术价值和业务价值的释放,从而帮助企业在激烈的市场竞争中拔得头筹。与此同时,纷享销客和华为云也在服务快消品企业过程中,对于AI技术与场景化应用融合的理解也日渐深入。在此过程中,对于纷享销客与华为云的合作,纷享销客经营副总裁张睿认为,华为云的优势主要体现在以下五个层面:首先,ModelArts将复杂的研发流程留给华为云算法工程师承担,简单的操作则留给伙伴和用户,支持使用者便捷地上线功能与迭代方案;其次,在企业服务市场,华为云的高性价比具有很强的竞争优势;第三,华为云提供的贴身服务可以为客户和伙伴带来更好的服务体验;第四,华为云的技术保障可以让生态更具竞争力,比如云服务、跨云的数据迁移服务、网络服务等;第五,在行业创新应用的背景下,纷享销客与华为云的组合可以给客户带来更强的安全感。除此之外,在与华为云合作过程中,纷享销客在整合双方技术优势的同时,也从华为云强大的营销网络和服务体系中汲取了丰富的建设经验,并通过借鉴华为艰苦奋斗、低调务实等企业文化,逐渐成为共同助力行业数字化转型道路上的同路人和合伙人。不仅如此,随着行业智能升级的大趋势,纷享销客也加速与华为云进行AI创新实践的合作。据了解,接下来华为云将从AI专家资源、ModelArts平台资源、AI资源共享交流社区三个层面进一步优化和提升华为云对行业伙伴的AI赋能工作,为伙伴和客户提供更加全面、优质的AI服务,以帮助更多的伙伴和客户实现AI应用的落地。未来,纷享销客也将通过与华为云的持续合作,在技术上不断扩大AI在更多业务场景上的落地应用,同时寻求在产品、方案等方面的联合创新,共同推动包括快消品行业在内各行各业的AI应用和数字化、智能化转型。由此,纷享销客也将与华为云共同构建起一个全新的价值循环体系,在实现技术价值和业务价值释放的同时,让每一个人都能享受到技术给工作和生活带来的便利。*来源:常言道
-
天筹(OptVerse)AI求解器 将运筹学和AI相结合,突破业界运筹优化极限,针对线性和整数模型寻找最优解,以通用形式描述问题,高效计算最优方案,助力企业量化决策和精细化运营,提升资源利用率和运转效率,增强决策水平和竞争力。求解器--现代决策优化的“芯片”和“根技术”小到快递员路线选择、商铺选址,大到工厂排程、物流路径规划和金融风控等问题,都可以建成数学规划模型,用天筹(OptVerse)AI求解器进行求解。利用运筹优化算法和决策模型求解方法,将业务问题转化为数学规划模型,适用在多种复杂约束条件限制(如人力、时效、容量等约束限制)和海量数据的基础上获取全局最优方案(如成本最低、时间最短)的业务场景,助力业务实现从数据到决策的闭环。 高效建模工具 基于图建模算法,充分利用稀疏性与并行算力,建模效率最大可以提升30倍 高效、稳定、高质量 求解速度快、优度高、性能稳定,已在华为内部供应链问题上成功求解亿级变量/约束超大规模数学模型 自适应学习优化 融合前沿AI能力,可根据问题特征自适应进行参数调优和求解策略选取,实现最大30%的求解效率提升 原生支持分布式加速求解 依托强大云上算力,支持超大规模分布式并行加速 全行业场景全流程决策支持 支持结合 ModelArts 平台向用户提供全流程决策优化能力 简单易用,快速上手 支持云服务RESTful API、ModelArts notebook内置SDK的C++/python接口等多种开发和调用方式
-
活动时间:即日起-7月31日体验流程:本次体验涉及代金券,请勿直接操作,以免造成欠费。1.请先申请成为体验官:点击链接申请成为体验官 2.报名后,等待小助手发放平台代金券:点击报名 3.加入活动社群,等候发放通知4.体验任务:①VSCode一键接入Notebook体验算法套件快速完成水表读数cid:link_0 ②一键打开Notebook,案例内容秒级接入与分享cid:link_1 5.提交体验文件到邮箱:cloud.ai.partner@huawei.com①将步骤【4-②】完成分享的案例地址填写在邮件中文②完成附件的《MA Notebook体验测评任务卡》,并上传到邮件附件③提交【体验视频】到邮件附件,视频内容包括但不限于录制操作视频,拍摄讲解视频……优秀视频将在华为云官网做宣传展示,华为云官方拥有视频的使用权。优秀奖:李欣宁参与奖:韩冰、宋坤平、高浩、刘伟、黄吉浩、应宇昊、朱自立获奖信息收货地址收集(请按照参与姓名填写):cid:link_3☆奖品设置如下☆参与奖:若干名活动要求:按照要求完成任务奖品:文件收纳包1个+3体验官积分 优秀奖:若干名活动要求:被专家评为优秀作品(上传视频有加权哦~)奖品:蓝牙耳机free buds3、雷柏V500机械键盘、蓝牙无线鼠标、5体验官积分
-
>【摘要】 这是水表读数识别项目,实现了如何端到端完成水表读数识别项目。涉及领域包括图像分类、语义分割、OCR文本检测、OCR文本识别。 本文分享自华为云社区《[基于华为云ModelArts的水表读数识别开发实践【华为云至简致远】](https://bbs.huaweicloud.com/blogs/358446)》,作者: Tianyi_Li 。 # 水表读数识别 **项目简介:** 这里实现了如何端到端完成水表读数识别项目。涉及领域包括图像分类、语义分割、OCR文本检测、OCR文本识别。 本案例提供的方法较多,涉及多个模型,但不需要运行所有的模型。如果都测试一遍,默认创建的5GB磁盘规格可能不够用。 **磁盘空间不够时可以将不需要的数据和模型文件删除,腾出空间;或者创建NoteBook时将磁盘规格增加到10GB。** **解决方案流程:** 一、使用语义分割或者OCR文本检测算法识别水表读数所在的四边形区域,并对四边形进行仿射变换转换成矩形,保存成新的图片数据。 二、如果文本区域的图片翻转严重,那第一步抠图生成的数据可能会有180度的翻转。因为文本识别的算法对翻转180度的场景效果不佳,所以再训练一个识别文本翻转的分类模型(本案例图片旋转角度微小,不需要此步骤,内容可供参考)。 三、利用步骤一中检测并抠图出来的文本数据训练OCR文本识别算法,识别图片中的文本内容,即数字。 数据集为华为云AI Gallery上提供的数据集。详情可参见本案例的关联资产。 **下载该项目依赖脚本:** ``` !wget --no-check-certificate https://modelarts-cnnorth4-market.obs.cn-north-4.myhuaweicloud.com/moxing-apps/notebooks/WaterMeter_Identification/deps.zip -O deps.zip !unzip -qo deps.zip !rm -f deps.zip !ls ```  该案例效果图如下 ``` import cv2 import matplotlib.pyplot as plt plt.figure(figsize=(10, 10)) plt.imshow(cv2.imread('./imgs/result1.PNG')) plt.show() ```  # 1.准备环境 **请在本页面的右上角确认您所选择的kernel是PyTorch-1.4,选择的规格是GPU,如下图所示:**  如果没有V100,也可以选择P100,如图所示,看看配置:  **运行时依赖** - moxing>=2.0.1 - torch>=1.4 - 1.4.0>mmcv-full>=1.3.8 (如果环境中没有mmcv-full,安装可能会消耗10几分钟) - tensorboard - 将环境中的pycocotools替换成mmpycocotools - 其他依赖安装 - lanms安装 ``` !pip uninstall -y moxing !pip install --upgrade pip !pip install "mmcv-full>=1.3.8,=1.4.0" -I !wget --no-check-certificate https://modelarts-cnnorth1-market-dataset.obs.cn-north-1.myhuaweicloud.com/moxing-apps/packages/moxing-2.0.1.rc0.7ce21509-py2.py3-none-any.whl -O moxing-2.0.1rc0-py2.py3-none-any.whl !pip install moxing-2.0.1rc0-py2.py3-none-any.whl !pip install future tensorboard !pip uninstall -y pycocotools !pip install mmpycocotools !pip install --upgrade opencv-python !pip install --ignore-installed imageio !pip install imgaug !pip install prettytable lmdb Polygon3 rapidfuzz pyclipper iopath yacs submitit ```  lanms安装: ``` !wget http://repo.myhuaweicloud.com/repository/pypi/packages/96/c0/50dc2c857ed060e907adaef31184413a7706e475c322236d346382e45195/lanms-1.0.2.tar.gz !tar -zxf lanms-1.0.2.tar.gz # 解压到lanms-1.0.2文件夹 %cd lanms-1.0.2 #将Makefile文件第一行的内容修改为:CXXFLAGS = -I include -std=c++11 -O3 -I/home/ma-user/anaconda3/include/python3.6m/ with open('Makefile', "r+") as f: read_data = f.read() f.seek(0) f.truncate() #清空文件 f.write(read_data.replace('$(shell python3-config --cflags)', '-I/home/ma-user/anaconda3/include/python3.6m/')) !python setup.py install import sys sys.path.insert(0, '/home/ma-user/work/lanms-1.0.2') %cd ../ ``` # 2.准备数据 ## 2.1.数据下载 可以登录https://www.datafountain.cn/competitions/480/datasets进行下载(需要报名参赛才可以下载)。 或者使用备用下载地址下载并解压: ``` !wget https://modelarts-cnnorth1-market-dataset.obs.cn-north-1.myhuaweicloud.com/dataset-apps/water_meter/water_meter_from_DataFountain.zip -O ./data.zip !mkdir -p ./data/raw !unzip -qo data.zip -d ./data/raw !rm -f data.zip !ls ./data/raw ``` 数据格式如下(如果数据格式不一致,请处理成一致的格式,放入./data/raw目录下): ``` ./data/raw ├── train_imgs ------------------------ 训练集图片目录 │ ├── train_1.jpg │ ├── ... │ ├── train_1000.jpg ├── train_labels ---------------------- 训练集图片标签目录 │ ├── label说明.docx │ ├── labels │ │ ├── train_1.txt │ │ ├── ... │ │ ├── train_1000.txt ├── test_imgs -------------------------- 测试集图片目录 │ ├── test_1.jpg │ ├── ... │ ├── test_500.jpg ``` train_labels中的txt标签文件说明可参考./data/raw/train_labels/label说明.docx,如果notebook无法打开可以下载到本地再打开。 以其中一个文件内容为例: ``` 95 423 286 319 314 366 126 472 00093 00092 ``` 标签中前八个值,为水表表盘的四个角点(x1, y1, x2, y2, x3, y3, x4, y4),分别为:左上、右上、右下、左下。后面的值为表盘的数值,由于最后一位出现半字符的情况,所以有两个数值,如果没有半字符则只有一个数值。参考如下图片: ``` import cv2 import matplotlib.pyplot as plt plt.figure(figsize=(10, 10)) plt.imshow(cv2.imread('./imgs/label.png')) plt.show() ```  ## 2.2.数据切分 为了方便训练模型时观察模型的训练效果,将数据集切分成训练集和验证集,默认切分比例 训练集:验证集=9:1,保存在./data/train.txt和./data/eval.txt。 ``` from util import split_data img_dir = './data/raw/train_imgs' # 原始图片路径 save_dir = './data/' # 切分结果保存路径 split_data(img_dir, save_dir) # 开始切分 print('Finished!') ``` ``` !ls ./data ``` # 3.文本检测 本案例尝试了两种算法识别度数区域。分别是语义分割算法deeplabv3和文本检测算法dbnet。对比之后分割算法结果更佳。 **分割算法和文本检测算法两者选择其一即可,推荐分割算法。** ## 3.1.分割算法(推荐) **与文本检测算法二选一即可。** ### 3.1.1.数据准备 分割算法的数据标签通常为单通道的PNG图片。所以我们需要通过原始的txt标签文件生成PNG图片。保存在./data/segmentation/labels目录下。 ``` from segmentation.data_util import create_labels img_dir = './data/raw/train_imgs/' # 原始图片路径 anno_dir = './data/raw/train_labels/labels' # 原始标注文件路径 save_dir = './data/segmentation/labels' # 分割标签保存路径 create_labels(img_dir, anno_dir, save_dir) # 生成标签 print('Finished!') ``` 标签可视化: ``` import cv2 import numpy as np import matplotlib.pyplot as plt def show(img_path, label_path): # 读取原始图片 img = cv2.imread(img_path) # 读取标签图片 label = cv2.imread(label_path) # 标注结果图片的背景像素值为0,物体的像素值为1,均显示为黑色。 # 为了可视化效果明显,突出物体的标注区域,这里将物体的像素值1(黑色)替换为255(白色)。 label[label==1] = 255 # 原始图片和标签图片像素融合 merge = img * 0.5 + label * 0.5 merge = merge.astype(np.uint8) images_to_observe = [img, label, merge] titles = ['原始图片','标签图片','原始图片+标签图片融合'] # 结果可视化 fig = plt.figure(figsize=(30, 30)) for i in range(len(images_to_observe)): fig.add_subplot(1, len(images_to_observe), i + 1).set_title(titles[i], fontsize=18, color='r') imgplot = plt.imshow(images_to_observe[i]) plt.show() if __name__ == '__main__': # 以其中一张图片为例 img_path = './data/raw/train_imgs/train_10.jpg' label_path = './data/segmentation/labels/train_10.png' show(img_path, label_path) ``` ### 3.1.2.下载预训练模型 执行以下命令下载预训练模型并保存到./pretrained_model/deeplabv3plus_r50-d8.pth: ``` !mkdir -p ./pretrained_model !wget --no-check-certificate https://download.openmmlab.com/mmsegmentation/v0.5/deeplabv3plus/deeplabv3plus_r50-d8_512x512_80k_ade20k/deeplabv3plus_r50-d8_512x512_80k_ade20k_20200614_185028-bf1400d8.pth -O ./pretrained_model/deeplabv3plus_r50-d8.pth ``` ### 3.1.3.训练 训练时加载预训练模型: ``` ./pretrained_model/deeplabv3plus_r50-d8.pth ``` 为了节省训练时间,默认训练1000步,每一步训练8个样本,每200步验证一次精度,每200步保存一次模型。如果要进一步提升精度,可以尝试修改./segmentation/train.py脚本中的配置参数,将训练步数增大。训练好的模型保存在./train_url/segmentation目录下。 训练时默认加载./data/train.txt和./data/eval.txt中保存的样本作为训练集和验证集。请参考./segmentation/train.py。 **单卡训练:** 单卡大约耗时15分钟左右。 ``` !python ./segmentation/train.py \ --num_classes=2 \ --data_url=./data/ \ --eval_data_url=./data/ \ --img_dir=raw/train_imgs \ --ann_dir=segmentation/labels \ --work_dir=./train_url/segmentation \ --load_from=./pretrained_model/deeplabv3plus_r50-d8.pth # num_classes:数据类别数 # data_url:训练集根目录 # eval_data_url:验证集根目录 # img_dir:根目录下存放图片的目录名称 # ann_dir:根目录下存放标签的目录名称 # work_dir:保存输出模型的路径 # load_from:预置模型文件路径 ``` 多卡训练: NoteBook创建多卡环境时可使用,用来加速。 ``` !python -m torch.distributed.launch \ --nproc_per_node=$(/usr/local/nvidia/bin/nvidia-smi -L | wc -l) \ --master_port=7000 \ ./segmentation/train.py \ --launcher=pytorch \ --num_classes=2 \ --data_url=./data \ --eval_data_url=./data \ --img_dir=raw/train_imgs \ --ann_dir=segmentation/labels \ --work_dir=./train_url/segmentation \ --load_from=./pretrained_model/deeplabv3plus_r50-d8.pth # nproc_per_node:每个节点启动的进程数(GPU数) # launcher:分布式启动方式 # num_classes:数据类别数 # data_url:训练集根目录 # eval_data_url:验证集根目录 # img_dir:根目录下存放图片的目录名称 # ann_dir:根目录下存放标签的目录名称 # work_dir:保存输出模型的路径 # load_from:预置模型文件路径 ``` ### 3.1.4.推理+四边形定位+矫正 训练完成后,使用训练好的分割模型对图片进行推理,分割模型返回的推理结果是个2维数组,保存了预测图片每个像素点的标签值。 然后对推理结果做四边形的定位,再将四边形矫正成矩形,最后将矩形区域保存成新的图片数据。这部分数据用来训练后面的文本识别算法。保存在./data/textrecog/images_from_seg路径下。 对原始图片./data/raw/train_imgs进行推理: ``` !python ./segmentation/infer_and_crop.py \ --num_classes=2 \ --img_path=./data/raw/train_imgs \ --checkpoint=./train_url/segmentation/latest.pth \ --save_dir=./data/textrecog/images_from_seg # num_classes:类别数 # img_path:要推理的图片目录 # checkpoint:模型文件 # save_path:推理结果保存路径 ``` 推理结果可视化: ``` from util import show_pair img_dir = './data/raw/train_imgs' # 训练集原始图片 result_dir = './data/textrecog/images_from_seg' # 训练集推理结果 show_pair(img_dir, result_dir, show_num=2) ``` ## 3.2.文本检测算法 与分割算法二选一即可。 ### 3.2.1.数据准备 将数据的元信息保存在json文件中。文本检测的标签默认只有一类text,只要对文本区域进行标注并训练,识别出文本区域即可,和分割算法一样,不需要识别文本中的内容。 训练文件保存在./data/textdet/instances_training.json,验证文件保存在./data/textdet/instances_test.json。 ``` import os from textdet.data_util import create_water_json base_dir = './data' annotation_dir = os.path.join(base_dir, 'raw/train_labels/labels') img_dir = os.path.join(base_dir, 'raw/train_imgs') # train create_water_json(img_dir=img_dir, # 图片路径 anno_dir=annotation_dir, # 标注文件路径 save_file=os.path.join(base_dir, 'textdet/instances_training.json'), # 训练文件保存路径 split=os.path.join(base_dir, 'train.txt')) # 保存训练样本的文件 # eval create_water_json(img_dir=img_dir, # 图片路径 anno_dir=annotation_dir, # 标注文件路径 save_file=os.path.join(base_dir, 'textdet/instances_test.json'), # 验证文件保存路径 split=os.path.join(base_dir, 'eval.txt')) # 保存验证样本的文件 ``` 生成的json文件格式如下: ``` { 'images': [{'file_name': 'train_1.jpg', 'height': 960, 'width': 540, 'segm_file': None, 'id': 0}, {'file_name': 'train_2.jpg', 'height': 540, 'width': 960, 'segm_file': None, 'id': 1}, ...]}, 'categories': [{'id': 1, 'name': 'text'}], 'annotations': [{'iscrowd': 0, 'category_id': 1, 'bbox': [126, 283, 241, 147], 'area': 13363, 'segmentation': [[126, 379, 345, 283, 367, 333, 144, 430]], 'image_id': 0, 'id': 0}, {'iscrowd': 0, 'category_id': 1, 'bbox': [430, 159, 204, 67], 'area': 10316, 'segmentation': [[445, 159, 634, 170, 630, 226, 430, 205]], 'image_id': 1, 'id': 1}, ...] } ``` images: - file_name:图片名称 - height: 图片的高 - width: 图片的宽 - id:图片的索引 categories: - id:标签的索引 - name:标签值 annotations: - iscrowd:默认值为0,segmentation使用polygon格式,。 - area: 四边形的面积。 - segmentation:四边形的四个角点的坐标。 - image_id:图片的索引。 - id:文本框的索引 ### 3.2.2.下载预训练模型 ``` !wget --no-check-certificate https://download.pytorch.org/models/resnet50-19c8e357.pth -O ./pretrained_model/resnet50-19c8e357.pth !wget --no-check-certificate https://download.openmmlab.com/mmocr/textdet/dbnet/dbnet_r50dcnv2_fpnc_sbn_2e_synthtext_20210325-aa96e477.pth -O ./pretrained_model/dbnet_r50dcnv2_fpnc_sbn_2e_synthtext.pth ``` ### 3.2.3.训练 训练的数据集、模型、优化器等均已保存在配置文件./textdet/water_meter_textdet_config.py和./textdet/base_config.py中。 base_config.py文件是基础配置,可不必改动。 water_meter_textdet_config.py文件是针对该案例的配置,例如数据路径、预训练模型路径、epoch数、学习率等可直接在此文件中修改。 为了节省时间,默认训练10个epoch,每2个epoch验证一次,保存一次模型。如果精度不够,可以修改water_meter_textdet_config.py中的训练参数。将epoch数调大,可调至30-100之间,epoch越大,训练时间越久。训练的模型保存在./train_url/textdet路径下。 **单卡训练:** 单卡训练较慢,大约耗时15分钟左右。 ``` !python textdet/train.py ./textdet/water_meter_textdet_config.py --work-dir=./train_url/textdet ``` 多卡训练: NoteBook创建多卡环境时可使用,可加速训练。 ``` !python -m torch.distributed.launch \ --nproc_per_node=$(/usr/local/nvidia/bin/nvidia-smi -L | wc -l) \ --master_port=7000 \ textdet/train.py \ ./textdet/water_meter_textdet_config.py \ --launcher=pytorch \ --work-dir=./train_url/textdet # nproc_per_node:每个节点启动的进程数(GPU数) # launcher:分布式启动方式 # work-dir:模型保存的路径 ``` ### 3.2.4.推理 推理生成的结果保存在./data/textdet/results路径下,该路径下包含两个文件夹out_vis_dir和out_txt_dir。 out_vis_dir目录下存放每张图片推理的可视化结果,保存为jpg文件。out_txt_dir目录下存放每张图片推理出的四边形区域的坐标值,保存为txt文件。 ``` !python textdet/infer.py \ ./data/raw/train_imgs \ ./textdet/water_meter_textdet_config.py \ ./train_url/textdet/latest.pth \ --out-dir=./data/textdet/results # 第1个参数: 推理的图片路径 # 第2个参数: 模型的配置文件 # 第3个参数: 训练好的模型文件 # 第4个参数: 推理结果保存路径 ``` out_txt_dir目录下txt文件的内容如下: ``` 393,180,615,177,616,241,394,244,1 ``` 393,180,615,177,616,241,394,244:代表4个角点的坐标,分别是左上角,右上角,右下角,左下角。 1:标签索引,1代表是文本区域。 out_vis_dir目录下为图片,可直接进入./data/textdet/results/out_vis_dir目录下打开图片查看,或者使用下面的可视化接口查看: ``` from util import show img_dir = './data/textdet/results/out_vis_dir' show(img_dir, show_num=3) ``` ### 3.2.5.抠图 根据上面的推理结果,将文本区域抠出来保存成新的图片,用于训练文本识别模型。保存路径为./data/textrecog/images_from_textdet。 ``` from textdet.data_util import cutout img_dir = './data/raw/train_imgs' # 推理时的原始图片路径 cutout(img_dir, ann_dir='./data/textdet/results/out_txt_dir/', # 推理结果txt文件 save_dir='./data/textrecog/images_from_textdet' # 抠图结果保存路径 ) print('Finished') ``` 抠图结果可视化: ``` from util import show_pair img_dir = './data/raw/train_imgs' # 训练集原始图片 result_dir = './data/textrecog/images_from_textdet' # 训练集推理结果 show_pair(img_dir, result_dir, show_num=2) ``` # 4.文本翻转检测(可选) 本案例数据集物体倾斜角度较小,不需要进行翻转识别,如果遇到随机翻转严重的数据集可以参考这部分代码训练一个识别翻转的模型。 文本检测算法中已经将需要识别的文本区域抠图并保存。接下来利用这部分数据训练一个文本识别算法。因为文本区域做了角度的矫正。但是无法区分翻转0度和180度的图片,而文本识别的算法对翻转180度的场景效果不佳。所以我们又训练了一个专门识别翻转的模型。用来做180度翻转的矫正。 ## 4.1.数据准备 可将文本检测抠出来的图片做180度翻转的离线扩充。根据文本检测抠出的图片以及离线扩充后的数据进行人工标注正常或翻转。 **但是本案例图片倾斜角度较小,抠图的结果均为正向,不需要人工标注。原始图片均为正向0度翻转,离线扩充进行180度翻转后的均为180度翻转的图片。** **离线扩充:** 分割模型的精度较高,结果较准确,我们使用分割模型的推理结果进行离线扩充 ``` import os from PIL import Image import moxing as mox def flip_upside_down(img_dir, save_dir): mox.file.make_dirs(save_dir) imgs_list = os.listdir(img_dir) for img_name in imgs_list: img = Image.open(os.path.join(img_dir, img_name)) img.rotate(180).save(os.path.join(save_dir, img_name)) # 图片旋转180度并保存 if __name__ == '__main__': img_dir = './data/textrecog/images_from_seg' flip_save_dir = './data/detect_180/flip_180' # 翻转数据的保存路径,保存在./data/detect_180目录下 flip_upside_down(img_dir, flip_save_dir) # 进行翻转处理 mox.file.copy_parallel(img_dir, './data/detect_180/normal') # 将正常数据拷贝一份到./data/detect_180目录下,用于训练翻转模型 print('Finished!') ``` 离线结果可视化: ``` from util import show img_dir = './data/detect_180/flip_180' show(img_dir, show_num=5) ``` ## 4.2.下载预训练模型 执行以下命令下载模型,模型保存到./pretrained_model/mobilenet_v2.pth。 ``` !wget --no-check-certificate https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth -O ./pretrained_model/mobilenet_v2.pth ``` ## 4.3.训练 识别图片翻转可以使用小点的模型,这里我们以mobilenet_v2为例,如果精度不够可以换稍大点的模型。 使用前面下载的预训练模型,./pretrained_model/mobilenet_v2.pth。 为了节省时间,默认训练25个epoch,每一步训练64个样本,每2个epoch验证一次精度,每2个epoch保存一次模型。大约耗时2-3分钟左右。如果想要更高的精度,可以修改./code/detect_180/train.py脚本中的配置参数。或者换大点的模型。模型较小,使用单卡训练即可。多卡训练可参考其他模型的多卡训练。 这里没有将数据切分成训练集和验证集,可自行切分,指定eval_data_url。 ``` !python ./detect_180/train.py \ --num_classes=2 \ --data_url=./data/detect_180 \ --work_dir=./train_url/detect_180 \ --load_from=./pretrained_model/mobilenet_v2.pth #--eval_data_url=./data/detect_180 # num_classes:数据类别数 # data_url:训练集存放路径 # eval_data_url:验证集存放路径 # work_dir:保存输出模型的路径 # load_from:预置模型文件路径 ``` ## 4.4.推理 训练的模型保存在./train_url/detect_180路径下,加载该路径下的模型进行推理。就以训练集路径下的翻转图片为例。 ``` !python ./detect_180/infer.py \ --num_classes=2 \ --img_path=./data/detect_180/flip_180 \ --checkpoint=./train_url/detect_180/latest.pth ``` # 5.文本识别 ## 5.1.数据准备 根据文本检测后的抠图数据和原始的txt标注文件创建文本内容识别的标签文件。 水表中有的度数转到一半,会同时出现两个数字。原始标注文件中也标注了多个label,从实际情况出发,我们选择符合实际情况的标签(如果转到一半,选择小的那个度数)。有一些特殊的图片,需要人工过滤一下:例如train_19.jpg这张图片。 ``` import cv2 import matplotlib.pyplot as plt imgplot = plt.imshow(cv2.imread('./data/raw/train_imgs/train_19.jpg')) plt.show() ``` 该图片的原始标签有四个['00069', '00070', '00060', '00079'],但从实际情况出发,符合条件的应该是00069和 00070。我们选择度数小的那个作为标签值,即00069。 还有几张图片的标注格式与其他标注文件不同,例如train_140.jpg这张图片标注的标签格式是00470.00479,其他文件都是空格分隔00470 00479。这种图片只有几张我们也进行人工过滤。 下面根据原始的标注文件生成文本识别需要的标注文件格式。 ``` from textrecog.data_util import gen_label_file ann_dir = './data/raw/train_labels/labels' # train train_split_path = './data/train.txt' train_save_path = './data/textrecog/train_label.txt' gen_label_file(train_split_path, ann_dir, train_save_path) # eval eval_split_path = './data/eval.txt' eval_save_path = './data/textrecog/eval_label.txt' gen_label_file(eval_split_path, ann_dir, eval_save_path) print('Finished!') print('标注文件内容如下,文本图片名称+文本数字内容') !head -n 5 ./data/textrecog/train_label.txt ``` ## 5.2.下载预训练模型 执行以下命令下载模型,模型保存到./pretrained_model/crnn_academic-a723a1c5.pth。 ``` !wget --no-check-certificate https://download.openmmlab.com/mmocr/textrecog/crnn/crnn_academic-a723a1c5.pth -O ./pretrained_model/crnn_academic-a723a1c5.pth ``` ## 5.3.训练 训练的数据集、模型、优化器等均已保存在配置文件./textrecog/water_meter_textrecog_config.py和./textrecog/base_config.py中。 base_config.py文件是基础配置,可不必改动。 water_meter_textrecog_config.py文件是针对该案例的配置,例如数据路径、预训练模型路径、epoch数、学习率等可直接在此文件中修改。 默认训练50个epoch,精度不够,可以修改water_meter_textrecog_config.py中的训练参数进行调参。 训练生成的模型保存在./train_url/textrecog路径下。大约耗时2-3分钟左右: ``` !python ./textrecog/train.py \ ./textrecog/water_meter_textrecog_config.py \ --work-dir=./train_url/textrecog ``` ## 5.4.推理 生成推理文件列表: 将需要推理的文件名称保存在txt文件中。 ``` import os img_root_path = './data/textrecog/images_from_seg' with open('./data/textrecog/infer_imgs_list.txt', 'w') as f: f.write('\n'.join(os.listdir(img_root_path))) !head -n 5 ./data/textrecog/infer_imgs_list.txt # 查看生成文件的前5行样本 ``` 推理: 利用训练好的模型进行推理并保存推理结果。结果保存在./data/textrecog/infer_results目录下。该目录下会有多个文件和目录生成。我们只需查看out_vis_dir和result.txt即可。 ``` !mkdir ./data/textrecog/infer_results # 创建推理结果的保存路径 !python ./textrecog/infer.py \ ./data/textrecog/images_from_seg \ ./data/textrecog/infer_imgs_list.txt \ ./textrecog/water_meter_textrecog_config.py \ ./train_url/textrecog/latest.pth \ --out_dir=./data/textrecog/infer_results # 第1个参数: 推理的图片根目录 # 第2个参数: 图片根目录下的推理文件列表 # 第3个参数: 模型配置文件 # 第4个参数: 训练好的模型文件 # 第5个参数: 推理结果保存路径 ``` 推理结果可视化: ``` from util import show img_dir = './data/textrecog/infer_results/out_vis_dir' show(img_dir, show_num=5) ``` # 6.端到端识别 以上我们已经完成了水表识别的整个流程。现在我们将上述算法串联在一起,实现端到端的预测。输入数据为原始拍摄的图片。输出为水表的度数。 ## 6.1分割算法 与文本识别算法算法二选一。 如果文本检测部分使用的是分割算法,参考infer_end2end_with_seg.py脚本,模型路径,数据路径都配置在了该脚本中,可修改该脚本。 如果前面的模型或者数据有改动部分,该脚本请同步修改。 ``` !python infer_end2end_with_seg.py \ --num_classes=2 \ --img_path=./data/raw/test_imgs \ --out=./outputs_with_seg \ --detect_180=False # num_classes:类别数 # img_path:推理图片路径 # out:推理结果保存路径 # detect_180:如果训练了识别翻转的模型,设置detect_180=True即可,默认值为False ``` 推理结果可视化: ``` from util import show_pair img_dir = './data/raw/test_imgs' res_dir = './outputs_with_seg' show_pair(img_dir, res_dir, show_num=2) ``` ## 6.2文本识别算法 与分割算法算法二选一。 如果文本检测部分使用的是文本识别算法,参考infer_end2end_with_textdet.py脚本,模型路径,数据路径都配置在了该脚本中,可修改该脚本。 如果前面的模型或者数据有改动部分,该脚本请同步修改。 ``` !python infer_end2end_with_textdet.py \ --num_classes=2 \ --img_path=./data/raw/test_imgs \ --out=./outputs_with_textdet \ --detect_180=False # num_classes:类别数 # img_path:推理图片路径 # out:推理结果保存路径 # detect_180:如果训练了识别翻转的模型,设置detect_180=True即可,默认值为False ``` 推理结果可视化: ``` from util import show_pair img_dir = './data/raw/test_imgs' res_dir = './outputs_with_textdet' show_pair(img_dir, res_dir, show_num=2) ```
-
感谢各位体验官的积极参与,以下为2022年第1季度积分榜(积分统计截止体验活动ModelArts AI开发平台全流程开发体验,共5期)公示时间(6.1-6.6)公示期间无异议,以下结果为最终排名积分说明:1.完成调研问卷得1积分,被评为优秀调研任务或参与线上连线得2积分2.参与体验任务得3积分,评为优秀报告得5积分。3.第1期调研活动因被取消,所以不算在本次积分统计中。4.本次优化任务,是之前2位体验官在活动中表现优异,提出了大量的优化建议,产品部决定直接定向邀约2位体验官进行产品迭代后的功能验证。微信昵称总积分参与次数调研2:弹性云服务器ECS及控制台首页使用调研访谈调研3:华为云对象存储及控制台首页使用用户调查访谈调研4:华为云CBR云备份服务用户访谈优化任务:DRS产品验证与优化体验任务1:ModelArts AI开发平台全流程开发体验@~@831 2 5姚圣伟632 22 苏冰63222 leo@微客派52 2 3李林高51 5朱自立51 5武汉-窵禠42 22 huqi8842 1 3A-Louis31 3Larry-济南-EasyRedmine31 3映在天空中的宇宙31 3孙小北31 3Angelababybody31 3葛伟杰31 3冯慧轩31 3马钧31 3Micker22 11 法凯212 嘉鹏22 11 立国111 Cx330111 小修11 1 我们将对季度积分排名前三的体验官颁发礼品第一名:富士INSTAX 一次成像相机 mini7第二名:雷柏机械键盘V700第三名:智能床头灯以上积分如有问题请联系开发者1号小助手,谢谢。
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第三期2026/08/21 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;念擎-华为云AI开发者运营案例开发专家
本期直播内容:AI六层能力首次详细解读 + 新一代华为云开发者空间亮相 + 校园案例直播带练
回顾中
热门标签