• [技术干货] Al Gallery 数据集系列合集,助你从0到1成为 AI 开发达人!
    Al Gallery——华为云 AI 知识 & 实训社区<<点此直达>>,助你从0到1成为 AI 开发达人!以下是为AI开发达人提供的丰富多样的数据集,AI开发训练的原材料。数据集名称数据简介数据标注类型适用算法8类常见生活垃圾图片数据集本数据集包含8类生活垃圾图片,分别为:厨余垃圾蛋壳、厨余垃圾水果果皮、可回收物塑料玩具、可回收物纸板箱、其他垃圾烟蒂、其他垃圾一次性餐盒、有害垃圾干电池、有害垃圾过期药物,每类图片100张。图像分类图像分类ResNet50-EI-Backbone图像分类-ResNeSt图像分类-ResNet_v1_50图像分类-Inception_v3图像分类-Inception_Resnet_V2图像分类-Res2Net_50图像分类-MobileNet_v2四类花卉图像分类小数据集本数据集包含4种类别的花卉图片,分别为:雏菊、向日葵、玫瑰、蒲公英,每类图片10张,图片总数40张。图像分类二分类猫狗图片分类小数据集本数据集包含两种类别的图片:猫和狗。图像分类23类美食图片分类数据集本数据集包含23种类别的美食图片,分别为:八宝玫瑰镜糕,凉皮,鱼,/德懋恭水晶饼,搅团,枸杞炖银耳,柿子饼,浆水面,灌汤包,烧肘子,石子饼,神仙粉,粉汤羊血,羊肉泡馍,肉夹馍,荞面饸饹,菠菜面,蜂蜜凉粽子,蜜饯张口酥饺,西安油茶,贵妃鸡翅,醪糟,金线油塔。图像分类10类常见美食图片数据集本数据集包含10种美食图片,分别为:冰激凌、鸡蛋布丁、烤冷面、芒果班戟、三明治、松鼠鱼、甜甜圈、土豆泥、小米粥、玉米饼,每类图片500张。图像分类四类美食图片分类小数据集本数据集包含4种类别的美食图片,分别为:柿子饼、肉夹馍、凉皮、灌汤包,每类图片10张,图片总数40张。图像分类花卉识别数据集数据集中包含了3669张花卉图片及其标注信息,包括daisy、dandelion、roses、sunflowers、tulip五种类型花卉。图像分类花卉识别口罩检测数据集本数据集包含291张口罩检测的图片。物体检测物体检测YOLOv3_ResNet18物体检测-FasterRCNN_ResNet50物体检测-RetinaNet_ResNet50钢筋检测数据集本数据集包含250张钢筋检测的图片。物体检测物体检测YOLOv3_Darknet53物体检测-SSD_VGG物体检测-物体检测-SSD-MobileNet- v1 PPN物体检测-RetinaNet_ResNet50数据集名称数据简介所属大赛汽车零部件表面缺陷识别数据集2021数字化转型创新应用大赛·创客赛道竞赛复赛数据集“华为云-东吴杯”2021数字化转型创新应用大赛·创客赛道2021数字化转型创新应用大赛·创客赛道竞赛初赛数据集开学季!“互联网+”AI创新实践赛数据集数据总共包含从2600位被试中基于若干脑图谱提取出的灰质体积 (Grey Matter Volume, GMV)和平均皮层厚度 (Cortical Thickness, CT)。被试标签分为AD(Alzheimer Disease)、MCI(Mild Cognitive Impairment)、NC (Normal Control)。使用的脑图谱包括但不限于AAL、Gordon、MIST、Schaefer。说明文件中包含了被试的基本信息,包括年龄、性别、标签以及预处理时的图像信息(分辨率、全脑体积等)。开学季!“互联网+”AI创新实践赛爱(AI)美食--10类常见美食图片数据集该数据集为华为云AI大赛入门赛《爱(AI)美食·美食图片分类》竞赛数据集。该数据集包含10种美食图片,分别为:冰激凌、鸡蛋布丁、烤冷面、芒果班戟、三明治、松鼠鱼、甜甜圈、土豆泥、小米粥、玉米饼,每类图片500张。爱(AI)美食·美食图片分类2020无人车挑战杯竞赛数据集该数据集为《2020第二届华为云人工智能大赛 · 无人车挑战杯》竞赛数据集(海选赛)。该数据集包含了红灯、绿灯、黄灯、人行横道、限速标志、解除限速标志六种类型图片,图片未经过标注,使用前需使用ModelArts数据标注模块完成数据的标注,然后再使用标注后的数据集训练目标检测模型。2020第二届华为云人工智能大赛 · 无人车挑战杯红绿灯、斑马线、限速、解限速数据集本数据集为无人车挑战杯大赛供参赛选手使用的训练集,包含红灯、绿灯、黄灯、人行横道、限速标志、解除限速标志六种类型图片。华为云人工智能大赛 · 无人车挑战杯化合物-蛋白质相互作用(CPI)识别数据集“华为云杯”2021人工智能应用创新大赛·创客赛道竞赛数据集“华为云杯”2021人工智能应用创新大赛·创客赛道竞赛西安旅游主题图片数据集该数据集为《“华为云杯”2019人工智能创新应用大赛》竞赛数据集(初赛)。数据集包含了西安热门景点、美食、特产、民俗、工艺品五大类图片。“华为云杯”2019人工智能创新应用大赛街景图像语义分割数据集该数据集为《华为云杯“云上先锋”·AI挑战赛》竞赛数据集,数据集为城市街景图像,包含路面、人、车辆、建筑、交通标志、植物、天空等物体。华为云杯“云上先锋”·AI挑战赛交通流量预测数据集本数据集为深圳开放数据应用创新大赛数据分析赛·交通流量预测竞赛数据集深圳开放数据应用创新大赛数据分析赛·交通流量预测遥感卫星影像数据集该数据集为“华为云杯”2020人工智能创新应用大赛数据集。赛题任务:基于高分辨可见光遥感卫星影像,提取复杂场景的道路与街道网络信息,将影像的逐个像素进行前、背景分割,检测所有道路像素的对应区域。“华为云杯”2020人工智能创新应用大赛
  • [技术干货] 杭电AI“王炸班”:考研3人清北8人浙大,一大四学生年薪已过百万【转载】
    近日,杭州电子科技大学出了“王炸班”的消息冲上热搜,相关话题#杭电一学生还没毕业年薪已过百万#、 #学霸班六成考研上岸3清北8浙大#的阅读量突破了一亿。据杭州电子科技大学官方公众号介绍,这个学霸“王炸班”的56名学生中,有34个人考研上岸。其中17人考上985高校,8名浙大、2名清华、1名北大。另外,就业的学生人均起薪30万+,有4人进了华为,2人进了腾讯,5人进了海康。56个学生共获得省级以上各类学科竞赛奖励146个。学霸云集,在不同领域发光发热据“王炸班”辅导员宋晓宇介绍,杭电人工智能学院智能科学与技术专业在2018年首次招生,今年是第一届毕业生。“这个专业是多学科融合的,所以考研的时候有人考进了计算机,有人考到了自动化,也有人考到了人工智能的相关方向。他们以优秀带优秀,人人皆有导师、人人参加竞赛、人人有项目,共同铸就了我们这个王炸班。”考入浙大计算机技术专业的陈廷轩说,“我们班太卷了,有的同学参加ACM(国际大学生程序设计)竞赛拿奖,有人发表了好几篇SCI论文。像其他班级能拿一等奖学金的成绩,在我们班连三等奖学金都拿不到。”考入清华大学控制科学与工程专业的方政说,他在班里并不是很厉害。因为班里一个同学在大二就加入了腾讯,现在还没毕业就已经带了十几个人的团队,年薪都已经过百万了。另一位考入北大人工智能专业的石佳玥则“谦虚”地说,自己在班里的排名都在后50%,考上北大还是比较幸运的。但实际上,石佳玥在北大的初试和复试中都考了第一。这就是顶级凡尔赛吧!规划清晰,为打ACM放弃985、211要问这个“王炸班”的学霸们最佩服谁,大家一致认为就是大二就加入腾讯的崔倍宁。崔倍宁从小就是“别人家的孩子”。小学主动要求报3个奥数班,初中数学成绩一马当先,高中从零开始学习信息学,在全国信息学奥林匹克竞赛中斩获铜奖。准备竞赛用了2年,所以高中课程实际只上了一年。最终这个奖项给他带来了1所985高校降60分录取和1所211高校上一本线即录取的政策待遇,但崔倍宁选择放弃“优惠”,裸分考进了杭电。对于这一选择,崔倍宁表示,其实自己的理想一直是交大,因为交大曾代表中国拿过3次ACM全球冠军,每次都让热爱编程的自己热血沸腾。但因为自己的文化课成绩不够,上不了交大,所以他首选了搞ACM的氛围和实力也很优秀的杭电。在填报好志愿后,崔倍宁第一时间就联系了杭电ACM队伍的教练,录取消息一下来就被编入了杭电ACM队伍。经过训练,崔倍宁在大一时就和队友们拿到了两块ACM金牌。在大二春招时,崔倍宁顺利拿到了腾讯、字节跳动、图森未来和阿里巴巴的实习offer。他与这4家企业分别谈好了入职时间和工作期限,希望通过实习过程感受企业文化,用丰富的实习经历来完善自己的职业规划。目前正在读大四的崔倍宁,在某大厂里带着十几个人的研发团队,年薪已过百万。原文链接:https://blog.csdn.net/csdnsevenn/article/details/124047141
  • [其他] 经过训练的AI能不能学会品酒呢
    说到训练,经过训练的AI能不能学会品酒呢? 2月1日发表在《IEEE传感器杂志》(IEEE Sensors Journal)上的一项研究描述了一种新型电子鼻,它在分析威士忌时出人意料地准确,而且只需“闻”一下,就能以95%以上的准确率识别威士忌的品牌。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20224/8/1649408196428335763.png) 论文链接:https://ieeexplore.ieee.org/document/9701291 AI品酒,准确率堪比专业仪器 这项研究是由中国和澳大利亚的学者合作完成的,当然,做这项研究也不是为了在酒局中显摆,而是实实在在为了打击假酒。 威士忌是全球最受欢迎的酒精饮料之一,预计2018年国际市场规模为579.6亿美元,到2025年预计价值为896亿美元。 由于这个巨大的市场规模,威士忌市场也存在非常多的造假。 研究人员开发这款电子鼻,目的就是为了区分正品的威士忌和非法的、贴假标签的或掺假的威士忌。 这款电子鼻名为Nos.e,里面有一小瓶威士忌样品。威士忌的气味被注入到一个气体传感器室中,气体传感器检测各种气味并将数据发送给计算机进行分析。然后,**通过机器学习算法提取和分析最重要的气味特征**,以识别威士忌的品牌、地区和风格。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20224/8/1649408225583117686.png) 在他们的研究中,研究人员对Nos.e进行了测试,用它来分析六种不同的威士忌,从Johnnie Walker Red and Black到麦卡伦(Macallan)12年单一麦芽苏格兰威士忌。 为了进行比较,他们还使用了最先进的全二维气相色谱-飞行时间质谱联用仪(GC×GC-ToFMS)分析了威士忌样品。电子鼻子只是简单地评估一种物质的整体香气特征,而GC×GC-ToFMS可以在复杂的气味混合物中识别单个化合物。虽然GC×GC-ToFMS是高度准确的,这种仪器方法也比电子鼻子更昂贵和复杂的使用。 结果显示Nos.e在识别威士忌品牌方面与全二维气相色谱-飞行时间质谱联用仪(GC×GC-ToFMS)装置相当。
  • [干货汇总] 【AI系列】天呐,这群“员工”的业务能力太强了
    >摘要:智能时代,怎样才能让智能客服和智能助手真正担起智能之名呢?华为正在以AI之名,为之正名。本文分享自华为云社区《[天呐,这群“员工”的业务能力太强了](https://huaweicloud.blog.csdn.net/article/details/114164491)》,原文作者:华为助力企业上云。 在行车途中,双手与双眼需要高度集中的情况下,“请告诉我今天路况如何?”“请告诉我哪条路会更快到达?”智能助手会是身边最可靠的领航员。 在工作场景里,老员工的指导或许很重要,但并不能成为新手的贴身保镖,“请问如何才能修复好这个文件?”“财务流程需要怎样操作?”智能客服会是更为可靠和高效的手段。 显然,无论是消费者还是普通用户,智能客服和个人助手信息系统已然与生活密不可分。智慧源于数据,也源于系统的持续迭代以及企业系统的持续更新。如果用户在使用过程中收获的是一系列的答非所问和繁杂的操作,不仅用户体验不佳,企业内外联动的运营效能提升有限,品牌形象也会受到损害。那么智能时代,怎样才能让智能客服和智能助手真正担起智能之名呢?华为正在以AI之名,为之正名。 华为的研发实力有目共睹,近年来,智能趋势全球开启,站在风口浪尖的华为搭上了这一历史性的进程。在“智能华为”的转型的过程中,其推出了大量的智能化手段来提升企业运行效率,智能客户和智能助手便是其中两大利器。华为把智能领域积累的大量经验和技术,以智能客服和智能助手的方式应用到企业运作流程之中,充分挖掘企业内部技术及能力资源。 # 智能客服越千山,究竟越过哪一关? 接入智能客服之前,一定要明晰一件事情,那就是为什么会需要智能客服?我们现在所听到的一些客服机器人算不算智能客服呢?且请慢慢看来。 设置客服的目的是很简单的,那就是解决普通客户的咨询问题。而目前客服行业中,面向普通客户咨询主要有两种处理方式,传统客服机器人和电话按键导航转人工客服。不过二者相比起来各有利弊,传统客服机器人问题明显,容易答非所问,而且问题解决率不足80%,同时很多在线业务无法办理;而人工客服的话则流程冗长且效率偏低,通常需要等待人工坐席提交工单、人工坐席升级工单、人工坐席关闭工单、客户满意度评价、客服质检等诸多环节。 从华为客服业务给出的数据来看,其目前拥有的超过1万名客服坐席,人均每天60个问询单,每单处理耗时约10分钟,年损失率130%,而且新人培训周期较长。机器人客服拨测命中率低、用户参评率低、答非所问以及知识运营成本高;人工坐席排队及工单升级困难、知识检索速度慢、人工总结问题效率低……那么就没有两全其美的办法吗? 显然不是的,华为智能客服就是要解决掉这个矛盾点。本质上来讲,智能客服解决方案需要把两种客服业务进行结合,其总体流程涵盖了以下5个步骤。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20224/8/1649383815554179144.png) - **智能导航**,在导航时根据用户画像识别实现AI智能分流,快速理解用户意图,一些常见问题直接办理; - **智能问答**,在机器人客服方面,基于NLP (Natural Language Processing)技术打造了各类对话机器人,让用户能够更多的进行自助办理业务; - **坐席辅助**,在人工坐席服务中在业务流程、知识内容、业务话术、升单分类等方面实现自动推荐,提升客服效率; - **智能外呼**,在用户满意度评价部分,根据营销线索完成自动挖掘,自动完成客户满意度回访; - **智能质检**,在客服质检流程中能够实时识别情绪异常预警并对服务质量检测,避开敏感信息。 通过这5个流程,华为智能客服可以在无人敢于的情况下实现85%以上的用户问题可由机器人实现闭环处理;并且在人工坐席方面实现千般问一致答,1分钟完成录单查单升单;而更为重要的是,智能客服系统可以实现100%全问题单覆盖,保障没有错漏现象出现,堪称完美之选。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20224/8/1649383856984572304.png) 智能客服产品架构示意 那么智能客服能够在哪些场景下发挥作用呢?华为AI使能部智能客服产品经理唐菊香介绍称基于智能路由、问答与任务引擎、意图识别等能力构建的智能客服解决方案,在华为内部得到广泛使用,实现一键触达所需服务;并且该技术也在用户场景、内部连接场景、企业各个服务场景中得到广泛使用。 # 场景化应用,智能客服的长生诀 过往的经验告知,如果一款产品没有竞争力,不能在场景中切实的解决问题,那么这款产品便很难称之为成功。而华为智能客服解决方案在面向普通用户、外部工程师、小语种等诸多场景时,可以切实的击破场景化发展难题。 华为VMALL商城在线客服就是一种典型的应用,其能够处理消费者在售前及售后中的各类问题咨询,全球96个国家, 700+终端产品型号及14个EMUI/Magic UI系统版本均可得到服务。在以往的解决方案里,客服产品往往会面临体系复杂,知识难记忆;业务浪涌风险;坐席压力大,极端情况情绪崩溃,人员流失快、海外招聘难等诸多问题。 而在通过接入智能客服之后,整体解决方案效率得到大幅提升,售前通过 RPA机器人(Robotic Process Automation)、知识图谱机器人、实体识别等完成产品咨询和对比任务;售后则可以通过任务机器人、产品图谱机器人、用户画像来精准化提供到店维修指引;同时能够通过RPA机器人、故障图谱机器人、实体识别能力完成逐步故障解决。 工程师的问题可能会比普通用户更复杂,以往工程师在进行功能对比、产品选型、产品展示、安装指南、故障指导、版本推荐时,很难通过机器人客户解决问题,而求助人工坐席解决问题时需要80美金/单。 为方便企业业务工程师能够快速解决问题,华为企业业务部投入1人月构建14个主要场景的任务多轮自助,实现客户工程师自助快速获取产品相关问题解决方案,缓解了人工坐席压力,实现人工费用节省。这套解决方案的最大特点在于,其能够基于企业业务意图识别模型,是一套将企业产品图谱与场景任务引擎结合的解决方案。 小语种场景相比之下会简单一些,华为利用专利技术实现了小语种与英文机器人能力,目前已经覆盖了西班牙语、泰语、俄语、日语、韩语、阿拉伯语、法语、德语等诸多语言。在以往使用的单一模型中,其往往会各有优劣,只能适用于特定场景,系统对对一些重点语种有专门的模型应对,将其融合之后可以形成互补。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20224/8/1649383877090449547.png) 华为智能客服解决方案面向核心小语种,主要采用多模型融合(经典机器学习算法+深度学习算法)+投票决策的方式,分语种训练;面向非核心小语种,主要通过机器翻译,利用英文Bot能力以及答案的多语种同源关联,实现小语种快速覆盖。不同场景不同解决方式,这样才能更加高效的解决问题。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20224/8/1649383885123542138.png) 总结来看,华为智能客服的核心技术点在运营层面有着明显的提升,其能够通过文档自动抽取和知识自动生成提升知识储备,并根据对话日志统计报表,热点、高频问题统计,人工服务数据反哺完成机器自学习,再借助人工标注、知识健康检查、知识自动生成、语料扩写等能力实现智能客服的效率提升。同时,其能够通过自动训练人工发布,最终实现系统的知识覆盖面提升,整体准确率提升10%到20%,回答更加准确。 相比以往的智能客服解决方案,华为智能客服具备更强的客户理解能力,能够通过NLP能力、多模态情感识别、基于画像的推荐以及多语种意图识别,增强客户理解,提升客户体验,减少客服压力;此外,其能够提供开箱即用的能力,通过云化和多租户隔离,实现20分钟快速构建;同时,客户服务解决方案覆盖企业内部咨询、业务办理助手等诸多场景,全场景覆盖让产品更具竞争力。 # 智能助手,信息获取新模式 我们都说如今进入了数据时代,尤其是企业发展之后业务范围不断扩大,系统和数据不断增加,传统的信息获取方式便不再那样有效。据麦肯锡调查统计,企业员工大概有40%的时间花在不同信息的获取上,将直接影响工作输出。 那么信息获取有哪些方式呢?在华为AI使能部资深产品经理刘玉峰表示,信息获取方式已经经历了三个时代的变迁。1.0时代,信息获取主要通过菜单点击模式获取信息,用户获取内容有限;2.0时代,信息获取主要依赖于传统搜索,其能够获取海量内容,但问题在于其响应机制较为模糊,而且主要基于功能驱动,结果较为片面。3.0时代,智能助手出现使得用户获取海量信息的渠道更为多元,其能够实现精准响应,并基于场景驱动获取信息,能够实现主动推荐,内容更加全面可靠。 总体来看,信息获取方式经历了“人找服务”到“服务找人”的升级,事实上,这也是下一代数字化服务的特点,由主动获取信息变成信息整合后的被动获取,进而盘活企业数字资产,提升员工生产力。智能助手作为一种面向未来的信息获取方式,那么其是如何构建的呢? ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20224/8/1649383899459405378.png) 智能助手AI构建思路示意 以往在做产品时,往往选择的是技术驱动,但智能产品,尤其是智能助手这类产品,往往运营、场景和数据作为驱动的。在构建智能助手时,往往需要会先获取用户行为日志,然后基于用户行为习惯进行分析,最终实现场景识别、服务设计、意图识别设计等核心能力;同时也可以将之用于现状评估和目标制定。 在建设完成上线后,后续更新迭代的环节叫“PDCA”转换(PDCA :PLAN计划、DO实施、CHECK验证、ACTION改进)。产品上线后对需要产品反复进行验证,然后反馈迭代实现用户问题闭环,最终逐步迭代提升用户体验。智能产品的第一个版本往往不尽完善,但就是在这一系列的闭环升级中,让产品的服务能力和用户体验不断的日趋完善。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20224/8/1649383910833780292.png) 华为内部使用的智能助手主要基于华为多年的技术积累打造,根据不同的端口,主要有三种呈现方式:语音助手,智能搜索,划词搜索(闪查)。在移动端,语音助手能够便捷地答疑解惑;文字搜索能够跨越终端并且处理各类条件的内容信息,而划词搜索则可以智能地嵌入在各种软件之中,实时简洁地呈现各类信息。华为打造的助手中台能够提供QABot、RPA、搜索Bot、Talk to Data、Task Bot等AI能力,帮助提升员工生产力。 # 多场景落地,智能助手的新春 谈及智能助手,很多人对其的认知可能还停留在小艺、Siri等个人手机上,但显然其能够落地的空间会比这些场景更加丰富。华为智能助手在HR服务、会议助手、数据服务、知识服务等多个领域均有表现。 HR服务并非易事,在企业内部找人与其他的人脉搜索不同,其往往面对的是陌生人搜索,多数属于模糊搜索。而智能助手基于员工图谱支持企业内部找人,根据员工不同标签进行归类和联想搜索,标签触电从入职开始,包括职位上的调动、晋升、出差、培训、项目作战到离职的全职业生涯周期,从部门来看其同部门、秘书、HRBP、主管、同项目组的同事相关性也可以做区隔,进而更加精准地找到合适人选。 会议服务看似简单,却有很多零散的烦心事。在参加会议时,会前需要进行会议室预订、预约与会人等一系列操作,同时还可能找不到会议室。华为会议助手则能够实现一句话预约会议室并通过RPA自动预约与会人时间,内置的室内导航也能够避免找不到会议室的尴尬。 在开会时出勤统计、陌生人信息查询、跨语言沟通、会议记录和任务下发,每一条都可能是一个坑。华为会议助手则可以提供出勤自动统计(摄像头)、陌生人信息推荐、实时会议口水稿、同声传译、拍照识文、一句话创建任务等功能。在会议结束时,往往需要进行会议纪要整理和任务的跟进。能会议助手能够对多媒体会议进行记录,生成视频、语音、口水稿,且纪要口水稿文本顺滑,能够自动进行观点提取;会后也能利用RPA自动跟进任务。 数据服务需求更加繁杂,技术含量会更高。在寻找合适的数据内容时,往往得到的结果过于专业,导致很多一线用户无法明晰数据的价值点和关键所在。而通过使用智能搜索、机器学习算法,智能助手能够准确识别语音,分析用户意图并与用户对话,让用户能够轻松找到想要的数据。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20224/8/1649383927145833349.png) 举例而言,当用户想要某一地区的数据时,智能助手能够直接将相关数据的柱状图呈现,并可根据用户指令找到更合适的可视化形式,帮助用户理解相关数据集和问题点。通过AI的NL2SQL(自然语言到结构化查询语言)技术,智能助手实现了自然语言到机器语言的转换。用户只需用最自然的语言,就可随机、自由的、多维度、多逻辑组合数据,通过一次或多次会话完成数据探索和分析,洞悉数据背后的业务本质。 华为智能助手在知识服务方面提供的场景化帮助会更加丰富。基于产品构建的知识图谱能够比普通的FAQ系统更加精准地完成问答,实现产品对比、产品常见问题支持、属性查询等能力。而产品知识图谱本身的三元组比较好定义,因此产品属性比较有限,而且数据多为半结构化数据,能够比较简单地构建;但大概念的知识图谱会比较难,需要在合适的场景来做建设,甚至还需要进行相关的逻辑判断解决。 产品文档内容的深度检索在未来有望成为刚需,仅以华为内部来看,年文档量就能达到百万级。之前只支持员工主动找文档,但这需要大量时间浏览文档内容,信息获取效率低。在找文档过程中,由于文档标题覆盖的信息有限,因此使用搜索功能往往搜不到或者不支持excel、ppt、pdf、word等文件内容搜索。 智能助手能够对文档进行解析,包括页码、标题、正文等内容,并以API形式接入索引库。用户在检索相关文档时,智能助手通过意图理解调用索引库相关内容,并通过智能搜索算法模型,实时输出相关内容。总结来看,智能助手能够实现更深层次的内容搜索,能够精准定位、在线预览、一搜即得。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20224/8/1649383959934263391.png) 核心语义识别服务架构示意图 核心语义识别是智能助手的一大重要难点所在,在做知识问答或是搜索时往往会遇到一个问题,用户输入一句话时词与词的重要性的不一样的,以往由于未识别核心语义导致的Bad Case达到了35%。以往的解决办法有很多种,比如大量的字典或者标注;但这样做的问题在于人力成本投入过大,而且Case By Case维护,效果不佳。 华为智能助手基于非监督算法核心词的识别模型,当用户输入一句话时,算法模型会自动对语言中多个词汇的权重进行分析。通过核心语义识别让用户问答结果更加精准,也能更好地理解客户的诉求。 此外在很多情况下,用户会搜索一些意图不明确的内容,搜索主题会比较泛;亦或者用户搜索时记忆不太清楚;再者当用户输入一个标签时标签下内容过多导致用户无所适从。为了解决这类意图不明确搜索的问题,华为智能助手基于华为内网相关信息形成了主题图谱,将不同主题下相关的知识内容根据关联性来绘制图谱,进而引导用户明确意图。 在用户进行知识探索时,通过主题下的关键知识提取模块即可获得;当用户输入较为模糊时,主题图谱可以逐步对用户进行相关内容逐步引导;当内容比较多的时候,结构化处理模块以及Query理解模块会共同打造的主题推荐能力能够对用户有所帮助。 总体来看,传统问答系统的信息获取方式效率比较低,通过智能化升级和数字化变革,华为智能客服与智能助手可以共同帮助企业内部盘活资产,提升了整体运营效率,也给予客户更多优质的服务帮助。可以说,智能助手与智能客服,成为了华为智能化转型升级路上的“急先锋”。
  • [技术干货] 【AI-OCR】自定义扩展插件aiverifyinput(输入型验证码、健康码颜色识别、抱杆识别)
    此插件有效期到2023年6月30日,如需体验验证码等AI能力,请浏览以下帖子:【ManasAI-OCR】验证码、健康码颜色识别、表格图片识别cid:link_0---------------------------------------------1. 导入后,在studio中的控件界面,显示见图1;图12. 控件帮忙界面见图2;图23. 属性界面见图3,图4。(识别模式有三种,输入型验证码、健康码颜色识别、抱杆识别;输入型验证码中,需要选择是纯数字,还是纯字母,还是数字与字母混合)图3图4
  • [技术干货] 前沿科技探究DeepSQL:库内AI算法(上)
    数据库DeepSQL特性实现DB4AI功能,即在数据库内实现AI算法,以更好的支撑大数据的快速分析和计算。这里提供了一整套基于SQL的机器学习、数据挖掘以及统计学的算法,用户可以直接使用SQL进行机器学习工作。Deep SQL能够抽象出端到端从数据到模型的研发过程,配合底层的引擎及自动优化,具备基础SQL知识的技术人员即可完成大部分的机器学习模型训练及预测任务。整个分析和处理都运行在数据库引擎中,用户可以直接分析和处理数据库内的数据,不需要在数据库和其它平台之间进行数据传递,避免在多个环境之间进行不必要地数据移动。一、概述DeepSQL是对openGauss DB4AI能力的增强,让对MADLib比较熟悉的数据分析师或开发者可以轻松迁移到openGauss上进行工作。DeepSQL将常用的机器学习算法封装为SQL语句,支持60多个常用算法。其中包括回归算法(例如线性回归,逻辑回归,随机森林等)、分类算法(比如KNN等)、聚类算法(比如K-means)等。除了基础的机器学习算法之外,还包括图相关的算法,比如最短路径,图形直径等等算法;此外还支持数据处理(比如PCA),稀疏向量,统计学常用算法(比如协方差,Pearson系数计算等),训练集测试集分割方法,交叉验证方法等。表 1 支持的机器学习算法 - 回归类算法算法中文名称 算法英文名称应用场景 逻辑回归Logistic Regression例如寻找某疾病的危险因素,金融商业机构需要对企业进行评估等。预测:根据模型预测不同的自变量情况下某病或某情况的发生概率。判别:实际上跟预测类似,也是根据模型判断某人属于某病或属于某种情况的概率有多大,即判断某人有多大可能是属于某病。 Cox比例风险回归Cox Proportional Hazards Regression该模型以生存结局和生存时间为因变量,可同时分析众多因素对生存期的影响,能分析带有截尾生存时间的资料,且不要求估计资料的生存分布类型。由于上述优良性质,该模型自问世以来,在医学类研究中得到广泛的应用,是迄今生存分析中应用最多的多因素分析方法。 弹性网络回归Elastic Net Regularization弹性回归是岭回归和套索回归的混合技术,它同时使用 L2 和 L1 正则化。当有多个相关的特征时,套索回归很可能随机选择其中一个,而弹性回归很可能都会选择。 广义线性模型Generalized Linear Models在一些实际问题中,变量间的关系并不都是线性的,这种情况就应该用曲线去进行拟合。  边际效应Marginal Effects提供边际效应的计算。 多类回归Multinomial Regression如果目标类别数超过两个,这时就需要使用多类回归,如疗效可能是“无效”,“显效”,“痊愈”三类。  序数回归Ordinal Regression在统计学中,序数回归是一种用于预测序数变量的回归分析,即其值存在于任意范围内的变量,不同值之间的度量距离也不同。它可以被认为是介于回归和分类之间的一类问题。例如,病情的分级(1、2、3、4级),症状的感觉分级(不痛、微痛、较痛和剧痛),对药物剂量反应的分级(无效、微效、中效和高效)等等。不同级别之间的差异不一定相等,如不痛与微痛的差值不一定等于较痛与剧痛的差值。 聚类方差Clustered VarianceClustered Variance模块调整聚类的标准误差。例如,将一个数据集合复制100次,不应该增加参数估计的精度,但是在符合独立同分布假设(Independent Identically Distributed,IID)下执行这个过程实际上会提高精度。    稳健方差Robust VarianceRobust Variance模块中的函数用于计算线性回归、逻辑回归、多类逻辑回归和Cox比例风险回归的稳健方差(Huber-White估计)。它们可用于计算具有潜在噪声异常值的数据集中数据的差异。 支持向量机Support Vector Machines(SVM)用于文本和超文本的分类、图像分类,比起传统的查询优化方案,支持向量机能够获取明显更高的搜索准确度。这同样也适用于图像分割系统。 线性回归Linear Regression应用广泛,例如经济学、金融学等。表 2 支持的机器学习算法 - 其他监督学习算法名称(中文) 算法名称(英文)应用场景 决策树Decision Tree最为广泛的归纳推理算法之一,处理类别型或连续型变量的分类预测问题,可以用图形和if-then的规则表示模型,可读性较高。 随机森林Random Forest随机森林是一类专门为决策树分类器设计的组合方法。它组合多棵决策树作出的预测。 条件随机场Conditional Random Field (CRF)条件随机场(CRF)是一种判别的,无向概率的图形模型。线性链CRF是一种特殊类型的CRF,它假定当前状态仅取决于先前的状态。在分词、词性标注和命名实体识别等序列标注任务中取得了很好的效果。  朴素贝叶斯Naive Bayes通过计算概率来进行分类,可以用来处理多分类问题,比如:**邮件过滤器。 神经网络Neural Networks拥有广泛的应用场景,譬如语音识别、图像识别、机器翻译等等。在模式识别的领域中算是标准监督学习算法,并在计算神经学中,持续成为被研究的课题。MLP已被证明是一种通用的函数近似方法,可以被用来拟合复杂的函数或解决分类问题。 k临近算法k-Nearest NeighborsK近邻分类方法通过计算每个训练样例到待分类样品的距离,取和待分类样品距离最近的K个训练样例,K个样品中哪个类别的训练样例占多数,则待分类元组就属于哪个类别。可用于:文字识别,面部识别,基因模式识别,客户流失预测、欺诈侦测。表 3 支持的机器学习算法 - 数据处理类算法 算法名称(中文)算法名称(英文)应用场景 数组操作Array Operations数组、向量操作运算,包括基础的加减乘除、幂运算、开方、cos、sin、绝对值、方差等。 主成成分分析Dimensionality Reduction (PCA)降维,计算主成分。 变量编码Encoding Categorical Variables当前支持one-hot和dummy编码技术。当需要用一组特定的预测变量与其它预测变量组作比较时,通常使用哑编码(dummy coding),与之比较的变量组称为参照组。One-hot编码与哑编码类似,两者的区别是前者为每种分类值建立数字类型的0/1指示列。在每行数据中(对应一个数据点),只有一个分类编码列的值可以为1。 矩阵操作Matrix Operations运用矩阵分解,将大型矩阵分解成简单矩阵的乘积形式,则可大大降低计算的难度以及计算量。矩阵加减乘除、最值、均值、求秩、求逆、矩阵分解(QR,LU,Cholesky),特征提取。 规范化和距离函数Norms and Distance Functions求范数,余弦相似度,向量间距离。  稀疏向量Sparse Vectors实现稀疏向量类型,如果向量中重复值较多,可以用来压缩储存节省空间。 透视图Pivot透视表或枢轴表,通常用来实现OLAP或报表系统中一类常见的行列转置需求。pivot函数能够对一个表中存储的数据执行基本行转列操作,并将汇总后的结果输出到另一个表中。使行列转置操作变得更为简单与灵活。  模式匹配Path是在一系列行上执行常规模式匹配,并提取有关模式匹配的有用信息。有用的信息可以是简单的匹配计数或更多涉及的内容,如聚合或窗口函数。 会话Sessionize会话化功能对包括事件序列的数据集执行面向时间的会话重建。定义的不活动时段表示一个会话的结束和下一个会话的开始。可以用于:网络分析,网络安全,制造,财务和运营分析。 共轭梯度法Conjugate gradient求解系数矩阵为对称正定矩阵的线性方程组的数值解的方法。 词干提取Stemming词干提取简单说就是找出单词中的词干部分,场景比如:搜索引擎建立网页主题概念。在英文网站优化作用明显,对其他语言有借鉴意义。 训练集测试集分割Train-Test Split分割数据集,把一份数据集划分成训练集和测试集,train的部分用于训练,test部分用于验证。 交叉验证Cross Validation交叉验证。 预测指标Prediction Metrics用于评估模型预测的质量,包括均方误差,AUC值、混淆矩阵、修正R方等用于评价模型的函数。小批量预处理Mini-Batch Preprocessor把数据打包成小份进行训练,优点是它可以比随机梯度下降(默认MADlib优化器)表现更好,会更快更平滑的收敛。表 4 支持的机器学习算法 - 图类算法名称(中文)算法名称(英文)应用场景 所有对间最短路径All Pairs Shortest Path (APSP)所有对最短路径(APSP)算法找到所有顶点对之间的最短路径的长度(总和权重),使得路径边缘的权重之和最小化。 广度优先算法Breadth-First Search广度优先算法遍历路径。 超链接诱导主题搜索Hyperlink-Induced Topic Search (HITS)HITS算法输出每个节点的authority评分和hub评分,其中authority评分给出页面内容的分数,hub评估出连接到其他页面的分数。 平均路径长度Average Path Length此函数计算每对顶点之间的最短路径的平均值。平均路径长度基于“可到达的目标顶点”,因此它忽略了未连接的顶点之间的无限长度路径。 中心性Closeness Centrality接近度度量是和的倒数,平均值的倒数,以及到所有可到达目标顶点(不包括源顶点)的最短距离的倒数之和。 图表直径Graph Diameter直径被定义为图中所有最短路径中最长的。 入度出度In-Out Degree计算图中每个点的入度出度,入度指指向此点的边的数量,出度指此点指向其他点的边的数量。 网页排名PageRank给定图形,给定图形,PageRank算法输出概率分布,该概率分布表示随机遍历图形的人将到达任何特定顶点的可能性。 单源最短路径Single Source Shortest Path (SSSP)给定图形和源顶点,单源最短路径(SSSP)算法找到从源顶点到图中的每个其他顶点的路径,使得路径边缘的权重之和最小化(每条边权值非负)。弱连通分量Weakly Connected Component给定有向图,弱连通分量(WCC)是原始图的子图,其中所有顶点通过某个路径彼此连接,忽略边的方向。在无向图的情况下,弱连通分量也是强连通分量。该模块还包括许多在WCC输出上运行的辅助函数。表 5 支持的机器学习算法 - 时间序列算法名称(中文)算法名称(英文)应用场景 差分整合移动平均自回归模型Autoregressive Integrated Moving Average model(ARIMA)时间序列预测,用于理解和预测一系列数据的未来值。比如:国际航空旅客数据,预测旅客人数。表 6 支持的机器学习算法 - 采样算法名称(中文)算法名称(英文)应用场景 采样函数sample抽样。分层抽样Stratified Sampling分层随机抽样,又称类型随机抽样,它是先将总体各单位按一定标准分成各种类型(或层);然后根据各类型单位数与总体单位数的比例,确定从各类型中抽取样本单位的数量;最后,按照随机原则从各类型中抽取样本。对称抽样Balanced Sampling一些分类算法仅在每个类中的样本数大致相同时才最佳地执行。高度偏斜的数据集在许多领域中是常见的(例如,欺诈检测),因此重新采样以抵消这种不平衡可以产生更好的决策边界。表 7 支持的机器学习算法 - 统计学 算法名称(中文)算法名称(英文)应用场景 汇总统计函数Summary生成任何数据表的摘要统计信息。协方差和相关系数Correlation and Covariance描述性统计,求Pearson系数,相关系数,另一个输出协方差。了解数据从统计学上反映的量的特征,以便我们更好地认识这些将要被挖掘的数据。统计频率算法CountMin (Cormode-Muthukrishnan)统计一个实时的数据流中元素出现的频率,并且准备随时回答某个元素出现的频率,不需要的精确的计数。基数估计算法FM (Flajolet-Martin)获取指定列中的不同值的数量。 找出这个数字集合中不重复的数字的个数。最频繁值MFV (Most Frequent Values)计算频繁值的场景。假设检验Hypothesis Tests包含F-test,chi2-test等。概率函数Probability Functions概率函数模块为各种概率分布提供累积分布,密度、质量和分位数函数。表 8 支持的机器学习算法 - 其他算法算法名称(中文)算法名称(英文)应用场景 k-聚类算法K-means聚类场景。隐含狄利克雷分布Latent Dirichlet Allocation (LDA)LDA 在主题模型中占有非常重要的地位,常用来文本分类。关联规则算法Apriori Algorithm关联规则算法,关联规则挖掘的目标是发现数据项集之间的关联关系。比如经典的“啤酒和尿布”。二、环境部署DeepSQL环境包括编译数据库和安装算法库两个部分。前提条件环境中安装python2.7.12以上版本Python。数据库需要开启对PL/Python存储过程的支持。安装算法库需要拥有管理员权限的用户。操作步骤1. 检查部署Python环境安装前,请查看系统安装的python版本,当前DeepSQL需要python2.7.12以上版本的环境。如果当前系统python2版本高于2.7.12,可以直接安装python-devel包。如果版本过低,或者无法安装python-devel包,可以下载最新python2源码,手动配置编译python2,并配置环境变量。算法库中,部分算法调用了python包,如numpy,pandas等。用户可以安装以下python库:pip install numpy pip install pandas pip install scipy须知:如果自行编译python,需要在configure脚本执行时加入–enable-shared参数。如果系统中的python2使用的是UCS4编码,自行编译python2时,还需要加入–enable-unicode=ucs4参数。可以在系统中自带的python2下执行:“import sys;print sys.maxunicode”并查看结果,如果结果是65535,说明系统默认的是ucs2;如果结果是1114111,说明用的ucs4编码。如果系统中内置的python2使用的ucs4,说明系统中的gdb,gstack等也会依赖ucs4。因此自行编译的python2在configure时,需要添加–enable-unicode=ucs4,否则后续使用gdb,gstack时,会遇到报错。2. 编译部署数据库数据库需要开启对PL/Python存储过程的支持。默认编译数据库,不包含此模块。因此需要编译数据库时,在configure阶段,加入--with-python参数;其他编译保持步骤不变;编译完成后,需要重新gs_initdb;默认PL/Python存储过程模块不被加载,请执行“CREATE EXTENSION plpythonu”来加载模块。3. 算法库编译和安装算法库使用开源的MADlib机器学习框架。源码包和相应patch可以从第三方库的代码仓库里获取。安装命令如下:tar -zxf apache-madlib-1.17.0-src.tar.gz cp madlib.patch apache-madlib-1.17.0-src cd apache-madlib-1.17.0-src/ patch -p1 < madlib.patch编译命令如下:./configure -DCMAKE_INSTALL_PREFIX={YOUR_MADLIB_INSTALL_FOLDER} -DPOSTGRESQL_EXECUTABLE=$GAUSSHOME/bin/ -DPOSTGRESQL_9_2_EXECUTABLE=$GAUSSHOME/bin/ -DPOSTGRESQL_9_2_CLIENT_INCLUDE_DIR=$GAUSSHOME/bin/ -DPOSTGRESQL_9_2_SERVER_INCLUDE_DIR=$GAUSSHOME/bin/ # 以上均为configure命令。 make make install其中, {YOUR_MADLIB_INSTALL_FOLDER}需要改为用户的实际安装路径。须知:编译MADlib时,会联网下载依赖软件。无法联网时,需要手动下载依赖包“PyXB-1.2.6.tar.gz”,“eigen-branches-3.2.tar.gz”和“boost_1_61_0.tar.gz”放在本地。使用的configure命令如下:./configure -DCMAKE_INSTALL_PREFIX={YOUR_MADLIB_INSTALL_FOLDER} # your install folder -DPYXB_TAR_SOURCE={YOUR_DEPENDENCY_FOLDER}/PyXB-1.2.6.tar.gz # change to your local folder -DEIGEN_TAR_SOURCE={YOUR_DEPENDENCY_FOLDER}/eigen-branches-3.2.tar.gz # change to your local folder -DBOOST_TAR_SOURCE={YOUR_DEPENDENCY_FOLDER}/boost_1_61_0.tar.gz # change to your local folder -DPOSTGRESQL_EXECUTABLE=$GAUSSHOME/bin/ -DPOSTGRESQL_9_2_EXECUTABLE=$GAUSSHOME/bin/ -DPOSTGRESQL_9_2_CLIENT_INCLUDE_DIR=$GAUSSHOME/bin/ -DPOSTGRESQL_9_2_SERVER_INCLUDE_DIR=$GAUSSHOME/bin/4. 将算法库安装到数据库中进入{YOUR_MADLIB_INSTALL_FOLDER}路径。进入bin文件夹。执行如下命令。 ./madpack -s <SCHEMA_NAME> -p opengauss -c <USER_NAME>@127.0.0.1:<PORT>/<DATABASE_NAME> install命令中参数说明如下:-s:schema的名称。-p:数据库平台,使用opengauss即可。-c:连接数据库的参数。包括用户名、‘@’、IP地址、端口号和目标数据库名称。install为安装的命令,除此之外,还有reinstall(重新安装),uninstall(卸载)等命令可用。说明:目标数据库必须存在。IP请使用127.0.0.1,不要使用localhost。涉及到大量PL/Python存储过程的安装、卸载等操作,需要数据库管理员权限用户来进行,普通用户没有权限创建和修改PL/Python存储过程,只能调用。数据库兼容性,推荐兼容性为B。不同的数据库兼容性下,对空值,NULL等处理有较大差异。建议使用B兼容性。例如,CREATE DATABASE dbcompatibility='B'。三、使用指导PL/Python存储过程当前PL/Python存储过程优先支持python2;默认版本也是python2。PL/Python中的函数通过标准的CREATE FUNCTION声明:CREATE FUNCTION funcname (argument-list) RETURNS return-type AS $$ # PL/Python function body $$ LANGUAGE plpythonu;函数体是一个简单的Python脚本,当函数被调用的时候,它的参数作为列表args的元素传递;命名参数也会被当做普通的变量传递到Python脚本中。命名参数的使用通常更易读。 结果将使用return或yield(结果集语句的情况) 照常从Python代码中返回。如果没有提供返回值,Python返回缺省的None。 PL/Python将Python中的None认为SQL空值。例如,返回两个整数中较大者的函数定义如下。CREATE FUNCTION pymax(a integer, b integer) RETURNS integer AS $$ if a > b: return a return b $$ LANGUAGE plpythonu;注意:PL/Python函数中,后缀为plpythonu。‘u’说明是untrusted类型的存储过程。Trusted:这个语言不能访问越权的数据。例如,数据库服务器的文件、数据库内部(包括直接访问共享内存)。Untrusted:这个语言没有任何限制,允许访问任何数据(包括文件,网络,共享LIB库等,危害性较大),但是功能更加强大。PL/Python属于untrusted类型的存储过程语言,当前仅允许管理员权限的用户创建和修改,普通用户仅支持使用。定义PL/Python存储过程时,注意不要定义执行诸如import os;os.system(“rm -rf /”) 等危险语句。管理员权限的用户需要小心创建此类PL/Python存储过程。数据库Null, None和空串处理如果向函数传递了一个SQL null值,参数值在Python中将会显示为None。在数据库中,不同的兼容性下,空串的行为会被当做NULL处理。同一个函数,在不同的兼容性下表现不同。CREATE FUNCTION quote(t text, how text) RETURNS text AS $$ if how == "literal": return plpy.quote_literal(t) elif how == "nullable": return plpy.quote_nullable(t) elif how == "ident": return plpy.quote_ident(t) else: raise plpy.Error("unrecognized quote type %s" % how) $$ LANGUAGE plpythonu;示例1:SELECT quote(t, 'literal') FROM (VALUES ('abc'),('a''bc'),('''abc'''),(''),(''''),('xyzv')) AS v(t);数据库不同兼容性下的结果为:兼容性为A时,返回结果如下:ERROR: TypeError: argument 1 must be string, not None CONTEXT: Traceback (most recent call last): PL/Python function "quote", line 3, in <module> return plpy.quote_literal(t) referenced column: quote兼容性为B时,返回结果如下:quote ----------- 'abc' 'a''bc' '''abc''' '' '''' 'xyzv' (6 rows)示例2:SELECT quote(t, 'nullable') FROM (VALUES ('abc'),('a''bc'),('''abc'''),(''),(''''),(NULL)) AS v(t);数据库不同兼容性下的结果为:兼容性为A时,返回结果如下:quote ----------- 'abc' 'a''bc' '''abc''' NULL '''' NULL (6 rows)兼容性为B时,返回结果如下:quote ----------- 'abc' 'a''bc' '''abc''' '' '''' NULL (6 rows)可以看到,在兼容性“A”中,空串被当为NULL了。触发器当前PL/Python存储过程中,不支持触发器功能。匿名代码块PL/Python也支持DO声明的匿名代码块:DO $$ # PL/Python code $$ LANGUAGE plpythonu;一个匿名代码块不接受参数,并且丢弃它可能返回的值。共享数据每个函数都在Python解释器里获得自己的执行环境。全局字典SD在函数调用之间用于存储数据。这些变量是私有静态数据。每一个函数都有自己的SD数据空间,函数A的全局数据和函数参数是函数B不可用的。全局字典GD是公共数据,在一个gsql会话中,所有python函数都可访问和改变,使用时需要小心。当gsql断开或退出,共享数据就被释放。注意:运行DeepSQL或者PL/Python存储过程时,需要关闭线程池相关参数。否则PL/Python存储过程中的Sharing Data(“GD”、“SD”)等功能会失效。在数据库中,当线程池功能关闭,每一个连入的gsql,数据库内会起一个新的线程去处理。在gsql中,如果调用到PL/Python存储过程,会在本线程中完成python解析器模块的初始化,其中包括初始化“GD”,“SD”等共享空间。在线程池功能开启的状态下,一个gsql执行时,由当前空闲线程执行,每次执行可能分配到不同的线程上。导致共享数据紊乱。数据库访问PL/Python语言模块自动import一个叫plpy的Python模块。plpy模块提供几个函数执行数据库命令:比如plpy.execute,plpy.prepare等。plpy模块也提供了函数plpy.debug(msg)、 plpy.log(msg)、plpy.info(msg)、 plpy.notice(msg)、plpy.warning(msg)、 plpy.error(msg)和plpy.fatal(msg)。 plpy.error和 plpy.fatal实际上抛出了一个Python异常,会导致当前事务或者子事务退出。另一个实用函数集是plpy.quote_literal(string)、 plpy.quote_nullable(string)和 plpy.quote_ident(string)。关于审计PL/Python存储过程支持审计功能。具体设置可以参考审计。关于并发执行当前PL/Python存储过程对并发执行不友好,建议串行执行。说明: 由于openGauss是多线程架构,C-python中,由于GIL锁(Global Interpreter Lock)的限制,多线程在Python中只能交替执行,无法做到真正的并发。库内算法具体库内算法介绍和使用,可参考MADlib官方网站(MADlib文档)。须知:当前仅支持机器学习算法,不支持深度学习(deep learning)模块。当前数据库不支持xml,所以pmml模块和相关功能不支持。数据库不支持jsonb模块,json格式的模型导出功能也不支持。其他算法支持除了MADlib提供的算法外,openGauss又额外提供了以下三个算法。表 1 额外增加的模块列表算法名称(中文) 算法名称(英文) 梯度提升树gbdt 梯度提升xgboost 时间序列预测的算法facebook_prophet使用时,需要安装依赖的python库:如果使用prophet算法:pip install pystan pip install holidays==0.9.8 pip install fbprophet==0.3.post2如果使用xgboost算法:pip install xgboost pip install xgboost pip install scikit-learngbdt不需要额外安装其他库。详细操作请参考后续章节描述。
  • [交流吐槽] 华为 AI 音箱 2还有货哦
    华为 AI 音箱 2还有哦之前换了一个,质感好好。值得
  • [其他] 浅谈AI芯片
    AI芯片也被称为AI加速器或计算卡,即专门用于处理人工智能应用中的大量计算任务的模块(其他非计算任务仍由CPU负责)。当前,AI芯片主要分为 GPU 、FPGA 、ASIC。AI的许多数据处理涉及矩阵乘法和加法。大量并行工作的GPU提供了一种廉价的方法,但缺点是更高的功率。具有内置DSP模块和本地存储器的FPGA更节能,但它们通常更昂贵。AI芯片该使用什么方法原理去实现,仍然众说纷纭,这是新技术的特点,探索阶段百花齐放,这也与深度学习等算法模型的研发并未成熟有关,即AI的基础理论方面仍然存在很大空白。这是指导芯片如何设计的基本前提。因此,集中在如何更好的适应已有的数据流式处理模式进行的芯片优化设计。技术手段方面AI市场的第一颗芯片包括现成的CPU,GPU,FPGA和DSP的各种组合。虽然新设计正在由诸如英特尔、谷歌、英伟达、高通,以及IBM等公司开发,但还不清楚哪家的方法会胜出。似乎至少需要一个CPU来控制这些系统,但是当流数据并行化时,就会需要各种类型的协处理器。    AI硬件加速技术已经逐渐走向成熟。未来可能更多的创新会来自电路和器件级技术的结合,比如​存内计算​,​类脑计算​;或者是针对特殊的计 算模式或者新模型,比如稀疏化计算和​近似计算​,对图网络的加速;或者是针对数据而不是模型的特征来优化架构。  如AI芯片昇腾910,属于Ascend-max系列。在HC2018上已经发布了其技术规格。实际测试结果表明,在算力方面,昇腾910完全达到了设计规格,即:半精度 (FP16)算力达到256 Tera-FLOPS,整数精度 (INT8) 算力达到512 Tera-OPS,重要的是,达到规格算力所需功耗仅310W,明显低于设计规格的350W。徐直军表示:昇腾910总体技术表现超出预期,作为算力最强AI处理器,当之无愧。我们已经把昇腾910用于实际AI训练任务。比如,在典型的ResNet50 网络的训练中,昇腾910与MindSpore配合,与现有主流训练单卡配合TensorFlow相比,显示出接近2倍的性能提升。面向未来,针对不同的场景,包括边缘计算、自动驾驶车载计算、训练等场景,华为将持续投资,推出更多的AI处理器,面向全场景持续提供更充裕、更经济、更适配的AI算力。
  • [其他] 人工智能的发展史
    人工智能早已不是科学幻想,它是一种已经应用到我们生活方方面面的技术。 例如,为了应对新冠疫情,许多公司安装了**人脸识别系统**,在进行肺炎筛查的时候,需要**快速诊断肺部CT影像**,在路上开车违章,会被**电子眼抓拍罚款**…这里的**人脸识别、CT影像识别、车牌识别**,统统用到了人工智能。除此之外,手机上的各种**语音助手软件、智能音箱、美颜软件、短视频平台的推荐机制、电子邮件的防垃圾邮件系统**,也都是人工智能的应用。在未来我们要实现的**自动驾驶、智慧工业**等领域,人工智能也是不可或缺的。如果把人工智能从我们的生活中剥离,人类恐怕要退回三十年前。 人工智能并不是一个新生的科学概念。在上古时代,东西方文明中都出现了人造人的神话。到了二十世纪30-50年代,由于神经生物学、计算机科学、数学等学科的发展,人工智能第一次进入了科学家的视野。 1950年,英国计算机科学家图灵提出了一个问题:机器会思考吗? ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20223/27/1648384195755854537.png) 图灵提出了一种测试机器智能的标准——图灵测试:一个人C通过文字等方式与另一个人A和一个计算机B交流,他能否通过一连串的问题区分A和B哪个是人,哪个是计算机?如果人类无法区分出A和B,就称计算机通过了图灵测试。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20223/27/1648384316798561384.png) 图灵预言:到2000年时,计算机在经过五分钟的提问之后,就会骗过30%的人类,让人相信对方是真实的人类,而非计算机。图灵测试每年都会举办,在2014年时终于有一个人工智能软件被33%的人类认为是一个13岁的小男孩,通过了图灵测试,这个软件叫做尤金·古斯特曼。 ------------ 其实这个很简单,我经常觉得是人工智能打电话过来的时候,我觉得不对劲呐,我就会问一句:“你是真人还是机器人?”就这一个问题,通过他的回答就可以识别出他是人工智能还是真人。
  • [其他] 人工智能领域再现“中国速度”
    人工智能受到人们的广泛关注可能始于alfgo和韩国职业围棋手李世石的对决。在这场对决中,alfgo战胜围棋职业选手,展示了AI发展的巨大潜力。走出赛场,你会发现人工智能发展至今近七十年,目前已经走进千家万户的生活,智能家电、自动驾驶汽车、智能机器人……可以说人工智能已经无处不在。事实上,我国人工智能的研究始于20世纪70年代末。虽然我国人工智能起步较西方国家晚,但发展势头迅猛。在我国的“十四五”规划中,国家明确提出要将数字经济核心产业增加值占GDP比重由2020年的7.8%提高到10%。人工智能作为数字经济的核心生产力,充分发挥新型信息基础设施的作用,有效拉动数字经济增长。2020年我国数字经济规模为39.2万亿元,占GDP比重达到38.6%。在国家政策支持下,人工智能表现出了对数字经济的巨大推动作用。人工智能目前已经渗透到经济生产活动的主要环节。在企业设计、生产、管理、营销、销售多个环节中不难发现人工智能的身影。随着“十四五”规划政策落地,政务线上化、数字化、智能化成为必然趋势。从分布上来看,目前,我国人工智能企业主要分布在京津冀、长三角、珠三角、川渝四大都市圈。京津冀区域竞争力最强,长三角位列第二,珠三角位列第三。从企业来看,百度、腾讯、华为等企业发展人工智能方面多项AI技术开花。百度专注于自动驾驶、语音识别和深度学习。百度旗下的自动驾驶平台apollo,在近期完成了无人车队的首次直播,展现了AI面对复杂路况的处理能力;腾讯则专注于医疗影像、计算机视觉和语音识别。其推出的腾讯觅影是腾讯公司首款将人工智能应用在医学领域的AI产品。此外人工智能平台小微可以将连接的设备变成兼具试听感知能力的设备实现人机互动和音视频服务;华为将重心放在机器视觉和智能协作上。主要产品有车辆微卡口相机、电警卡口摄像机、态势感知摄像机。在办公方面,以“智慧办公,一站到位”推出华为Debub办公宝为口号。在头部企业的带动下,我国的人工智能市场规模也进一步扩大,IDC 预测,全球 AI 市场规模将在 2021 年达到 885.7 亿美元,并在 2025 年增至 2218.7 亿美元,五年复合增长率(CAGR)约为 26.2%。2025 年,中国约占全球总规模 8.3%,位列单体国家第二。随着AI应用的不断落地,中国市场规模将以24.4%的CAGR增长,有望在2025年超过184.3亿美元。" 十四五 " 规划纲要将 " 新一代人工智能 " 作为议题重点提及,加上新基建、数字经济在内的持续利好政策促进了产业智能化升级。IDC 中国人工智能高级分析师程荫表示:" 人工智能是十四五规划中数字产业化聚焦的 7 大重点领域之一,智能化转型也是国企未来 3 年的工作重点,越来越多的传统企业开始进行智能化升级,或者加大内部 AI 研发力量的投入,这都将为 AI 市场的进一步发展带来机会,未来五年内中国 AI 支出还将持续增长。"转载自 中国AI网
  • [其他] 人工智能应用场景多样化
    人工智能作为科技创新产物,在改变人类生产方式、促进社会进步、增进产业发展等方面发挥着越来越重要的作用。人工智能的应用场景也不断拓展细分,正通过“+AI”赋能百业,主要的应用场景包括: **1. 智能企服。** 将人工智能、大数据、云计算等新一代信息技术融合应用于企业服务领域,实现企业服务领域各项产品及服务的云端化、智能化和集成化,进一步辅助用户企业降低时间成本、人力成本,辅助提升用户企业的管理效率、生产效率和销售效率。智能企服主要包括AI营销、AI协同办公&视频、AI业务流程、AI供应链管理4个细分领域。 **2. 智能医疗** 将物联网、大数据、人工智能等前沿技术集成应用于医疗卫生领域,实现健康医疗服务的数据化、标准化和智能化,以提升医疗的品质、效率与效益、合理优化健康医疗资源配置。智能医疗产业主要包含AI医学影像、AI医疗机器人、AI健康管理、AI公共卫生、AI药物研发、AI医院管理、AI精准医疗、AI医疗支付等8个细分领域。 **3. 智能金融** 人工智能与金融全面融合,以人工智能、大数据、云计算、区块链等新科技为核心赋能金融机构,提升金融机构的服务效率,拓展金融服务的广度和深度,实现金融服务的智能化、个性化及定制化。智能金融主要包含智能支付、智能风控、智能保险、智能投顾4个细分领域。 **4. 智慧交通** 充分运用物联网、空间感知、云计算、移动互联网等新一代信息技术,综合利用交通科学、系统方法、人工智能、知识挖掘等理论与工具,建设与汇集实时的动态交通信息,深度挖掘数据并形成问题分析模型,使交通系统在区域、城市甚至更大的时空范围具备感知、互联、分析、预测、控制等能力。随着车联网和系统集成应用的发展,智能交通的市场规模和用户类型不断扩大和丰富,日益成为城市大行业应用场景。 **5. 智能视听** 智能视听是将人工智能、5G网络通信、大数据、云计算等新兴技术综合应用在视听领域的制作剪辑、审核评定、传播推广、观看体验等各个环节,在生产端提升视频音频的生产制作效率、降低视频内容审核评定的成本,在用户端实现视频传播推广的个性化、观看方式的多元化、观看内容的定制化。 此外,人工智能的应用场景还在向一些新兴领域拓展。比如元宇宙(Metaverse),即利用区块链、虚拟空间、人工智能、AR/VR等技术,构建一个虚拟的现实世界,在网络世界复制现实社会,通过软硬件设施的辅助,增强虚拟世界的真实性。人工智能物联网(AIOT),即融合人工智能(AI)技术和物联网(IoT)技术,通过物联网产生、收集来自不同维度的、海量的数据存储于云端、边缘端,再通过大数据分析,以及更高形式的人工智能,实现万物数据化、万物智联化。
  • [干货汇总] 全卷积网络(FCN)实战:使用FCN实现语义分割
    本文分享自华为云社区《[全卷积网络(FCN)实战:使用FCN实现语义分割](https://bbs.huaweicloud.com/blogs/337081?utm_source=csdn&utm_medium=bbs-ex&utm_campaign=other&utm_content=content)》,作者: AI浩。 FCN对图像进行像素级的分类,从而解决了语义级别的图像分割(semantic segmentation)问题。与经典的CNN在卷积层之后使用全连接层得到固定长度的特征向量进行分类(全联接层+softmax输出)不同,FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷积层的feature map进行上采样, 使它恢复到输入图像相同的尺寸,从而可以对每个像素都产生了一个预测, 同时保留了原始输入图像中的空间信息, 最后在上采样的特征图上进行逐像素分类。 下图是语义分割所采用的全卷积网络(FCN)的结构示意图: ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20223/25/1648176266080602657.png) # 传统的基于CNN的分割方法缺点? 传统的基于CNN的分割方法:为了对一个像素分类,使用该像素周围的一个图像块作为CNN的输入,用于训练与预测,这种方法主要有几个缺点: 1)存储开销大,例如,对每个像素使用15 * 15的图像块,然后不断滑动窗口,将图像块输入到CNN中进行类别判断,因此,需要的存储空间随滑动窗口的次数和大小急剧上升; 2)效率低下,相邻像素块基本上是重复的,针对每个像素块逐个计算卷积,这种计算有很大程度上的重复; 3)像素块的大小限制了感受区域的大小,通常像素块的大小比整幅图像的大小小很多,只能提取一些局部特征,从而导致分类性能受到限制。 而全卷积网络(FCN)则是从抽象的特征中恢复出每个像素所属的类别。即从图像级别的分类进一步延伸到像素级别的分类。 # FCN改变了什么? ​ 对于一般的分类CNN网络,如VGG和Resnet,都会在网络的最后加入一些全连接层,经过softmax后就可以获得类别概率信息。但是这个概率信息是1维的,即只能标识整个图片的类别,不能标识每个像素点的类别,所以这种全连接方法不适用于图像分割。 ​ 而FCN提出可以把后面几个全连接都换成卷积,这样就可以获得一张2维的feature map,后接softmax层获得每个像素点的分类信息,从而解决了分割问题,如图4。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20223/25/1648176304994189028.png) # FCN缺点 (1)得到的结果还是不够精细。进行8倍上采样虽然比32倍的效果好了很多,但是上采样的结果还是比较模糊和平滑,对图像中的细节不敏感。 (2)对各个像素进行分类,没有充分考虑像素与像素之间的关系。忽略了在通常的基于像素分类的分割方法中使用的空间规整(spatial regularization)步骤,缺乏空间一致性。 # 数据集 本例的数据集采用PASCAL VOC 2012 数据集,它有二十个类别: **Person:**person Animal: bird, cat, cow, dog, horse, sheep **Vehicle:**aeroplane, bicycle, boat, bus, car, motorbike, train Indoor: bottle, chair, dining table, potted plant, sofa, tv/monitor ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20223/25/1648176348604357113.png) 下载地址:The PASCAL Visual Object Classes Challenge 2012 (VOC2012) (ox.ac.uk)。 数据集的结构: VOCdevkit └── VOC2012 ├── Annotations 所有的图像标注信息(XML文件) ├── ImageSets │ ├── Action 人的行为动作图像信息 │ ├── Layout 人的各个部位图像信息 │ │ │ ├── Main 目标检测分类图像信息 │ │ ├── train.txt 训练集(5717) │ │ ├── val.txt 验证集(5823) │ │ └── trainval.txt 训练集+验证集(11540) │ │ │ └── Segmentation 目标分割图像信息 │ ├── train.txt 训练集(1464) │ ├── val.txt 验证集(1449) │ └── trainval.txt 训练集+验证集(2913) │ ├── JPEGImages 所有图像文件 ├── SegmentationClass 语义分割png图(基于类别) └── SegmentationObject 实例分割png图(基于目标) 数据集包含物体检测和语义分割,我们只需要语义分割的数据集,所以可以考虑把多余的图片删除,删除的思路: 1、获取所有图片的name。 2、获取所有语义分割mask的name。 3、求二者的差集,然后将差集的name删除。 代码如下: import glob import os image_all = glob.glob('data/VOCdevkit/VOC2012/JPEGImages/*.jpg') image_all_name = [image_file.replace('\\', '/').split('/')[-1].split('.')[0] for image_file in image_all] image_SegmentationClass = glob.glob('data/VOCdevkit/VOC2012/SegmentationClass/*.png') image_se_name= [image_file.replace('\\', '/').split('/')[-1].split('.')[0] for image_file in image_SegmentationClass] image_other=list(set(image_all_name) - set(image_se_name)) print(image_other) for image_name in image_other: os.remove('data/VOCdevkit/VOC2012/JPEGImages/{}.jpg'.format(image_name)) # 代码链接 本例选用的代码来自deep-learning-for-image-processing/pytorch_segmentation/fcn at master · WZMIAOMIAO/deep-learning-for-image-processing (github.com) 其他的代码也有很多,这篇比较好理解! 其实还有个比较好的图像分割库:GitHub - qubvel/segmentation_models.pytorch: Segmentation models with pretrained backbones. PyTorch. 这个图像分割集合由俄罗斯的程序员小哥Pavel Yakubovskiy一手打造。在后面的文章,我也会使用这个库演示。 # 项目结构 1. ├── src: 模型的backbone以及FCN的搭建 2. ├── train_utils: 训练、验证以及多GPU训练相关模块 3. ├── my_dataset.py: 自定义dataset用于读取VOC数据集 4. ├── train.py: 以fcn_resnet50(这里使用了Dilated/Atrous Convolution)进行训练 5. ├── predict.py: 简易的预测脚本,使用训练好的权重进行预测测试 6. ├── validation.py: 利用训练好的权重验证/测试数据的mIoU等指标,并生成record_mAP.txt文件 7. └── pascal_voc_classes.json: pascal_voc标签文件 由于代码很多不能一一讲解,所以,接下来对重要的代码做剖析。 # 自定义数据集读取 my_dataset.py自定义数据读取的方法,代码如下: import os import torch.utils.data as data from PIL import Image class VOCSegmentation(data.Dataset): def __init__(self, voc_root, year="2012", transforms=None, txt_name: str = "train.txt"): super(VOCSegmentation, self).__init__() assert year in ["2007", "2012"], "year must be in ['2007', '2012']" root = os.path.join(voc_root, "VOCdevkit", f"VOC{year}") root=root.replace('\\','/') assert os.path.exists(root), "path '{}' does not exist.".format(root) image_dir = os.path.join(root, 'JPEGImages') mask_dir = os.path.join(root, 'SegmentationClass') txt_path = os.path.join(root, "ImageSets", "Segmentation", txt_name) txt_path=txt_path.replace('\\','/') assert os.path.exists(txt_path), "file '{}' does not exist.".format(txt_path) with open(os.path.join(txt_path), "r") as f: file_names = [x.strip() for x in f.readlines() if len(x.strip()) > 0] self.images = [os.path.join(image_dir, x + ".jpg") for x in file_names] self.masks = [os.path.join(mask_dir, x + ".png") for x in file_names] assert (len(self.images) == len(self.masks)) self.transforms = transforms 导入需要的包。 定义VOC数据集读取类VOCSegmentation。在init方法中,核心是读取image列表和mask列表。 def __getitem__(self, index): img = Image.open(self.images[index]).convert('RGB') target = Image.open(self.masks[index]) if self.transforms is not None: img, target = self.transforms(img, target) return img, target __getitem__方法是获取单张图片和图片对应的mask,然后对其做数据增强。 def collate_fn(batch): images, targets = list(zip(*batch)) batched_imgs = cat_list(images, fill_value=0) batched_targets = cat_list(targets, fill_value=255) return batched_imgs, batched_targets collate_fn方法是对一个batch中数据调用cat_list做数据对齐。 在train.py中torch.utils.data.DataLoader调用 train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=batch_size, num_workers=num_workers, shuffle=True, pin_memory=True, collate_fn=train_dataset.collate_fn) val_loader = torch.utils.data.DataLoader(val_dataset, batch_size=1, num_workers=num_workers, pin_memory=True, collate_fn=val_dataset.collate_fn) # 训练 # 重要参数 打开train.py,我们先认识一下重要的参数: def parse_args(): import argparse parser = argparse.ArgumentParser(description="pytorch fcn training") # 数据集的根目录(VOCdevkit)所在的文件夹 parser.add_argument("--data-path", default="data/", help="VOCdevkit root") parser.add_argument("--num-classes", default=20, type=int) parser.add_argument("--aux", default=True, type=bool, help="auxilier loss") parser.add_argument("--device", default="cuda", help="training device") parser.add_argument("-b", "--batch-size", default=32, type=int) parser.add_argument("--epochs", default=30, type=int, metavar="N", help="number of total epochs to train") parser.add_argument('--lr', default=0.0001, type=float, help='initial learning rate') parser.add_argument('--momentum', default=0.9, type=float, metavar='M', help='momentum') parser.add_argument('--wd', '--weight-decay', default=1e-4, type=float, metavar='W', help='weight decay (default: 1e-4)', dest='weight_decay') parser.add_argument('--print-freq', default=10, type=int, help='print frequency') parser.add_argument('--resume', default='', help='resume from checkpoint') parser.add_argument('--start-epoch', default=0, type=int, metavar='N', help='start epoch') # 是否使用混合精度训练 parser.add_argument("--amp", default=False, type=bool, help="Use torch.cuda.amp for mixed precision training") args = parser.parse_args() return args data-path:定义数据集的根目录(VOCdevkit)所在的文件夹 num-classes:检测目标类别数(不包含背景)。 aux:是否使用aux_classifier。 device:使用cpu还是gpu训练,默认是cuda。 batch-size:BatchSize设置。 epochs:epoch的个数。 lr:学习率。 resume:继续训练时候,选择用的模型。 start-epoch:起始的epoch,针对再次训练时,可以不需要从0开始。 amp:是否使用torch的自动混合精度训练。 # 数据增强 增强调用transforms.py中的方法。 训练集的增强如下: class SegmentationPresetTrain: def __init__(self, base_size, crop_size, hflip_prob=0.5, mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225)): # 随机Resize的最小尺寸 min_size = int(0.5 * base_size) # 随机Resize的最大尺寸 max_size = int(2.0 * base_size) # 随机Resize增强。 trans = [T.RandomResize(min_size, max_size)] if hflip_prob > 0: #随机水平翻转 trans.append(T.RandomHorizontalFlip(hflip_prob)) trans.extend([ #随机裁剪 T.RandomCrop(crop_size), T.ToTensor(), T.Normalize(mean=mean, std=std), ]) self.transforms = T.Compose(trans) def __call__(self, img, target): return self.transforms(img, target) 训练集增强,包括随机Resize、随机水平翻转、随即裁剪。 验证集增强: class SegmentationPresetEval: def __init__(self, base_size, mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225)): self.transforms = T.Compose([ T.RandomResize(base_size, base_size), T.ToTensor(), T.Normalize(mean=mean, std=std), ]) def __call__(self, img, target): return self.transforms(img, target) 验证集的增强比较简单,只有随机Resize。 # Main方法 对Main方法,我做了一些修改,修改的代码如下: #定义模型,并加载预训练 model = fcn_resnet50(pretrained=True) # 默认classes是21,如果不是21,则要修改类别。 if num_classes != 21: model.classifier[4] = torch.nn.Conv2d(512, num_classes, kernel_size=(1, 1), stride=(1, 1)) model.aux_classifier[4] = torch.nn.Conv2d(256, num_classes, kernel_size=(1, 1), stride=(1, 1)) print(model) model.to(device) # 如果有多张显卡,则使用多张显卡 if torch.cuda.device_count() > 1: print("Let's use", torch.cuda.device_count(), "GPUs!") model = torch.nn.DataParallel(model) 模型,我改为pytorch官方的模型了,如果能使用官方的模型尽量使用官方的模型。 默认类别是21,如果不是21,则要修改类别。 检测系统中是否有多张卡,如果有多张卡则使用多张卡不能浪费资源。 如果不想使用所有的卡,而是指定其中的几张卡,可以使用: `os.environ['CUDA_VISIBLE_DEVICES'] = '0,1'` 也可以在DataParallel方法中设定: `model = torch.nn.DataParallel(model,device_ids=[0,1])` 如果使用了多显卡,再使用模型的参数就需要改为model.module.xxx,例如: params = [p for p in model.module.aux_classifier.parameters() if p.requires_grad] params_to_optimize.append({"params": params, "lr": args.lr * 10}) 上面的都完成了就可以开始训练了,如下图: ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20223/25/1648176590761509030.png) # 测试 在开始测试之前,我们还要获取到调色板,新建脚本get_palette.py,代码如下: import json import numpy as np from PIL import Image # 读取mask标签 target = Image.open("./2007_001288.png") # 获取调色板 palette = target.getpalette() palette = np.reshape(palette, (-1, 3)).tolist() print(palette) # 转换成字典子形式 pd = dict((i, color) for i, color in enumerate(palette)) json_str = json.dumps(pd) with open("palette.json", "w") as f: f.write(json_str) 选取一张mask,然后使用getpalette方法获取,然后将其转为字典的格式保存。 接下来,开始预测部分,新建predict.py,插入以下代码: import os import time import json import torch from torchvision import transforms import numpy as np from PIL import Image from torchvision.models.segmentation import fcn_resnet50 导入程序需要的包文件,然在mian方法中: def main(): aux = False # inference time not need aux_classifier classes = 20 weights_path = "./save_weights/model_5.pth" img_path = "./2007_000123.jpg" palette_path = "./palette.json" assert os.path.exists(weights_path), f"weights {weights_path} not found." assert os.path.exists(img_path), f"image {img_path} not found." assert os.path.exists(palette_path), f"palette {palette_path} not found." with open(palette_path, "rb") as f: pallette_dict = json.load(f) pallette = [] for v in pallette_dict.values(): pallette += v - 定义是否需要aux_classifier,预测不需要aux_classifier,所以设置为False。 - 设置类别为20,不包括背景。 - 定义权重的路径。 - 定义调色板的路径。 - 读去调色板。 接下来,是加载模型,单显卡训练出来的模型和多显卡训练出来的模型加载有区别,我们先看单显卡训练出来的模型如何加载。 model = fcn_resnet50(num_classes=classes+1) print(model) # 单显卡训练出来的模型,加载 # delete weights about aux_classifier weights_dict = torch.load(weights_path, map_location='cpu')['model'] for k in list(weights_dict.keys()): if "aux_classifier" in k: del weights_dict[k] # load weights model.load_state_dict(weights_dict) model.to(device) 定义模型fcn_resnet50,num_classes设置为类别+1(背景) 加载训练好的模型,并将aux_classifier删除。 然后加载权重。 再看多显卡的模型如何加载 # create model model = fcn_resnet50(num_classes=classes+1) model = torch.nn.DataParallel(model) # delete weights about aux_classifier weights_dict = torch.load(weights_path, map_location='cpu')['model'] print(weights_dict) for k in list(weights_dict.keys()): if "aux_classifier" in k: del weights_dict[k] # load weights model.load_state_dict(weights_dict) model=model.module model.to(device) 定义模型fcn_resnet50,num_classes设置为类别+1(背景),将模型放入DataParallel类中。 加载训练好的模型,并将aux_classifier删除。 加载权重。 执行torch.nn.DataParallel(model)时,model被放在了model.module,所以model.module才真正需要的模型。所以我们在这里将model.module赋值给model。 接下来是图像数据的处理 # load image original_img = Image.open(img_path) # from pil image to tensor and normalize data_transform = transforms.Compose([transforms.Resize(520), transforms.ToTensor(), transforms.Normalize(mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225))]) img = data_transform(original_img) # expand batch dimension img = torch.unsqueeze(img, dim=0) 加载图像。 对图像做Resize、标准化、归一化处理。 使用torch.unsqueeze增加一个维度。 完成图像的处理后,就可以开始预测了。 model.eval() # 进入验证模式 with torch.no_grad(): # init model img_height, img_width = img.shape[-2:] init_img = torch.zeros((1, 3, img_height, img_width), device=device) model(init_img) t_start = time_synchronized() output = model(img.to(device)) t_end = time_synchronized() print("inference+NMS time: {}".format(t_end - t_start)) prediction = output['out'].argmax(1).squeeze(0) prediction = prediction.to("cpu").numpy().astype(np.uint8) np.set_printoptions(threshold=sys.maxsize) print(prediction.shape) mask = Image.fromarray(prediction) mask.putpalette(pallette) mask.save("test_result.png") 将预测后的结果保存到test_result.png中。查看运行结果: 原图: ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20223/25/1648176711259303424.png) 结果: ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20223/25/1648176719819890027.png) 打印出来的数据: ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20223/25/1648176755090525769.png) 类别列表: { "aeroplane": 1, "bicycle": 2, "bird": 3, "boat": 4, "bottle": 5, "bus": 6, "car": 7, "cat": 8, "chair": 9, "cow": 10, "diningtable": 11, "dog": 12, "horse": 13, "motorbike": 14, "person": 15, "pottedplant": 16, "sheep": 17, "sofa": 18, "train": 19, "tvmonitor": 20 } 从结果来看,已经预测出来图像上的类别是“train”。 # 总结 这篇文章的核心内容是讲解如何使用FCN实现图像的语义分割。 在文章的开始,我们讲了一些FCN的结构和优缺点。 然后,讲解了如何读取数据集。 接下来,告诉大家如何实现训练。 最后,是测试以及结果展示。 希望本文能给大家带来帮助。 完整代码: https://download.csdn.net/download/hhhhhhhhhhwwwwwwwwww/83778007
  • [其他] AI应用开发数据准备
    数据准备数据准备是非常重要的一个环节数据准备在现实准备中,面临着各种问题(数据采集难,数据质量差,数据冗余性大,标签少,数据分析难,人工采集成本大等)数据准备不仅重要,且花费工作量非常大,往往在项目开发中,数据相关的工作量占据80%,算法模型准备占据20%ModelArts在数据管理方面提供了一系列智能化数据服务,大大降低开发成本,提高开发效率1,数据采集(数据采集是开发人工智能应用时面临的首要问题)数据采集涉及,图像,视频,音频,结构化表格数据及环境信息等,对于实际应用和模型而言,数据越大越丰富,算法所达到的效果就越好(没有好的数据集,再好的算法,也达不到预期的效果),对深度学习而言,数据量越大,模型表现越好。数据采集的方法可分为几种  1,终端设备采集 (摄像头,无人机,移动设备等)2,网络数据采集(合法合规的情况下,自动捉取数据) 3,基于搜索的数据采集(从已有的数据库中搜索出类似的图像)2,对于大企业大规模数据的体现 1,数据来源具有分散性 2,数据储存具有多样性3,数据具有多模态属性 4,数据采集具有较强的业务相关性数据接入 (批量接入,实时流接入)对于已经采集好的数据,要进行大规模的进行分析,建模,则需要将数据接入应用开发平台上。批量接入,华为CMD,云数据迁移(一键式将数据在不同的存储之间做平滑迁移)实时流接入,华为 DIS,数据接入服务(一键式将数据迁移到云上)DLI,数据湖探索(对接不同数据) DWS 数据仓库服务 DDS文档数据库服务OBS对象储存服务(稳定、安全、高效、易用的云存储服务,具备标准Restful API接口,可存储任意数量和形式的非结构化数据)OBS在ModelArts实战开发环节中经常使用OBS资源是服务中存在的对象。在OBS中,资源包括桶和对象,可以在创建自定义策略时,通过指定资源路径来选择特定资源
  • [讨论交流] 3月20日 Compiler SIG 技术沙龙回顾
    1 寄存器分配问题的历史与演进B站视频地址:https://www.bilibili.com/video/BV1eF411x7Rh主讲人介绍:华保健中国科学技术大学软件学院助理教授,先进编译技术实验室主任,中国科学技术大学计算机系博士研究方向:程序设计语言和编译器技术、基于软件技术的计算机安全摘要:寄存器分配是编译器后端的重要优化,对于改进程序性能有显著作用。由于从理论上讲寄存器分配问题是 NP 难的,已有研究提出了各种启发式策略。本报告系统分析总结了经典的寄存器分配问题的历史发展和演进,全面总结了各种分析策略和算法。寄存器分配问题的研究分析,对于研究和构建面向 openEuler 等系统的下一代寄存器分配器有一定的指导作用。2 编译器矩阵扩展指令的支持与优化B站视频地址:https://www.bilibili.com/video/BV1fS4y1u7TE主讲人介绍:魏伟华为毕昇编译器主架构师,编译器领域技术专家研究方向:高性能计算编译优化技术,软硬件协同优化,调测调优工具开发,及新的编译技术研究方向探索等摘要:为了加速机器学习,越来越多的 CPU 架构添加了专门的 Matrix 或者 Tensor 单元,比如 Intel 推出的高级矩阵扩展指令集 AMX(Advanced Matrix Extensions),PowerPC 推出的矩阵乘辅助指令集 MMA(Matrix-Multiply Assist),以及 ARMv9 架构新增的可伸缩矩阵扩展指令集 SME(Scalable Matrix Extension)。本演讲将对上述几种 Matrix 扩展做简单的介绍,并分析当前业界主流编译器的 Matrix 支持情况,同时将会重点分享毕昇编译器上对 Matrix 的支持以及 SME 指令集的适配工作。3 Java 静态编译器的基类解耦方法及 Java/JavaScript 虚拟机上对象内存泄漏的在线检测方法B站视频地址:https://www.bilibili.com/video/BV1Nr4y1q7Dx主讲人介绍:史晓华北京航空航天大学软件学院副教授,博士,博导研究方向:编译技术,并行计算,软件工程等摘要:1)Java 静态编译器将面临某些语义解析的正确性挑战,其中较为关键的挑战之一就是所谓 “脆弱基类 Fragile Base Class”的解耦问题。我们将讨论包括 Java、SWIFT、Objective-C等典型面向对象语言编译器的解耦方法。2)Java 和 JavaScript 的“对象泄漏” 问题存在一定的相似性。我们将讨论如何在不同的 JVM和 JSVM上实现一种相似的在线检测机制,可以在较低负载的前提下,在程序运行过程中有效的捕捉到对象的泄漏信息。4 Python 在大数据领域实践和思考B站视频地址:https://www.bilibili.com/video/BV1EF411x7Zd主讲人介绍:张超腾讯专家工程师,原华为方舟编译器架构师研究方向:编译器和编程语言,大数据 / 机器学习、云计算等摘要:Python登顶编程语言榜单,已经不再是性能无所谓的脚本语言。从大数据现网经验来看,它正深刻影响着海量应用的功能和性能。2021年以来Microsoft、Facebook、Pyston等陆续开源了各自的Cpython高性能计划和代码。腾讯数据中心编译器团队以CPython为基础,针对公司数据科学场景需求和痛点,对CPython做了针对性优化。本演讲将对性能优化的进展、成果和思考进行介绍。5 HPL-AI benchmark for Kunpeng+Ascend AI-specific heterogeneous platformB站视频地址:https://www.bilibili.com/video/BV1zS4y1U7tX主讲人介绍:孙乔中科院软件所高级工程师, 硕士生导师研究方向:并行软件, 并行编程模型及计算机性能评测摘要:HPL-AI (High Performance Linpack, Artificial Intelligence) 是专为衡量计算平台面向 AI 任务处理能力的性能基准测试程序。本报告围绕华为鲲鹏 + 昇腾这一新兴 AI 专用异构平台,介绍我们在 HPL-AI 程序的实现和优化过程中所面对的挑战与解决方案。在优化过程中我们结合毕昇 C++ 的语言特性,实现了 HPL-AI 程序 Host+Device 侧的单源编程编译,充分挖掘 Device 侧算子性能,同时较好地兼顾了平台移植性。6 Kona Fiber 的进阶之路B站视频地址:https://www.bilibili.com/video/BV1kZ4y167pV主讲人介绍:郑淼高级工程师,深入参与腾讯自研协程 KonaFiber 和 ZGC 优化研究方向:协程和 ZGC摘要:协程可以让程序员用熟悉的同步编程方式取得类似异步编程的高性能和高并发收益,OpenJDK 社区正在前沿版本进行协程方案 Loom 的探索、开发,整体方案正在趋于完善。Kona Fiber 是腾讯在 jdk8、jdk11 上,兼容 Loom API 的开源协程实现。Kona Fiber 不仅让用户可以在当前主流 JDK 版本上体验未来 OpenJDK 社区的协程方案,同时一直在加强其可用性和易用性,使 Kona Fiber 能被更广泛、更便捷地应用到实际业务中。
  • [其他] 斯坦福大学人工智能指数(AI Index)2022年八个要点
    2022 年度发布的报告要点可总结为以下八点: 1. AI 领域私人投资猛增,投资集中度加剧。 2021 年 AI 领域的私人投资总额约为 935 亿美元,是 2020 年私人投资总额的两倍多,但新投资的 AI 公司数量却在继续下降,从 2019 年的 1051 家和 2020 年的 762 家公司减少到 2021 年的 746 家。2020 年有 4 轮 5 亿美元以上的融资,2021 年有 15 个。 2. 美国和中国主导了 AI 跨国合作。 尽管地缘政治紧张局势加剧,但从 2010 年至 2021 年,美中两国在 AI 出版物方面的跨国合作数量最多,自 2010 年以来增加了五倍。美中之间合作产生的出版物数量是英中之间合作数量(第二高)的 2.7 倍。 3. 语言模型比以往任何时候都更有能力,但也更有偏见。 大型语言模型在技术基准上创造了新的记录,但新数据表明,更大的模型也更易于从训练数据中反映出偏见。与 2018 年被认为是 SOTA 的 1.17 亿参数模型相比,2021 年开发的 2800 亿参数模型产生的「毒性」增加了 29%。随着时间的推移,这些系统的能力显著增强,既有性能增加也暴露出潜在愈加严重的偏见。 4. AI 伦理的兴起无处不在。 自 2014 年以来,关于 AI 公平性和透明度的研究呈爆炸式增长,在伦理相关会议上的相关出版物增加了五倍。算法公平和偏见已经从主要的学术追求转变为具有广泛影响的主流研究课题。近年来,具有行业关系的研究人员在以伦理为中心的会议上发表的论文同比增加了 71%。 5. AI 变得更负担得起,性能更高。 自 2018 年以来,训练图像分类系统的成本降低了 63.6%,而训练时间提升了 94.4%。在其他 MLPerf 任务类别(如推荐、对象检测和语言处理)中出现了训练成本更低但训练时间更快的趋势,有利于 AI 技术更广泛的商业应用。 6. 数据,数据,还是数据。 跨技术基准测试的顶级结果越来越依赖于使用额外训练数据来实现新的 SOTA 结果。截止 2021 年,本报告中 10 个基准测试中有 9 个 SOTA AI 系统接受了额外数据的训练。这种趋势隐式地有利于私人机构参与者访问大量数据集。 7. 关于 AI 的全球性立法比以往任何时候都多。 AI Index 对 25 个国家的 AI 立法记录的分析显示,被通过成为法令的包含 AI 的法案数量从 2016 年的 1 项增长到 2021 年的 18 项。2021 年,西班牙、英国和美国通过与 AI 相关的法案数量最多,平均通过了三项法案。 8. 机械臂越来越便宜 AI Index 调查显示,在过去六年中,机械臂手臂的价格中位数下降了 4 倍,从 2016 年的每只手臂 50000 美元降至 2021 年的 12845 美元。机器人研究变得更易于获得和负担得起。 报告下载地址:https://aiindex.stanford.edu/report/
总条数:7896 到第 页
上滑加载中