• [区域初赛赛题问题] Java程序在线编译异常
    程序文件在windows上可以正常编译和运行,但是在线训练时显示编译异常,排除了以下可能性:1、JDK版本不正确(JDK版本为1.8,)2、未引入第三方库3、头文件异常(将本程序的头文件放到官方给的demo里可以成功提交)4、目录结构不正确(将源代码复制到官方demo并打包)5、文件夹内有其余文件请各位大佬指导下,谢谢!
  • [技术干货] idea中使用git合并分支
    idea使用git 合并分支 1. 将主分支(master)更新到自己的分支(dev) 右下角点击分支、checkout到自己分支下、点击自己的分支、选择 remote branches 中的 origin/master 分支,点击 "merge selected into current" checkout到自己分支下、点击Git/Pull、选择 origin/master 分支、点击Pull 两种方法都可。  2. 将自己的分支(dev)合并到主分支(master) checkout到主分支(master)、先Pull一下最新的代码、点击右下角主分支、在local branches里选择自己的分支点击"merge selected into current"、然后记得push下、推送至远程仓库 ———————————————— 原文链接:https://blog.csdn.net/m0_52366016/article/details/122131791 
  • [技术干货] CodeArts IDE for RemoteShell快捷键
    CodeArts for RemoteShell区域按键功能全局快捷键Ctrl + Shift + W关闭窗口Ctrl + K组合键基本编辑Ctrl + X剪切Ctrl + C复制Alt + Arrowup向上移动行Alt + Arrowdown向下移动行Shift + Alt + Arrowup在上面复制当前行Shift + Alt + Arrowdown在下面复制当前行Ctrl + Shift + K删除一行Ctrl + Enter在下面插入行Ctrl + Shift + Enter在上面插入行Ctrl + Shift + \跳转到匹配括号Ctrl + ]增加缩进Ctrl + [减少缩进Home转到行首End转到行尾Ctrl + Home转到文件开头Ctrl + End转到文件末尾Ctrl + Arrowup向上滚动行Ctrl + Arrowdown向下滚动行Alt + Pageup向上滚动页面Alt + Pagedown向下滚动页面Ctrl + Shift + [折叠区域Ctrl + Shift + ]展开区域Ctrl + K,Ctrl + [折叠所有子区域Ctrl + K,Ctrl + ]展开所有子区域Ctrl + K,Ctrl + 0折叠所有区域Ctrl + K,Ctrl + J展开所有区域Ctrl + K,Ctrl + C添加行注释Ctrl + K,Ctrl + U删除行注释Ctrl + /切换行注释Shift + Alt + A切换块注释Alt + Z切换自动换行导航Alt + Leftarrow后退Alt + Rightarrow前进查找&替换Ctrl + F查找Ctrl + H替换F3查找下一个Shift + F3查找上一个Alt + Enter选择所有的匹配Ctrl + D将选择添加到下一个查找匹配项Ctrl + K,Ctrl + D将上一个选择移到下一个查找匹配项Alt + C切换是否区分大小写Alt + R切换是否正则表达式Alt + W切换是否全字匹配多光标选择Alt  +  (鼠标点击)插入光标Ctrl  +    Alt  +  ↑在上方插入光标Ctrl  +    Alt  +  ↓在下方插入光标Ctrl  +    U撤消上一个光标操作Shift  +    Alt  +  I在所选的每一行的末尾插入光标Ctrl  +    L选择当前行Ctrl  +    Shift  +  L选择所有当前选择Ctrl  +    F2选择所有出现的当前单词Shift  +    Alt  +  →扩展选择Shift  +    Alt  +  ←收缩选择Shift  +    Alt  +  (拖曳鼠标)列(框)选择Ctrl  +    Shift  +  Alt  +  (箭头键)列(框)选择Ctrl  +    Shift  +  Alt  +  Pageup向前列(框)选择页面Ctrl  +    Shift  +  Alt  +  Pagedown向后列(框)选择页面代码编辑Ctrl + Space显示代码推荐Ctrl + K,Ctrl + X删除每一行行尾空格编辑器editorCtrl + F4,Ctrl + W关闭当前编辑页Ctrl + Shift  + Pageup向左移动编辑器Ctrl + Shift + Pagedown向右移动编辑器Ctrl + \分割编辑器Ctrl + 1 第一编辑器组获取焦点Ctrl + 2第二编辑器组获取焦点Ctrl + 3第三编辑器组获取焦点Ctrl + K,Ctrl + LeftArrow让上一个编辑器组获取焦点Ctrl + K,Ctrl + RightArrow让下一个编辑器组获取焦点Ctrl + K,LeftArrow向左侧移动当前编辑器组Ctrl + K,RightArrow向右侧移动当前编辑器组文件管理Ctrl + S保存文件Ctrl + F4,Ctrl + W关闭文件Ctrl + Shift + T重新打开最近一次关闭的编辑器Ctrl + Tab打开下一个文件Ctrl + Shift + Tab打开上一个文件Ctrl + K,P复制当前活动文件的路径显示F11切换全屏Ctrl + =放大显示Ctrl + -缩小显示Ctrl + B显示/隐藏侧边栏Ctrl + K,Z禅模式,按两次esc退出终端Ctrl + Shift + `创建新终端Ctrl + C复制选择Ctrl + V粘贴到活动终端Ctrl + Arrowup向上滚动Ctrl + Arrowdown向下滚动Shift + Pageup向上滚动页面Shift + Pagedown向下滚动页面Ctrl + Home滚动到顶部Ctrl + End滚动到底部
  • [技术干货] CodeArts IDE for RemoteShell常见问题
    一、登录激活常见问题1、登录华为云失败,该如何处理?解决办法:检查本机是否需要配置proxy登录,如已配置请检查proxy是否有效。在"管理代理服务器"弹窗中配置全局代理,可以成功登录激活RemoteShell。二、proxy配置常见问题1、登录华为云服务器,proxy该如何设置?新建主机连接时,可在"管理代理服务器"弹窗配置。如需修改,可点击修改远程主机信息进行修改。2、proxy配置修改后不生效,如何解决?解决办法:可以尝试点击关闭该主机的所有连接,再重新操作连接。3、proxy配置检查连接失败,如何解决?解决办法:检查proxy的地址和端口是否有效,用户名或密码是否输入错误,修改后重新尝试。三、新建主机连接常见问题1、新建主机连接失败,可根据以下可能原因排查重试。检查用户名、密码是否输入正确。确保SSH服务已开启(默认端口为22),如果修改SSH默认的22端口,请确认要连接的远程端口已配置且生效,并添加对应的防火墙规则。确认当前使用proxy代理配置出口IP的全部地址的远程端口(SSH默认端口为22)已经允许。检查弹性云服务器的防火墙是否允许当前该主机使用的proxy代理配置的出口IP作为入口IP。请确认网络ACL没有禁用当前该主机使用的proxy代理配置的出口IP。2、遇到如下连接失败的场景,该如何解决?在连接远程主机时,遇到如下报错时,即为代理服务器未输入用户名和密码引起。解决办法:需在代理服务器弹窗中输入用户名和密码,如下图:​在连接远程主机时,遇到如下报错时,即为网络超时引起。解决办法:确认proxy地址是否有效。在连接远程主机时,遇到如下报错时,即为错误的密码或主机IP引起。解决办法:修改正确密码后,重新尝试连接。或尝试移除该远程主机后,使用正确的主机地址进行新建远程连接。四、增加用户连接常见问题1、用户尝试打开较多终端时,受到限制?单个用户目前仅支持同时创建7个终端。2、用户名错误导致连接失败,无法修改用户名,如何操作才能连接成功?解决办法:不可直接修改用户名,请移除该用户连接后重新尝试使用正确的用户名新建连接。
  • [技术干货] 使用CodeArts IDE for RemoteShell 连接华为云ECS主机
    简介本章节主要介绍使用RemoteShell插件的远程主机和用户连接、管理代理配置、用户操作远程文件系统及获取华为云服务器相关功能,支持开发者在完全不需要拥有远程开发环境源代码的情况下,也能轻松获得远程开发体验。使用CodeArts IDE for RemoteShell,您可以连接华为云ECS主机或任意主机。一、下载安装CodeArts IDE for Remoteshell现已开放公测,下载获取免费体验。二、创建主机连接RemoteShell支持创建主机(可多台)远程连接,在新建远程连接时,可选择使用或不使用代理进行连接,身份认证支持密码、密钥、双因子三种方式。当RemoteShell自动打开远程主机终端,成功获取远程文件系统时,说明主机连接成功,界面提示如下:在使用过程中,可对远程主机基本信息进行修改,也可以移除主机和断开所有主机连接。三、proxy配置管理可以新增,编辑,删除proxy。如果您需要配置全局代理,可以在“应用程序代理”中进行修改。如果您的远程主机需要使用代理进行连接,只可选用列表中其中一个或不使用代理,即在创建主机连接时选中某个代理或者不使用,或对已有主机信息进行修改。四、增加用户使用连接创建主机连接成功后,会自动增加当前用户的远程使用权限。同时也支持一台主机增加多用户连接。当RemoteShell自动打开远程主机终端,成功获取相应的远程文件系统,说明用户连接成功。在使用过程中,可对用户连接的基本信息进行修改,也可以移除该用户和断开该用户的连接。五、操作远程文件系统和远程终端创建主机连接成功后,即可操作远程文件系统。文件系统通过文件树右键菜单即可对内部文件/文件夹进行上传、下载、复制粘贴、删除、重命名等操作。可直接编辑文件代码,也可通过顶部菜单“编辑文件”功能或编辑区右键菜单进行相关操作。通过文件右键菜单可对文件和终端进行拆分、关闭等操作。与语言服务相关的代码补全、重构、跳转、修复、华为云SDK代码补全助等功能,请您持续关注后续迭代版本。2. 远程终端多终端分区布局:您可以在同一个页面中创建多个RemoteShell终端,并可以直接拖动窗口,随意组合成您喜欢的布局。六、获取华为云服务器首先需要使用华为云账号即可完成登录:2.登录成功后才能获取,绿色表示当前可连接的远程机,点击按钮可以继续执行连接到该主机的操作。
  • [执行问题] 为什么Mindspore.numpy不支持tensor转换
    如图我想把numpy创建的变量转换成Tensor但是报错如图
  • [使用说明] CodeArts IDE问题反馈
    CodeArts IDE问题反馈
  • [技术干货] HuaweiCloud开发工具CodeArts技术干活合集
    CodeArts定位为华为云开发者桌面,是一款智能化桌面集成开发环境,目标是让开发者更简单的使用华为云,以及更高效的基于华为云来构建应用。小编特意整理了一份关于这款软件的操作合集指南。一、下载安装CodeArtsCodeArts安装要求         至少需要 2 GB RAM ,但是推荐8 GB RAM;         至少需要 2.5 GB 硬盘空间,推荐SSD;         64位Microsoft Windows 10下载并安装CodeArts        >>>前往CodeArts官方下载页面https://devcloud.cn-north-4.huaweicloud.com/codearts/download" \t "_blank        下载解压完成后,运行CodeArts-*.exe文件。        按照安装导航的步骤,选择个人安装配置进行安装。二、CodeArts登陆与激活        运行CodeArts,前往CodeArts下载激活https://bbs.huaweicloud.com/blogs/371339" \t "_blankCodeArts快捷键CodeArts快捷键(一)cid:link_0CodeArts快捷键(二)cid:link_1CodeArts智能代码补全代码补全可以有效的提升开发效率、减少拼写错误和输入代码量。CodeArts依赖于codearts.smartassist-java-ls插件实现代码补全功能。代码补全类型主要有:关键字基础补全名字补全类型补全方法补全片段补全缩写补全智能类型匹配补全标签属性补全CodeArts的代码补全具有能使用字段名称的驼峰字母作为关键字母快速搜索的特点。参考链接cid:link_2CodeArts智能搜索智能搜索是CodeArts的核心功能之一,依赖于Language Server,能够进行项目级别的搜索,比如整个项目全局搜索、文件搜索、类名搜索以及自定义范围的搜索等,通过快捷键Double Ctrl,或Ctrl + N,或Ctrl + Shift + L可以打开搜索框。智能搜索的类型主要有6大类:AllTypeMemberTextFileCommand参考链接cid:link_3CodeArts代码重构重构是通过改变现有程序结构而不改变其功能和用途来提高代码的可重用性和可维护性。CodeArts支持重构操作,提供了多种重要的重构类型,如下:重命名提取重构(方法、常数、接口、字段、变量、参数、超类)引入重构 (字段、常量、变量、参数、参数对象、函数变量、功能参数)复制重构移动和更改重构查找和替换重构内联重构 (方法、字段、变量、匿名类、超类、参数)设计模式与重构补全功能运用参考链接cid:link_4CodeArts常见问题cid:link_5
  • [经验分享] ResNet18 :使用MindStudio进行MindX SDK应用开发
    目录写在最前面ResNet18简介工具简介MindX SDK简介MindStudio环境搭建与配置MindStudio安装(Windows版本)SSH连接MindX SDK安装推理开发运行流程业务开发Python版本开发新建一个目录代码目录结构模型转换pipeline文件编排main.py文件编写代码运行C++版本开发新建一个项目代码目录结构模型转换(或者不转换)业务代码书写(修改)项目编译代码运行可参考的代码FAQ模型运行报错?如果想换个数据集怎么办?Python找不到模型路径?C++找不到模型路径?No Python interpreter configured for the module?SDK版本获取失败?结语1. 写在最前面这是一篇基于昇腾众智“ResNet18 for pytorch”代码的MindX SDK应用开发经验帖。原始项目代码可以从Ascend/ModelZoo-PyTorch - Gitee.com仓库中找到,根据原始项目代码,我们可以在MindStudio上快速实现一个ImageNet2012数据集1000分类应用的开发。整个过程中,MindStudio昇腾论坛上的教程基于MindStudio的MindX SDK应用开发全流程MindStudio昇腾_华为云论坛 (huaweicloud.com)也提供了很大的帮助。2. ResNet18简介ResNet是ImageNet竞赛中分类问题效果较好的网络,它引入了残差学习的概念,通过增加直连通道来保护信息的完整性,解决信息丢失、梯度消失、梯度爆炸等问题,让很深的网络也得以训练。ResNet有不同的网络层数,常用的有18-layer、34-layer、50-layer、101-layer、152-layer。ResNet18的含义是指网络中有18-layer。参考论文:He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 770-778.3. 工具简介3.1. MindX SDK介绍MindX SDK是华为昇腾AI处理器加速的AI软件开发套件(SDK), 提供了大量丰富的API,可以快速完成AI应用的开发3.2. MindStudioMindStudio提供了一个AI开发所需的一站式开发环境,支持模型开发、算子开发以及应用开发三个主流程中的开发任务依靠模型可视化、算力测试、IDE本地仿真调试等功能,MindStudio能够帮助开发者在一个工具上就能高效便捷地完成AI应用开发MindStudio采用了插件化扩展机制,开发者可以通过开发插件来扩展已有功能官网地址:MindStudio-昇腾社区 (hiascend.com)4. 环境搭建与配置因为我使用的Windows系统环境,所以这里提供Windows环境下MindStdio环境搭建和配置的全流程,其它系统可以查看安装方案-安装指南-MindStudio-文档首页-昇腾社区 (hiascend.com)4.1. MindStudio 安装(Windows版本)安装前的说明MindStudio可以单独安装在Windows上。在安装MindStudio前需要在Linux服务器上安装部署好Ascend-cann-toolkit开发套件包,之后在Windows上安装MindStudio,安装完成后通过配置远程连接的方式建立MindStudio所在的Windows服务器与Ascend-cann-toolkit开发套件包所在的Linux服务器的连接,实现全流程开发功能。我所采用的是windows共部署的方法​​2. 下载安装MindStudio前往MindStudio下载-昇腾社区 (hiascend.com)页面进行MindStudio软件包的下载,并且参照安装MindStudio-安装操作(Windows)完成MindStudio的安装。4.2. SSH连接在进行共部署之前,先确认SSH服务器连接成功按照上面图中所示,依次配置之后,点击Test Connection,显示下图就表示连接成功。4.3. MindX SDK安装远端环境MindX SDK安装Windows 场景下基于 MindStuido 的 SDK 应用开发,请先确保远端环境上 MindX SDK 软件包已安装完成,安装方式请参见《mxManufacture 用户指南》和 《mxVision 用户指南》的“使用命令行方式开发”>“安装 MindX SDK 开发套件” 章节。本地 CANN 安装①:在 Windows 本地打开 MindStudio,点击 Customize > Allsettings…,如下图所示:②:进入设置页面,点击 Appearance & Behavior > System Settings > CANN 进入 CANN 管理界面。完成后的状态如下图所示:3. 本地 MindX SDK安装与步骤 2 开始一致,进入设置页面,点击 Appearance & Behavior > System Settings > MindX SDK 进入 MindX SDK 管理界面。界面中 MindX SDK Location 为软件包的默认安装路径,默认安装路径为“C:\Users\用户名\Ascend\mindx_sdk”。 单击 Install SDK 进入 Installation settings 界面。参数说明Remote Connection远程连接的用户及 IPRemote CANN Location远端环境上 CANN 开发套件包的路 径,请配置到版本号一级Remote SDK Location远端环境上 SDK 的路径,请配置到 版本号一级。IDE 将同步该层级下的 include、opensource、python、 samples 文件夹到本地 Windows 环境Local SDK Location同步远端环境上 SDK 文件夹到本地 的路径。默认安装路径为“C:\Users\ 用户名\Ascend\mindx_sdk”5. 推理开发运行流程使用 MindStudio 开发和运行推理业务步骤如下:(1) 确定业务流程:根据业务功能如目标检测、图像分类、属性识别等,将 业务流程进行模块化。(2) 寻找合适插件:根据已有 SDK 插件的功能描述和规格限制来匹配业务功 能,当 SDK 提供的插件无法满足功能需求时,用户可以开发自定义插件。(3) 准备推理模型文件与数据:准备输入图片和下载模型,使用 Model Convertor 模型转换工具将模型转换为 om 格式。(4) 流程编排:以可视化的方式,开发数据流图,生成 pipeline 文件供应用框 架使用,配置文件以 json 格式编写,必须指定业务流名称、元件名称和 插件名称,并根据需要,补充元件属性和下游元件名称信息。(5) 业务集成:编写 C++程序或 Python 程序,调用业务流管理的 API ( MxStreamManager ), 先 进 行 初 始 化 , 再 加 载 业 务 流 配 置 文 件 (*.pipeline),然后根据 stream 配置文件中的 StreamName 往指定 Stream 获取输出数据,最后销毁 Stream。(6) 编译与运行应用:若新建的工程为 Python 版本的应用工程,不需要执行 编译应用工程,配置 Python 环境后,即可在远端服务器运行;若新建工 程为 C++版本的应用工程,则需要进行远端编译,远端编译时,会对工 程文件夹进行目录拷贝到远端连接的环境,编译成功后即可运行。6. 业务开发业务开发将按照python版和C++版分别进行介绍6.1.Python版本开发6.1.1 新建一个项目首先创建一个项目,选择一个自己喜欢的位置,比如图中所示,将在D:\Codes\python\Ascend\MyApp位置下创建自己的项目。选择好了后,点击下一步选择MindX SDK Project(Python)如图所示,被圈出来的4个项目,上面两个是空模板,在这里面创建我们自己的工程项目,因为我们要创建Python版的应用,所以选箭头指的这个;下面两个是官方给出的样例项目,如果对目录结构和应该写哪些代码不太熟悉的话,也可以创建一个样例项目先学习一下。选择完成后,点击Finish完成项目的创建6.1.2 代码目录结构Python版本的SDK项目大概有哪些文件呢?我们其实可以先打开一个官方样例项目先看看左边是我们自己创建的项目,右边是官方样例项目,对比之下我们可以发现,右边的样例项目主要有models(用于存储模型文件)、pipeline(流程编排文件)、python(项目python代码)和streamserver(实际开发中没用上)。PS: 其实也不一定要按照这个目录结构存放代码,只是这样结构更加清晰一些。我的工程目录文件是这样其中data用来存放数据图片6.1.3 模型转换下载模型首先我们先在ModelZoo-昇腾社区 (hiascend.com)中下载ResNet18模型和代码选Pytorch版分别下载模型脚本和模型其中模型脚本在“pipeline文件编排”和“main.py文件编写”章节得到应用解压后,我们只要这个onnx模型,同时,我们将names标签数据也一起放进models文件夹模型转换点击这个工具,进入模型转换界面选择待转换的模型路径选好后点一下任意一个位置,MindStudio会进入模型解析状态等待模型解析完成后,可以修改输出的模型名字,或者点击下一步点击Finish,开始转换转换完成稍等片刻,出现这个就表明转换完成如上图所示,在显示的路径中可以找到转化好的文件我们将om文件移动到models文件夹中,就可以进行接下去的步骤了6.1.4 pipeline文件编排pipeline文件编排是python版SDK最主要的推理开发步骤作为一个图片分类任务,主要包括以下几个步骤:初始化 → 图片数据传送 → 图片预处理 → 图片分类 → 序列化 → 结果传回由于ResNet18模型采用的是PIL库进行图片预处理,而非opencv,因此我们不在pipeline中进行图片预处理步骤(包括图片解码、缩放、裁剪),而是通过在main.py文件中进行图片预处理,再将结果传给推理业务因此pipeline流程编排为以下几个步骤初始化 → 获取图片数据 → 图片分类 → 序列化 → 结果传回可视化结果如下图所示:实际上,我们可以通过对之前下载好的代码文件中已有的pipeline进行简单修改,就可以完成我们自己的pipeline文件编排在下载好的ResNet18_for_PyTorch_{$version}__code中,路径./infer/sdk/data/config下可以找到resnet18.cfg和resnet8.pipeline两个文件,将这两个文件分别移动到models目录和pipeline目录下,如下图所示:对resnet18.pipeline进行参数修改我个人比较喜欢文本编辑的方式修改,如下图所示修改完成后,就可以进行main.py文件的编写了,离成功运行越来越近了!6.1.5 main.py文件编写根据pipeline文件编排中的说明,我们在main.py中需要完成3件事——对图片进行预处理+将预处理好的结果传给推理业务+获取推理结果实际上,我们依旧可以参考下载的代码文件中./infer/sdk/main.py文件中的做法,稍作修改就可以(1) 图片预处理主要用到resize、center_crop、preprocess和gen_protobuf(图片编码为推理业务需要的字节流)四个函数参照下载代码中的main.py文件,很容易就能得到这四个函数# resize and cropdef resize(img, size, interpolation=Image.BILINEAR): return img.resize(size[::-1], interpolation)def center_crop(img, out_height, out_width): height, width, _ = img.shape left = int((width - out_width) / 2) right = int((width + out_width) / 2) top = int((height - out_height) / 2) bottom = int((height + out_height) / 2) img = img[top:bottom, left:right] return img# preprocessor调用上面的两个函数进行图片缩放裁剪处理def preprocess(in_file): mean = [0.485, 0.456, 0.406] std = [0.229, 0.224, 0.225] img = Image.open(in_file).convert('RGB') w = img.size[0] h = img.size[1] if w > h: input_size = np.array([256, 256 * w / h]) else: input_size = np.array([256 * h / w, 256]) input_size = input_size.astype(int) print(input_size) img = resize(img, input_size) # transforms.Resize(256) img = np.array(img, dtype=np.float32) img = center_crop(img, 224, 224) # transforms.CenterCrop(224) img = img / 255. # transforms.ToTensor() img[..., 0] = (img[..., 0] - mean[0]) / std[0] img[..., 1] = (img[..., 1] - mean[1]) / std[1] img[..., 2] = (img[..., 2] - mean[2]) / std[2] img = img.transpose(2, 0, 1) # HWC -> CHW return img#generate protobuf调用preprocess生成传给推理业务的流数据def gen_protobuf(in_file): img_np = preprocess(in_file) vision_list = MxpiDataType.MxpiVisionList() vision_vec = vision_list.visionVec.add() vision_vec.visionInfo.format = 0 vision_vec.visionInfo.width = 224 vision_vec.visionInfo.height = 224 vision_vec.visionInfo.widthAligned = 224 vision_vec.visionInfo.heightAligned = 224 vision_vec.visionData.memType = 0 vision_vec.visionData.dataStr = img_np.tobytes() vision_vec.visionData.dataSize = len(img_np) protobuf = MxProtobufIn() protobuf.key = b"appsrc0" protobuf.type = b'MxTools.MxpiVisionList' protobuf.protobuf = vision_list.SerializeToString() protobuf_vec = InProtobufVector() protobuf_vec.push_back(protobuf) return protobuf_vec(2) main方法编写main方法的编写,可以基于官方样例代码中的main方法,在那个基础上,调用我们自己的预处理函数再传值给推理业务即可streamName: 业务流的名字,需要和pipeline文件中写的保持一致6.1.6 代码运行前面的步骤完成之后,我们就可以进行代码的运行了。(1) 选择一张测试用图片我们在data目录中放入自己想要的测试图片,比如我放的这张然后在main.py中设置好图片位置全部完成后应该为这样(2) 设置运行脚本接着,我们点击上图中箭头指的地方,设置运行脚本为main.py(3) 获取运行结果点击运行获得推理结果我们可以看到,推理结果为golden retriver 金毛寻回犬上网搜搜看,发现和我们测试的狗狗图片是一样的品种6.2 C++版本开发6.2.1 新建一个项目可以参见“Python版本开发-新建一个项目”章节,这次我们选择的是C++开发空项目应该为这样6.2.2 代码目录结构根据上图的说明,我们还需要建立一个models文件用于存放模型文件,完整的目录结构应该长这样值得注意的是,这里多了一个preprocess.py文件,是用于预处理图片的,在下面“代码运行”章节会详细说明6.2.3 模型转换(或者不转换)和Python版本开发一样,可以对下载到的onnx模型进行转换,也因为转换好的模型其实就是下载的模型中的om模型,所以也可以直接拿来用。6.2.4 业务代码书写(修改)(1) 将下载到的代码中,./infer/mxbase中的src代码和CMakeLists.txt文件全部移动到src目录下(2) 修改src代码①修改路径首先修改main.cpp中的文件路径再修改编译文件中的代码路径②修改业务代码因为我们下载到的代码中,推理结果只保留了推理的类别编号,并且需要传入测试图片所在的父目录。而我们想要让它测试一张图片,并且将推理结果输出类别名称,所以需要对main.cpp和Resnet18Classify.cpp中部分代码进行修改main.cpp主要修改传入图片的方法,像上图中一样,改为传单张图片Resnet18Classify.cpp主要修改一处,将结果储存到文本文件中的方法,修改为打印输出ShowResult函数(记得在.h头文件中也添上这个方法)APP_ERROR Resnet18Classify::ShowResult(const std::string &imgPath, std::vector> \ &BatchClsInfos) { uint32_t batchIndex = 0; std::string fileName = imgPath.substr(imgPath.find_last_of("/") + 1); for (const auto &clsInfos : BatchClsInfos) { std::string resultStr; for (const auto &clsInfo : clsInfos) { resultStr += std::to_string(clsInfo.classId) + "," + clsInfo.className + "," + "confidence: " + std::to_string(clsInfo.confidence) + ";"; } LogInfo << fileName << "->Result: " << resultStr; batchIndex++; } return APP_ERR_OK;}同时,在Process函数中,将SaveResult替换成ShowResult方法调用Process函数APP_ERROR Resnet18Classify::Process(const std::string &imgPath) { std::vector inputs = {}; std::string inputIdsFile = imgPath; APP_ERROR ret = ReadInputTensor(inputIdsFile, &inputs); if (ret != APP_ERR_OK) { LogError << "Read input ids failed, ret=" << ret << "."; return ret; } std::vector outputs = {}; ret = Inference(inputs, outputs); if (ret != APP_ERR_OK) { LogError << "Inference failed, ret=" << ret << "."; return ret; } std::vector> BatchClsInfos = {}; ret = PostProcess(outputs, BatchClsInfos); if (ret != APP_ERR_OK) { LogError << "PostProcess failed, ret=" << ret << "."; return ret; } ret = ShowResult(imgPath, BatchClsInfos); if (ret != APP_ERR_OK) { LogError << "Show result failed, ret=" << ret << "."; return ret; } return APP_ERR_OK;}Init函数中,注释掉生成txt文本的代码全部完成后,就可以进行下一步了!6.2.5 项目编译业务代码写好之后,我们需要编译整个文件点击编译后,等待下方提示编译成功后,就可以运行代码了!编译好的文件在out目录下6.2.6 代码运行由于Resnet18用的预处理方法是PIL,C++中没有相应的图片处理方法,为了精度更高一些,我们需要稍微麻烦一下,使用python编写一个预处理方法prepreocess.py,将处理后的图片再传给C++代码运行preprocess.py文件可以在下载好的代码中 ./infer/util中找到,根据实际需求稍作修改就可以使用。因此我们先准备一张测试图片,比如下面这张,命名为test.jpg①:先通过preprocess.py预处理生成test.bin②:运行项目先配置运行命令点击运行7 可参考的代码我已经将自己写好的项目上传到了GitHub上,有需要可以参考Python版SDK应用开发:cid:link_12C++版SDK应用开发:cid:link_118 FAQ模型运行报错?在模型转换的时候,是否注意了选择FP32? 默认状态下是FP16的方式进行转换。或者也可以直接将下载到的模型中的om模型文件直接拿来用如果想换个数据集怎么办?可以参考modelzoo中,下载ResNet18模型的地方的说明。可以通过ModelArts训练快速进行迁移学习。Python找不到模型路径?注意在pipeline流程编排中,模型路径若使用的是相对路径,则是相对main.py文件的位置的相对路径,而不是相对于pipeline文件的相对路径。因此注意根据自己的main.py文件位置修改模型的路径C++找不到模型路径?检查自己此时代码中的模型路径是否和已经编译好的代码路径一致,C++已经编译完成后再修改代码,则需要重新编译才能运行修改后结果。No Python interpreter configured for the module?SDK版本获取失败?注意这两个地方要选子路径,选择父路径会找不到版本号9 结语MindStudio官方文档非常详细,不一而足。所以在一开始查看的时候难免会有种觉得东西太多,不知道从哪里下手的感觉。但随着开发过程的推进,逐渐发现官方文档才是开发者最应该参考的内容。此外,遇到问题时,也可以在MindStudio 昇腾社区论坛中得到许多启发,相信大家在自己动手的过程中也能体会到这一点。Now, it's time to get your hands dirty!
  • [使用说明] CodeArts IDE下载激活
    1.注册成为华为云账户(如果您已经是华为云用户可跳过此步骤)2.登陆华为云并下载CodeArts3.安装CodeArts开始安装CodeArts可能会被操作系统拦截,遇到如下提示:点击更多信息,然后点击'运行'按钮即可继续安装。4. 登录激活首次打开CodeArts会提示登陆激活,使用华为云账号即可登陆激活。注1:CodeArts暂不支持开放下载试用,我们会根据已试用用户的反馈情况来择机给申请的候选用户提供试用机会。注2:如果不登录激活CodeArts客户端,相关源代码管理、华为云API功能将不能使用。前往>>>开始使用Codearts
  • [生态对接] spark提交yarn idea执行正常,提交yarn报错找不到主类
    【功能模块】spark 代码,rdd提交时报错【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [其他] 使用MindStudio开发Ascend算子
    背景介绍MindStudio是一套基于IntelliJ框架的开发工具链平台,提供了应用开发、调试、模型转换功能,同时还提供了网络移植、优化和分析功能,为用户开发应用程序带来了极大的便利。MindStudio提供了基于TBE和AI CPU的算子编程开发的集成开发环境,让不同平台下的算子移植更加便捷,适配昇腾AI处理器的速度更快。ModelArts集成了基于MindStudio镜像的Notebook实例,方便用户通过ModelArts平台使用MindStudio镜像进行算子开发。想了解更多关于MindStudio相关内容,请参见MindStudio资料。前提条件已经创建基于MindStudio引擎的Notebook实例,并设置允许远程访问的白名单IP地址。且该Notebook实例状态必须为“运行中”。具体操作参考创建Notebook实例。图1 创建基于MindStudio引擎的Notebook实例在Notebook实例详情页面获取开发环境IP地址(例如:dev-modelarts-cnnorth4.huaweicloud.com)和端口号。图2 Notebook实例详情页面准备好密钥对。密钥对在用户第一次创建时,自动下载,之后使用相同的密钥时不会再有下载界面(用户一定要保存好),或者每次都使用新的密钥对。创建新的密钥对操作入口在创建Notebook实例页面中可以找到。在本地使用MobaXterm连接并打开MindStudio环境在本地使用MobaXterm远程连接MindStudio开发环境。下载并安装MobaXterm软件,下载地址MobaXterm。对MobaXterm软件版本不做要求。打开MobaXterm,单击“Sessions ”,在Session settings窗口设置SSH连接,单击“OK”,连接到Notebook实例环境中。图3 在MobaXterm中设置SSH连接Remote host:云上Notebook实例的IP地址,即在Notebook实例详情页获取的地址。例如:dev-modelarts-cnnorth4.huaweicloud.comPort:云上Notebook实例的端口,即在Notebook实例详情页获取的端口号。Specify username:固定为ma-userUse private key:在创建Notebook实例时创建并保存的密钥对文件。说明:如果使用MobaXterm远程连接Notebook失败,有可能是Notebook状态不是在“运行中”,或者允许远程访问的IP地址配置问题。在MobaXterm中连接到Notebook实例后,执行如下命令打开MindStudio,弹出UI界面即为打开MindStudio开发环境镜像成功。sh MindStudio/bin/MindStudio.sh图4 连接到Notebook实例图5 MindStudio UI界面在图5的窗口中保持默认配置,单击“OK”,进入下一步。单击“CANN-Toolkit Path”右侧的,选择最新版本的“ascend-toolkit”,本示例中为“/home/ma-user/Ascend/ascend-toolkit/5.0.2.1”。“ascend-toolkit”持续在升级更新,版本号以实际界面为准。图6 选择Ascend Toolkit Path单击“Finish”。进入MindStudio工程创建页面,单击新建工程,创建一个新工程。图7 选择Ascend Toolkit Path在创建Ascend Operator工程页面,选择工程存放路径为“/home/ma-user/work”目录。图8 创建Ascend Operator工程注意:创建工程时,建议选择“/home/ma-user/work”目录存放工程文件。“/home/ma-user/work”目录为持久化目录,Notebook实例停止后该目录下的内容不会丢失。单击Next,进入算子模板配置界面,参考创建算子工程,完成算子信息配置。选择保存目录为“/home/ma-user/work”目,单击“Save”。图9 保存文件单击“Finish”,完成算子工程创建。图10 创建完成算子工程算子开发之前,开发者需要参考设置Python库章节设置算子工程依赖Python库。创建MindStudio算子更多操作介绍,请参见MindStudio官方资料。停止Notebook实例前备份文件Notebook实例停止时,后端对应的容器环境会被删除,只有“/home/ma-user/work”目录下的内容会持久化保存,其他目录下的修改都会丢失。备份方法可以在停止Notebook实例前手工拷贝文件到/home/ma-user/work目录下。需要拷贝的目录内容包括:/home/ma-user/ AscendProjects目录下的自建工程/home/ma-user/modelzoo/目录下的模型转换后的om文件、配置文件、评估报告/home/ma-user/.mindstudio目录下的ssh配置其他用户自己修改的内容当Notebook实例再次启动时,用户将手工备份的目录内容拷贝回原始目录后即可正常继续使用。
  • [技术干货] 第二讲:鲲鹏代码迁移工具基础知识读书笔记
    新增功能&功能变化介绍交付特性   (特性&价值描述)T10语言迁移优化:支持go语言源码分析. Fortran语言迁移增强.C/C++语言源码迁移增强·支持Python/Java/Scala解释型语言的扫描分析内存一致性:扩展语言支持场景,对关键算法进行改进 ·增加自动修复功能 ·支持下载静态检查工具产生的BC文件 ·支持自动生成目标工程的中间文件软件迁移评估:Jar、War包扫描提示优化,识别鲲鹏平台已经支持的依赖,在报告中给出提示;专项软件迁移:·扩充“一键式软件迁移”支持的软件范围:增加HPC场景5款软件的过移文持;支持Top16款操作系统: 新增支持openEuler 20.03(LTS-SP1) 、openEuler 20.03 (LTS-uoS Server 20 Euler (1000).BC- Linux 7.6、BC- Linux 7.7和普华(iSoft)5.1六款操作系统运行环境和目标操作系统;源码迁移识别C/C+/Fortran/汇编源代码,提供修改建议;Make、CMake、Automake编译选项、编译宏的解析及迁移建议支持100%Intrinsic函数转换(6000+个),包括MMX 、SSE及AVX Intrinsic等支持更多的Fortran内联函数和诰法特性以及编译选项的识别支持Go语言迁移,对go程序使用cgo编译部分中的编译选项、宏定义提供兼容性检查,给出修改建议支持python、Java、Scala语言,对程序中的动态链接库提供兼容性检查,给出修改建议新增支持openEuler、BC_Linux等六款主流操作系统C/C++x86Intrinsic函数实现了一键式自动迁移;平台相关宏扫描准确率和覆盖率提升;构建文件编译选项、宏定义识别率提升。FortranFortran内联函数识别(增加xx条),增加Fortran语法特性解析,整体准确率提升70%;构建文件中针对Fortran语言中所使用编译选项的识别率和准确率达到100%。Go对编译选项、宏定义、依赖库提供兼容性检查,一键下载替换。Python/Java/Scala识别源码中的加载动态库的函数;识别依赖库文件,进行兼容性检查,一键下载替换。
  • [技术干货] 第二讲:鲲鹏代码迁移工具基础知识
    一.代码迁移工具是什么       处理器所支持的指令集不同,意味着开发者可能需要对代码进行跨!平台的迁移。通常,代码迁移是件复杂又繁琐的工作,需要花费开发者大量精力对软件包、源代码、依赖库文件进行人工分析、检查和识别,手动修正不同指令集之间的相关差异,这些差异主要涉及语法、指令、函数和库文件支持情况。为了解决用户代码可迁移性人工排查困难、移植经验欠缺、反复依赖编译调错定位等,投入工作量大,整体效率低的问题,我们推出Kunpeng PortingAdvisor鲲鹏代码迁移工具。        鲲鹏代码迁移工具是一款可以简化应用迁移到鲲鹏架构服务器过程的工具。主要面向鲲鹏平台的开发者、用户和第三方待迁移软件提供方开发工程师,对海量代码进行快速地自动化扫描和分析,提供专业的迁移指导报告。同时能够自动分析出需修改的代码内容,并指导如何修改,帮助开发者实现高效的代码迁移。同时支持原生开发代码亲和检查等能力。二.代码迁移工具功能三.功能特性代码迁移工具可以作为独立软件提供给鲲鹏生态用户安装使用,支持的功能特性如下:•当前工具支持五组功能,支持的功能特性分别如下:      •软件迁移评估            •检查用户提供的软件安装包,识别依赖关系,并提供鲲鹏兼容版本的so依赖库对应rpm的包OS发行版官方下载链接。            •检查用户在x86服务器上已安装的软件,识别依赖关系,并提供鲲鹏兼容版本的so依赖库对应rpm的包OS发行版官方下载链接。      •源码迁移            •检查用户C/C++/汇编/Fortran代码软件构建工程文件,并指导用户如何迁移该文件。            •检查用户C/C++/汇编/Fortran/python/Java/Scala/Go软件构建工程文件使用的链接库,并提供可迁移性信息。            •检查用户C/C++/汇编/Fortran软件源码,并指导用户如何迁移源文件。      •软件包重构,分析用户x86软件包构成,重构为适用于鲲鹏平台的软件包。      •专项软件迁移,基于我们丰富的软件迁移经验,帮助用户快速迁移Web、数据库、大数据、高性能计算四大解决方案类软件。      •鲲鹏亲和分析,目前含64位运行模式检查、结构体字节对齐检查、缓存行字节对齐检查、内存一致性检查、构建亲和检查。•用户通过安全传输协议上传软件源码、软件包、二进制文件等资源到工作空间,也可以从Web页面上直接对工作目录下的文件进行删除清理或者覆盖重命名。•支持命令行方式、Web、IDE插件三种工作模式,后两种方式下支持多用户并发扫描。•特别说明:工具不支持迁移windows环境下的软件或者IOS/Mac OS平台应用至Kunpeng平台Linux环境下。四.应用场景对最常用的x86汇编指令进行识别并转换•最常用的1000+条汇编指令自动翻译。•针对受支持的嵌入式汇编指令,提供修改指导;针对完全由受支持的完整汇编指令构成的文件,支持自动转换为结果汇编文件; 支持对尚无法指导修改和转换的汇编指令的识别、提醒。五.源码迁移•识别C/C++/Fortran/汇编源代码,提供修改建议;Make、CMake、Automake编译选项、编译宏的解析及迁移建议•支持100%Intrinsic函数转换(6000+个),包括MMX、SSE及AVX Intrinsic等•支持Fortran内联函数和语法特性以及编译选项的识别•支持Go语言迁移,对go程序使用cgo编译部分中的编译选项、宏定义提供兼容性检查,给出修改建议支持python、Java、Scala语言,对程序中的动态链接库提供兼容性检查,给出修改建议软件迁移评估•识别检查x86平台软件安装包或已安装软件中使用的动态链接库、静态链接库和可执行文件,并将检查出的文件与工具内置的依赖文件列表进行比较匹配,从而为用户提供迁移建议•Jar、war包扫描增强,识别鲲鹏平台已经支持的依赖,提供更精准的依赖兼容替换建议
  • [技术干货] 第二讲:鲲鹏代码迁移工具基础知识
    一.代码迁移工具是什么       处理器所支持的指令集不同,意味着开发者可能需要对代码进行跨!平台的迁移。通常,代码迁移是件复杂又繁琐的工作,需要花费开发者大量精力对软件包、源代码、依赖库文件进行人工分析、检查和识别,手动修正不同指令集之间的相关差异,这些差异主要涉及语法、指令、函数和库文件支持情况。为了解决用户代码可迁移性人工排查困难、移植经验欠缺、反复依赖编译调错定位等,投入工作量大,整体效率低的问题,我们推出Kunpeng Porting Advisor鲲鹏代码迁移工具。        鲲鹏代码迁移工具是一款可以简化应用迁移到鲲鹏架构服务器过程的工具。主要面向鲲鹏平台的开发者、用户和第三方待迁移软件提供方开发工程师,对海量代码进行快速地自动化扫描和分析,提供专业的迁移指导报告。同时能够自动分析出需修改的代码内容,并指导如何修改,帮助开发者实现高效的代码迁移。同时支持原生开发代码亲和检查等能力。二.代码迁移工具功能三.功能特性代码迁移工具可以作为独立软件提供给鲲鹏生态用户安装使用,支持的功能特性如下:•当前工具支持五组功能,支持的功能特性分别如下:      •软件迁移评估            •检查用户提供的软件安装包,识别依赖关系,并提供鲲鹏兼容版本的so依赖库对应rpm的包OS发行版官方下载链接。            •检查用户在x86服务器上已安装的软件,识别依赖关系,并提供鲲鹏兼容版本的so依赖库对应rpm的包OS发行版官方下载链接。      •源码迁移            •检查用户C/C++/汇编/Fortran代码软件构建工程文件,并指导用户如何迁移该文件。            •检查用户C/C++/汇编/Fortran/python/Java/Scala/Go软件构建工程文件使用的链接库,并提供可迁移性信息。            •检查用户C/C++/汇编/Fortran软件源码,并指导用户如何迁移源文件。      •软件包重构,分析用户x86软件包构成,重构为适用于鲲鹏平台的软件包。      •专项软件迁移,基于我们丰富的软件迁移经验,帮助用户快速迁移Web、数据库、大数据、高性能计算四大解决方案类软件。      •鲲鹏亲和分析,目前含64位运行模式检查、结构体字节对齐检查、缓存行字节对齐检查、内存一致性检查、构建亲和检查。•用户通过安全传输协议上传软件源码、软件包、二进制文件等资源到工作空间,也可以从Web页面上直接对工作目录下的文件进行删除清理或者覆盖重命名。•支持命令行方式、Web、IDE插件三种工作模式,后两种方式下支持多用户并发扫描。•特别说明:工具不支持迁移windows环境下的软件或者IOS/Mac OS平台应用至Kunpeng平台Linux环境下。四.应用场景对最常用的x86汇编指令进行识别并转换•最常用的1000+条汇编指令自动翻译。•针对受支持的嵌入式汇编指令,提供修改指导;针对完全由受支持的完整汇编指令构成的文件,支持自动转换为结果汇编文件; 支持对尚无法指导修改和转换的汇编指令的识别、提醒。五.源码迁移•识别C/C++/Fortran/汇编源代码,提供修改建议;Make、CMake、Automake编译选项、编译宏的解析及迁移建议•支持100%Intrinsic函数转换(6000+个),包括MMX、SSE及AVX Intrinsic等•支持Fortran内联函数和语法特性以及编译选项的识别•支持Go语言迁移,对go程序使用cgo编译部分中的编译选项、宏定义提供兼容性检查,给出修改建议支持python、Java、Scala语言,对程序中的动态链接库提供兼容性检查,给出修改建议软件迁移评估•识别检查x86平台软件安装包或已安装软件中使用的动态链接库、静态链接库和可执行文件,并将检查出的文件与工具内置的依赖文件列表进行比较匹配,从而为用户提供迁移建议•Jar、war包扫描增强,识别鲲鹏平台已经支持的依赖,提供更精准的依赖兼容替换建议
总条数:133 到第
上滑加载中