• [体验官] 与PaaS产品一起成长的故事:Z市台风模型在地质一体化应用咨询实战“术”分享——借助PAAS层的Model Art平台优化设计模型训练流程
    上次跟客户单位讨论台风模型的工作流程,客户是地质专家,对业务非常熟悉,可是一直认为我们的台风模型不符合业务流,对模型在训练阶段前稍微做了些定制,发现对模型应用非常有帮助。    模型在投入新应用前,有三个阶段:微调、预训练和训练。    客户对模型微调有一些改动,提出用全参调试。他指定了要用的关键参数,风力、浪高、有效波高、路径......在地质院每天会商会议上,各省市主要核对的也是这些参数。客户对参数做了一些阈值预设。    指定了参数后,还有预训练,这里涉及训练数据集和算子。 台风的训练数据是以往历史台风记录,而验证数据集则选定最近会商发布的台风记录。算子是一种逻辑算法,也就是教会计算机认识这些数据集,训练数据集之间有什么关联。算子也分为几种台风,例如海上产生的台风、大陆产生的台风等,每一种类型都有不同的算子。     进入训练阶段,就要开始跟云平台关联了。云平台是一种能力平台,上面有各种各样的OBS桶,有大的,有小的,有适合装文件数据的,有适合装图片数据的......台风记录通常是文件文档,因此选择大的适合装文件数据的OBS桶。这个桶就是在存储台风模型训练过程中产生的数据,以及训练后模型输出的结果数据。      台风模型后,就是具备一定分析推理能力的智能体,但上面说过,还要配置一定的业务流程才能让智能体更适合业务使用。业务流程在Model Art的studio中调试,这个平台可以进行流程改造,让台风模型输出相似路径后可以直接嵌入各种场景中使用,Model Art studio就像一个工作间,可以在这里创造和定制模型。
  • [体验官] 与PaaS产品一起成长的故事:Z市台风预测模型在地质领域首次应用技术咨询实战“术”分享——AI架构优化6:PAAS平台之上茁壮成长的AI能力
         在这次技术咨询项目中,AI架构的设计,让台风预测模型这项人工智能技术首次在地质领域应用。引入大模型,可不是简单的上层模型添加进来,而是一项系统工程。     台风模型是小模型,在需求分析阶段,就要先搜集台风模型采用的算法和了解模型预训练的数据集,这是模型的大脑和成长养分。台风模型的算法,主要是知识图谱的关联算法。在以往的台风路径中,把一张张图片打上标识并分析两张图之间的相似量。比如在浪高10米的台风图片中,有几张台风的轨迹坐标都非常相似,符合这些要素的台风就是相似台风,把共性路径坐标抽取出来,形成一条路径。新的台风来临,如果要素跟这条路径相似,那预测这个台风下一步的轨迹也会大致沿着路径前进。   为了让算法能顺利发挥作用,它需要训练,为此我们把院内以往积累的台风预警报告文件都发给了模型,但这是非结构化数据,模型还不能完全读懂,因此模型外还做了一个应用服务,跟院内每天台风预测信息系统对接,获取当天的人工数据。    此系统是院内早些年搭建的应用系统,国内所有省份每天都会进行气象会商,通过原始却有效的方法,人们进行着年复一年,日复一日的协同交流工作。这就像没有发明对讲机以前,村里通讯基本靠大喇叭;没有大喇叭以前,基本靠跑动交流......     然而,人会疲惫,机器不会。这些结构化数据读取后,模型就会慢慢累积历史上本地经过的台风活动的轨迹、风力、浪高、风向.......这是自我学习的过程。除了这模型本身,下层依赖的Model Art平台,下回我们接着聊它是如何支撑台风模型实战。欢迎点赞原文和关注公众号“科技江河”,如果喜欢,欢迎打赏呗,感谢。
  • StoryDiffusion漫画创作节活动分享-VOD/创意
    活动链接:https://pangu.huaweicloud.com/gallery/asset-detail.html?id=c1cf0774-59ce-44fc-a4a8-8fcf026d2fec实验注意步骤:1. 需要切换规格为8核,64G2. python版本需要切换为python-3.10.10完成后会生成一个URL:优点:一键式体验,非常容易上手,灵活性很强建议:1. 增加更多实际案例和详细的操作步骤,特别是对于复杂功能和高级应用场景的教程,帮助用户更好地理解和掌握平台的使用方法2. 进一步多语言版本,满足各种语言背景用户的需求,不应只适配英文传入
  • [产品体验官] 【开发者日•北京站】产品体验官:使用ModelArts一键玩转丑萌黏土风滤镜
    华为云开发者日·北京站来啦!参加“ModelArts 一站式AI开发平台:一键玩转丑萌黏土风滤镜”体验项目提出你的建议或使用体验有机会获得开发者盲盒礼包惊喜不容错过,快叫上小伙伴一起来参加吧~【体验项目】ModelArts 一站式AI开发平台:一键玩转丑萌黏土风滤镜【活动时间】2024年12月23日-12月31日【参与方式】直接在此活动帖下方回帖提建议/提建议即可比如对产品功能的改进建议、对活动流程的感想、对现场活动的感悟等等PS:不要少于30字哦~【获奖规则】奖项设置有效回复楼层评选条件获奖名额激励礼品优质建议奖20对产品功能有改进价值的建议1名开发者盲盒礼品价值50-100元积极反馈奖20优质建议奖轮空的情况下进行抽取每满20层抽取1名开发者盲盒礼品价值50元【活动规则】1、本帖的回帖建议不少于30字,仅限于对“ModelArts 一站式AI开发平台:一键玩转丑萌黏土风滤镜”体验项目,其他项目建议不参与此次活动,否则将视为无效内容。2、本次活动将根据实际参与情况发放奖励,包括但不限于用户百分之百中奖或奖项轮空的情况;以上奖品均为实物奖品,具体发放视出库情况而定;3、活动预计于结束后七天内完成奖项公示,并于结束后15个工作日内完成邮寄。【温馨提示】1、请务必使用个人实名账号参与活动(IAM、企业账号等账号参与无效)。如一个实名认证对应多个账号,只有一个账号可领取奖励,若同一账号填写多个不同收件人或不同账号填写同一收件人,均不予发放奖励。2、所有获得奖品的获奖用户,请于获奖后3日内完成实名认证,否则视为放弃奖励。
  • [热门活动] 【公告】【获奖公示】华为云学堂(AI系列直播第七期) | 12月10日直播:基于华为云AI的在线实验教学
    恭喜以下获奖用户,获奖名单公示如下:本期(华为云AI系列直播第七期)直播获奖公示时间为:2024.12.18-2024.12.25,请以上未反馈获奖信息的伙伴,尽快前往填写“用户获奖信息收集问卷”进行反馈。如过了公示期还未反馈信息的,将视为自动放弃获取资格。①请务必使用本人实名账号参与活动(IAM、企业账号等账号参与无效)。为保证活动的公平公正,华为云有权对恶意刷活动资源(“恶意”是指为获取资源而异常注册账号等破坏活动公平性的行为,黑产用户不计入活动统计),利用资源从事违法违规行为的用户收回奖励资格,参与活动账号需和得奖收件人为同一人,否则不予发放奖励。 ②为确保活动公平,给予每一位云学堂用户激励,由华为云学堂发起的所有直播活动中,同一华为云账号限对应一个兑奖人信息(包括但不限于姓名、联系电话、地址等),如遇不同华为云账号参与抽奖,但使用相同兑奖人信息,则中奖机会作废,不予兑奖,请知悉。 注:同一华为云账号在不同直播活动中不限制参与抽奖。同一场直播中,同一个IP/电话,只可中奖一次(优先发高价值礼品)。在同一系列直播活动中,同一个兑奖人信息(包括但不限于姓名、联系电话、地址等),每种奖项类型只可中一次。 ③本活动规则由华为云在法律规定范围内进行解释。华为云保留不时更新、修改或删除本活动规则的权利。上述更新、修改或删除于公布时即时生效,用户应当主动查阅本活动规则的最新内容。  感谢各位伙伴参与本次活动,欢迎关注华为云学堂的直播活动。
  • [技术干货] 华为布道师中国人民大学站ICT及华为云技术布道
    2024年11月22日,华为开发者布道师于人民大学站开展布道师华为ICT创新赛和编程赛技术案例分享技术布道案例分享,并在分享中对相关疑问分析解答。首先介绍了基于鸿蒙生态的低光照增强安全辅助驾驶系统:低光照增强安全辅助驾驶系统以华为云作为训练的平台,以MindSpore作为框架,通过整合红外相机与可见光相机的特征,利用特征互补模型在软件平台控制下进行数据处理。系统采用Hispark IPC通讯协议实现各设备间的通信,包括红外相机、可见光相机、深度相机以及车辆显示屏等,这些设备采集的数据会上传到华为云进行进一步的处理和存储。在华为云的平台上,智能决策单元和传感器单元协同工作,收集并分析环境信息,同时应用云端算力对算法模型进行部署以优化系统性能。系统还具备低光照工作能力,能够实时显示感知数据,并在必要时进行决策预警,确保驾驶安全。此外,系统还展示了与Harmony OS生态的兼容,如手表等设备的联动提醒,以及红外点阵投影等高级功能,为驾驶者提供全面的安全辅助。并介绍了技术方案所涉及的关键技术:(1)传感器标定与图像配准技术:应用传感器标定与图像配准技术,对传感器采集到的图像数据进行进一步的配准以及标定。其中,本技术包括了双目视觉系统、交通目标识别方法、深度迭代配准算法来实现图像标定以及配准。其中,双目视觉系统基于深度迭代的配准方法主要使用CNN进行特征的提取或者代替传统配准算法中相似性度量的计算函数。使用深度学习网络对输入的图像对进行特征提取与相似性测度,能够实现配准图像的生成与图像配准精度的判别。在实际检测中,大大降低了系统的计算时间,提高了图像配准以及标定的精度。(2)图像特征融合感知技术在图像处理过程中还应用到了图像特征融合感知技术。在对标定以及配准好的图像进行特征融合的过程中,项目团队通过Mindspore训练的AI神经运算专用芯片,运用多源数据融合感知技术与交通安全隐患的智能检测从而识别不同模型,实现多源数据的精确融合。最终,在这些技术的应用下,通过不同类型相机采集到的图像特征进行融合感知,在低光照等不同恶劣环境(3)辅助决策预警与风险评估技术在辅助决策以及预警层面应用HiSpark-WiFi-IoT套件为主的智能决策模块来进行实现。通过紧急避障系统中搭建的感知层、规划层、决策层实现安全隐患智能评定与决策预警的相关功能,为显示交互单元提供安全数据信息。在辅助决策预警与风险评估的功能中,终端显示给用户也是十分关键的。所以在显示与交互的单元中开发了搭载Harmony OS的显示终端、多频报警音响等显示报警装置,运行配套开发的鸿蒙APP,实时显示感知数据与决策预警判定结果,可以在低光照、雨雪雾霾等全天候全场景工况下辅助驾驶人员进行判断,提升驾驶安全性与可靠性。接着介绍了基于华为云的制造业咨询服务微调问答助手案例:构建了私有的工业中文知识库问答系统,旨在为用户提供自定义友好、离线可运行的全面解决方案。​我们的系统的亮点包括:多模态交互。支持文本输入、语音输入和文件上传等多种输入方式,实现了多模态交互。用户可以根据实际需求选择最方便的交互方式,提高了系统的灵活性和适用性。同时,多模态交互也考虑到了用户的个体差异,满足了不同用户的使用习惯和需求。多功能对话界面。对话界面不仅支持基本的文本对话,还提供了多会话管理、对话模式切换和语音输入等功能。用户可以方便地切换不同对话会话,选择不同对话模式,以及通过语音输入进行自然交互。这种多功能对话界面提升了用户体验,使得系统更易于使用和操作。权限管理与安全性。系统引入了权限管理功能,通过登录注册和权限认证,确保只有经过授权的用户才能访问和操作知识库。这一功能提高了系统的安全性,防止未经授权的访问和操作,保护敏感信息免受泄露和篡改。知识库管理。系统提供了完整的知识库管理功能,包括知识库创建、文件上传、向量数据库构建、文件检索等。用户可以方便地管理知识库中的信息,通过文件对话和知识库问答等方式进行信息检索,满足不同场景和需求。检索增强的大模型。系统整合了检索增强的大模型,包括文件对话、知识库问答、搜索引擎问答和自定义Agent问答等功能。通过这些功能,系统可以更全面、准确地回答用户的问题,提供更丰富的信息服务。同时,用户可以选择不同的检索方式,根据实际需求获取最合适的答案。基于华为云ModelArts、企业级华为云主机的详细解决方案如下所示:首先介绍使用智能问答助手连接企业知识库实时获取信息。在权限管理方面,智能问答助手上运行着基于用户认证机制,利用安全框架,对用户进行身份验证,确保只有授权用户才能访问知识库;使用加密协议上传用户信息到云端服务中;使用专用SDK与API能够方便地对用户权限进行控制与管理。在系统实现方面,我们使用了微服务架构通过streamlit-authenticator模块对用户进行身份验证;并将认证结果通过后端服务传输到前端界面进行展示;前端界面使用HTML、CSS和JavaScript技术,通过发送请求获得认证结果,使用WebSocket技术实时更新用户界面。其次,介绍整合多模态对话输入技术,实现了与用户的高效交互。它支持传统的文本输入方式,同时引入了先进的语音输入识别技术,能够准确捕捉并实时转换用户的语音指令为文字,以便进行后续处理。这一语音输入功能的实现,依托于Streamlit和Bokeh库,通过在用户界面上设置一个专门的按钮,用户点击后即可激活语音识别。系统内部,js_on_event事件监听器与webkitSpeechRecognition对象协同工作,确保语音识别的准确性和实时性。此外,Omniind还提供了多种对话模板供用户选择,以适应不同咨询场景的需求,从而提升企业咨询服务的质量和效率。最后说明问答助手在知识库构建方面,预先构建了一个事实对应的知识库,用于存储和组织信息。当用户提出问题时,系统会进行问题解析,然后通过知识检索在知识库中寻找相关信息,最终生成答案。在实现过程中,助手采用了知识库构建、问题解析、知识检索和答案生成等一系列步骤,避免推理跳跃问题,确保了回答的准确性和相关性。为了验证系统的有效性,进行了功能测试。测试中,基于自定义数据集创建了Digital Twin领域的知识库,并提出了一系列问题,观察系统是否能够正确检索知识库并给出相关答案。此外,系统还提供了一个用户界面,用户可以通过这个界面与知识库进行交互,提出问题并获取答案。这个界面设计直观,易于使用,使得用户能够方便地获取所需的信息。通过这种方式,Omniind智能问答助手不仅提高了信息检索的效率,也提升了用户获取知识的体验。本次项目展示是华为开发者布道师​首次对ICT实战技术案例及华为云企业级边云部署行业解决方案进行高校技术布道,希望后续能够带给大家更多具有行业价值和实践意义的布道案例 。欢迎大家加入华为开发者布道师的大家庭,成为优秀的华为云开发者!
  • StoryDiffusion漫画创作节活动分享-VOD/创意
    进入活动链接:https://pangu.huaweicloud.com/gallery/asset-detail.html?id=c1cf0774-59ce-44fc-a4a8-8fcf026d2fec1、切换规格为64GB的限时免费规格2、点击执行3、然后执行:4、继续执行5、切换python版本,这个很重要!!!!,6、安装和启动运行7、最后生成了一个链接:Running on public URL: https://0dfb450b322dd89a40.gradio.live8、点击该URL,就可以开始使用了角色:man  活动: play basketball,选择风格类型使用效果1,这个是“线条艺术”这个是“油画”效果这个是“日本动画”风格该模型部署起来很方便,模型很强大,伙伴们可以多多探索,多少挖掘
  • StoryDiffusion漫画创作节活动分享-VOD/创意
    跟着步骤走,也算是挺简单的,就是huggingface拉取model镜像会有网络问题,不清楚是不是只有我一人遇到。​
  • [技术干货] ModelArts_AI开发平台之交通信号标志检测与识别
    【任务背景】近年来,随着人工智能和传感器技术的快速进步,自动驾驶汽车技术也取得了长足发展。从最初的辅助驾驶系统到如今可实现完全自主驾驶的汽车,自动驾驶技术正在改变我们的出行方式。其中,交通信号识别技术作为自动驾驶系统的核心功能之一,能够准确感知和识别道路上的各类交通标志、信号灯等,为车辆提供精准的行驶决策依据,确保行车安全性和效率。基于视觉的交通信号标志检测与识别任务旨在开发出精准高效的识别算法,助力自动驾驶汽车技术的进步。任务包含步行、非机动车行驶、环岛行驶、机动车行驶等多种交通信号标志类别,开发者会利用到计算机视觉领域的目标检测、关键点检测、图像分类等基础技术,为提升识别效率,也可以拓展使用剪枝、量化、蒸馏等模型方面的优化技术。ModelArts云平台提供任务相关的数据处理、模型训练、应用部署等技术文档及学习课程材料,助力开发者学习相关技术,了解实践操作。【数据说明】本次任务需要识别以下16种类别的交通标识,类别编号与定义如下表:i1i2i3i4Walk步行Non_motorized vehicles非机动车行驶Round the island 环岛行驶Motor vehicle 机动车行驶i5i6i7i8Keep on the right side of the road靠右侧道路行驶Keep on the left side of the road 靠左侧道路行驶Drive straight and turn right at the grade separation 立体交叉直行和右转弯行驶Drive straight and turn left 立体交叉直行和左转弯行驶i9i10i11i12Honk 鸣喇叭Turn right 向右转弯Turn left and right 向左向右转弯Turn left 向左转弯i13i14i15il50One way, straight 直行Go straight and turn right 直行和向右转弯Go straight and turn left 直行和向左转弯Minimum Speed Limit 最低限速50【任务说明】本任务的测试集为200张图片,这些图片为中国多个城市街景的高分辨率图像,每张图片包含1种交通信号标识。数据集图片示例检测结果以图片为单位输出其中包括交通信号标识的类别、坐标与置信度,每张图片输出一个结果,格式为json字符串,字段说明如下: { "detection_classes": ["i1"], "detection_boxes": [[576, 423, 669, 967]], "detection_scores": [0.4796633720397949] }• detection_classes:指图片中目标的类别,参见上面的数据说明。• detection_boxes:指图片中目标位置的水平矩形框坐标,坐标表示为[ymin,xmin,ymax,xmax]。• detection_scores:指检测结果的置信度。【案例教学】【准备数据集】# 步骤1:从OBS迁移数据集 import moxing as mox mox.file.copy_parallel("obs://trafficbuckets/dataset/update_traffic_sign.zip", "/home/ma-user/work/dataset/update_traffic_sign.zip") # 形参:源文件->指定位置# 步骤2:解压数据集并更改名称为update_traffic_sign import os os.system('unzip /home/ma-user/work/download/update_traffic_sign.zip -d /home/ma-user/work/dataset') os.system('mv /home/ma-user/work/dataset/"update traffic sign" /home/ma-user/work/dataset/update_traffic_sign')# 生成train和val图片名文本文件 from glob import glob import random # hyper parameter train_pic_rate = 0.7 # you can change! # 该目录存储图片数据 patch_fn_list = glob('/home/ma-user/work/dataset/update_traffic_sign/images/*.jpg') # you can change! # 返回存储图片名的列表,不包含图片的后缀 patch_fn_list = [fn for fn in patch_fn_list] # 将图片打乱顺序 random.shuffle(patch_fn_list) # 按照7:3比例划分train和val train_num = int(train_pic_rate * len(patch_fn_list)) train_patch_list = patch_fn_list[:train_num] valid_patch_list = patch_fn_list[train_num:] # produce train/valid/trainval txt file split = ['train', 'val', 'trainval'] # produce train/valid/trainval txt file split = ['train2017', 'val2017', 'trainval2017'] for s in split: # 存储文本文件的地址 save_path = '/home/ma-user/work/dataset/update_traffic_sign/' + s + '.txt' # you can change! if s == 'train2017': with open(save_path, 'w') as f: for fn in train_patch_list: # 将训练图像的地址写入train.txt文件 f.write('%s\n' % fn) elif s == 'val2017': with open(save_path, 'w') as f: for fn in valid_patch_list: # 将验证图像的地址写入val.txt文件 f.write('%s\n' % fn) elif s == 'trainval2017': with open(save_path, 'w') as f: for fn in patch_fn_list: # 将所有图像名的编号写入trainval.txt文件 f.write('%s\n' % fn) print('Finish Producing %s txt file to %s' % (s, save_path))# 按照train.txt和val.txt将images分类 import shutil import os def my_move(trainlistdir,vallistdir,traindir,valdir): # 打开train.txt文件 fopen = open(trainlistdir, 'r') # 读取图片名称 file_names = fopen.readlines() for file_name in file_names: file_name=file_name.strip('\n') # 图片的路径 traindata = file_name # 把图片复制至traindir路径下 # 如果目标文件夹不存在,则创建它 if not os.path.exists(traindir): os.makedirs(traindir) shutil.move(traindata, traindir) # 同上 fopen = open(vallistdir, 'r') file_names = fopen.readlines() for file_name in file_names: file_name=file_name.strip('\n') valdata = file_name # 如果目标文件夹不存在,则创建它 if not os.path.exists(valdir): os.makedirs(valdir) shutil.move(valdata, valdir) # 存储训练图片名的txt文件地址 trainlistdir=r'/home/ma-user/work/dataset/update_traffic_sign/train2017.txt' # 存储验证图片名的txt文件地址 vallistdir=r'/home/ma-user/work/dataset/update_traffic_sign/val2017.txt' # coco格式数据集的train2017目录 traindir=r'/home/ma-user/work/dataset/update_traffic_sign/images/train2017' # coco格式数据集的val2017目录 valdir=r'/home/ma-user/work/dataset/update_traffic_sign/images/val2017' my_move(trainlistdir,vallistdir,traindir,valdir)# 按照train.txt和val.txt将labels分类 import shutil import os def my_move(datadir, trainlistdir,vallistdir,traindir,valdir): # 打开train.txt文件 fopen = open(trainlistdir, 'r') # 读取图片名称 file_names = fopen.readlines() for file_name in file_names: file_name=file_name.strip('\n') # 图片的路径 tmp_list = file_name.split('/') tmp_list[-2] = 'labels' train_sp = os.path.join('/', *tmp_list) traindata = train_sp.split('.jpg')[-2] + '.txt' # 把图片复制至traindir路径下 # 如果目标文件夹不存在,则创建它 if not os.path.exists(traindir): os.makedirs(traindir) shutil.move(traindata, traindir) # 同上 fopen = open(vallistdir, 'r') file_names = fopen.readlines() for file_name in file_names: file_name=file_name.strip('\n') tmp_list_v = file_name.split('/') tmp_list_v[-2] = 'labels' val_sp = os.path.join('/', *tmp_list_v) valdata = val_sp.split('.jpg')[-2] + '.txt' # 如果目标文件夹不存在,则创建它 if not os.path.exists(valdir): os.makedirs(valdir) shutil.move(valdata, valdir) # labels存储地址 datadir=r'/home/ma-user/work/dataset/update_traffic_sign/labels/' # 存储训练图片名的txt文件地址 trainlistdir=r'/home/ma-user/work/dataset/update_traffic_sign/train2017.txt' # 存储验证图片名的txt文件地址 vallistdir=r'/home/ma-user/work/dataset/update_traffic_sign/val2017.txt' # coco格式数据集的train2017目录 traindir=r'/home/ma-user/work/dataset/update_traffic_sign/labels/train2017' # coco格式数据集的val2017目录 valdir=r'/home/ma-user/work/dataset/update_traffic_sign/labels/val2017' my_move(datadir, trainlistdir,vallistdir,traindir,valdir)# 对images和labels重命名 import os def rename_img_label(images_folder, labels_folder): # 获取文件夹中的文件列表 images = sorted(os.listdir(images_folder)) labels = sorted(os.listdir(labels_folder)) # 重新命名文件 for i, (image_file, label_file) in enumerate(zip(images, labels)): # 生成新的文件名 new_name = f"{i + 1:03d}" # 格式化为三位数 image_ext = os.path.splitext(image_file)[1] # 获取图片扩展名 label_ext = os.path.splitext(label_file)[1] # 获取标签扩展名 # 构建新的完整路径 new_image_path = os.path.join(images_folder, f"{new_name}{image_ext}") new_label_path = os.path.join(labels_folder, f"{new_name}{label_ext}") # 重命名文件 os.rename(os.path.join(images_folder, image_file), new_image_path) os.rename(os.path.join(labels_folder, label_file), new_label_path) print("文件重命名完成。") # 设置train文件夹路径 train_images_folder = '/home/ma-user/work/dataset/update_traffic_sign/images/train2017' train_labels_folder = '/home/ma-user/work/dataset/update_traffic_sign/labels/train2017' # 设置val文件夹路径 val_images_folder = '/home/ma-user/work/dataset/update_traffic_sign/images/val2017' val_labels_folder = '/home/ma-user/work/dataset/update_traffic_sign/labels/val2017' rename_img_label(train_images_folder, train_labels_folder) rename_img_label(val_images_folder, val_labels_folder)import os # 设置文件夹路径 folder_train = '/home/ma-user/work/dataset/update_traffic_sign/images/train2017' folder_val = '/home/ma-user/work/dataset/update_traffic_sign/images/val2017' output_file_train = '/home/ma-user/work/dataset/update_traffic_sign/train2017.txt' # 输出的 TXT 文件名 output_file_val = '/home/ma-user/work/dataset/update_traffic_sign/val2017.txt' # 输出的 TXT 文件名 def writetxt(floder_path, outputfilename): # 获取文件夹中的文件列表 file_names = os.listdir(floder_path) file_names.sort() # 将文件名写入 TXT 文件 with open(outputfilename, 'w') as f: for file_name in file_names: f.write(os.path.join(floder_path, file_name) + '\n') print(f"文件名已写入 {outputfilename}。") writetxt(folder_train, output_file_train) writetxt(folder_val, output_file_val)# 生成json文件(可选) import glob import json import os from PIL import Image def yolo_to_coco_for_subset(yolo_images_folder, yolo_labels_folder, categories): # Initialize COCO dataset structure for the subset coco_format = { "images": [], "annotations": [], "categories": [] } # Add category information for i, category in enumerate(categories): coco_format["categories"].append({ "id": i + 1, "name": category, "supercategory": "none" }) image_id = 0 annotation_id = 0 # image_id = -1 # annotation_id = -1 for image_file in glob.glob(f"{yolo_images_folder}/*.jpg"): print(image_file) # Read image to get width and height with Image.open(image_file) as img: width, height = img.size # Add image information with size coco_format["images"].append({ "id": image_id + 1, "file_name": os.path.basename(image_file), "width": width, "height": height }) # Corresponding annotation file yolo_annotation_file = os.path.join(yolo_labels_folder, os.path.basename(image_file).replace(".jpg", ".txt")) if os.path.exists(yolo_annotation_file): with open(yolo_annotation_file, "r") as file: for line in file: category_id, x_center, y_center, bbox_width, bbox_height = map(float, line.split()) # Convert YOLO format to COCO format x_min = (x_center - bbox_width / 2) * width y_min = (y_center - bbox_height / 2) * height coco_bbox_width = bbox_width * width coco_bbox_height = bbox_height * height # change image_id img_id = int(image_file.split('/')[-1].split('.')[-2]) print(img_id) # Add annotation information coco_format["annotations"].append({ "id": annotation_id + 1, "image_id": img_id, # image_id + 1, "category_id": int(category_id) + 1, "bbox": [x_min, y_min, coco_bbox_width, coco_bbox_height], "area": coco_bbox_width * coco_bbox_height, "segmentation": [], # Optional "iscrowd": 0 }) annotation_id += 1 image_id += 1 return coco_format def save_coco_format(coco_format, output_file): with open(output_file, "w") as file: json.dump(coco_format, file, indent=4) # Example usage yolo_base_folder = "/home/ma-user/work/dataset/update_traffic_sign/" # 父级文件夹 file_path = '/home/ma-user/work/dataset/update_traffic_sign/classes.txt' # 替换为你的txt文件路径 train_json_save_path = '/home/ma-user/work/dataset/update_traffic_sign/annotations/instances_train2017.json' # train json保存路径 val_json_save_path = '/home/ma-user/work/dataset/update_traffic_sign/annotations/instances_val2017.json' # val json保存路径 # 判断文件夹是否存在,若不存在则创建 # 判断文件夹是否存在,若不存在则创建 list_name_train = train_json_save_path.split('/')[:-1] if not os.path.exists(os.path.join(*list_name_train)): os.mkdir(os.path.join('/', *list_name_train)) # 读取txt文件并将每一行转换为列表 categories = [] with open(file_path, 'r') as file: lines = file.readlines() # 读取文件的所有行 for line in lines: categories.append(line.strip()) # 输出结果 print(categories) # Convert train set train_coco_format = yolo_to_coco_for_subset( os.path.join(yolo_base_folder, "images/train2017"), os.path.join(yolo_base_folder, "labels/train2017"), categories ) save_coco_format(train_coco_format, train_json_save_path) # Convert val set val_coco_format = yolo_to_coco_for_subset( os.path.join(yolo_base_folder, "images/val2017"), os.path.join(yolo_base_folder, "labels/val2017"), categories ) save_coco_format(val_coco_format, val_json_save_path)# 查看数据集 import os import random import cv2 import numpy as np from matplotlib import pyplot as plt %matplotlib inline # classes = ["open", "short","mousebite","spur","copper",'pin-hole'] # 类别 classes = ['i1', 'i10', 'i11', 'i12', 'i13', 'i14', 'i15', 'i2', 'i3', 'i4', 'i5', 'i6', 'i7', 'i8', 'i9', 'i50'] file_path = "/home/ma-user/work/dataset/update_traffic_sign/images/train2017" file_list = os.listdir(file_path) img_paths = random.sample(file_list, 4) img_lists = [] for img_path in img_paths: img_path = os.path.join(file_path, img_path) img = cv2.imread(img_path) h, w, _ = img.shape tl = round(0.002 * (h + w) / 2) + 1 color = [random.randint(0, 255) for _ in range(3)] if img_path.endswith('.png'): with open(img_path.replace("images", "labels").replace(".png", ".txt")) as f: labels = f.readlines() if img_path.endswith('.jpg'): with open(img_path.replace("images", "labels").replace(".jpg", ".txt")) as f: labels = f.readlines() for label in labels: l, x, y, wc, hc = [float(x) for x in label.strip().split()] x1 = int((x - wc / 2) * w) y1 = int((y - hc / 2) * h) x2 = int((x + wc / 2) * w) y2 = int((y + hc / 2) * h) cv2.rectangle(img, (x1, y1), (x2, y2), color, thickness=tl, lineType=cv2.LINE_AA) cv2.putText(img,classes[int(l)],(x1,y1-2), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,111,222), 3, cv2.LINE_AA) img_lists.append(cv2.resize(img, (1280, 720))) image = np.concatenate([np.concatenate(img_lists[:2], axis=1), np.concatenate(img_lists[2:], axis=1)], axis=0) plt.rcParams["figure.figsize"] = (20, 10) plt.imshow(image[:,:,::-1]) plt.axis('off') plt.show()【准备mindyolo模型】链接:mindyolo# 步骤1:从OBS迁移数据集 import moxing as mox mox.file.copy_parallel("obs://trafficbuckets/source_code/mindyolo.zip", "/home/ma-user/work/mindyolo.zip") # 形参:源文件->指定位置【修改配置文件】1.yolov8n.yaml以及其继承的coco.yaml,hyp.scratch.low.yaml,yolov8-base.yaml的配置信息coco.yamldata: dataset_name: update_traffic_sign # you can change! train_set: /home/ma-user/work/dataset/update_traffic_sign/train2017.txt # ./coco/train2017.txt # 118287 images # you can change! val_set: /home/ma-user/work/dataset/update_traffic_sign/val2017.txt # ./coco/val2017.txt # 5000 images # you can change! test_set: /home/ma-user/work/dataset/update_traffic_sign/test2017.txt # 20288 of 40670 images, submit to https://competitions.codalab.org/competitions/20794 # you can change! nc: 16 # class names names: ['i1', 'i10', 'i11', 'i12', 'i13', 'i14', 'i15', 'i2', 'i3', 'i4', 'i5', 'i6', 'i7', 'i8', 'i9', 'i50'] # you can change! train_transforms: [] test_transforms: []yolov8-base.yamlepochs: 500 # total train epochs # you can change! per_batch_size: 2 # 16 * 8 = 128 img_size: 2048 iou_thres: 0.7 conf_free: True sync_bn: True opencv_threads_num: 0 # opencv: disable threading optimizations network: model_name: yolov8 nc: 16 # number of classes # you can change! reg_max: 16 stride: [8, 16, 32] ...【执行训练】python train.py --config ./configs/yolov8/yolov8n.yaml --run_eval True
  • [热门活动] StoryDiffusion漫画创作节活动分享-VOD/创意
    看到有 绘梦AI:StoryDiffusion漫画创作节的活动, 迫不及待的前来参加。整环境到模型,过程非常简单,傻瓜式操作,到了激动人心的模型测试部分。测点什么呢?有例子,先试一试:嗯,效果还不错,那我测测什么呢。。。作为一个球迷,昨晚刚好有欧冠,曼城又没赢,3球领先被逼平,瓜瓜鼻子都挠破了。。。测这个吧来, 角色文字描述:[Guardiola]A man wearing a black suit, bald原谅我,必须特点突出~~~接下来漫画描述:[Guardiola]  Manchester city football club coach [Guardiola] in an UEFA Champions League match [Guardiola] vs Feyenoord football club [NC]The scoreboard displays 3-0. [Guardiola]Leading 3:0  [NC]The scoreboard displays 3-3. [Guardiola]tie 3:3 [Guardiola]scratched his nose [Guardiola]cry结果如下: ①嗯,看着不太像教练。。。②咦,这张有点小帅。。。③额,这是上场了哈。。。④嗯?3:0去哪了呢。。。⑤嗯,淡定。。。⑥额?3:3跑哪去了,这记分牌记啥呢。。。⑦哈哈,保持风度。。。⑧受不了了。。。⑨哭吧哭吧不是罪。。。。整体体验感还不错,一些专业的领域,可能需要自己提供图片吧。耗时也不算长,挺有意思的。就这样~~
  • [圈层活动] 【报名申请千万Token免费使用】MaaS体验官来啦!
    MaaS体验官来啦!👉🏻什么是Maas?Model-as-a-Service( MaaS ) “模型即服务” 是云计算领域一种新的服务模式,是将机器学习模型部署到企业端提供给用户使用的服务。区别于售卖算力服务器为主的Iaas服务,MaaS服务为用户提供一站式的大模型(AI)开发和使用平台,通过MaaS,开发人员可以简单调用模型,无需了解复杂算法和实现细节。MaaS帮助企业实现高效智能的数据分析和决策,降低模型部署门槛。📣可体验内容:--千万Token免费使用--30+主流开源大模型支持--零代码、免配置的一站式模型开发托管服务💡体验流程:(11月26日-11月29日)1、群接龙报名:在微信群中报名,尚未报名的开发者,请添加【HCDE小助手】微信号​2、申请体验白名单:申请权限将于T+1日内完成审核,完成后即可开启体验申请链接:https://console.huaweicloud.com/modelarts/?region=cn-east-4&locale=zh-cn#/model-studio/homepage3、提交意见反馈,:提交意见反馈,请通过华为云云声平台反馈反馈标题模板:【HCDE体验官第三期】xxxxxxx(VOD标题)VOD提交链接:https://bbs.huaweicloud.com/suggestion3、参加线上座谈会(11月29日)参加华为云组织的线上座谈会,畅所欲言,与华为技术专家共同交流🎁 欢迎各位开发者踊跃报名,本次报名名额有限,资源申满即止欢迎大家提交各类意见反馈,反馈被采纳的,有机会获得神秘奖品~!相关链接:资源申请链接:https://console.huaweicloud.com/modelarts/?region=cn-east-4&locale=zh-cn#/model-studio/homepagetoken领取链接:https://console.huaweicloud.com/modelarts/?agencyld=ef402ec2claf4387b285c7b71619b846&region=cn-east-4&locale=zh-cn#/model-studio/deployment
  • [参赛经验分享] 2024华为开发者大赛优秀开发者故事,见证创新之花竞相绽放
    引言开发者,是用代码改变世界的人,应用是开发者解决场景问题、创造显性价值的最直接载体。而华为开发者大赛正是为开发者提供放飞创新思维、打造创新应用、展示实用价值的舞台。2024华为开发者大赛中国赛区半决赛已然落幕,全球总决赛静待开启。让我们走近这些优秀的企业、高校开发者案例,共同见证每一朵创新的花朵绽放,迎接未来每一个发展的新阶段。AI改变生活开启家居美学新篇章 AI赋能千行百业,未来的家居设计会是什么样子?“通过AIGC 技术打通消费者购物车商品到空间呈现的链路,让每个人都能进行DIY家装设计。”这是生境科技联合创始人钟鸿毅的回答。生境科技聚焦于室内空间AI设计系统研发,目前已针对B端家装公司和C端客户分别推出“生境AI”设计平台和“闪境AI”家装商城,并与金牌橱柜、万华集团等达成了商业合作。在钟鸿毅看来,3D设计自动化是生境科技的核心竞争力:一方面利用图像大模型,在京东、淘宝等电商平台几十万的家具产品都可以通过上传一张图片生成3D模型;另一方面基于团队异形建筑经验,参数化技术可以自动生成不同布局的柜体家具,适配各种各样的户型。“作为初创公司,要考虑图像模型训练测试成本,也要考虑算法稳定性、产品能力,华为云给了我们很大支持。”在经过多方尝试后,生境科技选择了AI开发平台ModelArts等华为云产品作为项目底座,钟鸿毅表示。通过参加华为开发者大赛,生境科技更深入地了解华为的生态以及技术赋能,未来希望可以结合华为的能力走进千家万户,尤其是智慧家居领域进行联动智慧零售打造便捷高效购物体验随着技术进步和消费者需求变化,打通线上线下渠道提供一致且个性化的购物体验成为零售业的痛点。在2024华为开发者大赛上,武汉快特信息技术有限公司的智慧新零售数字化解决方案获得企业赛道湖北赛区一等奖。“我们从2015年开始研发推广智慧零售产品,主要瞄准销售额达到一定规模的零售企业,由于市场竞争、财务管理等因素,标准化产品难以满足客户需求。”项目负责人王世虎介绍道,企业偏向私有化部署和定制。“定制化服务和增值服务是我们的核心竞争力,既要理解计算机语言,还要学习财务知识,更要做到数据安全、问题修复的及时响应。”武汉快特在21年起将智慧新零售产品华为云平台深度绑定,并于今年入驻了华为云商店,已经收获了海外客户。王世虎介绍,产品技术体系基于Java,使用了华为云中间件、RDS数据库等技术,且已获鲲鹏平台认证。谈到未来,他期待华为能继续提供强大的技术能力支持,带来更多优惠和展示机会,双方战略合作伙伴关系越走越远。RPA +AI打造大模型驱动的领先数字员工大模型驱动的生成式AI技术爆发,为数字员工带来全新发展机遇。句子互动作为全球最大的对话式RPA开源框架的商业化公司,以独创的Agent八大生命周期为理论依据,通过「RPA - 运营服务一体化平台」和「AI-Agent工作流引擎」两款产品,助力企业数字化转型。“与消费者建立链接的效率和成本是很多企业的痛点,我们主要面向消费品牌、泛互联网、金融等领域客户。”祁国良介绍道,基于大模型、数据、SOP数字员工构建方案,句子互动打造能力领先的数字员工。句子互动80%左右的客户来自国内,基于技术能力和合作客户认可双重因素,数字底座最终选择了华为云。目前句子互动产品覆盖四亿用户、消息条数将近70亿条,业务增长驱动双方一直紧密合作。与华为专家一起探讨交流,让应用落地更流畅,这是句子互动参加开发者大赛的初衷。祁国良通过华为专家技术指导、开发者社区等平台支持,未来将资源利用到极致,提高效率降低成本,也增强客户体验。情系公益用AI智能设备让盲人“看见”青年的动人之处,在于他们的勇气和担当,展现非凡的创造探索精神。在本次华为开发者大赛,来自武汉工程大学计算机学院物联网专业的王丞辉和团队带来“智行无界——华为云生态下盲人出行一体化解决方案”,得到众多华为专家的肯定。“参加公益活动时发现无障碍环境普遍缺失,就萌生了用智能化设备来充当盲人眼睛的想法。”这是王丞辉的出发点,将设备所看到的信息通过计算机视觉技术转化成自然语言,让盲人对世界有更加清晰的认知。目前团队正在开发智能盲杖、智能导盲眼镜和导盲机械狗,前两者开发已经比较成熟并进行了测试。团队整套智能设备开发均基于华为云平台进行,这源于王丞辉学习经历。由于学校与华为合作密切,王丞辉在实习时对人工智能开发产生了浓厚的兴趣,在老师的支持下通过了华为HCIA-AI的认证。在王丞辉看来,华为生态协同性非常好,可以用更少的代码实现功能开发、算法部署更加方便,用更少的计算资源实现更多的效果,为团队开发提供非常大的帮助,用智能化设备来帮助盲人拥有更好的出行体验,项目前景也十分广阔。科技赋能让手语“翻译”文字更加顺畅科技改变世界,让生活更美好。在华为开发者大赛上,公益项目不断涌现,来自厦门大学的大三学生李天一和团队的“手与”项目正是另一个典型案例。在特殊教育学校的工作经历,让李天一发现听障人士的手语分为官方手语与本土手语,而手语常用语内容高达8000多种,并没有完全统一,听障人士要融入社会格外困难。“简单来说,我们是想训练模型,通过手机识别,将手语顺畅地翻译为文字,在未来期待能实现双向交流。”李天一总结道,并介绍项目当前还处在demo阶段,收集数据是重点,团队正联合高校伙伴收集地方手语数据,并基于昇腾框架、华为云AI开发平台ModelArts开展数据集处理、模型训练、模型部署等一系列开发流程。李天一称,参加华为开发者大赛能够与众多团队进行交流学习,这激发了创新思维,实现了“以赛促学”,可推动团队和个人快速成长。提及未来,李天一表示无论是对于学生还是企业而言,华为云开发者社区组织都提供了大量资源,构建了交流经验的平台,对开发者的成长具有重要意义。他期待华为能够发展更多的开发者伙伴,将生态建设得更加完善。写在最后每一位开发者都了不起,每一个开发者的故事都值得被聆听,他们的每一个代码、每一个想法,都可能成为改变未来的关键。华为将持续践行‘一切皆服务’的理念,致力于构建一个更加开放,更加协同创新的环境,提供更加高效、便捷的工具和资源,与开发者共同前行。
  • [其他] 人工智能干货合集(2024年10月)
    1. AI开发平台ModelArts新功能有几个月没时间写,这里汇总7到10月份ModelArts发布的新功能。7月:Notebook内置的算法开发套件下线。具体有哪些算法开发套件不清楚。昇腾云ModelArts6.3.906版本发布商用,包括以下功能:支持Llama系列、Qwen系列、Yi系列、chatglm系列、baichuan系列等主流开源大模型适配PyTorch NPU的训练和推理。支持LLaVA和Qwen-VL模型基于DevServer的PyTorch NPU的训练和推理。支持SDXL&SD1.5的ComfyUI和WebUI框架基于Cluster的PyTorch NPU推理。支持数字人场景的Wav2Lip模型基于DevServer的PyTorch NPU推理。8月:上线ModelArts Studio大模型即服务平台(简称为MaaS)、提供了开箱即用的模型开发工具链,支持大模型定制开发,构建云上大模型一站式模型开发托管服务。10月:文档升级。按照产品形态区分用户指南,原有的ModelArts控制台对应操作手册合入ModelArts Standard用户指南。新增ModelArts Studio、ModelArts Lite Server、ModelArts Lite Cluster、ModelArts AI Gallery用户指南。2. 人工智能相关直播合集大模型时代下的AI开发 cid:link_0介绍AI的演进历程和未来发展趋势,分析大模型背后的原理和关键技术,介绍华为云为开发者提供的全栈AI能力及AI赋能认证体系。
  • [产品体验官] 【开发者日南京站】产品体验官:使用ModelArts一键玩转丑萌黏土风滤镜
    华为云开发者日·南京站来啦!参加“一键玩转丑萌黏土风滤镜”体验项目提出你的建议或使用体验有机会获得开发者盲盒礼包惊喜不容错过,快叫上小伙伴一起来参加吧~【体验项目】一键玩转丑萌黏土风滤镜【活动时间】2024年10月25日-10月31日【参与方式】直接在此活动帖下方回帖提建议/提建议即可比如对产品功能的改进建议、对活动流程的感想、对现场活动的感悟等等PS:不要少于30字哦~【获奖规则】奖项设置有效回复楼层评选条件获奖名额激励礼品优质建议奖20对产品功能有改进价值的建议1名开发者盲盒礼品价值50-100元积极反馈奖20优质建议奖轮空的情况下进行抽取每满20层抽取1名开发者盲盒礼品价值50元【活动规则】1、本帖的回帖建议不少于30字,仅限于对“一键玩转丑萌黏土风滤镜”体验项目,其他项目建议不参与此次活动,否则将视为无效内容。2、本次活动将根据实际参与情况发放奖励,包括但不限于用户百分之百中奖或奖项轮空的情况;以上奖品均为实物奖品,具体发放视出库情况而定;3、活动预计于结束后七天内完成奖项公示,并于结束后15个工作日内完成邮寄。【温馨提示】1、请务必使用个人实名账号参与活动(IAM、企业账号等账号参与无效)。如一个实名认证对应多个账号,只有一个账号可领取奖励,若同一账号填写多个不同收件人或不同账号填写同一收件人,均不予发放奖励。2、所有获得奖品的获奖用户,请于获奖后3日内完成实名认证,否则视为放弃奖励。
  • [公告] 【获奖公示】DTSE Tech Talk丨NO.68:华为云ModelArts+Dify AI:双剑合璧使能AI应用敏捷开发
    中奖结果公示感谢各位小伙伴参与本次活动,欢迎关注华为云DTSE Tech Talk 技术直播更多活动~本次活动获奖名单如下(部分视频号抽奖用户无账号名):账号名 奖项名称 奖品名称 备注nukinsan优质提问华为云开发者定制长袖圆领卫衣hw81541353优质提问华为云开发者定制长袖圆领卫衣hw81541353持久观看有奖华为云开发者定制双肩包一个ID仅限获奖一次,发高价值奖品hw063334376口令抽奖华为云开发者定制鼠标垫qingqingjiayuan6口令抽奖华为云开发者定制鼠标垫口令抽奖华为云开发者定制鼠标垫视频号抽奖华为云开发者定制鼠标垫视频号抽奖华为云开发者定制鼠标垫视频号抽奖华为云开发者定制鼠标垫视频号抽奖华为云开发者定制鼠标垫