• [技术干货] 沉痛悼念旷视首席科学家、旷视研究院院长孙剑博士,享年 45 岁[转载]
    AI 领域,传来一个让人悲恸的消息。6 月 14 日,旷视官方发布讣告,旷视首席科学家、旷视研究院院长孙剑博士因突发疾病抢救无效去世,终年 45 岁。我们万分难过,旷视首席科学家、旷视研究院院长孙剑博士因突发疾病抢救无效,于2022年6月14日凌晨,永远离开了我们。孙剑博士一生专注于科研工作。他的不幸离世,让旷视失去了一位在人工智能技术领域探索和创新的领路人。每一位和他共事过的旷视同学,失去了一位智慧谦和的师长。旷视研究院的墙上一直挂着孙剑博士奠定的研究使命:持续创新拓展认知边界,非凡科技成就产品价值。这句话将永远激励我们,勇攀科研高峰!孙剑博士生平经历孙剑博士扎根于计算机视觉领域二十余载,其一直将科研视为学业,亦是穷极一生想要贡献的事业。孙剑博士,图源个人网站(http://www.jiansun.org/)回顾其生平经历,1977 年出生于陕西西安的孙剑,18 岁考入西安交通大学,1997 年获得西安交通大学自动控制专业获取学士学位。2000 年,获得西安交通大学获取硕士学位。2003 年,获得西安交通大学模式识别与智能控制专业获取博士学位,在攻读博士期间,孙剑作为微软亚洲研究院和西安交通大学联合培养的研究生曾师从沈向洋博士。博士毕业后,孙剑加入微软亚洲研究院潜心科研工作,主要研究方向是交互式计算视觉和网络计算视觉,而后在微软亚洲研究院任至首席研究员。而后的多年间,孙剑博士参与计算机视觉和计算机图形学领域科研领域的研究,他在 CVPR、ICCV、ECCV、SIGGRAPH 等会议上发表了多篇学术论文。2006 年,孙剑博士的论文入围全国百优博士论文。2009 年,孙剑同其他作者发表的论文“Single Image Haze Removal Using Dark Channel Prior”赢得了国际计算机视觉与模式识别会议(CVPR)的最佳论文奖(CVPR Best Paper),这也是亚洲人第一次获得该奖。2010 年,33 岁的孙剑获得了权威技术期刊颁发的麻省理工学院《科技评论》的“全球 35 岁以下杰出青年创新者”奖。2015 年,孙剑带领的团队斩获了图像识别国际大赛五项冠军(ImageNet 分类、检测和定位、MS COCO检测和分割)。同年也获得了 COCO 视觉识别挑战赛两项冠军(物体检测、语义分割)。在微软亚洲研究院工作 13 年后,孙剑博士于 2016 年 7 月加入旷视科技任首席科学家。2016 年,孙剑博士凭借《图像识别的深度残差学习》(Deep Residual for Learning Image Recognition)再次获得国际计算机视觉与模式识别会议(CVPR)的最佳论文奖。同年,获得了国家自然科学二等奖。2017 年,孙剑带领旷视研究院,击败谷歌、Facebook、微软等 AI 巨头企业,获得 COCO&Places图 像理解国际大赛三项冠军(COCO 物体检测、人体关键点、Places物体分割)。2018 年,孙剑再次带领旷视研究院拿下 COCO+Mapillary 联合挑战赛四项冠军(关键物体检测、全景分割、人体关键点检测和Mapillary Panoptic)。2019 年,西安交通大学宣布成立人工智能学院,孙剑博士担任首任院长。彼时他也曾风趣地说道:“在清华读完本硕博叫‘三清’的话,那么我就是‘三交’了。”多年的科研经历,孙剑拥有超过40项专利,自 2002 年以来在顶级学术会议和期刊上发表学术论文 100 余篇。 沉痛悼念在孙剑看来,做科研,只要“认准目标,不断积累,或早或晚就会取得突破。”而在计算机视觉领域的追求,孙剑也曾分享过一套“神鬼”论——“既要做鬼,也要做神”。其中,“做神”是指基础问题研究,“做鬼”是指解决实际问题 。在立足于实际问题方面,2015 年,孙剑带领团队开发出来的“深度残差网络”(ResNet)是世界上第一个上百层的深度神经网络,开创了深度学习领域的一个里程碑。ResNet 在 2018 年被应用在 AlphaGo Zero 中。在旷视任职期间,在他的带领下,移动端高效卷积神经网络 ShuffleNet、开源深度学习框架天元 MegEngine、AI 生产力平台 Brain++ 等多项创新技术相继落地,开创了人工智能新时代。如今他的突然离去,无不令人痛心惋惜。孙剑博士,一路走好。参考:http://www.jiansun.org/https://megvii.com/news_detail/id/43https://baike.baidu.com/item/%E5%AD%99%E5%89%91/19814032http://www.jiansun.org/JianSun_CV.pdf原文链接:https://blog.csdn.net/csdnnews/article/details/125277114
  • [技术干货] 如果重来一次高考,我要好好学数学![转载]
    软件工程领域的数学应用多如牛毛为什么顺序、分支、循环三种编程语句就可以表达几乎所有的程序逻辑?单机上跑的算法,怎么改写成分布式的?为什么倒排索引如此之快?如果现在你想进大厂,不做两道编程算法题是不行的,有点难度的题不是图,就是动态规划,再不就是时间,空间复杂度的限制,不懂点数学,纯背题,会很慢。我导师招我的时候跟我说,我最不喜欢你们这些学计算机的或者软件的,没有说编程多好。反正是数学不行。我最喜欢要那些数学底子好或者数学专业的。他们来搞计算机容易出成果。导师的矩阵论学的非常好,搞三维重建的时候,矩阵随便变换一下,应用到三维重建里面就能水一篇文章。让我想起庖丁解牛中的一段话来:庖丁为⽂惠君解⽜,⼿之所触,肩之所倚,⾜之所履,膝之所踦,砉然向然,奏⼑騞然,莫不中⾳。合于《桑林》之舞,乃中《经⾸》之会。⽂惠君⽈:“嘻,善哉!技盖⾄此乎?高考数学是选拔基础学科人才的方式,只会越来越难!我的数学水平直线下降,应该是从高三开始。高二的期末考试没考好。从重点班滑了出来。我对新换的数学老师很不适应。觉得他教的不好。他总把:会和熟是两码事儿。只看不做,一考就错。这些话挂在嘴边,令我很是厌烦。但后来才渐渐明白,数学嘛,没有什么捷径,就是多练习,多做题。听说今年高考数学题非常难。数学题难的目的是为了国家筛选有用的基础学科人才,我们被卡脖子的各种技术,说到底是因为基础学科水平的落后。科学技术一日千里,不在有限的时间里面多学点东西,很难在快节奏的时代里脱颖而出,能够被选拔出来的人才应该是在最年轻的时候就适应了、领会了大部分的基础理论,并且有所提高,这样才能有余力进行创造。 所以,肉眼可见的是数学或者其他基础理工科会在未来难度进一步加大。不单单是高考数学难,考研数学也会越来越难。虽然目前作为一名算法工程师我会在工作的过程中接触到非常多的数学公式,但说实话我吸收的很慢,常常需要先看懂文字的描述再去琢磨公式,然后恍然大悟,奥,居然此处的含义可以通过这样或者那样的数学公式体现出来。比如在注意力机制中,注意力体现为查询、键、值的数学关系,神经网络模型中多层神经网络模拟高阶函数。甚至感兴趣的话,自然数e,复数 等等:自然常数e这个数,怎么就自然了?但我很难说能够跟上最新的模型,多头注意力机制还没完全搞明白,Google已经从bert 到 pathway 了。。。节奏跟不上,就很难讲创新了?根源在哪里?我认为是数学。如果重来一次,我希望可以降维打击花有重开日,人无再少年,如果重来一次我肯定选择好好学数学,即使上了大学也会选择类似数学等的基础学科好好学学。因为如果基础学科学好了,转去应用学科,简直就是降维打击。比如数学专业的本科生上了研究生,可以转计算机(比如文章开头我导师的例子),转金融或者继续研究数学,根本不是像家里人想的只能去当数学老师。P.S. 咳咳,数学老师,应该是最累的老师种类了,一写一黑板。。。向数学老师致敬!当然,直接学计算机也没什么太大问题,这篇文章主要提醒大家数学等基础学科的重要性,上大学后计算机怎么学,如何就业?可以看看参考文献。参考文献朋友们,跟我来,一起抓住大数据时代的AI机遇三维重建技术概述Flow diagrams, Turing machines and languages with only two formation rules判断&数学&生活均值与期望:傻傻分不清?计算机软件领域的一些哲学相关问题考试,一种严格的水平鉴定方法。IT 生涯初探与工作经验分享【计算机、软件工程相关专业毕业生应该知道的事】---- 来自2008级学长的掏心窝分享原文链接:https://blog.csdn.net/wangyaninglm/article/details/125212877
  • [热门活动] 行业资讯 | 我国工业互联网产业规模超万亿元;大冶牵手华为打造智慧城市……
    我国工业互联网产业规模超万亿元“截至目前,我国工业互联网已应用于45个国民经济大类,涵盖研发设计、生产制造、营销服务等各个环节,产业规模超万亿元。”工业和信息化部有关负责人日前表示,经过4年多的实践,我国工业互联网从无到有,建成网络、平台、安全三大体系,体系化发展位居全球前列。国家级、行业级、企业级多层次的工业互联网平台体系初步构建,目前具有一定影响力的工业互联网平台超150家,连接工业设备超7800万台(套),服务工业企业超160万家。工信部调查数据显示,83%的企业表示应用工业互联网后生产经营效率明显提升。(来源:人民网) 大冶牵手华为打造智慧城市6月9日,“大冶城市智能体”智慧城市建设战略合作协议签约暨“华为智慧城市展车中国行—大冶站”启动仪式举行,大冶市全面启动智慧城市建设。华为湖北政企业务部总经理吕晓龙表示,此次战略合作签约将是双方深化合作新的开始,华为将做好大冶智慧城市建设的技术顾问,以“城市智能体”为参考架构,构建大冶智慧城市蓝图,推动城市数字化转型,合力打造全省乃至全国“县域智慧城市标杆”。(来源:荆楚网) 我们居住的社区更加智慧化了民政部、中央政法委、中央网信办等9部门近日印发《关于深入推进智慧社区建设的意见》,对建设智慧社区的总体要求、重要任务和保障措施作出部署。专家认为,打造智慧社区有利于提升居民生活幸福感,也有利于拓宽参事议事渠道,为基层治理减负提效。(来源:中国经济网) 微软与教育机构合作:探索AI辅助口语教学的数字化路径6月9日消息,近期一些国内外的学校和教育机构与微软合作,通过Azure AI的语音评测功能,来提升学生的口语及朗读能力。据微软方面介绍,随着功能日益丰富完善,微软Azure AI的语音评测功能已能够应用于教育领域解决方案的合作伙伴、APP开发者以及语言学校、培训中心、教育机构、考试中心,用于进行各种语言学习、口语练习和考试等场景的开发。(来源:**网) 顺丰科技获全国首批数据商资格近日,贵阳大数据交易所发布全国首套数据交易规则体系,顺丰科技获全国首批数据商资格。据介绍,顺丰科技可实现数据合规流通,企业数据产品和服务可通过贵阳数交所平台达成交易,可以为数据产品建设提供参考(譬如“居住地验证”等)。  (来源:36氪) 高通CEO:全球芯片短缺情况正在缓解,预计明年情况将有所改善高通CEO Cristiano Amon日前接受访谈时表示,目前芯片市场需求仍然大于供应,预期在2022年下半才会开始见到供需间更为平衡的发展,预计2023年就会摆脱危机,不过部分业者可能要到2024年才会见到短缺问题缓解。(新浪财经) 上海已开通2万套数字哨兵,今年底将建成6万个5G室外基站近日,以场所码和“数字哨兵”为代表的信息化手段,将在上海常态化防疫工作中起到重要作用。以能够快速核验健康码、核酸和抗原检测结果,同时测量体温的“数字哨兵”为例,目前三家运营商已开通2万套。上海市经信委副主任汤文侃还表示,接下来会加快5G和千兆光网“双千兆”网络建设。到今年年底,全市累计建成6万个5G室外基站,对重点区域采用微站、室分相结合的方式进行5G网络深度覆盖。在万兆到楼、千兆到户已实现的基础上,推动家庭全光接入;加快推动全市商用数据中心和上海超算中心AI算力平台建设。(来源:澎湃新闻)
  • [干货汇总] 当AI抄起了水表
    >摘要:一套AI工作流,既减轻水表抄表工的负担,也保证了普通百姓用水数据的真实。 本文分享自华为云社区《[行业案例:当AI抄起水表,一套工作流打通水务智能的“任督二脉”](https://bbs.huaweicloud.com/blogs/355140?utm_source=csdn&utm_medium=bbs-ex&utm_campaign=other&utm_content=content)》,作者: 华为云社区精选 。 咚咚咚,抄水表了。 抄表员挨家挨户地敲门,登记水表读数,看似简单的一件事,背后其实有着不少辛酸故事。 有的住户的水表安在厨房的炉灶底下,他们得趴伏在地上,一手打着手电筒,一手抹去表盘上的油污,才能看清水表读数。有的抄表员不小心记差了读数,回头既要被住户投诉,还会收到公司的惩罚。 抄水表是个技术活,**有没有什么办法既可以减轻抄表工的负担,也能保证普通百姓用水数据的真实呢**? AI或许能给出一个最佳的答案。 # 藏在水表里的秘密 虽然家家户户都有水表,但很少有人想过家里的水表是如何工作的。 以传统的机械水表为例,它主要依靠水流推动表内的叶轮转动来测量用水,所以水龙头开得越大,水流得越急,叶轮就转得越快,水表读数走得就快。 后来有了智能水表,其中最具代表性的是电磁水表,它的原理是大家熟知的法拉第电磁感定律,通过在测量管内产生工作磁场,当有导电率的水流经过,就能推动水表工作,测水量更加精准。 这其中,就有着计控仪表企业拓安信的身影。2008年,拓安信研发上市了国内第一台电磁水表,很快便陆续在长沙、郑州投入使用,但在使用中他们发现这种传感器不适合国内的环境使用,于是很快又推出第一台全不锈钢电磁水表。 >拓安信成立于1996年,是中国第一台电磁水表的诞生企业,是集ANSO安信电磁水表、电磁流量计等漏损控制相关产品和系统软件的研发、生产、销售、服务为一体的国家级高新技术企业。其在东莞拥有30000㎡“安信物联网产业中心”,职能涵盖硬件研发制造中心、大流量计量中心实验室、漏控实训基地、大数据中心与客户体验中心。 如今,拓安信为全国近1000家供水企业提供了精准的用水计量设备和数据保障服务,他们通过高精度电磁水表来提升计量效率,降低表观漏损,有效监测动态数据,为供水企业提供信息化的支撑。 也正在这个过程中,拓安信发现这些水务企业在运营效率,尤其是供水可靠性方面遇到不少难题。 # 自来水公司的烦恼 拓安信负责人强调,“长期以来,自来水⾏业抄表工作占用大量人力资源,传统抄表都是通过抄表⼈员现场进⾏⽔表的抄读,⽆法杜绝⼈为错抄、漏抄等现象,⽽抄表质量直接决定水司的经营效益,是自来水公司能实现成本回收的关键。” 如今,抄表的人力成本越来越高,错识概率也高,再加上水表数据出的慢,实时效率低,导致漏水告警不及时,极大地影响了整体的供水管理和决策。 为应对这种挑战,拓安信决定通过引入智能化的技术来解决传统⼿⼯抄表的痛点:用AI抄表来取代人工抄表,降低人力耗费和成本,并提高抄表的准确度。 但是当前行业内水表种类繁多,样式也不统一,很难开发出一套能够适配所有水表的AI算法模型, 如果AI无法精确识别水表读数,AI抄表并不能解决传统手工抄表的难题,于是拓安信的开发团队准备寻求外部力量攻克这个难题。 机缘巧合中,他们遇到了华为云,在D-Plan AI 生态伙伴计划的支持下,拓安信通过华为云的AI开发平台ModelArts完成水表识别模型的定制化和自主训练优化,成功实现了: - 定制化开发智能水表识别算法模型,达到水表元素高精度识别。 - 定制化开发水表识别Workflow,做到多样式水表智能识别快速拓展。 >ModelArts 是面向开发者的一站式 AI 平台,支持海量数据预处理及交互式智能标注、大规模分布式训练、自动化模型生成,及端-边-云模型按需部署能力,可以让AI应用开发到商用部署缩短为分钟级别。 # 一套工作流,解决水表模型定制开发迭代难题 拓安信的研发人员先是梳理了国内主要⽔司⽔表安装、使⽤及运⾏环境,并在华为云AI开发团队的协助下,归类整理了上万张水表照片。 借助华为云的AI开发平台ModelArts,这些被标注好的图片被投喂给AI算法模型,不断去训练优化水表识别算法。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/10/1654832715688394627.png) 开发流程示意图 在拓安信的AI水表识别模型开发中,华为云的AI方案破解了两个关键的难题。 ## 1、算法定制,已知数据集范围确保100%识别精度 首先华为云AI团队将图片中需要识别的要素提取出来,由于提取的要素存在非正对等情况,因此需要对要素进行180度旋转矫正,然后再将不同的要素送入不同的识别算法中进行解析。 其中,针对水表种类繁多的难题,华为云用Transfomer网络结构的模型来替换升级传统的识别网络算法,用更多的参数量来承载学习多种水表类型。 同时,整个水表照片的识别要素非常多,AI需要完成水表读数识别、ID识别、条形码识别、二维码识别、客户名称识别,再加上有的水表所处的环境比较恶劣,照片存在反光、遮挡和模糊,导致读数下方的二维码/条形码识别率很低。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/10/1654832736140835044.png) 为此,华为云针对不同的要素制定了不同的后处理策略,针对一个种类只会出现一个框的要素,使用了最大联调区域过滤去优化分割网络的精度。并通过大量的图像算法,来优化噪点、反光、模糊图片中二维码的识别精度。 ## 2、Workflow定制开发,使能客户自主训练,算法可扩展复制 值得注意的是,传统的 AI 应用交付会直接以实验迭代结束后输出的模型为终点。但他们往往会忽略一个问题,就是当应用上线后,随着时间的推移,会出现模型漂移的问题,新的数据和新的特征在已有的模型上表现会越来越差。比如无法识别新上市的水表种类。 为了解决这个问题,华为云为拓安信提供了定制算法Workflow。 >ModelArts Workflow是开发者基于实际业务场景开发用于部署模型或应用的流水线工具。它将数据导入、数据集创建、数据标注、数据处理、模型训练、模型管理、模型上线等复杂的步骤按照业务流程封装成一个个节点。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/10/1654832761461911120.png) 相较于传统的一次性模式,Workflow允许用户只需要关注数据和标注本身,**无需任何AI知识,就可以自行对模型做迭代,让模型在将来各种场景上都具有扩展性,解决数据漂移问题。** Workflow将开发试验调测好的AI开发过程固化成一条流水线,拓安信的研发人员将会使用这条流水线在持续产生的数据中持续迭代训练,确保这条流水线生产出来的模型的AI应用始终维持在一个较好的状态。整个过程中,他们只需要对Workflow的输入数据,输出路径进行配置,即可启动进行模型训练。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/10/1654832780300185089.png) 华为云的AI项目负责人表示,“ModelArts将复杂的流程由自己的算法工程师承担,把简单的操作留给用户。当已经部署上线的服务精度降低时,客户可以根据把收集到的数据重新导入Workflow运行,整体运行为一次迭代。” 在ModelArts的加持下,拓安信既实现了水表照片的快速标注和训练,也实现了算法模型的自主训练优化,**水表识别算法模型得以扩展迭代复用,应用于各种新样式水表,降低了开发门槛和成本。** 如今,这套AI方案可以帮助拓安信精确识别读取水表照片中的读数,再搭配他们的外业APP智能抄表系统,传统的⼈⼯抄表模式成功升级为AI抄表。 # AI抄水表,推动水务智能化 对于拓安信来说,智能水表识别模型的定制开发和可迭代,让他们用AI完成了降本增效的目标,成功实现了水务AI的转型。 ## - 节省千万人力成本 查水表不再完全依赖人工,尤其是水表一般都安装在隐蔽的位置,单依赖人眼往往很难看清楚,通过拍照智能识别可以替代人眼识别,从人工抄表到AI抄表,拓安信帮助行业节约千万级人力成本。 ## - 管理效率提升30% AI识别水表数据都会自动化录入,备份,将从前的一录一矫的工作流程优化为矫正为主,管理效率得到30%的提升,实现水务水表数据管理自动化,保证了水表数据的管理和审核。 ## - 保障客户数据安全 由ModelArts开发的AI模型支持一站式部署到本地化或者私有化场景中,极大地提高了水务公司的模型应用性能和数据安全。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/10/1654832844619265323.png) 水是万物之源,随着人口的增长,人们对水的消耗不断扩大,人均可用淡水资源持续下降。而水资源的管理会影响到经济的各个方面,特别是健康、粮食生产安全、民用给水和卫生设施、能源、工业和环境可持续性这些方面。 科学用水、智慧用水迫在眉睫。 AI记录水表读数,看似只是一个不起眼的变化,背后节省的是巨大的经济成本。而且因为它可以让供⽔计量更加精准,让数据采集更便捷,保证用水数据的真实性,便能为供⽔企业的安全供⽔、效益提升及漏损控制提供科学数据参考,推动水务行业全面智能化。 近年来,我国也相继出台一系列政策支持智慧水务行业的发展。据《智慧⽔务⾏业深度报告》测算,我国智慧⽔务⾏业空间在3000亿元以上。在⼤数据、5G、⼈⼯智能等技术的加持下,我国的水务行业向真正的智慧化、智能化运营管理转变。 这也是拓安信一直以来在坚持的事情,在华为云的帮助下,他们不断加深技术护城河,在智慧水务行业始终保持领先地位。未来,面对智慧水务巨大的蓝海市场,拓安信将继续深耕供水行业,并结合华为云AI团队和技术优势,为⾏业带来新的技术突破和智慧应⽤,实现经济效益和社会效益的增⻓,“成就每一滴水”。
  • [其他] 全球重点互联网公司产业布局情况(AI)
    ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/9/1654762213192933721.png) ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/9/1654762241023874457.png) ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/9/1654762261064967155.png) 可以参考一下,个人觉得内容不太完整,没有华为。你要说因为限定了互联网公司的缘故,那为什么IBM在榜?
  • [其他] 从“人找知识”,到“知识找人”
    这倒是很有新意的一个实践。 基于华为云**知识计算解决方案**,企业可以打造自己的知识计算平台,比如中国第一汽车集团,基于知识计算解决方案构建了一汽知识计算平台,将知识以数字化的方式呈现在员工面前,实现从过去的“人找知识”,到现在的“知识找人”的转变,助力员工快速成长为领域专家。 在某汽车4S店,一次性修复率提升了4%,客户维修等待时间下降了23%,厂家支持介入率下降了30%,**维修技师的培养时间缩短了30%**。目前,该解决方案已经在石油、汽车、医疗、化纤、煤焦化、钢铁、交通等行业得到了广泛的应用。 挺好的~ 而能做到这些,是因为 在AI落地行业的过程中,华为发现,行业专家通常对AI理解不足,AI科学家也对行业专业知识理解不足,造成AI落地行业的断点、堵点,这其中**对知识密集型的科技企业**尤其明显。知识计算解决方案,通过将知识加入到行业问题建模和求解的计算过程中,使得 AI真正融入进业务流程,加速 AI 应用行业落地。
  • [赛事资讯] 金域医学携手华为云,等你来战 | 医检AI开发者大赛开始报名!
    自2015年国务院发布《新一代人工智能发展规划》提出要大力推广应用人工智能医疗新模式以来,医疗AI发展越来越受重视。通过人工智能技术集成与医检行业的融合应用,可以显著提高医检产业的智能化水平和国际竞争力。为更好满足医检AI的发展需求,打造面向全球的医检AI交流平台,在广州市科学技术局指导下,金域医学携手华为云举办首届“域见杯”医检人工智能开发者大赛。聚医检生态伙伴之力,共同探索生物医药技术与新一代信息技术融合创新的应用场景,让疾病诊断更加高效可及,推动医检乃至医疗行业向智慧医疗迈进。 6月8日大赛报名通道正式开启金域医学携手华为云两大行业领军企业强强携手搭建医检AI高手对决的舞台开创智慧医检新时代你准备好了吗?点击此链接立即报名哦~
  • [其他] 免费体验AI全流程开发
    在使用ModelArts完成AI全流程开发时,端到端过程中,提供免费规格,让您免费体验ModelArts的全流程开发。单击此处进入ModelArts管理控制台,参考如下操作指导体验免费规格的使用。使用场景在AI全流程开发过程中,分为如下几个步骤:数据管理:ModelArts数据管理功能目前免费开放,但是由于数据需存储在OBS中,存储的数据按OBS规则进行计费。算法开发或预置算法:ModelArts官方发布在AI Gallery的算法,均可免费使用。如果您自己在本地开发算法,则不涉及费用。模型训练:在创建训练作业时,可选择免费规格,完成模型训练。导入模型:ModelArts提供的模型导入及管理功能,不收费。部署上线:将导入的模型部署为在线服务时,可选择免费规格(CPU或GPU)的资源,将模型部署为服务。针对之前的ModelArts,如果您想端到端体验AI全流程开发,在“模型训练”和“部署上线”时,都需要付费体验。当前ModelArts提供免费规格后,整个AI开发过程,可端到端免费体验。注意:由于免费规格仅针对ModelArts服务,在使用过程中,需使用OBS存储数据或模型时,会根据OBS计费规则进行计费。免费规格声明(模型训练)免费规格用于使用体验,训练作业会在1小时后自动停止,因此建议设置最大训练时长为1小时。限时免费的规格,性能有限,如果您的数据量较大,或者训练时长会超过1小时,建议选择收费的计算规格用于模型训练。免费规格的资源是有限的,当使用人数较多时,会出现长时间的排队。如果希望获得更佳的体验,请选择付费规格。训练作业功能,仅提供了GPU类型的免费规格。同一个帐号只能在1个训练作业中使用免费规格。等训练作业结束后,其他训练作业可重新使用免费规格。“训练管理”中,只有“创建训练作业”功能支持使用免费规格,“可视化作业”暂时无法使用免费规格进行体验。仅在“华北-北京四”区域提供了免费规格,请注意您使用的区域。免费规格声明(部署上线)免费规格用于使用体验,部署的服务会在1小时后自动停止。如果您还需要使用免费规格继续运行,可重新启动服务,可再运行1小时,1小时后仍然会自动停止。72小时内没有再次启动,会释放资源,请注意文件备份。免费规格的资源是有限的,当使用人数较多时,会出现长时间的排队。如果希望获得更佳的体验,请选择付费规格。使用“部署上线”功能时,可用的免费规格有2种,1个免费CPU规格,1个免费GPU规格。但是两种规格不能同时在一个服务中使用。同一个帐号下,任意一种免费规格只能在1个服务中使用免费规格。如果一个部署上线已使用了一种免费规格,不管是运行中还是停止状态,其他部署上线任务都无法再使用这个免费规格。只有部署为“在线服务”时,支持使用免费规格。“批量服务”和“边缘服务”暂时无法使用免费规格进行体验。使用免费规格的服务,可以通过修改操作,将资源规格修改为收费的规格,也可以修改为另一种免费规格。但是已经在使用收费规格的服务,无法修改为免费规格。仅在“华北-北京四”区域提供了免费规格,请注意您使用的区域。免费体验AI全流程开发如下免费使用的教程,以使用预置算法创建训练作业为例,其他类型的训练作业,操作步骤类似,不再赘述。在开始使用如下端到端流程前,请参考准备工作,完成帐号注册、全局配置等操作。本文重点指导用户如何免费使用,如需自动学习详细操作步骤,可参见快速入门。登录ModelArts管理控制台。参考创建数据集(旧版),创建一个“图像分类”类型的数据集。同时,将需要进行标注的数据,上传至对应的OBS中。您可以使用花卉数据集样例完成体验。参考图像分类,将上传的数据全部完成标注。参考发布数据集,将标注好的数据集发布为可用版本。参考使用已有算法训练模型,上传一个可应用于图像分类的算法,如“ResNet_v1_50”算法,创建训练作业。在“规格”右侧的下拉框中,选择带有“限时免费”标识的规格,用于免费体验。然后单击“下一步”,根据界面提示完成训练作业的创建。选用免费规格时,其对应的计算节点个数,仅支持使用1个节点,无法修改。图2 选择限时免费的规格等待训练作业运行结束,当训练作业的状态变为“运行成功”时,表示模型训练完成。参考从训练中选择元模型,将训练后得到的模型导入ModelArts进行管理。参考部署为在线服务,将导入的模型部署为在线服务。在“计算节点规格”中,选择带有“免费规格”标识的规格,部署在线服务。图3 选择免费规格部署为在线服务在服务管理列表中,使用免费规格创建的服务,名称右侧带“免费”标识,等待服务部署完成,当状态变为“运行中”时,表示服务已部署完成。您可以单击服务名称进入服务详情页面,在“调用指南”查看服务的URL接口,或者进入“预测”页签,上传一张图片,进行预测识别。使用免费规格的服务,将在1个小时后自动停止,如果您还需要使用此服务,可在“在线服务”页面,单击“启动”,系统将使用之前选择的免费规格启动服务。图4 使用免费规格运行的服务
  • [干货汇总] 儿童节,和 AI 一起通关 “超级马里奥兄弟”
    >摘要:六一儿童节,快来训练一款自己的游戏 AI,用代码让马里奥从大反派酷霸王的魔掌里救回桃花公主。 本文分享自华为云社区《[儿童节,和 AI 一起通关 “超级马里奥兄弟”](https://bbs.huaweicloud.com/blogs/357378?utm_source=csdn&utm_medium=bbs-ex&utm_campaign=other&utm_content=content)》,作者:华为云社区精选。 在蘑菇王国,流传着这样一个故事: 某天,操纵着强力魔法的大乌龟酷霸王一族侵略了蘑菇们居住的和平王国。蘑菇一族都被酷霸王变成了岩石、砖块等形状,蘑菇王国即将灭亡。 只有蘑菇王国的桃花公主,才能解开魔法,让蘑菇们苏醒。 然而,她却被大魔王酷霸王所捉住。 为了打倒乌龟一族、救出桃花公主、给蘑菇王国带回和平,水管工马里奥决定站出来,向酷霸王发起挑战。 是的,这就是童年游戏《超级马里奥》的故事。 你是不是仍旧对马里奥这个游戏记忆犹新,是不是仍旧对过关焦头烂额,**六一儿童节,快来训练一款自己的游戏 AI,用代码让马里奥从大反派酷霸王的魔掌里救回桃花公主。** # 当 AI 玩起超级马里奥 基于华为云一站式AI开发平台ModelArts,利用强化学习中的 PPO 算法来玩超级马里奥,对于绝大部分关卡,训练出来的 AI 智能体都可以在 1500 个 episode 内学会过关。 ModelArts 是面向开发者的一站式 AI 平台,支持海量数据预处理及交互式智能标注、大规模分布式训练、自动化模型生成,及端 - 边 - 云模型按需部署能力,可以让 AI 应用开发到商用部署缩短为分钟级别。 就算不懂代码,也可以按照教程案例,通过简单的调参,一步步实现游戏 AI 开发,成为超级马里奥闯关王者。 话不多说,先来看看实际的效果: ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/2/1654130948865385270.png) 超级马里奥游戏 AI 的整体开发流程为:**创建马里奥环境 -> 构建 PPO 算法 -> 训练 -> 推理 -> 可视化效果,目前可以在AI Gallery上免费体验。** AI Gallery 是在 ModelArts 的基础上构建的开发者生态社区, 支持算法、模型、数据集、Notebook 案例和技术文章的共享。 下面,童年回忆杀走起。 # PPO 算法科普 因为这个游戏 AI 是基于 PPO 算法来训练的,所以先简单科普一下强化学习算法。PPO 算法有两种主要形式:PPO-Penalty 和 PPO-Clip (PPO2)。在这里,我们讨论 PPO-Clip(OpenAI 使用的主要形式)。 PPO 的主要特点如下: - PPO 属于 on-policy 算法 - PPO 同时适用于离散和连续的动作空间 - 损失函数 PPO-Clip 算法最精髓的地方就是加入了一项比例用以描绘新老策略的差异,通过超参数 ϵ 限制策略的更新步长: ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/2/1654131008940762157.png) - 更新策略: ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/2/1654131027784192021.png) - 探索策略 PPO 采用随机探索策略。 - 优势函数 表示在状态 s 下采取动作 a,相较于其他动作有多少优势,如果 > 0, 则当前动作比平均动作好,反之,则差 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/2/1654131041320134520.png) 算法主要流程大致如下: ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/2/1654131050336952994.png) 看起来有点复杂,不用担心,**即便你不懂这些算法,有了华为云 ModelArts,可以跟着下面的步骤轻松实现超级马里奥游戏 AI 的强化学习。** # 开发步骤 本案例运行环境为 Pytorch-1.0.0,且需使用 GPU 运行,开始之前一定要选择对应的硬件规格。在 ModelArts Jupyter 中,只要点击代码前面的箭头,就能自动运行。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/2/1654131071006400555.png) ## 1. 程序初始化 ### 第 1 步:安装基础依赖 ``` !pip install -U pip !pip install gym==0.19.0 !pip install tqdm==4.48.0 !pip install nes-py==8.1.0 !pip install gym-super-mario-bros==7.3.2 ``` ### 第 2 步:导入相关的库 ``` import os import shutil import subprocess as sp from collections import deque import numpy as np import torch import torch.nn as nn import torch.nn.functional as F import torch.multiprocessing as _mp from torch.distributions import Categorical import torch.multiprocessing as mp from nes_py.wrappers import JoypadSpace import gym_super_mario_bros from gym.spaces import Box from gym import Wrapper from gym_super_mario_bros.actions import SIMPLE_MOVEMENT, COMPLEX_MOVEMENT, RIGHT_ONLY import cv2 import matplotlib.pyplot as plt from IPython import display import moxing as mox ``` ## 2. 训练参数初始化 此处划重点,该部分参数可以自己调整,以训练出更好的效果。 ``` opt={ "world": 1, # 可选大关:1,2,3,4,5,6,7,8 "stage": 1, # 可选小关:1,2,3,4 "action_type": "simple", # 动作类别:"simple","right_only", "complex" 'lr': 1e-4, # 建议学习率:1e-3,1e-4, 1e-5,7e-5 'gamma': 0.9, # 奖励折扣 'tau': 1.0, # GAE参数 'beta': 0.01, # 熵系数 'epsilon': 0.2, # PPO的Clip系数 'batch_size': 16, # 经验回放的batch_size 'max_episode':10, # 最大训练局数 'num_epochs': 10, # 每条经验回放次数 "num_local_steps": 512, # 每局的最大步数 "num_processes": 8, # 训练进程数,一般等于训练机核心数 "save_interval": 5, # 每{}局保存一次模型 "log_path": "./log", # 日志保存路径 "saved_path": "./model", # 训练模型保存路径 "pretrain_model": True, # 是否加载预训练模型,目前只提供1-1关卡的预训练模型,其他需要从零开始训练 "episode":5 } ``` 如果你想选择其他关卡时,记得调整参数 world 和 stage ,这里默认的是第一关。 ## 3. 创建环境 **结束标志:** - 胜利:mario 到达本关终点 - 失败:mario 受到敌人的伤害、坠入悬崖或者时间用完 **奖励函数:** - 得分:收集金币、踩扁敌人、结束时夺旗 - 扣分:受到敌人伤害、掉落悬崖、结束时未夺旗 ``` #创建环境 def create_train_env(world, stage, actions, output_path=None): # 创建基础环境 env = gym_super_mario_bros.make("SuperMarioBros-{}-{}-v0".format(world, stage)) env = JoypadSpace(env, actions) # 对环境自定义 env = CustomReward(env, world, stage, monitor=None) env = CustomSkipFrame(env) return env # 对原始环境进行修改,以获得更好的训练效果 class CustomReward(Wrapper): def __init__(self, env=None, world=None, stage=None, monitor=None): super(CustomReward, self).__init__(env) self.observation_space = Box(low=0, high=255, shape=(1, 84, 84)) self.curr_score = 0 self.current_x = 40 self.world = world self.stage = stage if monitor: self.monitor = monitor else: self.monitor = None def step(self, action): state, reward, done, info = self.env.step(action) if self.monitor: self.monitor.record(state) state = process_frame(state) reward += (info["score"] - self.curr_score) / 40. self.curr_score = info["score"] if done: if info["flag_get"]: reward += 50 else: reward -= 50 if self.world == 7 and self.stage == 4: if (506 = info["x_pos"] = 832 and info["y_pos"] > 127) or ( 832 info["x_pos"] = 1064 and info["y_pos"] 80) or ( 1113 info["x_pos"] = 1464 and info["y_pos"] 191) or ( 1579 info["x_pos"] = 1943 and info["y_pos"] 191) or ( 1946 info["x_pos"] = 1964 and info["y_pos"] >= 191) or ( 1984 info["x_pos"] = 2060 and (info["y_pos"] >= 191 or info["y_pos"] 127)) or ( 2114 info["x_pos"] 2440 and info["y_pos"] 191) or info["x_pos"] self.current_x - 500: reward -= 50 done = True if self.world == 4 and self.stage == 4: if (info["x_pos"] = 1500 and info["y_pos"] 127) or ( 1588 = info["x_pos"] 2380 and info["y_pos"] >= 127): reward = -50 done = True self.current_x = info["x_pos"] return state, reward / 10., done, info def reset(self): self.curr_score = 0 self.current_x = 40 return process_frame(self.env.reset()) class MultipleEnvironments: def __init__(self, world, stage, action_type, num_envs, output_path=None): self.agent_conns, self.env_conns = zip(*[mp.Pipe() for _ in range(num_envs)]) if action_type == "right_only": actions = RIGHT_ONLY elif action_type == "simple": actions = SIMPLE_MOVEMENT else: actions = COMPLEX_MOVEMENT self.envs = [create_train_env(world, stage, actions, output_path=output_path) for _ in range(num_envs)] self.num_states = self.envs[0].observation_space.shape[0] self.num_actions = len(actions) for index in range(num_envs): process = mp.Process(target=self.run, args=(index,)) process.start() self.env_conns[index].close() def run(self, index): self.agent_conns[index].close() while True: request, action = self.env_conns[index].recv() if request == "step": self.env_conns[index].send(self.envs[index].step(action.item())) elif request == "reset": self.env_conns[index].send(self.envs[index].reset()) else: raise NotImplementedError def process_frame(frame): if frame is not None: frame = cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY) frame = cv2.resize(frame, (84, 84))[None, :, :] / 255. return frame else: return np.zeros((1, 84, 84)) class CustomSkipFrame(Wrapper): def __init__(self, env, skip=4): super(CustomSkipFrame, self).__init__(env) self.observation_space = Box(low=0, high=255, shape=(skip, 84, 84)) self.skip = skip self.states = np.zeros((skip, 84, 84), dtype=np.float32) def step(self, action): total_reward = 0 last_states = [] for i in range(self.skip): state, reward, done, info = self.env.step(action) total_reward += reward if i >= self.skip / 2: last_states.append(state) if done: self.reset() return self.states[None, :, :, :].astype(np.float32), total_reward, done, info max_state = np.max(np.concatenate(last_states, 0), 0) self.states[:-1] = self.states[1:] self.states[-1] = max_state return self.states[None, :, :, :].astype(np.float32), total_reward, done, info def reset(self): state = self.env.reset() self.states = np.concatenate([state for _ in range(self.skip)], 0) return self.states[None, :, :, :].astype(np.float32) ``` ## 4. 定义神经网络 神经网络结构包含四层卷积网络和一层全连接网络,提取的特征输入 critic 层和 actor 层,分别输出 value 值和动作概率分布。 ``` class Net(nn.Module): def __init__(self, num_inputs, num_actions): super(Net, self).__init__() self.conv1 = nn.Conv2d(num_inputs, 32, 3, stride=2, padding=1) self.conv2 = nn.Conv2d(32, 32, 3, stride=2, padding=1) self.conv3 = nn.Conv2d(32, 32, 3, stride=2, padding=1) self.conv4 = nn.Conv2d(32, 32, 3, stride=2, padding=1) self.linear = nn.Linear(32 * 6 * 6, 512) self.critic_linear = nn.Linear(512, 1) self.actor_linear = nn.Linear(512, num_actions) self._initialize_weights() def _initialize_weights(self): for module in self.modules(): if isinstance(module, nn.Conv2d) or isinstance(module, nn.Linear): nn.init.orthogonal_(module.weight, nn.init.calculate_gain('relu')) nn.init.constant_(module.bias, 0) def forward(self, x): x = F.relu(self.conv1(x)) x = F.relu(self.conv2(x)) x = F.relu(self.conv3(x)) x = F.relu(self.conv4(x)) x = self.linear(x.view(x.size(0), -1)) return self.actor_linear(x), self.critic_linear(x) ``` ## 5. 定义 PPO 算法 ``` def evaluation(opt, global_model, num_states, num_actions,curr_episode): print('start evalution !') torch.manual_seed(123) if opt['action_type'] == "right": actions = RIGHT_ONLY elif opt['action_type'] == "simple": actions = SIMPLE_MOVEMENT else: actions = COMPLEX_MOVEMENT env = create_train_env(opt['world'], opt['stage'], actions) local_model = Net(num_states, num_actions) if torch.cuda.is_available(): local_model.cuda() local_model.eval() state = torch.from_numpy(env.reset()) if torch.cuda.is_available(): state = state.cuda() plt.figure(figsize=(10,10)) img = plt.imshow(env.render(mode='rgb_array')) done=False local_model.load_state_dict(global_model.state_dict()) #加载网络参数\ while not done: if torch.cuda.is_available(): state = state.cuda() logits, value = local_model(state) policy = F.softmax(logits, dim=1) action = torch.argmax(policy).item() state, reward, done, info = env.step(action) state = torch.from_numpy(state) img.set_data(env.render(mode='rgb_array')) # just update the data display.display(plt.gcf()) display.clear_output(wait=True) if info["flag_get"]: print("flag getted in episode:{}!".format(curr_episode)) torch.save(local_model.state_dict(), "{}/ppo_super_mario_bros_{}_{}_{}".format(opt['saved_path'], opt['world'], opt['stage'],curr_episode)) opt.update({'episode':curr_episode}) env.close() return True return False def train(opt): #判断cuda是否可用 if torch.cuda.is_available(): torch.cuda.manual_seed(123) else: torch.manual_seed(123) if os.path.isdir(opt['log_path']): shutil.rmtree(opt['log_path']) os.makedirs(opt['log_path']) if not os.path.isdir(opt['saved_path']): os.makedirs(opt['saved_path']) mp = _mp.get_context("spawn") #创建环境 envs = MultipleEnvironments(opt['world'], opt['stage'], opt['action_type'], opt['num_processes']) #创建模型 model = Net(envs.num_states, envs.num_actions) if opt['pretrain_model']: print('加载预训练模型') if not os.path.exists("ppo_super_mario_bros_1_1_0"): mox.file.copy_parallel( "obs://modelarts-labs-bj4/course/modelarts/zjc_team/reinforcement_learning/ppo_mario/ppo_super_mario_bros_1_1_0", "ppo_super_mario_bros_1_1_0") if torch.cuda.is_available(): model.load_state_dict(torch.load("ppo_super_mario_bros_1_1_0")) model.cuda() else: model.load_state_dict(torch.load("ppo_super_mario_bros_1_1_0",torch.device('cpu'))) else: model.cuda() model.share_memory() optimizer = torch.optim.Adam(model.parameters(), lr=opt['lr']) #环境重置 [agent_conn.send(("reset", None)) for agent_conn in envs.agent_conns] #接收当前状态 curr_states = [agent_conn.recv() for agent_conn in envs.agent_conns] curr_states = torch.from_numpy(np.concatenate(curr_states, 0)) if torch.cuda.is_available(): curr_states = curr_states.cuda() curr_episode = 0 #在最大局数内训练 while curr_episode0 and curr_episode > 0: torch.save(model.state_dict(), "{}/ppo_super_mario_bros_{}_{}_{}".format(opt['saved_path'], opt['world'], opt['stage'], curr_episode)) curr_episode += 1 old_log_policies = [] actions = [] values = [] states = [] rewards = [] dones = [] #一局内最大步数 for _ in range(opt['num_local_steps']): states.append(curr_states) logits, value = model(curr_states) values.append(value.squeeze()) policy = F.softmax(logits, dim=1) old_m = Categorical(policy) action = old_m.sample() actions.append(action) old_log_policy = old_m.log_prob(action) old_log_policies.append(old_log_policy) #执行action if torch.cuda.is_available(): [agent_conn.send(("step", act)) for agent_conn, act in zip(envs.agent_conns, action.cpu())] else: [agent_conn.send(("step", act)) for agent_conn, act in zip(envs.agent_conns, action)] state, reward, done, info = zip(*[agent_conn.recv() for agent_conn in envs.agent_conns]) state = torch.from_numpy(np.concatenate(state, 0)) if torch.cuda.is_available(): state = state.cuda() reward = torch.cuda.FloatTensor(reward) done = torch.cuda.FloatTensor(done) else: reward = torch.FloatTensor(reward) done = torch.FloatTensor(done) rewards.append(reward) dones.append(done) curr_states = state _, next_value, = model(curr_states) next_value = next_value.squeeze() old_log_policies = torch.cat(old_log_policies).detach() actions = torch.cat(actions) values = torch.cat(values).detach() states = torch.cat(states) gae = 0 R = [] #gae计算 for value, reward, done in list(zip(values, rewards, dones))[::-1]: gae = gae * opt['gamma'] * opt['tau'] gae = gae + reward + opt['gamma'] * next_value.detach() * (1 - done) - value.detach() next_value = value R.append(gae + value) R = R[::-1] R = torch.cat(R).detach() advantages = R - values #策略更新 for i in range(opt['num_epochs']): indice = torch.randperm(opt['num_local_steps'] * opt['num_processes']) for j in range(opt['batch_size']): batch_indices = indice[ int(j * (opt['num_local_steps'] * opt['num_processes'] / opt['batch_size'])): int((j + 1) * ( opt['num_local_steps'] * opt['num_processes'] / opt['batch_size']))] logits, value = model(states[batch_indices]) new_policy = F.softmax(logits, dim=1) new_m = Categorical(new_policy) new_log_policy = new_m.log_prob(actions[batch_indices]) ratio = torch.exp(new_log_policy - old_log_policies[batch_indices]) actor_loss = -torch.mean(torch.min(ratio * advantages[batch_indices], torch.clamp(ratio, 1.0 - opt['epsilon'], 1.0 + opt['epsilon']) * advantages[ batch_indices])) critic_loss = F.smooth_l1_loss(R[batch_indices], value.squeeze()) entropy_loss = torch.mean(new_m.entropy()) #损失函数包含三个部分:actor损失,critic损失,和动作entropy损失 total_loss = actor_loss + critic_loss - opt['beta'] * entropy_loss optimizer.zero_grad() total_loss.backward() torch.nn.utils.clip_grad_norm_(model.parameters(), 0.5) optimizer.step() print("Episode: {}. Total loss: {}".format(curr_episode, total_loss)) finish=False for i in range(opt["num_processes"]): if info[i]["flag_get"]: finish=evaluation(opt, model,envs.num_states, envs.num_actions,curr_episode) if finish: break if finish: break ``` ## 6. 训练模型 训练 10 Episode,耗时约 5 分钟 ``` train(opt) ``` ## 7. 使用模型推理游戏 定义推理函数 ``` def infer(opt): if torch.cuda.is_available(): torch.cuda.manual_seed(123) else: torch.manual_seed(123) if opt['action_type'] == "right": actions = RIGHT_ONLY elif opt['action_type'] == "simple": actions = SIMPLE_MOVEMENT else: actions = COMPLEX_MOVEMENT env = create_train_env(opt['world'], opt['stage'], actions) model = Net(env.observation_space.shape[0], len(actions)) if torch.cuda.is_available(): model.load_state_dict(torch.load("{}/ppo_super_mario_bros_{}_{}_{}".format(opt['saved_path'],opt['world'], opt['stage'],opt['episode']))) model.cuda() else: model.load_state_dict(torch.load("{}/ppo_super_mario_bros_{}_{}_{}".format(opt['saved_path'], opt['world'], opt['stage'],opt['episode']), map_location=torch.device('cpu'))) model.eval() state = torch.from_numpy(env.reset()) plt.figure(figsize=(10,10)) img = plt.imshow(env.render(mode='rgb_array')) while True: if torch.cuda.is_available(): state = state.cuda() logits, value = model(state) policy = F.softmax(logits, dim=1) action = torch.argmax(policy).item() state, reward, done, info = env.step(action) state = torch.from_numpy(state) img.set_data(env.render(mode='rgb_array')) # just update the data display.display(plt.gcf()) display.clear_output(wait=True) if info["flag_get"]: print("World {} stage {} completed".format(opt['world'], opt['stage'])) break if done and info["flag_get"] is False: print('Game Failed') break infer(opt) World 1 stage 1 completed ``` ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/2/1654131275998974944.png) # 最后 六一儿童节,快来华为云 AI Gallery 上体验 AI 闯关超级马里奥,无需考虑计算资源,环境的搭建,在 ModelArts 里跟着运行代码,[点击链接](https://developer.huaweicloud.com/develop/aigallery/usecase/detail?id=3390253c-a00f-4c2a-92b6-08384ec31693)在ModelArts里运行简单几行代码,手把手带你5分钟速成游戏王。
  • [行业动态] 数博会拍了拍我们,恭喜获奖
    5月26日,2022中国国际大数据产业博览会(以下简称“数博会”)线上正式开幕。数博会是全球首个以大数据为主题的博览会,由国家发展和改革委员会、工业和信息化部、国家互联网信息办公室和贵州省人民政府共同主办,是助力全球大数据技术应用和产业发展的重要平台。大会开幕式上,华为高级副总裁、华为云CEO张平安发表主题演讲。聚焦大会主题“抢数字新机,享数字价值”,他在演讲中主张,发挥数据的集聚规模效应,以数智融合重塑数据价值,围绕“一切皆服务”帮助更多企业容易上云、方便上云、用好云:让数据资源在集聚中实现效益最优“东数西算”是把握数字经济发展机遇期、构建算力新格局的重要举措。为加快推动“东数西算”建设,全力打造“中国数谷”,华为云已在贵州布局全球总部和最大的云数据中心,持续发挥数据资源集聚的规模效应,提升资源使用效率。以“数智融合”重塑数据价值数字时代,数据是千行百业重要的生产要素和资产,目前数据的价值仍未充分得以利用,实现高效的数据治理、促进“数智融合”仍是业界难题。华为云着力打造“数智融合”云平台,打通数据治理生产线、AI开发生产线,构建统一的开发环境、统一的元数据管理、统一的存储,让数据开发效率由“周”级提升到“小时”级,大幅降低数据存储成本,让数据和AI开发进入现代化的生产阶段。一切皆服务,让千行百业真正用好云为帮助千行百业的客户容易上云、方便上云、用好云,华为云提出“一切皆服务”,把基础设施、技术以及经验云化、服务化。例如,不少企业缺乏专家和训练数据,未能有效地将AI能力与业务场景结合,因此难以快速开发出AI应用;为此华为云已将AI、大数据,音视频等核心技术云化,集成海量开发工具,让所有客户随取随用,高效开发。同时,华为云持续深耕政府、金融、工业等行业,将华为与伙伴、客户的合作创新以及数字化转型经验沉淀成为云服务,已陆续开放了50多个应用场景,提供超过2万个API服务,让更多企业就不必重复“造轮子”,通过云服务即获得全行业最优秀的数字化经验。本届数博会上,华为云还斩获了多项大奖,涵盖从数据库、数据湖、到数据和AI融合分析的技术创新,以及运用湖仓库AI技术支持的梦饷集团创新实践入选“十佳大数据案例”,充分证明了业界对华为云数据领域技术创新的认可:在数博会的重头戏——“数博发布”特色活动中,华为云GaussDB(for openGauss)分布式数据库斩获领先科技成果“新产品”奖。该奖项是数博会的最高奖项,同时也是唯一以大数据为主题的社会科技奖励,其专业性、权威性、引领性获业界一致认可。 华为云GaussDB(for openGauss) 基于华为主导的开放生态openGauss而打造,是主打政企核心业务负载的金融级分布式数据库旗舰产品。 例如,在工商银行核心交易系统分布式改造过程中,华为云GaussDB提供了完备的一站式数据迁移解决方案,实现高可用、性能线性扩展、弹性部署三大核心价值,助力客户数据库选型安心、迁移放心、管理省心,让核心交易系统可靠性得到了大幅度提升,持续满足未来长期业务发展需求。 华为云数智融合平台为企业在云上打造了统一的数据底座,把原本散落在各个部门和组织的数据统一汇聚到数据湖中,省去开发者关注各种底层的琐碎文件管理,以及大量、复杂的分析引擎、AI引擎和管理运维工作,支持开发者在集成的开发平台上,便捷地使用最新的算法模型挖掘各种数据的潜在价值。 例如,平台助力T3出行将多套集群架构优化至湖仓一体的存算分离架构,同时支撑数据分析的BI和数据智能的AI场景,不仅使TCO降低20%以上,更解决了出行场景下“长尾支付”系统更新慢的难题,数据处理效率提升150%。数智融合,让企业像管理代码一样管理数据,让机器学习的效率更高,提升乘客的安全体验。华为云FusionInsight MRS IoTDB聚焦工业物联网领域的工业复杂时序数据的处理,解决通用数据库在超大规模复杂时序场景的功能短板和性能瓶颈,形成跨越端、边、云的工业物联网大数据的利器。 目前,清华大学和华为云已开展合作,以Apache IoTDB开源组件为基础,持续探索新型的、基于开源社区的“产、学、研”合作模式,加快在华为云FusionInsight MRS云原生数据湖服务中完成IoTDB商用版本开发和集成,进一步完善MRS“三湖一集市”能力,为工业海量时序数据分析提供企业级的时序数据库。IoTDB相关技术已在交通、制造等众多工业级时序数据分析应用中落地。 作为“新电商”领域创新者,梦饷集团全面拥抱云、大数据、AI技术,与华为云合作数据创新,让200万“宝妈”不需要投入成本、无需复杂的数字技术背景,即可利用碎片时间进行数字圈层电商营销。以数据智能进行业务创新和社会价值创造,该案例也入选联合国可持续发展目标(SDGs)最佳案例。在数智融合实践中,梦饷集团实现了TCO下降30%,实时分析能力提升50%。其中,华为云DWS提供涵盖T+1批量分析、流式分析、小微实时分析、IoT分析、交互式分析以及复杂高维业务分析等;华为数仓技术提供了100PB级数据容量,以超大集群、混合负载的关键能力,保障多租户、高并发场景可为用户输出持续稳定的SLA,让梦饷集团轻松应对电商高并发业务挑战。基于超过10年的数据领域研发与投入,华为云以成熟的全生命周期数据治理能力,持续帮助电商、游戏、金融、保险、物流、零售等行业客户实现业务智能,释放企业数据价值。围绕“一切皆服务”,华为云面携手客户、合作伙伴和开发者持续创新,帮助千行百业的客户容易上云、方便上云、用好云。
  • [其他] Fire-YOLO:一种用于火灾检测的小目标检测方法
    文章来源于当交通遇上机器学习 ,作者CY1.文章信息论文链接:https://www.mdpi.com/2071-1050/14/9/4930/htm2.摘要针对森林火灾图像中小目标、类火目标和类烟目标的检测,以及不同自然光下的火灾检测,提出了一种改进的Fire-YOLO深度学习算法。Fire-YOLO检测模型从三维扩展了特征提取网络,增强了火灾小目标识别的特征传播,提高了网络性能,减少了模型参数。进一步,通过特征金字塔的提升,得到了性能最好的预测框。与最先进的目标检测网络相比,Fire-YOLO取得了优异的结果,尤其是在火灾和烟雾的小目标检测方面。总体而言,Fire-YOLO检测模型可以有效地处理小火源目标、类火和类烟目标的检测。当输入图像尺寸为416 × 416分辨率时,平均检测时间为0.04 s /帧,可以提供实时的森林火灾检测。此外,文章提出的算法也可以应用于其他复杂情况下的小目标检测。3.简介火灾探测对于保护森林资源、保护人民生命财产至关重要。近年来,随着火灾图像探测成为研究热点,图像探测具有探测时间早、精度高、系统安装灵活、能有效探测大空间复杂建筑结构火灾等优点。一类方法基于火灾发生时的颜色识别,但基于颜色的方法对亮度和阴影非常敏感。因此,这些方法产生的假警报数量很高。随着机器学习的发展,深度学习技术已广泛应用于检测。有学者提出了一种使用微调卷积神经网络(CNN)的早期火灾探测框架,但该模型具有较高的计算成本。有的学者使用深度融合CNN进行烟雾探测,它结合了注意机制、特征级和决策级融合模块。然而,仍有一些小目标未能实现。有的学者使用了一种基于区域的快速卷积神经网络(R-CNN),根据空间特征检测可疑火灾区域(SRoF)和非火灾区域。这可以通过减少错误探测成功地提高火灾探测精度,但探测速度相对较慢。有的学者提出了一种基于YOLO-V3和YOLO-V4的森林烟雾检测算法。与YOLO-V4相比,YOLO-V3的模型更小,更易于部署。在此基础上,文章选择了YOLO-V3模型作为整体算法,并对其进行了改进。提出了对YOLO-V3算法的改进。网络中加入了空心卷积和DenseNet,提高了火灾早期小规模火焰的探测效果。然而,方法存在火焰定位不准确和屏蔽性能差的问题。I-YOLOv3-tiny模型通过网络结构优化、多尺度融合和K-均值聚类来提高检测精度,但检测速度有待提高。通过提高特征图的分辨率,它减少了火灾探测中的误差,但由于计算量的增加,相应的处理时间也增加了。将分类模型和目标检测模型结合用于火灾探测的方法降低了计算成本,提高了探测精度。尽管如此,它不适用于火灾早期小目标的探测场景。有的学者通过将原始网络结构中的两步降采样卷积网络替换为图像双分割和双线性上采样网络,扩大了小目标的特征,提高了小目标的检测精度。虽然这会增加参数的数量,但计算成本也会增加。对于具有实时性要求的火灾探测,仍需进一步改进。这些问题给火灾场景中小目标的检测带来了巨大的挑战。4.模型A. YOLO-V3YOLO- v3是由YOLO和YOLOV2网络演化而来的对象检测模型。与Faster R-CNN相比,YOLO- v3是单级检测算法,这意味着YOLO网络不需要Regional Proposal network (RPN),而是直接检测图像中的目标。这样既考虑了检测速度和检测精度,又减小了模型参数的尺寸。YOLO-V3对每个类别独立使用逻辑回归,取代了DarkENT-19到DarkENT-53的特征提取网络。YOLO-V3几乎与其他目标检测算法一样精确,但速度至少是后者的两倍。YOLO-V3的特征提取网络为Darknet-53。Darknet-53通过不断地使用卷积、标准化、池化等操作,提取输入到YOLO-V3网络的火灾图像的特征,并通过卷积不断地对火灾图像进行特征提取。这种方法广泛应用于其他各种网络模型中,ResNet也通过增加网络的深度来提高网络的精度。虽然可以同时缩放两个或三个维度,但由于深度和宽度之间有一定的关系,需要进行复杂的手动调整,也就是说只能调整深度和宽度才能达到更好的精度。目前,YOLO-V3模型在火灾探测中并未得到广泛应用。B.Fire-YOLOFire-YOLO是一种单阶段检测模型。FireYOLO用于火灾探测的步骤如下所示。首先,网络输入火灾图像分为S×S网格,和检测在每个探测单元格:是否有火焰或者烟雾的中心目标是发现落在S2的网格,网格负责检测目标被检测出来。然后,每个网格预测3个边界框,并给出这些边界框的置信度。置信计算的定义如下。当目标落在网格中时Pγ = 1,否则Pγ = 0。IoU表示预测边界框与真实边界框的重合。置信度反映了网格中是否存在对象以及包含对象时预测边界框的准确性。当多个包围盒同时检测到同一目标时,YOLO网络将使用非最大抑制(Non-Maximum Suppression, NMS)方法选择最佳包围盒。利用卷积神经网络对视频中的火情和烟雾进行分类来检测火情,具有良好的准确率。文章提出的Fire-YOLO模型从深度、宽度和分辨率三个维度考虑,实现了更加均衡的网络架构。Fire-YOLO火灾探测步骤如下图所示。将输入图像划分为S×S网格,每个网格预测三个边界框和置信度分数。然后,使用非最大值抑制方法选择最佳边界框。Effentnet的提出为设计一种标准化的卷积神经网络尺度方法提供了可能。通过平衡网络深度、宽度和分辨率这三个维度,可以在深度、宽度和分辨率这三个维度上实现更均衡的网络架构,而无需复杂的人工调整。由于火灾数据集中大量的检测对象为小火焰和烟雾,这种简单高效的复合尺度变换方法相对于其他的一维尺度变换方法可以进一步提高火灾的检测精度,并能充分节约计算资源。最终,文章使用的改进后的Effentnet比精度相同的卷积神经网络速度更快,参数更少,模型更小,具有明显的优势。提出的Fire-YOLO火灾探测模型网络结构如下图所示。与YOLO-V3中特征提取网络Darknet53中使用的残块不同,Fire-YOLO的特征提取网络使用了一个移动倒瓶颈卷积(MBConv),该卷积由深度卷积和挤压-激活网络(SENet)组成。MBConv块的结构,最重要的是,一个1×1卷积内核用于增加图像的维数,接下来通过切除卷积和SENet反过来,最后用1×1卷积内核来减少图像的维数输出。输入图像经过特征提取网络并上采样后,得到对应的特征图,即图像对应的向量特征矩阵。为了获得小目标的高层特征信息,特征图将经过卷积集处理,卷积集由5个卷积层组成,卷积核交替为1 × 1和3 × 3。然后利用池化层将高维向量扁平化为一维向量,由激活函数进行处理。将这些向量输入到激活函数中,得到相应的分类结果,并选择最有可能的结果作为特征提取网络输出。针对Darknet-53特征提取网络在深度、宽度和分辨率三个维度平衡方面的性能缺陷,文章在文章提出的fire数据集上使用改进的Effecentnet特征提取网络,弥补了Darknet-53在小目标检测方面的性能不足,提高了小目标检测的特征提取能力。对于输入的小目标图像,增强了小目标特征的学习能力,提高了小目标特征提取网络的性能。为了更好地处理小目标图像,Fire-YOLO模型首先将输入图像缩放到416 × 416像素,然后使用Effecentnet从图像中提取特征。经过多层的深度可分卷积、全局平均池化、特征压缩和特征扩展,对深度可分卷积学习到的特征映射进行上采样。通过特征金字塔处理得到不同尺度的预测框。文章提出的Fire-YOLO模型预测了13 × 13、26 × 26、52 × 52三种不同尺度的边界盒。用于小目标检测的深度可分离卷积结合了逐条通道卷积和逐级点卷积两种级别,提取不同粒度的小目标特征。深度可分卷积的结构如下图所示。通过比较YOLO-V3中使用的Darknet-53特征提取网络、快速R-CNN中使用的RPN目标建议网络和Fire YOLO中使用的深度可分离卷积,发现深度可分离卷积在计算复杂度方面具有优异的性能。这种卷积结构加快了模型的训练速度,提高了模型的检测精度。在火灾探测模型的实际应用中,可以加快网络的处理速度,如果计算量较小,可以达到实时图像处理的目的,从而实现火灾危险的实时探测。同时,该模型的硬件要求也降低了,以便于部署。SENet主要由两个阶段组成。第一个阶段是挤压阶段。第二个阶段是激发阶段。在获得挤压的矢量后,使用完全连接的层,并预测每个通道的重要性。随后,将其应用于与初始特征映射相对应的信道,以便小目标的特征信息将被赋予更高的优先级。SENet的结构如下图所示。在深度学习网络模型中,激活函数是一个连续可导的非线性函数,可以拟合非线性关系。激活函数及其导数的形式比较简单,可以加快网络的学习速度。正确使用激活函数对模型的训练和模型对目标预测的准确性都具有重要意义。活化函数的导数不宜过大或过小,最好稳定在1左右。文章提出的模型使用了Swish激活函数,其表达式为:其中β是常数或可训练参数。Swish具有无上界、无下界、光滑、非单调的特点。Swish在深度模式上比ReLU要好。乙状结肠的饱和函数很容易导致梯度的消失,借鉴ReLU的影响,当它是非常大的,它将方法,但当x→∞,函数的一般趋势比ReLU ReLU相似但更复杂。Swish函数可以看作是一个介于线性函数和ReLU函数之间的平滑函数。C. 性能指标文章利用训练后的Fire-YOLO模型对测试图像进行一系列实验,验证算法的性能。评价神经网络模型有效性的相关指标有:precision, recall, F1, AP值。在二元分类问题中,根据真类别和预测类别的组合,样本可分为四种类型:真阳性(TP)、假阳性(FP)、真阴性(TN)和假阴性(FN)。分类结果的混淆矩阵如下表所示。其余指标的公式根据混淆矩阵计算如下:5.实验分析本节介绍训练网络的实验环境、数据集、模型效果评价指标以及实验结果分析。通过一系列不同模型的对比实验,分析了文章提出的新模型的优越性。实验过程中使用了火数据集和小目标数据集。通过fire数据集对目标检测网络的准确性进行了验证和评估,在不同光照条件、类火烟雾目标等复杂环境下具有良好的检测效果;在小目标火力数据集上验证了该检测方法。结果证实,Fire-YOLO更容易检测到较小的目标。Fire-YOLO检测模型接收416 × 416像素图像作为输入,由于GPU性能限制,批处理大小设为8,每个模型训练100 epoch,初始学习速率为10−3,50 epoch后除以10。A. 数据采集实验中使用的数据集是通过采集消防公益平台上的消防图片来构建的。将fire数据集和小目标数据集分别划分为训练集、验证集和测试集,以便在相同的实验设置下对不同的模型进行训练。第一个数据集为火焰数据集,文章使用的图像数据是公共网站上收集的火灾和烟雾图像。这19819张原始图像包括不同天气和光线线下的火焰和烟雾。在对以上数据集图像进行编号后,使用LabelImg工具进行手动标记,包括绘制边框和分类类别。考虑到标签与数据的对应关系,为保证数据集分布均匀,将数据集按70%、20%、10%的比例随机分为训练集、验证集和测试集。为了保证实验环境相同,最终数据集以PASCAL VOC数据集格式存储。为了防止神经网络中过拟合,对于像素区域不清晰的阳性样本不进行标记。完成的数据集如下表所示。第二个数据集为小目标检测数据集,文章自制了370张图像的数据集。数据集的内容都是包含小目标的火焰和烟雾。通过将250 × 250像素的火焰图像嵌入到1850 × 1850像素的图像中,可以使被探测目标在图像中的面积非常小。最后使用LabelImg工具手工标注小目标。B. 算法的比较分析为了验证模型的性能,文章使用火焰和烟雾图像作为训练集。将所提出的模型与YOLO-V3和Faster R-CNN检测方法进行了比较。三种模型在试验过程中的P-R曲线如图5所示。准确率、召回率、F1评分和mAP值如下表所示。基于以上结果,文章提出的Fire-YOLO在检测性能上优于YOLO-V3和Faster R-CNN。Fire-YOLO模型的精度为0.915,F1的值为0.73,mAP的值为0.802,高于其他两个模型,体现了该模型的优越性。同时Fire-YOLO降低了计算成本,节约了资源,更有利于社会的可持续发展。C. 小目标的检测性能在火灾探测过程中,由于摄像机离火源太远,实际的火源位置在捕获的图像中只占很小的区域,这将导致网络模型对火焰和烟雾的探测非常差。通过比较三种不同的目标检测模型在小目标火灾数据集上的准确率、召回率和mAP,可以得出文章提出的Fire-YOLO模型对非常小的目标对象的检测效率优于Faster R-CNN和未改进的YOLO-V3网络。训练于射击小目标数据集的Fire-YOLO对待检测小目标图像在深度、宽度和分辨率三个维度上进行自适应调整,增强了信息之间的交互作用。从而增强了Fire-YOLO提取小目标特征的能力,提高了小目标物体的检测精度。下表给出了三种模型方法对小目标射击数据集评价指标的具体结果。三种不同模型对小目标火力数据集的检测效率差异较大。文章提出的Fire-YOLO模型的准确率和召回率比其他模型更显著。准确率可达75.48%,可实现对小目标的检测。森林火灾的早期及时发现可以大大减少对生态环境的破坏,减少火灾造成的经济损失,促进生态环境的可持续发展。训练后Fire-YOLO网络模型具有良好的火力目标探测效率。文章使用Fire-YOLO模型来检测非常小的火力目标,并将检测结果图形化显示。较小的射击目标是小目标射击数据集中验证数据集中的所有图像。对Fire-YOLO进行了30多个验证插图的验证,最终的图像检测结果如下图所示。Fire-YOLO可以检测到图片中所有的火和烟,而YOLO-V3和Faster R-CNN在检测结果中只能检测到图像中的部分目标。D. 类火和类烟目标的探测性能通过对比模型对丰富的类火和类烟图像的检测性能,可以发现Fire-YOLO对类火和类烟目标具有更好的检测效率。除了Fire-YOLO,其他模型分别将图像中的光和云误判为火和烟。显然,Fire-YOLO对图像纹理特征更加敏感,这是由于在特征提取网络中结合了1 × 1卷积核和SE模块。最后,提高了该模型在探测混淆目标时的鲁棒性。三种模型的类火和类烟检测结果如下图所示。在上述情况下,Fire-YOLO模型大大减少了误检的发生,减少了劳动力消耗,节约了社会资源。E. 模型在不同自然光下的检测性能本节通过对比不同自然光照条件下的多幅火灾图像,测试Fire-YOLO在真实环境中的性能。在实际火灾探测现场,会出现光线不足或光线很强的情况。在这种场景下,会对火灾探测产生一定的影响。使用大尺度feature map对模型进行改进,识别小目标对象,但在弱光条件下存在误判。检测结果如下图所示。通过比较FasterR-CNN、YOLO-V3和Fire-YOLO模型的检测性能,结果表明该模型在不同光照条件下具有良好的性能,对光照变化具有较强的鲁棒性。Fire-YOLO模式的这些优势可以减少火灾对森林的危害,减少温室效应对人类的影响,促进可持续发展文章提出的Fire- YOLO模型在小目标、类火、类烟探测以及不同明度下的火灾探测等方面都取得了令人满意的效果。在实际应用中,该方法不仅具有实时性,而且具有良好的鲁棒性。然而文章检测算法仍然存在检测精度低、检测半遮挡目标具有挑战性的问题。这可能是由于在实际环境中探测火焰时,火灾的可变性和火灾蔓延的复杂性,造成了火灾检查的困境,如下图所示。.
  • [其他] 从训练中选择元模型
    在ModelArts中创建训练作业,并完成模型训练,在得到满意的模型后,可以将训练后得到的模型导入至模型管理,方便统一管理,同时支持将模型快速部署上线为服务。背景信息如果使用ModelArts训练作业生成的模型,请确保训练作业已运行成功,且模型已存储至对应OBS目录下。针对使用订阅算法的训练作业,无需推理代码和配置文件,其生成的模型可直接导入ModelArts。针对使用常用框架或自定义镜像创建的训练作业,需根据模型包规范介绍,将推理代码和配置文件上传至模型的存储目录中。确保您使用的OBS目录与ModelArts在同一区域。创建AI应用操作步骤登录ModelArts管理控制台,在左侧导航栏中选择“AI应用管理 > AI应用”,进入AI应用列表页面。单击左上角的“创建”,进入“创建AI应用”页面。在“创建AI应用”页面,填写相关参数。写元模型来源及其相关参数。当“元模型来源”选择“从训练中选择”时,其相关的参数配置如下确认信息填写无误,单击“立即创建”,完成AI应用的创建。在AI应用列表中,您可以查看刚创建的AI应用及其对应的版本。当AI应用状态变更为“正常”时,表示AI应用导入成功。在此页面,您还可以创建新版本、快速部署服务、发布AI应用等操作。后续操作部署服务:在“AI应用列表”中,单击AI应用名称左侧的小三角,打开此AI应用下的所有版本。在对应版本所在行,单击“操作”列的“部署”,在下拉框中选择部署类型,可以将AI应用部署上线为创建AI应用时所选择的部署类型。
  • [其他] ModelArts之AI应用管理简介
    AI开发和调优往往需要大量的迭代和调试,数据集、训练代码或参数的变化都可能会影响模型的质量,如不能统一管理开发流程元数据,可能会出现无法重现最优模型的现象。ModelArtsAI应用管理可导入所有训练生成的元模型,可对所有迭代和调试的AI应用进行统一管理。使用限制和说明自动学习项目中,在完成模型部署后,其生成的模型也将自动上传至AI应用管理列表中。但是自动学习生成的AI应用无法下载,只能用于部署上线。创建AI应用、管理AI应用版本、模型转换等功能目前是免费开放给所有用户,使用此功能不会产生费用。创建AI应用的几种场景从训练中选择:在ModelArts中创建训练作业,并完成模型训练,在得到满意的模型后,可以将训练后得到的模型创建为AI应用,用于部署服务。从模板中选择:相同功能的模型配置信息重复率高,将相同功能的配置整合成一个通用的模板,通过使用该模板,可以方便快捷的导入模型,创建为AI应用,而不用编写config.json配置文件。从容器镜像中选择:针对ModelArts目前不支持的AI引擎,可以通过自定义镜像的方式将编写的模型镜像导入ModelArts,创建为AI应用,用于部署服务。从OBS中选择:如果您使用常用框架在本地完成模型开发和训练,可以将模型导入至ModelArts中,创建为AI应用,直接用于部署服务。AI应用管理的功能描述
  • [体验官] 5分钟玩转AI语音合成
    实验准备:华为云账号(已实名认证),如没有账号信息,请先先注册华为云账号信息,参考实名认证介绍_帐号中心_用户指南_实名认证_华为云 (huaweicloud.com)电脑Chrome浏览器实验过程:点击API Explorer_开发者社区-华为云 (huaweicloud.com),进入API Explorer页面,选择【语音交互服务--语音合成接口--RunTts】在Body体的text输入想要转换的内容,再点击调试按钮。(注意红色*为必填项)调试成功后,会提示提示成功或者失败。失败的话,请仔细查看对应的错误码信息,按照下方链接,找到对应的解决方法错误码_语音交互服务 SIS_API参考_附录_华为云 (huaweicloud.com)在成功界面,复制响应体内容,再打开华为云内置的CloudIDE,体验项目。(若未开通CloudIDE,进入CloudIDE_集成开发环境_WebIDE_华为云 (huaweicloud.com)点击【立即体验】免费开通即可)双击json文件,将上一步复制的响应体内容粘贴进去点击运行温馨提示:刚才复制的响应体内容,建议先下载,在赋值。小编刚通过自带的复制按钮,复制的不全,导致JSON格式异常,运行报错。运行成功后,返回到Explorer下,选择mp3文件,右键,选择download。在电脑中找到刚下载的文件,打开,就能听到转换后的语音内容了。实验过程到此结束,赶快体验吧,5分钟真的可以实现文本到语音的转换,转换后还是个美女小姐姐的声音哦。
  • [获奖公告] 【华为云·微话题(第52期)】 不负光阴“粽”享AI,体验AI语音祈福送多重好礼~
    端午至,粽子香佳节到,祈福愿送上一份有“声”的祝福 敢于开口,方能出“粽”文字转语音,MP3文件上传到回帖,再配上您的体验感受即可具体方法可查看体验API Explore,花样玩转AI语音合成接口期望看到大家精彩的评论:1、体验过程中有哪些优化建议2、还能在哪些场景中使用AI语音合成接口3、期待华为云开发其他哪些接口?【本期微话题】AI语音佳节祈福【活动时间】22年5月28日~22年6月10日【参与方式】1、直接回复本帖,就微话题题目进行回答讨论2、为你觉得优质回复的楼层点赞或发表评论【本期奖品】优质回复奖:奖品抽取数量有效回复楼层数需达到华为三脚架自拍杆无线Pro版(黑色)120华为智选欧普读写台灯 白色140幸运回复奖:奖品抽取数量有效回复楼层数需达到华为云定制雨伞220华为云定制笔记本套装340【活动规则】1、开发者用户回复的内容,必须与本期的微话题相关,回复其他内容均视为无效内容,否则取消该用户获奖资格2、开发者用户回复内容的字数需≥100字,禁止复制其他楼层内容或改编自其它楼层内容(包括本人发布在其他楼层的内容),如经发现,取消该用户获奖资格3、本次活动不限用户的总回复数及连续回复数,但需保证回复质量,如华为云社区小编认定参与用户有恶意刷楼嫌疑,则取消该用户获奖资格 【评奖方式】1、在本帖所有有效回复的用户中抽取若干名幸运开发者获得幸运回复奖,奖品及数量见上方示例。2、在所有参加回复的用户中,根据其回复质量及被回复的数量,综合评选优秀奖,奖品见上方示例。3、本次活动将根据实际参与情况发放奖励,包括但不限于用户百分之百中奖或奖项轮空的情况。4、每期活动预计于结束后三天内完成奖项公示,并于结束后15个工作日内完成邮寄。 【温馨提示】1、请务必使用个人实名账号参与活动(IAM、企业账号等账号参与无效)。如一个实名认证对应多个账号,只有一个账号可领取奖励,若同一账号填写多个不同收件人或不同账号填写同一收件人,均不予发放奖励。2、所有获得奖品的获奖用户,请于获奖后3日内完成实名认证,否则视为放弃奖励。
总条数:7896 到第 页
上滑加载中