• [参赛经验分享] 2022“域见杯”医检人工智能开发者大赛优胜奖方案分享——第三名(forsuccess)参赛经验分享
    一、方法探索1. Baseline•方法将原图resize到224×224,训练resnet50分类器;•存在问题原图较大,而病变细胞相对原图来说所占面积很小,直接进行resize会导致信息丢失2. 先切片,再分类•方法将原图中的病变细胞以224×224的尺寸抠出,再去训练分类器,测试时将原图以224×224的尺寸均匀切片,依次传入分类器,综合所有切片分类结果得到最终决策;•存在问题由于分类模型泛化能力不足,以及等分切片很难保证将病变细胞完整地包含在小切片中,因此,在测试阶段,同一张图的小切片中会存在大量假阳,严重降低最终决策准确率。3. 先分割,再分类•方法先训练一个分割模型,分割模型只分割病变细胞,不区分病变种类,根据分割mask将置信度较大的区域抠出,然后训练分类器;•存在问题由于测试阶段有时间限制,只能使用轻量分割模型,导致分割准确率较低,会产生较多假阳样本,干扰最终分类,且模型泛化能力弱,测试准确率较低。4. 总结(1) 使用轻量Unet,减少分割时间;(2) 训练阶段进行数据增强;(3) 分类阶段使用多模型;(4) 使用随机森林进行最终决策。二、方法介绍1. 网络结构2. Unet•为避免超时,减少网络通道数;• Unet只分割病变细胞,不区分病变种类,因此输出通道数为1;• Unet输出特征图置信度大于阈值的像素标记为1,其余为0,得到mask;• 计算mask的连通区域,在原图中以每个连通域为中心抠出224×224的patch。3. 生成训练分类器的数据集•对于含有病变细胞的图片:计算IoU1IoU_1和IoU2IoU_2,当两者都大于0的时候,该patch的分类标签对应于人工标注标签,当IoU1>0,IoU2<0IoU_1>0,IoU_2<0时,丢弃该patch,当IoU1<0,IoU1<0时IoU_1<0,IoU_1<0时,该patch的分类标签赋为阴性。• 对于正常细胞图片:输入到训练好的Unet,以同样的方式得到所有满足条件的连通域,并扩展为224×224的patch,分类标签赋为阴性。    •以上两步得到的正负样本数量不均衡,正样本数量远少于负样本数量,因此,再根据人工标签将所有病变细胞抠出加入到数据集中。4. 训练分类器:ResNet50 & ViT•输入: B×3×224×224• 输出:四类细胞的概率值,GT:NILM: 0, ASC-US&LSIL: 1, ASC-H&HSIL: 2, SCC&AdC: 3• 数据增强:自适应直方图均衡、随机旋转90度、转置、RGB平移、垂直翻转、水平翻转、随机饱和度、随机对比度等等。• 训练设置:Pretrained model, Adam(β1 = 0.9, β2 = 0.999, lr=0.0001), lr_scheduler.ReduceLROnPlateau, CrossEntropyLoss, nepoch=(30 for ResNet50, 40 for ViT-small)5. 决策器:Random Forest三、实验结论•在所有数据上训练Unet,用Val的阳性图片来评估分割模型,此处并未使用传统的分割评价指标,而是使用生成Patches的召回率评估模型。•同时考虑准确率和每张图分割的patches数量的平均值(防止分类超时),选择训练最优的分割模型。•Acc-Patch:预测正确的阳性patches数量 / 所有阳性patches数量•Acc-Image:包含一个阳性patch的图片数量 / 阳性图片总数•Patches/Image:预测的patches总数 / 阳性图片总数分类结果
  • [热门活动] msame可以输出推理结果吗,如何看推理的top5准确率
    msame可以输出推理结果吗,如何看推理的top5准确率
  • [经验分享] 基于MindStudio完成deepmar模型推理全流程
    DeepMar-基于 MindStudio 的 MindX SDK 应用开发MindX SDK 简介MindX SDK应用开发是使用华为提供的开发套件完成模型的迅速开发以及部署人工智能应用。本文将通过一个利用MindStudio开发应用的例子来向大家展示如何通过现有的插件构建业务流并实现对接,将业务单元封装起来,通过封装好的插件进行推理流程业务。本文基于MindStudio昇腾论坛上的教程《MindX SDK 应用开发全流程》,并将我自己的个人经验整理成图文形式记录下来。DeepMar模型简介论文中为了更好地利用属性间的关联性,提出了统一多属性联合学习模型(DeepMar)来同时学习所有属性,该论文的基本模型结构由一个输入图像、一个共享网络和35个输出节点组成。利用数据集PETA来训练网络和进行精度测试。PETA是目前最具挑战性的行人属性数据集。它包含19000张行人图像,由真正的摄像头拍摄。目前广泛采用的实验协议是将数据集随机分成三部分:9500用于训练,1900用于验证,7600用于测试。环境配置本文的示例所处环境为Windows10,针对DeepMar多分类模型,并基于MindStudio的MindX应用开发。在Windows操作系统上安装MindStudioMindStudio可以单独安装在Windows上,我们可以在MindStudio下载官网地址下载该软件。不过,在安装前,我们需要现在电脑上安装好相关依赖。比如Python3.7.5、MinGW、Cmake等,具体安装目录以及安装方式参考《Windows安装MindStuido》。在安装MindStudio前需要在Linux服务器上安装部署好Ascend-cann- toolkit开发套件包,之后在Windows上安装MindStudio,安装完成后通过配置远程连接的方式建立 MindStudio所在的Windows服务器与Ascend-cann-toolkit开发套件包所在的Linux服务器的连接,实现全流程开发功能。如下图所示:SSH连接远端环境在本地打开MindStudio,依次点击CustomizeAll Settings,如下图所示:打开设置页面之后,依次点击Appearance & Behavior  System Settings  CANN就可以进入CANN管理页面。如下图所示(由于我这里已经配置好了CANN,第一次打开的同学看不到图中关于CANN的信息,不用担心):之后单击Change CANN就可以进行CANN的配置了。如下图所示:点击右侧“+”号,出现如下图所示的界面:参数说明:参数说明Host远程服务器IP地址Port远程服务器端口号Username用户名Authentication type验证类型Password密码把所需信息填写完毕后,记得点击一下“Test Connection”测试连接是否正常,如果显示下图所示界面,即表示配置成功。接着我们就可以配置远端CANN开发套件包的路径了,在这里我填写的是“/usr/local/Ascend/ascend-toolkit/5.1.RC1”,然后点击“Finish”按钮,等待同步完成即可。本地MindX SDK 安装与上一步类似,先进入设置页面,依次点击Appearance & Behavior  System Settings  MindX SDK就可以进入MindX SDK管理页面。页面中“MindX SDK location”是本地的安装路径,默认为C:\Users\用户名\Ascend\mindx_sdk”,接下来我们单击“Install SDK”进入如下图所示的管理界面:参数说明:参数说明Remote Connection远程连接的用户及IPRemote CANN Location远端环境上 CANN 开发套件包的路径,记得配置到版本号Remote SDK Location远端环境上SDK的路径,记得配置到版本号。Local SDK Location本地的SDK 路径。默认安装路径为“C:\Users\ 用户名\Ascend\mindx_sdk”安装完毕后的界面如下图所示:安装完毕后的界面如下图所示:点击“OK”,即可完成配置安装流程。在上面的安装过程中可能会出现SDK安装失败的错误,那是因为选错了路径,如下图所示:出现这个错误,很可能是因为选到了版本号的父级文件夹,如下图所示:记得要选择下方的那个。推理开发运行流程使用 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++版本的应用工程,则需要进行远端编译,远端编译时,会对工程文件夹进行目录拷贝到远端连接的环境,编译成功后即可运行。DeepMar模型推理开发创建一个新MindX SDK Project,如下图所示:单击“Next”,进入模版选择界面:如上图蓝框所示,我们选择Python版本的,之后点击“Finish”即可完成项目创建。上图是我的文件层级,仅供参考。模型转换先把下载好的DeepMar_npu.onnx放到models目录下,然后在菜单栏选择“Ascend  Model Converter”,进入模型转换页面,选择模型文件路径后,会进入“Model Parsing”界面,如下图所示,等待即可。等待加载完参数信息后会显示如下图所示的界面:记得要选FP32。之后点击Next和Finish就可以开始模型转换了。稍等片刻,等到出现以下界面就表示转换完成:将生成好的om文件移动到models文件夹下就可以开始下一步了。pipeline流程编排pipeline编排分为如下步骤:初始化分类序列化产出结果可视化如下图所示:我们只需要将下载下来的pipeline文件稍加修改就可以为我所用:单击上图中的“Text”即可进入文字修改界面:我们只需要将上图中的模型路径修改为我们的路径即可,修改后如下图所示:接下来我们就可以开始编写main.py文件了。main.py编写通过下载好的文件,我们不难将数据处理流程抽象成如下几个函数:上述的几个函数分别对传入的图片进行了缩放、归一化等处理,并生成将要送人推理流程的protobuf。于是我们可以得到如下详细的main文件流程:引入相关库初始化stream创建stream使用前文提到的函数处理输入的图片数据将数据送入stream并开始推理流程获取推理结果并打印到控制台销毁stream,结束推理配置python环境配置python interpreter在顶部菜单栏中选择 File  Project Structure,在 Project Structure 窗口中,点 击 Platform Settings  SDKs,点击上方的“+”添加 Python SDK,从本地环境中 导入 Python3.9,如下图所示:然后点击Project Settings  Project,选择上一步添加的Python SDK,如下图所示:接着,点击 Project Settings  Modules,选中此项目,点击“+”后选择 Python:点击OK即可完成配置。配置运行参数依次点击“Run > Edit Configurations”,选择Ascend App并配置可执行文件路径,下图为我的示例:单击Apply后点击OK退出配置界面。推理运行测试输入的图片如下:测试输出如下:与peta.mat对比后发现结果一致,推理结果正确!下图为peta.mat中的ground truth:由于屏幕显示有限,只能截取这么多,我做对比之后是一样的。获取帮助如果有任何疑问,都可以前往MindStudio昇腾论坛获取更多信息。
  • [传感器适配] MINI 怎么获取到摄像头数据
    各位华为的老师你们好:我这边的森云摄像头到货了 也在mviz上显示看了没问题,深度学习的模型也移植好了,现在想把摄像头数据输入在模型里,是怎么让mini芯片获取到摄像头数据呢。
  • [交流吐槽] 【有奖互动】HCSD秋招特训,来聊聊求职就业那些事儿!
    本次活动获奖名单如下(公示期至11月5日,将在11月10前发放码豆,请到 会员中心 兑换礼品):昵称码豆xxll6888码豆样子的木偶6888码豆cauxiaowei6888码豆乔康乾6888码豆一览芳华6888码豆y-wolfandy12888码豆(叠加优秀考试分享)nukinsan6888码豆白鹿第一帅6888码豆蜀黍养的猫6888码豆清雨小竹6888码豆yd_2220306746888码豆yd_2320104656888码豆乌龟哥哥6888码豆马生6888码豆白先生6888码豆陈女士6888码豆参与本次活动请 先 点击报名 HCSD秋招特训营本帖为有奖互动帖在留言区发言即可参与抽奖活动结束后将从所有有效楼层中抽取20人赠送精美华为云开发者周边礼品一份~欢迎大家踊跃发言话题一:分享你在HCSD秋招特训营中模拟机考环节某一个题的解题思路是什么?请将对应的题干、和解题思路技巧分享出来~**活动结束后筛选10条优秀分享额外赠送精美周边1份!**话题二:一起聊聊求职就业那些事儿!参考话题你第一次工作内容是什么?你第一次面试有何收获?即将毕业,有何想对学弟学妹说的?你对求职就业有什么想咨询的问题?你是否有哪些秘诀、值得分享给大家心得?工作/学习中有何让你印象深刻的人/事?你如何看待996、内卷等现象?... ...活动时间:8月24日-9月30日抽奖规则:每人限回复10次,超过则中奖后无效;活动结束后随机抽取楼层数字请关注本帖更新或小助手朋友圈,将在9月30日公布获奖名单,届时请及时领奖噢因活动延期,本活动延期至10月30日 扫码加入活动交流群,秋招信息早知道!​
  • [MindX SDK] anchor-free目标检测
    MindX SDK -- anchor-free目标检测参考设计案例1 案例概述案例链接:cid:link_21.1 概要描述CenterNet 推理应用是对图片中的不同类目标进行检测,将检测得到的不同类的目标用蓝色的矩形框标记。输入一幅图像,可以检测得到图像中大部分类别目标的位置。本方案使用在 COCO2017 数据集上训练得到的 CenterNet 模型进行目标检测,数据集中共包含 80 个目标类,包括行人、自行车、公共汽车、手机、沙发、猫、狗等,可以对不同类别、不同角度、不同密集程度的目标进行检测,并在COCO VAL 2017数据集达到36.3%的准确度。1.2 模型介绍CenterNet模型由Xingyi Zhou等人于2019年提出,CenterNet改变了传统目标检测模型的出现框的模式,这些需要额外处理的框会造成资源的浪费,低效并且需要做额外的后处理。CenterNet的解码器致力于寻找中心点。CenterNet模型更加快速,准确,在coco数据集上取得了不凡的成绩。1.3 实现流程推理的完整流程为:1.4 代码地址本项目的代码地址为:cid:link_42.1 项目方案架构介绍2.1.1 业务流程加图像预处理方案整体业务流程为:待检测图片通过 appsrc 插件输入,然后使用图像解码插件 mxpi_imagedecoder 对图片进行解码,再通过图像缩放插件 mxpi_imageresize 将图像缩放至满足检测模型要求的输入图像大小要求,缩放后的图像输入模型推理插件 mxpi_tensorinfer 得到推理结果,推理结果输入 mxpi_objectpostprocessor 插件进行后处理,得到输入图片中所有的目标框位置和对应的置信度。最后通过输出插件 appsink 获取检测结果,并在外部进行可视化,将检测结果标记到原图上,本系统的各模块及功能描述如表1所示:表1 系统方案各模块功能描述:序号子系统功能描述1图片输入获取 jpg 格式输入图片2图片解码解码图片3图片缩放将输入图片放缩到模型指定输入的尺寸大小4模型推理对输入张量进行推理5目标检测后处理从模型推理结果计算检测框的位置和置信度,并保留置信度大于指定阈值的检测框作为检测结果6结果输出获取检测结果7结果可视化将检测结果标注在输入图片上2.1.2 业务流程不加图像预处理方案整体业务流程为:待检测图片信息经预处理后通过 appsrc 插件输入,然后使用模型推理插件 mxpi_tensorinfer 得到推理结果,推理结果输入 mxpi_objectpostprocessor 插件进行后处理,得到输入图片中所有的目标框位置和对应的置信度。最后通过输出插件 appsink 获取检测结果,并在外部进行可视化,将检测结果标记到原图上,本系统的各模块及功能描述如表2所示:表2 系统方案各模块功能描述:序号子系统功能描述1图片输入获取预处理之后的图像信息2模型推理对输入张量进行推理3目标检测后处理从模型推理结果计算检测框的位置和置信度,并保留置信度大于指定阈值的检测框作为检测结果4结果输出获取检测结果5结果可视化将检测结果标注在输入图片上2.2 代码目录结构与说明本工程名称为CenterNet,工程目录如下图所示:├── images │ ├── pre_post.png │ ├── nopre_post.png │ ├── pipeline.jpg ├── postprocess │ ├── build.sh │ ├── CMakeLists.txt │ ├── CenterNetPostProcess.cpp │ └── CenterNetPostProcess.h ├── python │ ├── Main │ │ ├── eval_nopre_post.py │ │ ├── eval_pre_post.py │ │ ├── nopre_post.py │ │ ├── pre_post.py │ │ ├── colorlist.txt │ │ └── preprocess.py │ ├── models │ │ ├── aipp-configs │ │ │ └── aipp_bgr.config │ │ ├── centernet.cfg │ │ └── coco.names #需要下载,下载链接在下方 │ ├── dataset # 下载的数据集存放在此文件下 │ ├── test_img │ │ └── test.jpg # 需要用户自行添加测试数据 │ └── pipeline │ ├── nopre_post.pipeline │ └── pre_post.pipeline └── README.md3 开发环境准备3.1 环境依赖说明推荐系统为ubuntu 18.04,环境依赖软件和版本如下表:软件名称版本cmake3.5+mxVision2.0.4python3.9.2确保环境中正确安装mxVision SDK。在编译运行项目前,需要设置环境变量:MindSDK 环境变量:. ${SDK-path}/set_env.shCANN 环境变量:. ${ascend-toolkit-path}/set_env.sh环境变量介绍SDK-path:SDK mxVision 安装路径 ascend-toolkit-path: CANN 安装路径3.2 模型转换本项目中采用的模型是 CenterNet 模型,参考实现代码:cid:link_6 ,模型下载链接:cid:link_0 。 本项目使用模型转换工具 ATC 将 onnx 模型转换为 om 模型,模型转换工具相关介绍参考链接:cid:link_1 。3.2.1 业务流程加图像预处理的模型转换方法从上述项目链接中下载 onnx 模型 CenterNet.onnx 至 python/models/ 文件夹下。将该模型转换为om模型,具体操作为: python/models/ 文件夹下,执行atc指令:atc --framework=5 --model=CenterNet.onnx --output=CenterNet_pre_post --input_format=NCHW --input_shape="actual_input:1,3,512,512" --out_nodes="Conv_949:0;Conv_952:0;Conv_955:0" --log=info --soc_version=Ascend310 --insert_op_conf=../aipp-configs/aipp_bgr.config若终端输出:ATC start working now, please wait for a moment. ATC run success, welcome to the next use.表示命令执行成功。3.2.2 业务流程不加图像预处理的模型转换方法从上述项目链接中下载 onnx 模型CenterNet.onnx 至 python/models/ 文件夹下。将该模型转换为om模型,具体操作为: python/models/ 文件夹下,执行atc指令:atc --framework=5 --model=CenterNet.onnx --output=CenterNet_nopre_post --input_format=NCHW --input_shape="actual_input:1,3,512,512" --out_nodes="Conv_949:0;Conv_952:0;Conv_955:0" --log=info --soc_version=Ascend310若终端输出:ATC start working now, please wait for a moment. ATC run success, welcome to the next use.表示命令执行成功。4. 编译与运行4.1 业务流程加图像预处理步骤1 在项目根目录执行命令:bash ./postprocess/build.sh 步骤2 放入待测图片。将一张图片放在路径python/test_img下,命名为 test.jpg。步骤3 图片检测。在项目路径python/Main下运行命令:python3 pre_post.py命令执行成功后在目录python/test_img下生成检测结果文件 pre_post.jpg,查看结果文件验证检测结果。步骤4 精度测试。下载COCO VAL 2017验证数据集和标注文件,并保存在项目目录python/dataset下,此文件夹下的组织形式应如下图所示:. ├── annotations │ └── instances_val2017.json └── val2017 其中:val2017文件夹下应存放有5000张待测图片。修改python/models下的文件 centernet.cfg 的参数 SCORE_THRESH=0.0进入python/Main路径,运行 命令:python3 eval_pre_post.py若运行成功,会在python/test 路径下生成val2017_detection_result.json。4.2 业务流程不加图像预处理步骤1 在项目根目录执行命令:bash ./postprocess/build.sh 步骤2 放入待测图片。将一张图片放在路径python/test_img下,命名为 test.jpg。步骤3 图片检测。在项目路径python/Main下运行命令:python3 nopre_post.py 命令执行成功后在目录python/test_img下生成检测结果文件 nopre_post.jpg,查看结果文件验证检测结果。​步骤4 精度测试。​下载COCO VAL 2017验证数据集和标注文件,并保存在项目目录python/test/data下,此文件夹下的组织形式应如下图所示:. ├── annotations │ └── instances_val2017.json └── val2017 其中:val2017文件夹下应存放有5000张待测图片。修改python/models下的文件 centernet.cfg 的参数 SCORE_THRESH=0.0进入python/Main路径,运行命令:python3 eval_nopre_post.py 若运行成功,会在python/test 路径下生成 val2017_detection_result.json文件。
  • [自动学习] 【OBS产品】【Moxing功能】ModuleNotFoundError: No module named &apos;moxing&apos;
    【功能模块】moxing的导入问题【操作步骤&问题现象】1、import moxing as mox时报错2、网上的回答太笼统!!!【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [版务处理] 让我哥
    未通过然后特还挺好
  • [执行问题] [Mindspore][Gradoperation]mindspore复合函数求导
    【功能模块】mindspore.ops.GradOperation【操作步骤&问题现象】我想实现如下所示的一个函数可是在华为的官方实现中,只有mindspore.ops.GradOperation,我有两个问题:第一个我怎么去求这个复合函数的二阶导f(interpolate(x))?第二个是我怎么控制Tensor是否进行反向传播?pytorch可以这样控制for p in self.D.parameters(): p.requires_grad = Falsemindspore应该怎么设置呢?set_grad(requires_grad=False)是否可以控制呢【软硬件信息】Ascend910APython3.7.5mindspore1.1.1gcc7.3.0【日志信息】(可选,上传日志内容或者附件)
  • [问题求助] 图像标签有SDK吗,还是需要自己写代码调用接口?
    如题