-
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号小助手,谢谢。
-
人工标注对于不同类型的数据,用户可以选择不同的标注类型。当前ModelArts支持如下类型的标注作业: 图片 图像分类:识别一张图片中是否包含某种物体。 物体检测:识别出图片中每个物体的位置及类别。 图像分割:根据图片中的物体划分出不同区域。 音频 声音分类:对声音进行分类。 语音内容:对语音内容进行标注。 语音分割:对语音进行分段标注。 文本 文本分类:对文本的内容按照标签进行分类处理。 命名实体:针对文本中的实体片段进行标注,如“时间”、“地点”等。 文本三元组:针对文本中的实体片段和实体之间的关系进行标注。 视频 视频标注:识别出视频中每个物体的位置及分类。目前仅支持mp4格式。智能标注除了人工标注外,ModelArts还提供了智能标注功能,快速完成数据标注,为您节省70%以上的标注时间。智能标注是指基于当前标注阶段的标签及图片学习训练,选中系统中已有的模型进行智能标注,快速完成剩余图片的标注操作。目前只有“图像分类”和“物体检测”类型的数据集支持智能标注功能。团队标注数据标注任务中,一般由一个人完成,但是针对数据集较大时,需要多人协助完成。ModelArts提供了团队标注功能,可以由多人组成一个标注团队,针对同一个数据集进行标注管理。团队标注功能当前仅支持“图像分类”、“物体检测”、“文本分类”、“命名实体”、“文本三元组”、“语音分割”类型的数据集。不同类型数据集支持的功能列表其中,不同类型的数据集,支持不同的功能数据集类型标注类型人工标注智能标注团队标注图片图像分类支持支持支持物体检测支持支持支持图像分割支持--音频声音分类支持--语音内容支持--语音分割支持-支持文本文本分类支持-支持命名实体支持-支持文本三元组支持-支持视频视频标注支持--自由格式----表格----
-
AI开发和调优往往需要大量的迭代和调试,数据集、训练代码或参数的变化都可能会影响模型的质量,如不能统一管理开发流程元数据,可能会出现无法重现最优模型的现象。ModelArtsAI应用管理可导入所有训练生成的元模型,可对所有迭代和调试的AI应用进行统一管理。使用限制和说明自动学习项目中,在完成模型部署后,其生成的模型也将自动上传至AI应用管理列表中。但是自动学习生成的AI应用无法下载,只能用于部署上线。创建AI应用、管理AI应用版本、模型转换等功能目前是免费开放给所有用户,使用此功能不会产生费用。创建AI应用的几种场景从训练中选择:在ModelArts中创建训练作业,并完成模型训练,在得到满意的模型后,可以将训练后得到的模型创建为AI应用,用于部署服务。从模板中选择:相同功能的模型配置信息重复率高,将相同功能的配置整合成一个通用的模板,通过使用该模板,可以方便快捷的导入模型,创建为AI应用,而不用编写config.json配置文件。从容器镜像中选择:针对ModelArts目前不支持的AI引擎,可以通过自定义镜像的方式将编写的模型镜像导入ModelArts,创建为AI应用,用于部署服务。从OBS中选择:如果您使用常用框架在本地完成模型开发和训练,可以将模型导入至ModelArts中,创建为AI应用,直接用于部署服务。AI应用管理的功能描述
-
获取您的EI红宝书:https://www.huaweicloud.com/ei/ AI测试是对基于AI的应用系统的测试;与任何系统一样,基于AI的系统具有功能性和非功能性需求。AI应用测试的主要流程包括场景分析,特征因子分析,数据构建,评测指标,自动化方案等AI应用测试AI测试任务分层AI应用测试框架关键角色AI开发工程师负责设计、开发实现、数据验收、自测、调优等工作数据工程师负责数据采集、数据清洗、数据整合、数据标注、数据质量检测等工作测试工程师负责测试数据采集、测试场景分析、测试方案、测试用例、测试策略、测试自动化、测试验收和评估等工作测试流程和活动① 结合需求描述,梳理典型应用场景,场景使用主体、特点等,将场景细化② 基于场景分析,分析影响Al模型识别率的特征因子,建立特征因子库。不同的AI场景对特征因子要求和复杂度不一样,比如CV应用场景的特征因子有拍摄因素(曝光、角度等)、环境因素(阴晴雨雪、背景等)、属性因素(人物年龄、肤色等)③ 基于应用场景、特征因子等进行数据集构建,包括不限于:数据类别、不同因子比例、环境因素、特定要求等④ 不同业务场景,关注不同的指标,评价的结果也不同,所以需要根据需求场景和侧重点,确定指标和相关定义。比如:有些业务求全,所以召回率优先;有些业务求准,所以准确率优先;有的业务因类别不均衡,要看单个类别的准确率;还有的业务内存非常敏感,所以对模型大小优先。⑤ 自动化批量测试及评测指标统计https://mp.weixin.qq.com/s?__biz=Mzg5Mjc4NjE1Nw==&mid=2247484542&idx=1&sn=4e6a77a15df21988fe72d41e133e8bdf&chksm=c03980fcf74e09eae416f1a5085ecba06804d9e17210e9a32f2706ebe201fbb8ceab4a6d13e8&token=70826191&lang=zh_CN#rd 云与数据- HCCDA-AI合集:https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg5Mjc4NjE1Nw==&action=getalbum&album_id=2398219468813811715&scene=173&from_msgid=2247483927&from_itemidx=1&count=3&nolastread=1#wechat_redirect**
-
获取您的EI红宝书:https://www.huaweicloud.com/ei/ 华为HiLens为端云协同多模态AI开发应用平台,供简单易用的开发框架、开箱即用的开发环境、丰富的AI技能市场和云上管理平台,接多种端侧计算设备,支持视觉及听觉AI应用开发、AI应用在线部署、海量设备管理等https://mp.weixin.qq.com/s?__biz=Mzg5Mjc4NjE1Nw==&mid=2247484541&idx=1&sn=8356331b4085c76c3a5139407ac59766&chksm=c03980fff74e09e907c12129a5daaa527d20111fa818c74d2acdd0a0e930d4dd8f4d00e0d792&token=1539735248&lang=zh_CN#rd 云与数据- HCCDA-AI合集:https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg5Mjc4NjE1Nw==&action=getalbum&album_id=2398219468813811715&scene=173&from_msgid=2247483927&from_itemidx=1&count=3&nolastread=1#wechat_redirect**
-
获取您的EI红宝书:https://www.huaweicloud.com/ei/ 华为云EI服务介绍:华为云人工智能入门级开发者认证 - 第④章 ModelArts服务介绍 (qq.com)ModelArts是面向AI开发者的一站式开发平台,提供海量数据预处理及半自动化标注、大规模分布式训练、自动化模型生成及端-边-云模型按需部署能力,帮助用户快速创建和部署模型,管理全周期AI工作流面向不同经验的AI开发者面向业务开发者,不需关注模型或编码,可使用自动学习流程快速构建AI应用;面向AI初学者,不需关注模型开发,使用预置算法构建AI应用;面向AI工程师,提供多种开发环境,多种操作流程和模式,方便开发者编码扩展,快速构建模型及应用“一站式”是指AI开发的各个环节自动学习数据管理开发环境训练平台推理平台AI Gallery 云与数据- HCCDA-AI合集:https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg5Mjc4NjE1Nw==&action=getalbum&album_id=2398219468813811715&scene=173&from_msgid=2247483927&from_itemidx=1&count=3&nolastread=1#wechat_redirect**
-
【功能模块】ModelArts产品AI应用服务ID 7bb213cc-d27c-4f25-88db-d15b7a79fd66【操作步骤&问题现象】1、原yolov5 提供了模型集成,但在obs中上传两个模型文件(.pt)后推理错误。模型(pt)的读入是不公开的,无法修改推理文件完成Ensemble Inference。2、官方要求的文件路径如下OBS桶/目录名 |── resnet | ├── model 必选: 固定子目录名称,用于放置模型相关文件 | │ ├── <<自定义Python包>> 可选:用户自有的Python包,在模型推理代码中可以直接引用 | │ ├── resnet50.pth 必选,pytorch模型保存文件,保存为“state_dict”,存有权重变量等信息。 | │ ├──config.json 必选:模型配置文件,文件名称固定为config.json, 只允许放置一个 | │ ├──customize_service.py 必选:模型推理代码,文件名称固定为customize_service.py, 只允许放置一个,customize_service.py依赖的文件可以直接放model目录下3、我的OBS【日志信息】(可选,上传日志内容或者附件)
-
模型训练中除了数据和算法外,开发者花了大量时间在模型参数设计上。模型训练的参数直接影响模型的精度以及模型收敛时间,参数的选择极大依赖于开发者的经验,参数选择不当会导致模型精度无法达到预期结果,或者模型训练时间大大增加。为了降低开发者的专业要求,提升开发者模型训练的开发效率及训练性能,ModelArts提供了可视化作业管理、资源管理、版本管理等功能,基于机器学习算法及强化学习的模型训练自动超参调优,如learning rate、batch size等自动的调参策略;预置和调优常用模型,简化模型开发和全流程训练管理。当前大多数开发者开发模型时,为了满足精度需求,模型往往达到几十层,甚至上百层,参数规模达到百兆甚至在GB规格以上,导致对计算资源的规格要求极高,主要体现在对硬件资源的算力及内存、ROM的规格的需求上。端侧资源规格限制极为严格,以端侧智能摄像头为例,通常端侧算力在1TFLOPS,内存在2GB规格左右,ROM空间在2GB左右,需要将端侧模型大小控制在百KB级别,推理时延控制在百毫秒级别。这就需要借助模型精度无损或微损下的压缩技术,如通过剪枝、量化、知识蒸馏等技术,实现模型的自动压缩及调优,进行模型压缩和重新训练的自动迭代,以保证模型的精度损失极小。无需重新训练的低比特量化技术实现模型从高精度浮点向定点运算转换,多种压缩技术和调优技术实现模型计算量满足端、边小硬件资源下的轻量化需求,模型压缩技术在特定领域场景下实现精度损失<1%。当训练数据量很大时,深度学习模型的训练将会非常耗时。在计算机视觉中,ImageNet-1k(包含 1000 个类别的图像分类数据集,以下简称 ImageNet)是经典、常用的一个数据集,如果我们在该数据集上用一块P100 GPU训练一个ResNet-50模型,则需要耗时将近1周,严重阻碍了深度学习应用的开发进度。因此,深度学习训练加速一直是学术界和工业界所关注的重要问题。分布式训练加速需要从软硬件两方面协同来考虑,仅单一的调优手段无法达到期望的加速效果。所以分布式加速的调优是一个系统工程,需要从硬件角度(芯片、硬件设计)考虑分布式训练架构,如系统的整体计算规格、网络带宽、高速缓存、功耗、散热等因素,充分考虑计算和通信的吞吐量关系,以实现计算和通信时延的隐藏。软件设计需要结合高性能硬件特性,充分利用硬件高速网络实现高带宽分布式通信,实现高效的数据集本地数据缓存技术,通过训练调优算法,如混合并行,梯度压缩、卷积加速等技术,实现分布式训练系统软硬件端到端的高效协同优化,实现多机多卡分布式环境下训练加速。ModelArts 在千级别资源规格多机多卡分布式环境下,典型模型 ResNet50 在 ImageNet 数据集上实现加速比>0.8,是行业领先水平。衡量分布式深度学习的加速性能时,主要有如下2个重要指标:吞吐量,即单位时间内处理的数据量。收敛时间,即达到一定的收敛精度所需的时间。吞吐量一般取决于服务器硬件(如更多、更大FLOPS处理能力的AI加速芯片,更大的通信带宽等)、数据读取和缓存、数据预处理、模型计算(如卷积算法选择等)、通信拓扑等方面的优化。除了低bit计算和梯度(或参数)压缩等,大部分技术在提升吞吐量的同时,不会造成对模型精度的影响。为了达到最短的收敛时间,需要在优化吞吐量的同时,对调参方面也做调优。调参不到位会导致吞吐量难以优化,当batch size超参不足够大时,模型训练的并行度就会相对较差,吞吐量难以通过增加计算节点个数而提升。对用户而言,最终关心的指标是收敛时间,因此ModelArts的MoXing实现了全栈优化,极大缩短了训练收敛时间。在数据读取和预处理方面,MoXing通过利用多级并发输入流水线使得数据 IO 不会成为瓶颈;在模型计算方面,MoXing对上层模型提供半精度和单精度组成的混合精度计算,通过自适应的尺度缩放减小由于精度计算带来的损失;在超参调优方面,采用动态超参策略(如 momentum、batch size等)使得模型收敛所需epoch个数降到最低;在底层优化方面,MoXing与底层华为服务器和通信计算库相结合,使得分布式加速进一步提升。
-
ModelArts是面向AI开发者的一站式开发平台,提供海量数据预处理及半自动化标注、大规模分布式训练、自动化模型生成及端-边-云模型按需部署能力,帮助用户快速创建和部署模型,管理全周期AI工作流。“一站式”是指AI开发的各个环节,包括数据处理、算法开发、模型训练、模型部署都可以在ModelArts上完成。从技术上看,ModelArts底层支持各种异构计算资源,开发者可以根据需要灵活选择使用,而不需要关心底层的技术。同时,ModelArts支持Tensorflow、PyTorch、MindSpore等主流开源的AI开发框架,也支持开发者使用自研的算法框架,匹配您的使用习惯。ModelArts的理念就是让AI开发变得更简单、更方便。面向不同经验的AI开发者,提供便捷易用的使用流程。例如,面向业务开发者,不需关注模型或编码,可使用自动学习流程快速构建AI应用;面向AI初学者,不需关注模型开发,使用预置算法构建AI应用;面向AI工程师,提供多种开发环境,多种操作流程和模式,方便开发者编码扩展,快速构建模型及应用。产品架构ModelArts是一个一站式的开发平台,能够支撑开发者从数据到AI应用的全流程开发过程。包含数据处理、模型训练、模型管理、模型部署等操作,并且提供AI Gallery功能,能够在市场内与其他开发者分享模型。ModelArts支持应用到图像分类、物体检测、视频分析、语音识别、产品推荐、异常检测等多种AI应用场景。ModelArts特色功能数据治理支持数据筛选、标注等数据处理,提供数据集版本管理,特别是深度学习的大数据集,让训练结果可重现。极“快”致“简”模型训练自研的MoXing深度学习框架,更高效更易用,大大提升训练速度。云边端多场景部署支持模型部署到多种生产环境,可部署为云端在线推理和批量推理,也可以直接部署到端和边。自动学习支持多种自动学习能力,通过“自动学习”训练模型,用户不需编写代码即可完成自动建模、一键部署。AI Gallery预置常用算法和常用数据集,支持模型在企业内部共享或者公开共享。
-
在数据量很大的标注任务中,标注初期由于已标注图片不足,智能标注的结果无法直接用于训练。若对所有的未标注数据一一进行调整确认仍然需要较大的人力和时间成本。为了更快地完成标注任务,在对未标注数据进行智能标注的任务中,Modelarts嵌入了自动难例发现功能。该功能会对剩余未标注图片的标注优先级给出建议。因为标注优先级高的图片的智能标注结果未达到预期,所以称之为难例。ModelArts平台提供的自动难例发现功能,在智能标注以及数据采集筛选过程中,将自动标注出难例,建议对难例数据进一步确认标注,然后将其加入训练数据集中,使用此数据集训练模型,可得到精度更高的模型。首先,针对智能标注和采集筛选任务,难例的发现操作是系统自动执行的,无需人工介入,仅需针对标注后的数据进行确认和修改即可,提升数据管理和标注效率。其次,您可以基于难例的情况,补充类似数据,提升数据集的丰富性,进一步提升模型训练的精度。在数据集管理中,对难例的管理有如下场景。智能标注后,确认难例将数据集中的数据标注为难例目前只有“图像分类”和“物体检测”类型的数据集支持难例发现功能。智能标注后,确认难例“智能标注”任务执行过程中,ModelArts将自动识别难例,并完成标注。当智能标注结束后,难例标注结果将呈现在“待确认”页签,建议您对难例数据进行人工修正,然后确认标注。登录ModelArts管理控制台,在左侧菜单栏中选择“数据管理>数据标注”,进入“数据标注”管理页面。在标注作业列表中,选择“物体检测”或“图像分类”类型的标注作业,单击标注作业名称进入“标注作业详情”。在“标注作业详情页”,选择“标注>待确认”页签,查看并确认难例。只有当智能标注任务完成后,待确认页签才会显示标注数据。否则,此页签内容为空。针对“物体检测”标注作业在“待确认”页签中,单击图片展开标注详情,查看图片数据的标注情况,如标签是否准确、目标框位置添加是否准确。如果智能标注结果不准确,建议手工调整标签或目标框,然后单击“确认标注”。完成确认后,重新标注的数据将呈现在“已标注”页签下。如图1所示的难例,dog标签的目标框位置不准确,使用标注框重新标注,如图中的“漏检”目标框,然后需要将原先标注错误的目标框删除,即“误检”标签框。手工调整后,单击“确认标注”完成难例确认。图1 物体检测的难例确认针对“图像分类”标注作业在“待确认”页签中,查看标注难例的图片,其添加的标签是否准确。勾选标注不准确的图片,删除错误标签,然后在右侧“标签名”处添加准确标签。单击“确认”,勾选的图片及其标注情况,将呈现在“已标注”页签下。如图2所示,选中的图片为标注错误图片,在右侧删除错误标签,然后在标签名处添加“狗”的标签,然后单击“确认”,完成难例确认。将数据集中的数据标注为难例针对标注作业中,已标注或未标注数据,也可以将图片数据标注为难例。标注为难例的数据,对后续模型训练中,通过内置规则提升模型精度。登录ModelArts管理控制台,在左侧菜单栏中选择“数据管理>数据标注”,进入“数据标注”管理页面。在标注作业列表中,选择“物体检测”或“图像分类”类型的标注作业,单击数据集名称进入“标注作业详情页”。在标注作业详情页,选择“标注”页签”,单击“已标注”、“未标注”或“全部”页签,勾选需标注为难例的图片,然后单击“难例批处理 > 确认为难例”。完成标注后,图片预览时,其右上角将显示为“难例”。
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签