-
模型选择Swin-Transformer 线上分数57+,主要受限于尺度EfficientNet-b0 线上分数59+ConvNeXt-tiny 表现最优,作为我们的最终选择以上三个系列模型,在绝大多数视觉任务上的表现都十分优秀。对于本次竞赛,输入分辨率很大程度影响模型的精度,但是线上环境限制了推理时间,经过大量实验ConvNeXt 表现最优。对于线上/线下不一致的思考该比赛的线下验证和线上测试的GAP较大(20~30个点),因此怀疑两个原因:线上测试集添加了对抗样本线上测试集的整体分布和线下数据差异较大线上测试集里面大部分都是hard sample
-
非常感谢!!!金域医学联合华为举办这场《2022“域见杯”医检人工智能开发者大赛》疯狂比赛的那段时光,现在还历历在目,“疯狂”,“废寝忘食”,“彻夜难眠”,用这几个词形容一点都不为过通过比赛即可以在自己的专业方向和高水平的团队巅峰对决,弥补自己再专业方向不足之处,又可以获得一份荣誉和现金奖励作为一个即将毕业的研究生,这是求职很好的敲门砖,为能进更好的企业做铺垫接下来是经验分享,有兴趣的童鞋,可以看看,谢谢捧场!!!竞赛题目:本赛题任务是对DCCL宫颈深部细胞学病变(Deep Cervical Cytological Lesions)图像数据库中的7种细胞分为4个类别(NILM、ASC-US&LSIL、ASC-H&HSIL、SCC&AdC,见“数据说明”部分)进行分类。赛题数据: 数据集包含 8619 张宫颈细胞学图片,图片中总共包含7种细胞,其基本信息如下图所示。同时数据包含多种分辨率:2118*1270、4000*2400等。 当前图像分类模型的研究多针对特征明显的单一尺度数据,此次比赛的数据属于弱特征多尺度数据解题思路: 探索性数据分析:整体方案:传统宫颈深部细胞学病变分类方法多基于手工提取特征进行分类模型构建,本次比赛的数据属于弱特征多尺度数据,手工提取特征困难。本方法采用了基于ConvNeXt和多种数据增强的基本思路,其在免除大规模特征工程的同时具有准确率高、鲁棒性强的特点研究难点(结合具体数据集)1.训练数据特征较弱(抗干扰);2.AB数据集尺度不同(适应性);3.模型预测准确有效(准确性)。数据预处理网络设计与训练数据预处理推理优化总结数据预处理数据预处
-
基于ConvNeXt的宫颈深部细胞学病变分类方法,以下是我们的经验分享
-
前言 大家好,我是“彩虹童子”赛队的队长,比赛前期曾用名“为人类医疗做贡献”,然后中期排名掉到后面了自觉我不配😀,于是换了“彩虹童子”的名字,出自最近在看的一本推理小说。 这次也是单人参赛,有幸拿下第一,在此做个简单的分享,我的GitHub主页:https://github.com/fire717, 欢迎多多交流、互相学习。 分享 首先是简单的赛题分析,给出的标签是4分类的类别标签,数据量略偏少。 然后做个简单的EDA,初步感受是第四类数量较少,可能存在数量不平衡的问题,右下角是前期模型计算的混淆矩阵,可以看出反而是前三类比较不好区分(当然跟第四类本身数量少有关系,只是说明数量不平衡没那么严重)。 尺寸整体比较平均,但是也分布在多个不同的尺寸。 接着就是建模了,中期尝试了回归、多标签的方案,其中多标签在a榜也取得了不错的成绩。 Why 回归:四种细胞其实对应了不同的疾病严重程度,单纯的多分类对每个类别是不做区分的,而实际意义上,正常和低级病变的类间距,应该要小于正常到癌变的类间距才是合理的; Why 多标签:这是细胞粒度的分类,但是标签确实图片粒度的,即同一张图上,可能存在正常、低级、高级、癌变四种细胞,但是只取最严重的癌变作为图片的标签,这样也就丢失了信息。 但是最后还是选择了普通的多分类方案,一是标签没有给出那么细的粒度,我尝试自己研究了下各类细胞特征,找了不少文档资料,但是发现还是比较难;二是为了方便优化,可能这就是所谓的大道至简吧。 然后就是一些常见的炼丹操作了。 之前不少比赛项目都尝试过冻结,这还是第一次涨点,我的认知是模型容量、复杂度和任务难度、数据量等都是需要相互匹配的,这个赛题数据量不多,且线上线下有巨大的gap,因此尝试了下冻结前面的conv层,效果还可以。 最后是喜闻乐见的消融实验环节,这里只有后四个是在b榜的真实分数,前面的都是根据a榜的分差换算到b榜的估计分数。 初赛的时候不知道复赛的内容,就在早期跑过一次全量数据,后面一直没用全量数据跑,复赛发现就加了200数据,于是自己换了全量数据训练就上去了。 感想 工作中主要从事智能安防领域,第一次参加医疗AI的项目,收获很多,也深觉这个方向有巨大的意义,感谢广州市科学技术局、金域医学以及华为云提供的这次机会,也希望有一天能看到医疗AI普惠到千万家庭中去。
-
赛题回顾以宫颈癌筛查为主题,提供近1万张辅以病理医生专业标注的宫颈细胞学图片。选手利用这些图片及标注开发人工智能分类算法,判断图片中细胞的病变程度,最后根据分类的准确程度进行排名。 有以下几个比赛要点:宫颈深部细胞学病变图像数据库中的7种细胞分为4个类别(NILM、ASC-US&LSIL、ASC-H&HSIL、SCC&AdC);以严重程度最高的病变细胞的类别作为该图片的标签;使用图片识别准确率(recognition accuracy)作为评价指标;基于ModelArts提交模型,限制1小时内完成推理;允许对数据进行额外标注(补充条款)。注意到第5条补充条款,主办方给的是分类的数据,但是允许额外标注,比如标注分割或者检测,则标签的粒度会更细,可转换为分割+分类,或者是检测+分类问题,理论上准确率会更高,有部分选手采用此方案,限于本人的非医学背景,放弃该方案。数据分析数据初探上图是官方给出的细胞类别,包括3大类的7种细胞:鳞状上皮内癌前病变细胞、癌症细胞和未见上皮内病变或恶性肿瘤的细胞; 根据病变程度合并相近的种类,最终得到4大类:NILM、ASC-US&LSIL、ASC-H&HSIL、SCC&AdC。观察4个类别图片,容易得出以下简单结论:细胞形态多样化,无法单纯依靠颜色进行区分;非专业人士很难进行检测框标注,额外标注使用目标检测的方案不现实;病变目标占比很小,不易区分。数量分布对训练数据进行统计通过观察数据分布,可以得出以下结论:类别分布不均衡,比例大致为5:9:4:1癌变细胞SCC&AdC数量最少,只有435张可能为长尾问题尺寸分布对于训练图片的大小,有以下结论:数据集中存在多种分辨率图片,且分辨率较大;数据集的图片宽高比集中,约为1.67。数据集特点总结存在多种分辨率的图片,图片比例几乎一致,宽:高=1.67;癌变细胞SCC&AdC数量相对较少,可能存在长尾问题;图片分辨率大,但是病变目标占比小,不易区分;细胞形态比较多,训练集总数只有8千多张;非专业人士无法进行额外标注。方案设计模型选择问题1:什么样的模型精度高且速度快?方案:从ImageNet的benchmark选取几个最优作为候选,实验后选择ConvNeX-T. 同颜色表示同家族模型,圆圈越大表示FLOPS越高,计算量越大;同等计算量下,ConvNeXt精度优于Swin和ViT;在比赛数据集上,相同输入大小和数据增强下,ConvNeXt的确优于Swin和ViT。经验:兼顾速度与精度,ImageNet上的表现依旧值得参考!问题2:更大的模型还是更大的输入?方案:同等计算量下,更大的输入提升更多,选择600x960的输入+ConvNeXt-T模型。 对于同一个模型,在不超时的情况下,输入越大越好!保持输入宽高比在1.67左右。数据增强问题3:如何通过数据增强提高泛化性?方案:RandomGridShuffle、Random Horizontal Flip、 Random Vertical Flip输入宽高比为1.6,近似于3:2,固选择水平方向平均切割3份,竖直方向平均切割2份,随机打乱后重组,概率为0.1;水平翻转,概率为0.5;垂直翻转,概率为0.5。RandomGridShuffle概率不应过大,否则会生成大量不合理的样本,产生副作用!尝试过的其它方案:Resize + RandomCrop,几乎无作用;Random Brightness,几乎无作用;ColorJitter,改变图像对比度,亮度,色彩等,分数下降较多。可能原因:RandomCrop 对数据多样性增加较少;该数据集的分类对颜色比较敏感,过度使用可能会产生不合理样本,导致学习错误特征。损失函数问题4:选用何种损失函数,是否加权解决长尾问题?方案:使用交叉熵(Cross Entropy),不加权。可能原因本数据集的长尾问题并不是非常严重,总体比例为5:9:4:1,没有数量级的差距;线下训练集的数据分布和线上测试集的数据分布不一致,导致加权参数不正确,没有起到作用。训练策略问题5:如何训练保证模型快速收敛且具有更高的精度?方案:经验参数+实验,训练方法很重要!LR:3e-4Warm up: exp for first 3 epochs优化器:AdamWBatch size: 24Scheduler: ConsineAnnealingEpochs: 30尝试过的其它策略:原图分辨率较大,通过将大图分割成小块,分别输入网络学习冻结部分模型参数,使用训练数据fine-tuningBatchMixup、BatchCutMix标签平滑Label Smooth训练框架使用mmclassification进行训练;数据预处理、数据增强、模型、损失函数、优化器等功能完备;配置文件模块化,不用修改训练代码,专注优化策略。线上推理使用对象存储提交模型包推理,提供customize_service.py、model、config.json,流程简单,安装依赖较慢;使用自定义Docker镜像方式,FastAPI封装http接口,提交自定义镜像,无需线上安装依赖,启动速度快。经验总结进行数据分析是一个良好开端,可以提取有用信息指导后续模型选择以及策略开发,做到有的放矢;站在巨人的肩膀上工作,开源数据集上的基准测试对模型选择有很大的参考意义,可以节省时间,快速决策;适合方为好,根据实际数据选择合适的数据增强,才能提高泛化性,一味堆砌只会失去方向,一次添加一种,大胆假设,小心求证;多总结业内通用做法,可以少走弯路,同一模型,采取不同的优化方法差异较大,不合适的训练策略可能让你与好模型失之交臂。展望人工智能与生物医学学科交叉人才稀少,限制了人工智能技术在生物医学领域的应用,本次医检人工智能大赛吸引更多人工智能人才加入医疗领域,推动了医检乃至医疗行业向智慧医疗迈进;金域医学深耕医检领域28年,拥有全国最多的专业病理医生团队,积累了千万级别的宫颈癌筛查数据,在业界有得天独厚的数据优势。希望下一届比赛可以共享更多数量、种类的标注数据,探索更加精准、场景更加广阔的行业应用;华为云的ModelArts是面向开发者的一站式AI开发平台,本次比赛提供了易用的部署推理服务,希望下一次比赛能体验端到端的人工智能模型开发流程,共同推动国产人工智能平台的发展。
-
以前,公司账户A购买算法,指派工程师B去交付,需要如何操作?方法一:必须获得A的密码,加载算法和授权设备方法二:A下载算法包和授权,发给B去离线安装信息敏感、费时费力......新上线的配额共享功能,这些问题都能搞定~功能介绍【配额共享】简单来讲就是:A客户(共享者)购买了N路配额的算法,A客户可以把这1~N路算法共享给其他华为云用户(被共享者)。注意说明:1. 只适配商用规格的算法,试用算法无法配额共享。2. 一种算法只能创建一个共享资源池,最多可添加20名被共享者。3. 每个被共享者使用的数量无限制,直到配额用完为止。4. 被共享者拥有的共享配额不能再共享给他人。操作指导一、创建配额共享资源池(共享者)⑴建立配额共享资源池登录好望商城,点击右上方商品管理->在左侧导航栏选择配额共享资源池,选择我共享给别人,在右上方选择新建。⑵填写共享资源池信息注:华为云账号ID查看方法:华为云->账号中心->我的凭证->(API凭证)账号ID二、配额共享资源池的管理(共享者)⑴在配额共享池的页面中,最右方的【修改】按钮可以管理资源池,如增加、删除被共享者,修改共享配额的数量。⑵分配记录,可以查看到资源池里的配额使用情况。如 配额的分配使用者,分配的设备ID,配额分配的时间,资源池里剩余配额量。三、如何使用被共享的配额(被共享者)⑴查询获得的配额好望商城->商品管理->配额共享资源池->别人共享给我。可以查询配额来源及相关信息。被共享者可在已购买商品->智能算法中可找到被共享的算法。⑵被共享者拥有配额后可在iClient SDC和iClient S100进行在线加载算法,以及下载算法包及license后进行离线加载。或通过好望云服务下发算法。iClient SDC 在线加载算法教程:cid:link_0好望云服务下发算法教程:cid:link_1
-
因群超过人数限制,需要邀请入群IVS1800/ITS800/NVR800问题对接请加下面二维码拉入群
-
在现代工业自动化生产中,涉及到各种各样的检验、生产监视及零件识别应用,例如零配件批量加工的尺寸检查,自动装配的完整性检查,电子装配线的元件自动定位,IC上的字符识别等。通常人眼无法连续、稳定地完成这些带有高度重复性和智能性的工作,其它物理量传感器也难有用武之地。由此人们开始考虑利用光电成像系统采集被控目标的图像,而后经计算机或专用的图像处理模块进行数字化处理,根据图像的像素分布、亮度和颜色等信息,来进行尺寸、形状、颜色等的判别。这样,就把计算机的快速性、可重复性,与人眼视觉的高度智能化和抽象能力相结合,由此产生了机器视觉的概念。一个成功的机器视觉系统是一个经过细致工程处理来满足一系列明确要求的系统。当这些要求完全确定后,这个系统就设计并建立来满足这些精确的要求。文章转自小白学视觉
-
据最新一次统计显示,截至 2019 年 11 月,全球圈养大熊猫种群数量为 600 只,野生大熊猫只有 1864 只。大熊猫因为生育率低、存活率低,曾面临濒危的险境。近年通过保护和救治,已经从濒危进入到易危名单。野外中,雌性大熊猫在四岁成年后,每年发情一次,每次只有短暂的 2-3 天。然而人工饲养的大熊猫,由于长期脱离野外环境,自然发情率本来就低,更别说在短短几天中,找到合适的雄性熊猫与其交配了。动物园和繁育中心,都希望能通过更好的人工繁育方式,提高大熊猫的生育繁殖率。近日,来自四川大学,四川省濒危野生动物保护生物学重点实验室,以及四川大熊猫科学院的研究人员,发表了一篇名为《基于音频的大熊猫自动配对成功预测》的论文,为解决这个问题带来了新的思路。通过声音,确定大熊猫发情状态 根据以往的资料表明,大熊猫在繁殖季节会有特殊的发声行为,这些声音之中,包含了一些重要的信息。比如个体发情的情况,对某异性的好感度等,这些信息会决定最后交配繁衍的成败。该项研究首次尝试了一种基于大熊猫声音的 AI 方法,通过模型来自动预测大熊猫交配成功率。研究中采用了语音情感识别(SER)技术,使用了深度神经网络来学习熊猫独特的发声特征,并定义和判断出发声的类型,再结合以往的数据,自动预测出两只熊猫交配成功的几率。具体的方法是:给定在繁殖过程中录制的大熊猫交配的音频序列,研究人员先将大熊猫的声音裁剪出小片段,然后对其大小和长度进行归一化。接下来,从音频片段中提取到的声学特征,输入到深度神经网络中,经过了训练的模型,将预测匹配是成功还是失败。通过比对结果,就能够得出:两只熊猫交配成功的几率。 用算法提高熊猫生育率在得到算法模型的预测结果后,大熊猫饲养者可以采取适当的后续行动,以提高整体的生育率,这对智能大熊猫育种带来了数据维度的有力帮助。研究人员将此方法,在过去九年的数据集上进行了评估实验,获得了和实际情况相符合的结果。同时证明了基于音频的自动交配成功预测方法,在协助大熊猫繁殖上,具有很大的潜力。研究的后续将继续扩大熊猫的声音数据内容,进一步验证了该方法的实际有效性。此外,研究团队还计划扩展该方法的维度,包括探索声音和视觉方面更细粒度的数据信息。 大熊猫:提高中国的「路人缘」 早在 1957 年,中国就将大熊猫「平平」和「碛碛」,按照「国礼」的形式赠送给前苏联政府和人民,开启了大熊猫外交的先河。1972 年,时任美国总统的尼克松访问中国,开启了中美两国的直接对话,在尼克松返回美国不久,中国就将一对熊猫作为礼物赠送给了美国。《华盛顿邮报》在当时破天荒地,使用了一连串象声词作为标题进行了报道——「Awwwwwwww,They’reCute 嗷嗷嗷嗷嗷嗷,它们太可爱了!」。截至 2018 年,中国与全球 12 个国家的 14 个动物园,建立了大熊猫长期合作研究关系,共有 40 只中国籍大熊猫生活在海外。憨态可掬的大熊猫,成为了全球的可爱担当,也化身成了中国的「友好大使」。相比于过去的纯粹观赏,近年通过中国与全球的研究机构,针对大熊猫开展的合作研究也变得越来越多。为了将这份可爱延续下去,保证它们良好的繁衍生育,就成了其中重要的环节。所以,好好学习神经网络,不仅能帮助大熊猫找到心仪的配偶,说不定还会给自己带来一段良缘呢。文章转自:小白学视觉
-
近日,来自麻省理工学院、加州大学伯克利分校、伊利诺伊大学香槟分校、华盛顿大学、帝国理工学院的六名顶级人工智能科学家、计算机视觉科学家在 ICCV 大会期间进行了题为「A discussion about deep learning vs classical methods and their roles in computer vision」的学术讨论。讨论会上,一个广为讨论的话题是:我们是否应该讲授深度学习之前的传统方法?还是直接通过深度学习解决所有问题?在专家们看来,从事 CV 研究的学生和工程师不仅仅要会使用深度学习方法,也要学习传统的 CV 算法。传统方法和深度学习方法应当是相辅相成的关系。经典的CV方法可以让我们更加深刻地理解任务本身,因为在经典的CV方法中,每一个参数都具有物理意义;当我们掌握了经典CV方法之后,再去学习深度学习方法,对于问题的理解才会更加深刻。 比如:熟悉图像滤波会更容易理解卷积神经网络为什么有效;残差收缩网络将传统方法中的软阈值思想融入进残差网络ResNet;PWC-Net将光流法和用于提取特征的神经网络结合。将经典方法与深度学习方法结合,是近期各大CV顶级会议的一大趋势。每一位致力于长期在CV领域发展的工程师,都不可能摒弃对CV传统方法的研究和学习!除此之外,当我们拥有的数据十分有限或者对可解释性要求较高的场景时,使用基于深度学习的方法就要特别小心。那么我们到底该如何系统地学习CV传统方法,并打下扎实和牢固的基础呢?很多小伙伴们都已经发现,虽然平时收藏了很多干货合集,知识体系的搭建依然零散杂乱,难以抓住CV研究的主要脉路。为了解决这一难题,帮助大家更快更稳入门CV领域,深蓝学院教研团队联合原中科院自动化所的老师们经过潜心打磨和沉淀,推出了《计算机视觉应用基础》课程,帮助大家在CV道路上更加高效学习并实现创新。文章转自:小白学视觉
-
用mindspore写了一个UNet的模型,数据集是网上找的,大致代码如下:在model.train哪里报错了,报错如下:根据这描述,实在不知道是哪里出错了
-
介绍1、 MindStudioMindStudio是一款专为AI开发设计的代码编辑器。旨在提供满足AI开发全过程所需的一站式开发环境,支持模型开发、算子开发以及应用开发三个主流程中的开发任务。本篇文章针对应用开发这一任务,分享使用经验。2、 模型和任务介绍我在本次开发中使用的模型为AttU_Net。该模型使用了PyTorch框架,用于图片的语义分割。模型原作者提出了一种新的结构——注意力门(attention gate,AG)。AttU_Net会自动学习区分目标的外形和尺寸。这种有attention gate的模型在训练时会学会抑制不相关的区域,注重有用的显著特征。就像人类的视觉运作的方式一样,只会把注意力放在关键的部分,attention gate模拟了这一机制,也会给模型带来类似于人类注意力机制的能力,让模型拥有自动寻找图片中重要的位置的能力,并着重分析这一部分。在本实例中,使用的数据集为ISIC 2018 Task 1的数据,包括2594张显微镜下拍摄的医学图片以及对应的分割结果。我这里下载的是Task 1的training data和training ground truth,也就是在下面的图片中圈出来的两个。想要使用相同数据集的话可以自行到数据集名称关联的超链接中进行下载。本次应用开发基于MindX SDK进行,关于MindX SDK的更多详细信息可以在昇腾官方发布的MindStudio文档的“基于MindX SDK开发应用”章节中查看。二、 环境搭建1、 MindStudio下载和安装MindStudio下载连接如下:MindStudio下载-昇腾社区 (hiascend.com)进入页面后可以看到MindStudio的基本信息和版本介绍,往下翻可以就看到Linux系统和Windows系统的安装包,以及Windows系统下的免安装压缩包。可以根据自己的需要进行下载和安装。安装过程比较简单,同意服务协议、确认安装位置之后,等待安装完成即可。2、 CANN下载和安装CANN (Compute Architecture for Neural Networks)是华为公司针对AI场景推出的异构计算架构,通过提供多层次的编程接口,支持用户快速构建基于昇腾平台的AI应用和业务。CANN包含的几个部分如下图所示。使用MindStudio开发的过程需要使用CANN。CANN安装,可以参考下面的连接,按照官方文档给出的步骤进行下载和安装。软件安装-环境准备-5.1.RC1-CANN商用版-文档首页-昇腾社区 (hiascend.com)下面详细展示一下在MindStudio中配置CANN的过程。首先需要配置SSH连接到远程服务器。在Settings中找到SSH Configurations,位置如下图所示,在Tools菜单下。 如果是第一次使用MindStudio,可以在初始窗口左侧边栏中点击Customize,然后在出现的界面中点击最下方的All Settings。项目界面中可以在左上角图标旁边的File菜单中找到Settings,和PyCharm、CLion等编辑器相同。填写好对应信息后,点击上图中圈出的Test Connection按钮,检查连接是否成功。看到下面的小窗口在屏幕中间弹出则表示连接成功。如果提示连接失败,请检查服务器状态、网络是否正常、信息填写是否准确无误等关键部分。接下来是CANN的设置。找到Settings -> Appearance & Behavior -> System Settings -> CANN。进入CANN管理界面。点击右上角的文件夹Change CANN按钮。如果尚未完成CANN安装,按钮上的文字会显示为Install CANN,点击它。进入CANN设置界面。在这里需要填写远程服务器地址。并选择CANN所在位置。点击服务器地址栏右边的小加号,会弹出SSH Configuration的窗口。如下图。可以进行连接测试。填写完服务器地址后,点击Remote CANN Location一栏,选择CANN位置。下图中展示了服务器中需要选择的文件夹。注意需要选到特定的版本。这里选择了5.1.RC1,也可以选择latest。选好后点击CANN设置界面右下角的Finish按钮,开始同步CANN文件,需要稍等一会。同步完成后返回Settings页,会提示需要重启MindStudio来激活CANN。点击OK,等待MindStudio重启。重启后即可看到安装完成的CANN。3、 MindX SDK安装下面来展示本次应用开发中用到的MindX SDK的安装过程。同样在设置Settings中,进入Appearance & Behavior -> System Settings -> MindX SDK,来到MindX SDK管理界面。下图展示的是MindX SDK已经安装完成的状态。界面中“MindX SDK Location”为软件包的默认安装路径,默认安装路径为“C:\Users\用户名\Ascend\mindx_sdk”。 单击“Install SDK”进入MindX SDK管理界面。在这里需要填写远程服务器地址,等关键信息。在选择SDK位置时,需要注意要选到linux-x86-64文件夹下的mxVision-3.0.RC1。路径中有一个父文件夹名字和它相同。如果选择错了,运行时会遇到问题。完成信息填写后点击右下角的OK按钮,MindStudio开始自动同步SDK文件。需要等待一会。完成同步后会回到MindX SDK管理页面。表格中的Operation一栏下,两个图标从左至右分别为删除和激活按钮。Activation一栏中,显示的SDK状态,可以看到现在我们的SDK状态为已激活,可以正常使用。MindX SDK安装完成。过程中遇到任何困难,或者想要了解更多信息,可以前往昇腾社区的官方文档中查阅相关信息。安装MindX SDK软件包-基于MindX SDK开发应用-应用开发-用户指南-5.0.RC1-MindStudio-文档首页-昇腾社区 (hiascend.com)三、 应用开发1、 模型代码下载AttU_Net模型的代码可以在昇腾社区和Gitee仓库中下载。两边的代码相同,推荐在昇腾社区中下载,不需要克隆仓库,直接以压缩包形式获取这一代码以及模型,更加方便一点。Gitee仓库中需要自己运行对应的代码生成onnx模型。AttU-NET-昇腾社区 (hiascend.com)PyTorch/built-in/cv/semantic_segmentation/AttU_Net_for_PyTorch · Ascend/ModelZoo-PyTorch - 码云 - 开源中国 (gitee.com)拿到模型代码后,稍作修改就可以在MindStudio中运行。由于训练、测试和验证数据集是随机划分的,因此存在数据集对应的问题。如果模型在训练时使用的数据集划分和验证精度时不同,会出现使用训练数据验证精度的问题,精度虚高。因此,我在这里打包了一份在同一数据集划分下的,模型文件以及处理后的用于验证精度的数据文件,可以在网盘连接中自取。如果只是学习MindStudio的使用方法或只需打通功能,对精度没有要求,那么这个问题可以忽略。链接:cid:link_11提取码:11112、 项目创建准备好模型和代码后,我们来创建项目。进入New Project页面。我们需要创建的时Ascend App,选择左侧边栏中的第三个。Name栏可以填写项目名称。可以按需要在Decription栏中填写项目描述。CANN Version自动填充。Project Location一栏可以选择存放项目的位置,根据自己的情况选择。整体流程和PyCharm等编辑器相似,用起来还是非常顺手的,不会有特别疑惑的地方。接下来选择项目类型。我们这里需要创建一个空白的,使用Python的MindX SDK项目。因此选择用红色圈起来的这个选项。它左边的选项是使用C语言或C++语言的MindX SDK项目。这两个项目下面的两个,分别是两种语言的模板项目。里面包含不同类型的多个模型,完整展示了MindStudio开发过程的所有代码。如有需要可以创建项目进行学习。可以参考官方文档中的教程“SDK样例工程使用指导“章节,进行详细地自主学习:SDK样例工程使用指导-基于MindX SDK开发应用-应用开发-用户指南-5.0.RC1-MindStudio-文档首页-昇腾社区 (hiascend.com)创建好的空白Python MindX SDK项目如下图所示。需要配置一下Python。点击黄色警示框最右边的连接进入设置界面,根据需要的版本,选择自己电脑中平常使用的Python环境就可以了。AttU_Net模型代码是使用Python 3.7编写的。但在本次应用开发中不需要运行原始的模型代码。AttU_Net中涉及MindX SDK部分的代码可以在Python 3.9的环境下运行。如果代码需要特定版本的Python,请根据特定的要求安装,安装完成后在MindStudio中按照在Pycharm中配置的方式进行配置就好了。3、模型转换MindStudio中,可以对onnx和om模型文件进行可视化的展示。上面两张图片分别是om模型和onnx模型可视化得到的结果。主窗口中看到的是细节结构。右边紧挨着的是模型略缩图,而且展示了主窗口所展示的部分模型所处的位置。还可以选择模型中的节点,查看详细信息。点选节点后,像信息在最右侧的边栏中展示。使用MindStudio可以方便地将onnx模型转换成om模型。我们在项目中新建一个models文件夹,将下载下来的onnx模型放入该文件夹中。模型位置任意,这里放入models文件夹是为了让项目结构更加清晰。下载下来的onnx模型是模型代码中通过PyTorch中的方法生成的。将训练后的模型以onnx格式保存了下来。后续的MindX SDK开发需要om格式的模型。这里会使用到模型转换工具ATC。下图展示了模型转换工具ATC的功能和它所支持的源模型类型。用户使用Caffe/TensorFlow/PyTorch等框架训练好的模型,可通过ATC工具将其转换为昇腾AI处理器支持的离线模型,模型转换过程中可以实现算子调度的优化、权重数据重排、内存使用优化等,可以脱离设备完成模型的预处理。关于ATC的详细讲解和功能使用说明、约束说明可以参考官方文档“模型转换章节:使用前必读-模型转换-用户指南-5.0.RC1-MindStudio-文档首页-昇腾社区 (hiascend.com)下面展示模型转换的过程。首先选择上方菜单栏中的Ascend菜单,选择Model Convertor。如图所示。点击后弹出模型转换器参数窗口。第一项CANN Machine自动填写服务器地址。Model File一栏中,需要给出待转换的源模型路径。点击右边的文件夹图标,看到下图这样的窗口弹出。我们的模型在本地,所以首先需要选择local path这个选项。然后再点击右边的文件夹按钮,选择到刚才放入models文件夹的onnx模型。点击下方OK按钮。回到模型转换器窗口之后,MindStudio会开始解析模型。稍等一会。Model Name会根据模型文件解析结果自动填充,也可以根据需要进行修改。转换后的模型文件会在这里的文件名后面增加“.om”后缀。Target SoC Version是模型转换时指定芯片型号。需要根据板端环境具体芯片形态进行选择。我们这里选择默认的Ascend310。Output Path启用后可以自定义模型输出位置。不开启的话模型会输入到一个默认位置。不用担心找不到,转换完成后可以看到这个路径。Input Format根据输入模型的类型选用。我们的模型为onnx类型,需要选择NCHW。上图中,下面的Shape属性是根据模型文件自动解析的,这里不需要修改。后面的Type属性为数据类型。根据读取数据时的存储格式选择。不匹配的话会在后续运行中报错,像下面这张图中展示的这样。这里报错的原因是我把Type选择成FP16了,但是实际读取数据的时候,使用了FP32进行存储,并以FP32的格式传递给了模型。报错信息很长,需要将滚动条拉到最右边才可以看到这部分报错内容。所以Type这里一定要和需要的数据类型相匹配。关于这个窗口中所有属性的含义,以及不同情况下应该如何填写的信息可以在模型转换-模型转换-用户指南-5.0.RC1-MindStudio-文档首页-昇腾社区 (hiascend.com)这个页面里面的“表1 Model Information界面参数配置”中查阅。模型转换完成后可以卡到如下图所示的输出。绿色文字提示转换成功。在橙色方框圈出来的这行中可以看到文件输出路径。在这里可以找到拷贝到本地的om模型。同样将它放到models文件夹下。4、 流程编排MindX SDK实现功能的最小粒度是插件,每一个插件实现特定的功能,如图片解码、图片缩放等。将这些插件按照合理的顺序编排,实现相应的功能。可视化流程编排是以可视化的方式,开发数据流图,生成pipeline文件供应用框架使用。已有插件可以在mxManufacture用户指南-制造业视觉质检-3.0.RC1-MindX SDK-文档首页-昇腾社区 (hiascend.com)和mxVision 用户指南-智能视频分析-3.0.RC1-MindX SDK-文档首页-昇腾社区 (hiascend.com)中的“已有插件介绍”章节中查找和查看功能。如果已有的插件不能满足所需功能,可以参考插件开发-基于MindX SDK开发应用-应用开发-用户指南-5.0.RC1-MindStudio-文档首页-昇腾社区 (hiascend.com)自行开发插件。在所下载的代码中,可以看到在infer -> data -> config目录下,有一个以.pipeline结尾的文件。这就是AttU_Net写好的流程编排文件。在项目中新建文件夹pipeline,将它复制到该文件夹下。这个文件稍作修改就可以直接使用。MindStudio中,可以进行可视化的流程编排。我们来了解和学习一下这个功能。如下图,选择顶部菜单栏中的Ascend,载选择倒数第四个MindX SDK Pipeline,进入流程编排页面。首先会创建一个空白的new.pipeline文件。圈出来的部分可以切换可视化编排和文字形式编排两种开发方式。在Pipeline Stream Editor这个菜单中,可以按名称或分类查找需要的插件。找到后点击并拖拽到右边的画布上,就成功地添加了这个插件。编排插件执行顺序只需要将两个插件连接起来。点击插件后可以在右边的边框中查看插件属性。对于需要配置模型位置的插件,可以在这里可视化地选择。新生成的这个new.pipeline只是临时文件,在项目结构中是看不到的。点击右边栏下方的save按钮,进行保存后才会真正出现在项目内。我们这里直接使用下载的模型中写好的流程编排文件。需要修改文件中的模型路径。注意这里的路径需要填写om模型文件相对于main.py的位置。上图中stream名称和输入数据插件名称、推理插件名称是下面的main.py文件中需要对应的填写的名字。下一节中会进行相应的解释。5、 main.py的编写及项目运行下载的模型文件中,infer -> sdk文件夹下有一个main.py文件,直接将代码内容拷贝过来。会有找不到包和方法的标红,没有关系,不用处理。标红的是本地没有的包和方法,但是在服务器上是可以找到的。需要修改数据集文件路径和pipeline文件路径。这里的数据文件存放在data文件夹下。数据处理采用了批量处理的方式。可以在下载的代码中的infer -> util文件夹下找到data_process.py文件,这个文件就是将ISIC 2018数据集中的图片转换成这里看到的txt文件的代码。文件数据在上文的百度网盘链接中可以获取。也可以使用下载的代码自行转换。当然页可以不使用这种批量处理的方式。只有一张图片也是可以进行语义分割的。数据处理的步骤包括裁剪成224*224大小,和以0.5为均值和方差的数据归一化,以及保留六位小数这三个步骤。如需自行处理图片,可以参考data_process.py中的代码,进行这三个步骤,并将数据以需要的格式输出。接下来的步骤是根据流程编排创建stream进行计算。需要按照下面的代码所展示的形式对参数进行设置。绿色的b开头的字符串后面跟的appsrc0、mxpi_tensorinfer0是流程编排中对应插件的名字,AttU_Net是流程编排文件中的stream名。可以在pipeline文件中相应的看到。另外还有一处需要进行说明,那就是结果的输出方式和精度验证。这里采用的是批量输出为txt文件的形式。在下图中圈出的部分可以修改文件名。当然页可以采用其他方式。在下载的代码中,infer -> util目录下,可以看到两个名字中带有evaluation的文件。这两个文件就是用于计算结果精度的。可以拿过来,在result_evaluation中设置好结果路径和valid_GT_images.txt路径后,直接调用计算精度。infer_evaluation文件中,有编写好的用于计算各种指标的函数,也可以利用这两个文件中写好的基本方法,按自己的需要编写验证模型效果的代码。当然也可以将效果验证融合在main.py中,得到结果后继续计算精度、F1等关键指标并输出。AttU_Net模型的精度正常情况下在0.96左右。如果有使用训练集验证精度的情况,会导致精度过高,有可能达到0.98多。接下来就可以运行了。需要进行配置。Deployment会自动填写远端服务器地址。Executable栏需要选择刚刚编写好的main文件,点击OK。点击左上部分的绿色运行按钮,开始运行。等待一会,就可以得到运行结果。截图中是运行完成的状态,可以看到result.txt文件。四、 总结MindStudio使用下来,给我的感受是,它确实一款非常实用的AI开发工具。功能全面、强大,且支持多种编程语言,无需太多本地计算。可能是因为还比较新颖,而且功能很多,现在还没有非常普及。相信金子总会发光,随着时间的推移,会有越来越多的AI开发者发现它的实用性。在华为云上可以找到MindStudio的专属论坛。链接放在这里MindStudio_昇腾_开发者论坛-华为云论坛 (huaweicloud.com),开发过程中遇到任何问题,都可以在上面提出和讨论,也可以查一查有没有同志遇到过相同问题,说不定已经有了解决方法。也可以在上面做开发经验分享,帮助其他开发者解决遇到的问题。欢迎大家来论坛上交流经验。
-
赛题描述本次大赛结合医检行业特色,以宫颈癌筛查为主题,提供近1万张辅以病理医生专业标注的宫颈细胞学图片。利用这些图片及标注开发人工智能分类算法,判断图片中细胞的病变程度,并进行分类。 赛题任务任务指标: 识别准确率 = 识别正确的图片数 / 图片总数推理时间要求: 计算资源规格为“CPU: 2 核 8GB”,一小时内完成1800张图像预测数据分析数据处理模型选择总结致谢
-
前言在智能手机越来越普及的今天,拍摄一张色彩鲜艳、清晰的照片轻而易举。但是老照片没有如此“幸运”,大多为黑白。借助人工智能技术,可以一定程度上帮助老照片还原原来色彩。还记得之前火热的“老北京视频上色”吗?就是采用类似的技术啊。这次介绍的是黑白图像上色应用,旨在华为自研的Ascend 310推理芯片上实现输入黑白图像,自动对黑白图像进行上色,还原彩色图像。该应用案例整体流程如下图所示:简单来说分为以下部分:图像前处理:将输入的黑白图像通过opencv转换为Lab图,并抽取其中的L通道进行前处理;Colorization模型推理:将处理后的L通道传入模型进行推理,获得预测结果的a,b通道;模型后处理:拼接原始L通道和预测得的a,b通道获得新的Lab图。环境AI加速型 | ai1s.large.4 | 2vCPUs | 8GiBMindStudio5.0.RC1_CANN5.1.RC1Ubuntu 18.04 server 64bit操作流程假设我们已经收到代金券,并通过官方共享的镜像购买了ECS。1. 登录环境我使用的是MobaXterm,登陆界面如图所示:2. 获取代码2.1 切换到普通用户默认登录是root用户,权限太大了,开发不太安全,我们先切换到普通用户,命令如下:su - HwHiAiUser切换成功后,终端的提示符会变成$,我的当前目录如下图所示:2.2 获取代码我使用的是官方案例,执行如下命令下载:git clone https://gitee.com/ascend/mindxsdk-referenceapps.git运行成功截图如下:注意,这里是下载的完整仓库,下面选择具体案例,我先选择Colorization来试试吧,先将这里案例拷贝出来一份到我的工作目录,我们下载的就当备份,开发切记要常备份,有备无患。详细信息截图如下。2.3 运行2.3.1 模型转换本工程原模型是caffee模型,需要使用atc工具转换为om模型,模型和所需权重文件已上传,请使用以下命令下载并解压:mkdir model cd model wget https://mindx.sdk.obs.myhuaweicloud.com/mindxsdk-referenceapps%20/contrib/Colorization/model.zip --no-check-certificate unzip model.zip下载完成并成功解压的截图:下载并解压完毕后,进入scripts目录执行模型转换脚本cd ../scripts bash atc_run.sh运行报错了,如下所示:回头看看该案例之前的环境要求,如下所示,考虑到该案例最早的更新也是6个月前了,推测是CANN版本不匹配或其他软件驱动问题或者是我们目前登录的用户与安装的用户不一致,也就是说我们登陆的用户没有安装CANN和配套软件,这里就不深究了。直接来实际操作验证一下。下面我们切换到root用户下试试,执行如下命令:su root bash atc_run.sh模型转换成功了,如下图所示,看来是使用的用户不对,还得使用root用户。2.3.2 获取测试图片将待上色图片移动至data目录。本样例使用图片方式获取如下cd ../ mkdir data cd data wget https://c7xcode.obs.cn-north-4.myhuaweicloud.com/models/colorization_picture-python/dog.png --no-check-certificate上述命令运行成功的截图如下:2.3.3 运行推理工程进入scripts目录,修改run.sh文件中INPUT_PIC变量为输入图片的路径,本示例为"../data/dog.png",这个可以保持默认,暂时不做修改。此外,还要修改MX_SDK_HOME环境变量为SDK实际安装路径。如果你不知道或不确定的话,我们下来查看一下,执行如下命令,即可查看当前的环境变量:export执行后得到的结果截图如下,我们可以找到MX_SDK_HOME了,那么直接用来修改run.sh就好了。修改后的run.sh截图:修改完成后,按照如下命令执行脚本:cd .. # 回到Colorization目录下 mkdir out cd ../scripts bash run.sh这时,可能会报错,如下图所示,这是没安装OpenCV,其实前面的环境约束已经说了要安装OpenCV依赖的,我们来安装一下,执行如下命令:pip3 install opencv-python --user -i https://pypi.tuna.tsinghua.edu.cn/simple之后再执行脚本,启动程序,就能运行成功了,部分运行截图如下所示:... 输出结果保存在out目录下,下载至本地查看图片上色是否合理,下面给大家展示一下前后效果:总的来说,除了狗的左侧耳朵的颜色有点问题外,效果还是很不错的,颜色比较自然,符合人类认知,感觉和拍摄得到的自然图片没什么区别哈。好了,到此这个案例基本就体验完成了,还是很不错的。感兴趣的同学,可以将图片换成自己想要的图片来试试上色效果哦,注意修改图片名称和可能要修改的尺寸参数哦。2.4 基于MindStudio的运行2.4.1 启动MindStudio官方提供的镜像中有MindStudio的安装包,但是ECS默认是root用户登录,而在root用户下启动失败,应该是要HwHiAiUser才可以,但是HwHiAiUser用户在/root目录下无权限,无法启动存放在此的MindStudio,有点尴尬。所以,我要将MindStudio拷贝到HwHiAiUser的目录下,授予权限来使用,具体命令如下,注意以下命令是在root用户下操作:cp /root/MindStudio_5.0.RC1_linux.tar.gz /home/HwHiAiUser/ cd /home/HwHiAiUser/ chown HwHiAiUser:HwHiAiUser MindStudio_5.0.RC1_linux.tar.gz切换到HwHiAiUser用户,再来执行:tar -zxvf MindStudio_5.0.RC1_linux.tar.gz解压完成的截图如下所示:下面来启动MindStudio了,执行如下命令:cd MindStudio/bin ./MindStudio.sh初次启动可能有点慢,这也与当时网络状况有关,稍作等待即可,启动成功截图如下:还记得我们之前成功运行的黑白图像上色的工程吗?现在来打开看看。注意,MindStudio的图形界面和我们的操作都是通过ssh来连接和传输的,因此网络质量还是有较大影响的,如果网络状况好那就事半功倍了。在开发或运行前,先来熟悉下操作,那就先看看输入图像,双击打开,如下图所示:很不错,和我们平时在PyCharm或IDEA上看的界面基本一致,如上图右上角所示,还显示了该图像的具体大小,尺寸和格式等,很详细。2.4.2 配置环境变量如果使用的是官方提供的镜像,则可按照下图说明配置:配置好后会提示自动重启MindStudio,在整个MindStudio运行期间,CPU利用率在50%-70%波动,有时达到100%,可见还是很耗CPU资源的,也可能是我的ECS的双核有点拉跨了。不过我觉得ssh远程连接还要用图形界面来开发,这有点相悖,图形界面本身就消耗较大资源,这就失去了ssh远程连接小巧轻便的优势。之后按照下图转为基于mxVision的Ascend APP即可:建议1.关于色域转换的问题我观察到目前一些应用案例涉及的色域转换,比如将 YUV 格式图像转换为 RGB(具体链接链接见下方),调用的是OpenCV,我的理解是这使用 CPU(ARM或x86)通过软件的方式来实现,但根据我之前的经验,即使用C++也是比较慢的,特别是在处理的图像尺寸较大(1080P,甚至4K,现在人们对分辨率的要求越来越高)的时候,可能很难满足实时(指30FPS)的要求(因时间关系,并未对这里提到的应用案例做测试,抱歉)。如果是这样,那么应用性就不是很大了,可能更多是趣味性,但这可能不符合Ascend 310和配套软件的定位了。应用案例链接:cid:link_02. 关于后处理的问题这里问题之前在论坛看到有人提过,这里简单说一下:在目标检测或目标跟踪的后处理阶段,我们可能需要根据解析得到的坐标框在输入图像上绘制出来以达到较好的可视化效果,目前看到的更多是调用OpenCV的API来实现,但这是纯软件的实现,消耗的是CPU资源,如果目标框很多的情况下,耗时很大,以致于成为整个流程中的性能瓶颈,暂时未看到昇腾给出的相关硬件方案,期待能够加速的解决方法。3. 对网络质量要求高我在仅仅ssh连接操作时,还是很流畅的,也能够满足开发和调试需要。但是使用MindStudio后,在MindStudio中操作延迟很高,每次操作都要等一会才行,可能是我本地网络不太好或者ECS的CPU负载太高,但是用户网络不好或ECS规格较低这都是可能的情况,从这个角度来说,还不如不用MindStudio的图形界面,直接在终端开发,可能更熟悉,更方便。感觉MindStudio还是适合在本地配置较高的电脑端使用,在ECS上远程连接使用还是不太行。我这里使用实在是太卡了,就先这样吧。4. 配置复杂安装了MindStudio后,还需要进行繁琐的配置,配置CANN、mindx_sdk等等,而且这些需要用户自行去做,MindStudio自身不会有任何提示和帮助,这和我用其他IDE,比如IDEA之类的不同,IDEA会根据当前电脑的情况,提供选择给用户,仿佛是扫描了一遍电脑,找到了用户安装的JDK之类的,并根据版本的不同,呈现给用户以供选择。而MindStudio却没有类似的帮助和支持。
-
一、MindStudio介绍与安装相关课程:昇腾全流程开发工具链(MindStudio)本课程主要介绍MindStudio在昇腾AI开发中的使用,作为昇腾AI全栈中的全流程开发工具链,提供覆盖训练模型、推理应用和自定义算子开发三个场景下端到端工具,极大提高开发效率。建议开发前,学习该课程的第1章和第3章,可以少走很多弯路!!!MindStudio介绍MindStudio提供您在AI开发所需的一站式开发环境,支持模型开发、算子开发以及应用开发三个主流程中的开发任务。依靠模型可视化、算力测试、IDE本地仿真调试等功能,MindStudio能够帮助您在一个工具上就能高效便捷地完成AI应用开发。MindStudio采用了插件化扩展机制,开发者可以通过开发插件来扩展已有功能。 (1)功能简介针对安装与部署,MindStudio提供多种部署方式,支持多种主流操作系统,为开发者提供最大便利。针对网络模型的开发,MindStudio支持TensorFlow、Pytorch、MindSpore框架的模型训练,支持多种主流框架的模型转换。集成了训练可视化、脚本转换、模型转换、精度比对等工具,提升了网络模型移植、分析和优化的效率。针对算子开发,MindStudio提供包含UT测试、ST测试、TIK算子调试等的全套算子开发流程。支持TensorFlow、PyTorch、MindSpore等多种主流框架的TBE和AI CPU自定义算子开发。针对应用开发,MindStudio集成了Profiling性能调优、编译器、MindX SDK的应用开发、可视化pipeline业务流编排等工具,为开发者提供了图形化的集成开发环境,通过MindStudio能够进行工程管理、编译、调试、性能分析等全流程开发,能够很大程度提高开发效率。(2)功能框架MindStudio功能框架如图1-1所示,目前含有的工具链包括:模型转换工具、模型训练工具、自定义算子开发工具、应用开发工具、工程管理工具、编译工具、流程编排工具、精度比对工具、日志管理工具、性能分析工具、设备管理工具等多种工具。图1-1 工具链功能架构 (3)工具功能MindStudio工具中的主要几个功能特性如下:工程管理:为开发人员提供创建工程、打开工程、关闭工程、删除工程、新增工程文件目录和属性设置等功能。SSH管理:为开发人员提供新增SSH连接、删除SSH连接、修改SSH连接、加密SSH密码和修改SSH密码保存方式等功能。应用开发:针对业务流程开发人员,MindStudio工具提供基于AscendCL(Ascend Computing Language)和集成MindX SDK的应用开发编程方式,编程后的编译、运行、结果显示等一站式服务让流程开发更加智能化,可以让开发者快速上手。自定义算子开发:提供了基于TBE和AI CPU的算子编程开发的集成开发环境,让不同平台下的算子移植更加便捷,适配昇腾AI处理器的速度更快。离线模型转换:训练好的第三方网络模型可以直接通过离线模型工具导入并转换成离线模型,并可一键式自动生成模型接口,方便开发者基于模型接口进行编程,同时也提供了离线模型的可视化功能。日志管理:MindStudio为昇腾AI处理器提供了覆盖全系统的日志收集与日志分析解决方案,提升运行时算法问题的定位效率。提供了统一形式的跨平台日志可视化分析能力及运行时诊断能力,提升日志分析系统的易用性。性能分析:MindStudio以图形界面呈现方式,实现针对主机和设备上多节点、多模块异构体系的高效、易用、可灵活扩展的系统化性能分析,以及针对昇腾AI处理器的性能和功耗的同步分析,满足算法优化对系统性能分析的需求。设备管理:MindStudio提供设备管理工具,实现对连接到主机上的设备的管理功能。精度比对:可以用来比对自有模型算子的运算结果与Caffe、TensorFlow、ONNX标准算子的运算结果,以便用来确认神经网络运算误差发生的原因。开发工具包的安装与管理:为开发者提供基于昇腾AI处理器的相关算法开发套件包Ascend-cann-toolkit,旨在帮助开发者进行快速、高效的人工智能算法开发。开发者可以将开发套件包安装到MindStudio上,使用MindStudio进行快速开发。Ascend-cann-toolkit包含了基于昇腾AI处理器开发依赖的头文件和库文件、编译工具链、调优工具等。2. MindStudio安装具体安装操作请参考:MindStudio安装指南 MindStudio环境搭建指导视频 (1)场景介绍纯开发场景(分部署形态):在非昇腾AI设备上安装MindStudio和Ascend-cann-toolkit开发套件包。可作为开发环境仅能用于代码开发、编译等不依赖于昇腾设备的开发活动(例如ATC模型转换、算子和推理应用程序的纯代码开发)。如果想运行应用程序或进行模型训练等,需要通过MindStudio远程连接功能连接已部署好运行环境所需软件包的昇腾AI设备。开发运行场景(共部署形态):在昇腾AI设备上安装MindStudio、Ascend-cann-toolkit开发套件包、npu-firmware安装包、npu-driver安装包和AI框架(进行模型训练时需要安装)。作为开发环境,开发人员可以进行普通的工程管理、代码编写、编译、模型转换等功能。同时可以作为运行环境,运行应用程序或进行模型训练。(2)软件包介绍MindStudio:提供图形化开发界面,支持应用开发、调试和模型转换功能,同时还支持网络移植、优化和分析等功能。Ascend-cann-toolkit:开发套件包。为开发者提供基于昇腾AI处理器的相关算法开发工具包,旨在帮助开发者进行快速、高效的模型、算子和应用的开发。开发套件包只能安装在Linux服务器上,开发者可以在安装开发套件包后,使用MindStudio开发工具进行快速开发。二、MindX SDK介绍与安装MindX SDK介绍MindX SDK提供昇腾AI处理器加速的各类AI软件开发套件(SDK),提供极简易用的API,加速AI应用的开发。应用开发旨在使用华为提供的SDK和应用案例快速开发并部署人工智能应用,是基于现有模型、使用pyACL提供的Python语言API库开发深度神经网络应用,用于实现目标识别、图像分类等功能。图2-1 MindX SDK总体结构通过MindStudio实现SDK应用开发分为基础开发与深入开发,通常情况下用户关注基础开发即可,基础开发主要包含如何通过现有的插件构建业务流并实现业务数据对接,采用模块化的设计理念,将业务流程中的各个功能单元封装成独立的插件,通过插件的串接快速构建推理业务。mxManufacture & mxVision关键特性:配置文件快速构建AI推理业务。插件化开发模式,将整个推理流程“插件化”,每个插件提供一种功能,通过组装不同的插件,灵活适配推理业务流程。提供丰富的插件库,用户可根据业务需求组合Jpeg解码、抠图、缩放、模型推理、数据序列化等插件。基于Ascend Computing Language(ACL),提供常用功能的高级API,如模型推理、解码、预处理等,简化Ascend芯片应用开发。支持自定义插件开发,用户可快速地将自己的业务逻辑封装成插件,打造自己的应用插件。2. MindX SDK安装步骤1 Windows场景下基于MindStuido的SDK应用开发,请先确保远端环境上MindX SDK软件包已安装完成,安装方式请参见《mxManufacture 用户指南》 和《mxVision 用户指南》 的“使用命令行方式开发”>“安装MindX SDK开发套件”章节。步骤2 在Windows本地进入工程创建页面,工具栏点击File > Settings > Appearance & Behavior > System Settings > MindX SDK进入MindX SDK管理界面。界面中MindX SDK Location为软件包的默认安装路径,默认安装路径为“C:\Users\用户名\Ascend\mindx_sdk”。单击Install SDK进入Installation settings界面,如图2-2。图2-2 MindX SDK管理界面如图2-3所示,为MindX SDK的安装界面,各参数选择如下:Remote Connection:远程连接的用户及IP。Remote CANN Location:远端环境上CANN开发套件包的路径,请配置到版本号一级。Remote SDK Location:远端环境上SDK的路径,请配置到版本号一级。IDE将同步该层级下的include、opensource、python、samples文件夹到本地Windows环境,层级选择错误将导致安装失败。Local SDK Location:同步远端环境上SDK文件夹到本地的路径。默认安装路径为“C:\Users\用户名\Ascend\mindx_sdk”。图2-3 MindX SDK安装界面图2-4 安装完成后的MindX SDK管理界面步骤3 单击OK结束,返回SDK管理界面,可查看安装后的SDK的信息,如图2-4所示,可单击OK结束安装流程。三、可视化流程编排介绍SDK基础概念通过stream(业务流)配置文件,Stream manager(业务流管理模块)可识别需要构建的element(功能元件)以及element之间的连接关系,并启动业务流程。Stream manager对外提供接口,用于向stream发送数据和获取结果,帮助用户实现业务对接。Plugin(功能插件)表示业务流程中的基础模块,通过element的串接构建成一个stream。Buffer(插件缓存)用于内部挂载解码前后的视频、图像数据,是element之间传递的数据结构,同时也允许用户挂载Metadata(插件元数据),用于存放结构化数据(如目标检测结果)或过程数据(如缩放后的图像)。图4-1 SDK业务流程相关基础单元 2. 可视化流程编排MindX SDK实现功能的最小粒度是插件,每一个插件实现特定的功能,如图片解码、图片缩放等。流程编排是将这些插件按照合理的顺序编排,实现负责的功能。可视化流程编排是以可视化的方式,开发数据流图,生成pipeline文件供应用框架使用。图 4-2 为推理业务流Stream配置文件pipeline样例。配置文件以json格式编写,用户必须指定业务流名称、元件名称和插件名称,并根据需要,补充元件属性和下游元件名称信息。步骤1 进入工程创建页面,用户可通过以下方式开始流程编排。在顶部菜单栏中选择Ascend>MindX SDK Pipeline,打开空白的pipeline绘制界面绘制,也可打开用户自行绘制好的pipeline文件,如图4-3。绘制界面分为左侧插件库、中间编辑区、右侧插件属性展示区,具体参考pipeline绘制 。步骤2 在左侧编辑框选择插件,拖动至中间编辑框,按照用户的业务流程进行连接。如果拖动错误插件或者错误连线,选中错误插件或者错误连线单击键盘Del键删除。用户自定义的流水线绘制完成后,选中流水线中的所有插件,右键选择Set Stream Name设置Stream名称,如果有多条流水线则需要对每一条流水线设置Stream名称。绘制完成单击Save保存。图4-2 Detection and Classification配置pipeline样例图4-3 pipeline绘制界面四、ESRGAN介绍超分辨率生成对抗网络(SRGAN)是一项能够在单幅超分辨率图像中生成逼真纹理的开创性工作。 然而,产生幻觉的细节往往伴随着令人不快的伪影。 为了进一步提高视觉质量,我们深入研究了SRGAN的三个关键组成部分——网络结构、对抗损失和感知损失,并对它们进行改进,得到了一个增强的SRGAN (ESRGAN)。 特别地,ESRGAN引入了没有批处理规格化的残差-残差密集块(RRDB)作为基本网络构建单元。 此外,ESRGAN借鉴了GAN的思想,让鉴别器预测相对真实而不是绝对值。最后,ESRGAN利用激活前的特征来改善知觉损失,为亮度一致性和纹理恢复提供更强的监督。得益于这些改进,ESRGAN实现了比SRGAN更好的视觉质量和更真实和自然的纹理,并赢得了PIRM2018-SR挑战赛的第一名。如图所示,ESRGAN网络结构,如图4-1所示:图4-1 ESRGAN网络结构代码地址:cid:link_7SDK相关工程目录结构,如图4-2所示:图4-2 SDK相关工程目录结构五、代码文件、推理数据集及模型下载代码文件下载代码地址:cid:link_7下载代码存放到本地,在本项目中只使用MindX SDK功能,所以只用到infer/sdk中的代码。 2.推理数据集下载数据集使用的是Set5,在infer/sdk/目录下先创建两个文件夹“./Set5/HR/”, “./Set5/LR/”,将以“…HR.png”命名的图片保存到“./Set5/HR/”文件夹中, 以“…LR.png”命名的图片保存到“./Set5/LR/”文件夹中。 3.模型文件(*.ckpt)下载cid:link_0先在910上导出air模型文件,保存到infer/sdk目录下。六、创建工程步骤1在顶部菜单栏中选择File > open,选择如图所示,sdk这一级的目录,步骤2 在顶部菜单栏中选择Ascend > Convert To Ascend Projec,进入如图6-1所示页面,各参数选择如图所示,点击OK,将该项目转换为Ascend MindX SDK App。图6-1 转换为Ascend MindX SDK App七、模型转换功能介绍及操作步骤讲解用户使用Caffe/TensorFlow等框架训练好的第三方模型,可通过ATC工具将其转换为昇腾AI处理器支持的离线模型(*.om文件),模型转换过程中可以实现算子调度的优化、权重数据重排、内存使用优化等,可以脱离设备完成模型的预处理,详细架构如图7-1所示。图7-1 ATC工具功能架构在本项目中,要将mindspore框架下训练好的模型(*.air文件),转换为昇腾AI处理器支持的离线模型(*.om文件),具体步骤如下:步骤1 点击Ascend > Model Converter,进入模型转换界面,参数配置如图7-2所示,若没有CANN Machine,请参见第八章第一节CANN安装。图7-2 模型转换界面1各参数解释如下表所示:CANN MachineCANN的远程服务器Model File*.air文件的路径(可以在本地,也可以在服务器上)Model Name生成的om模型名字Output Path生成的om模型保存在本地的路径图7-3 模型转换界面2图7-4 模型转换界面3步骤2 点击Next进入图7-3界面,该项目数据不需要预处理,直接点击Next,进入图7-4界面,再点击Finish开始模型转换。步骤3 等待出现如图7-5所示的提示,模型转换成功图7-5 模型转换成功步骤4 双击转换成功的om模型文件,可以查看网络结构。如图7-6所示图7-6 查看模型网络结构八、运行工程操作步骤讲解步骤1 修改“sdk/config/esrgan.pipeline”中的参数,具体操作如图8-1所示;图8-1 修改pipeline中*.om文件路径步骤2 在MindStudio工程界面,依次选择“Run > Edit Configurations...”,进入运行配置页面。选择“Ascend App > 工程名”配置应用工程运行参数,图8-2为配置示例。配置完成后,单击“Apply”保存运行配置,单击“OK”,关闭运行配置窗口。图8-2 工程推理工程运行参数配置Deployment远程服务器Executable运行文件Command Arguments运行参数在本工程中,推理时运行文件选择main.py,运行参数为--img_path [LR_path] --pipeline_path [pipeline_path] --infer_result_dir [result_path]参数解释如下表:参数解释我的设置img_path推理图片路径./Set5/LR/pipeline_pathPipeline文件路径./config/esrgan.pipelineinfer_result_dir推理结果保存路径./infer_result/步骤3 点击运行,出现如图8-3所示提示,即为运行成功,infer_result文件夹中即为推理结果,保存为二进制形式。图8-3 推理操作过程步骤4 配置后处理运行程序,在MindStudio工程界面,依次选择“Run > Edit Configurations...”,进入运行配置页面,如图8-4所示,点击“+”,后选择Python(后处理可以直接在本地运行),如图8-5所示。图8-4 运行配置界面图8-5 选择本地Python解释器图8-6 运行后处理相关配置Script path运行文件路径Parameters运行时的参数如图8-6所示,运行文件为postprocess.py,运行参数为:--HR_path [HR_image_path] --predict_result [infer_result] --result_path [save_image_path]相关参数解释及设置参数解释我的设置HR_path数据集中高分辨率图片./Set5/HR/predict_result步骤3中的推理结果./infer_result/result_path最终结果保存的目录./sdk_result_img/步骤5 点击运行,出现如图8-7所示提示,即为运行成功,sdk_result_img文件夹中即为最终结果,PSNR为推理生成的图片与原图片对比的指标。图8-7 运行后处理程序 步骤6 结果分析,如图8-8所示,为ESRGAN生成的高分辨率图像与原图像对比,可以看到,在一些细节上生成的图像在细节和纹理上已经很清晰。图8-8 ESRGAN生成的高分辨率图像与原图像对比九、遇见的问题在使用MindStudio时,遇到问题,可以登陆MindStudio昇腾论坛进行互动,提出问题,会有专家老师为你解答。模型转换时,没有CANN Machine图9-1 CANN管理界面解决方案:按以下步骤,重新安装CANN Machine步骤1 点击File>Settings>Appearance & Behavior > System Settings > CANN,进入CANN管理界面,如图9-1所示:步骤2 点击Change CANN,进入Remote CANN Setting界面,如图9-2所示重新安装CANN,点击Finish,安装CANN。9-2 Remote CANN Setting界面图9-3 安装CANN完成参数解释如下表:Remote Connection远程服务器IPRemote CANN location远程服务器中CANN路径步骤3 完成CANN安装,点击OK,重启MindStudio,如图9-3所示。MindStudio导入应用工程后,提示“No Python interpreter configured for the module”解决方案:步骤1 在顶部菜单栏中选择File > Project Structure,在Project Structure窗口中,点击Platform Settings > SDKs,点击上方的“+”添加Python SDK,从本地环境中导入Python,如图9-4所示。图9-4 导入Python SDK步骤2 点击Project Settings > Project,选择上一步添加的Python SDK,如图9-5所示。图9-5 设置Project SDK步骤3 点击Project Settings > Modules,选中“MyApp”,点击“+”后选择Python,为Python Interpreter选择上述添加的Python SDK。点击OK完成应用工程Python SDK配置,如图9-6所示。图9-6 选择Python SDK
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签