Mind Studio (版本 2.1.0)Mind Studio (版本 2.1.0)

计算
弹性云服务器 ECS
裸金属服务器 BMS
云手机 CPH
专属主机 DeH
弹性伸缩 AS
镜像服务 IMS
函数工作流 FunctionGraph
云耀云服务器 HECS
VR云渲游平台 CVR
特惠算力专区
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
弹性文件服务 SFS
存储容灾服务 SDRS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
专属企业存储服务
云存储网关 CSG
专属分布式存储服务 DSS
CDN与智能边缘
内容分发网络 CDN
智能边缘云 IEC
智能边缘小站 IES
智能边缘平台 IEF
人工智能
AI开发平台ModelArts
华为HiLens
图引擎服务 GES
图像识别 Image
文字识别 OCR
自然语言处理 NLP
内容审核 Moderation
图像搜索 ImageSearch
医疗智能体 EIHealth
园区智能体 CampusGo
企业级AI应用开发专业套件 ModelArts Pro
人脸识别服务 FRS
对话机器人服务 CBS
视频分析服务 VAS
语音交互服务 SIS
知识图谱 KG
人证核身服务 IVS
IoT物联网
设备接入 IoTDA
设备管理 IoTDM(联通用户专用)
全球SIM联接 GSL
IoT数据分析 IoTA
路网数字化服务 DRIS
IoT边缘 IoTEdge
设备发放 IoTDP
IoT行业生态工作台
开发与运维
软件开发平台 DevCloud
项目管理 ProjectMan
代码托管 CodeHub
流水线 CloudPipeline
代码检查 CodeCheck
编译构建 CloudBuild
部署 CloudDeploy
云测 CloudTest
发布 CloudRelease
移动应用测试 MobileAPPTest
CloudIDE
Classroom
开源镜像站 Mirrors
应用魔方 AppCube
云性能测试服务 CPTS
应用管理与运维平台 ServiceStage
云应用引擎 CAE
视频
实时音视频 SparkRTC
视频直播 Live
视频点播 VOD
媒体处理 MPC
视频接入服务 VIS
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
资源管理服务 RMS
应用身份管理服务 OneAccess
区块链
区块链服务 BCS
可信跨链服务 TCS
可信分布式身份服务
智能协作
IdeaHub
开发者工具
SDK开发指南
API签名指南
DevStar
HCloud CLI
Terraform
Ansible
云生态
云市场
合作伙伴中心
华为云培训中心
其他
管理控制台
消息中心
产品价格详情
系统权限
我的凭证
客户关联华为云合作伙伴须知
公共问题
宽限期保留期
奖励推广计划
活动
容器
云容器引擎 CCE
云容器实例 CCI
容器镜像服务 SWR
应用编排服务 AOS
多云容器平台 MCP
基因容器 GCS
容器洞察引擎 CIE
云原生服务中心 OSC
容器批量计算 BCE
容器交付流水线 ContainerOps
应用服务网格 ASM
网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
数据库
云数据库 RDS
数据复制服务 DRS
文档数据库服务 DDS
分布式数据库中间件 DDM
云数据库 GaussDB (for openGauss)
云数据库 GaussDB(for MySQL)
云数据库 GaussDB NoSQL
数据管理服务 DAS
数据库和应用迁移 UGO
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
可信智能计算服务 TICS
推荐系统 RES
云搜索服务 CSS
数据可视化 DLV
数据湖治理中心 DGC
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
API网关 APIG
分布式缓存服务 DCS
分布式消息服务RocketMQ版
企业应用
域名注册服务 Domains
云解析服务 DNS
云速建站 CloudSite
网站备案
商标注册
华为云WeLink
会议
隐私保护通话 PrivateNumber
语音通话 VoiceCall
消息&短信 MSGSMS
云管理网络
SD-WAN 云服务
边缘数据中心管理 EDCM
云桌面 Workspace
应用与数据集成平台 ROMA Connect
ROMA资产中心 ROMAExchange
API全生命周期管理 ROMA API
安全与合规
安全技术与应用
DDoS防护 ADS
Web应用防火墙 WAF
云防火墙 CFW
应用信任中心 ATC
企业主机安全 HSS
容器安全服务 CGS
云堡垒机 CBH
数据库安全服务 DBSS
数据加密服务 DEW
数据安全中心 DSC
云证书管理服务 CCM
SSL证书管理 SCM
漏洞扫描服务 VSS
态势感知 SA
威胁检测服务 MTD
管理检测与响应 MDR
安全治理云图 Compass
认证测试中心 CTC
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
专属云
专属计算集群 DCC
解决方案
高性能计算 HPC
SAP
混合云灾备
华为工业云平台 IMC
价格
成本优化最佳实践
专属云商业逻辑
用户服务
帐号中心
费用中心
成本中心
资源中心
企业管理
工单管理
客户运营能力
国际站常见问题
支持计划
专业服务
合作伙伴支持计划
更新时间:2021-03-18 GMT+08:00
分享

模型转换

本章节以Caffe框架的resnet18网络模型为例进行讲解。

前提条件

进行模型转换前,使用Mind Studio安装用户,将所转换模型的模型文件以及权重文件上传到Mind Studio安装服务器

操作步骤

  1. 打开模型转换页面,在“Basic”页签中上传模型文件和权重文件,如图1所示。

    图1 上传模型文件

    参数解释如表1所示。

    表1 Basic界面参数配置

    参数

    说明

    Model File

    模型文件。

    单击右侧的文件夹图标,在后台服务器路径选择需要转化的模型对应的*.prototxt文件,并上传。

    如果之前上传过模型,并模型转换成功,则会在右侧出现查询按钮,单击该按钮,可以从历史记录中获取相应的文件再次上传。

    Weight File

    权重文件。

    • 当原始框架是Caffe时,该参数存在:
      • 如果模型文件和权重文件存在于后台服务器同一目录下,且名称和模型文件名称相同,则选择模型文件后,权重文件会自动填充。
      • 如果模型文件和权重文件存在于后台服务器不同目录下,或者在同一目录下,但名称和模型文件名称不相同,则需要手动上传权重文件,单击右侧的文件夹图标,在后台服务器路径选择模型文件对应的*.caffemodel权重文件,上传即可。
    • 当原始框架是Tensorflow时,该参数不存在。

    Model Name

    模型文件名称,上传模型文件后,该参数会自动填充,用户可以根据需要自行修改名称,要求如下:

    只支持a-z、A-Z、0-9、下划线以及短划线的组合,最多支持40个字符,名称需要保持唯一。

    Plugin Path

    自定义算子插件二进制文件所在目录,若当前工程中有多个自定义算子插件,请选择同时包含所有插件目录的顶级目录。

    如果有针对所导入模型的算子进行自定义开发,此处需要导入自定义算子对应对的算子插件文件。

    说明:

    模型转换时,在Plugin Path参数处指定了自定义算子插件,则配置量化时,请确保3中Quantization Configuration开关关闭。

    Input Format

    输入图片格式。

    • 当原始框架是Caffe时,Input Format默认值是NCHW,不支持修改。
    • 当原始框架是Tensorflow时,Input Format默认是NHWC,用户可以根据需要修改为NCHW格式。

    用户可以单击右侧的按钮,查看该模型的原始网络结构图:

    • 选中某层算子,该层算子会出现绿色选中框,右上角区域会展示该算子的详细信息,包括算子名称,算子类型以及算子的参数信息等,单击相关参数后面的可以查看参数的详细信息,展示的信息同*.prototxt文件中该层算子的信息。
    • 选中某层算子,右击选择mark output,该层变成红色,转换完成后,选中层的输出会直接作为模型的输出,如图2所示。右击选择cancel mark取消选中。本节以mark output名称为“res2b”,类型为“Eltwise”算子为例进行说明。

      图2右下角会展示该网络模型的整体结构,包括左侧展示框中的算子在整体网络结构中的位置,即图中的蓝色框选择位置。左侧展示区域下拉,右侧整体区域中的蓝区选择框随之往下移动。左侧展示框放大和缩小,右侧蓝色框随之缩小和放大。

      • 如果不标记某层算子,则模型的输出默认为最后一层的算子信息,某些情况下,用户想要查看某层算子参数是否合适,则需要将该层算子的参数输出,既可以在选择模型时通过将该层算子标记为mark output,模型转换后,在相应.om模型文件最后一层即可以看到标记层算子的参数信息。详细信息请参见2
      • 如果模型转换过程中该算子被融合掉,则该算子不能mark output标记为输出。
    • 图2所示界面左侧空白区域单击“Ctrl+F”快捷键,在界面右下方会弹出搜索区域,如图3所示。

      搜索区域中给出了该模型所用到的所有算子,您可以在搜索区域对话框中输入算子名称,下方搜索区域会列出相关的算子。选择其中一个算子,左侧网络拓扑结构中相应算子会显示绿色选中框,右上方会展示该算子的详细信息,包括算子名称、算子输入、输出等信息。单击搜索区域中的“Cancel”退出搜索页面。

      图2 模型网络结构
      图3 模型可视化界面的搜索功能

    单击“OK”退出编辑。

  2. 单击“Next”,进入“Nodes”节点配置页签,如图4图5所示。

    图4 配置Nodes信息(Static)
    图5 配置Nodes信息(Dynamic)

    参数说明如表2所示。

    表2 节点配置参数

    参数

    说明

    Batch Mode

    处理图片的模式,默认为Static。本示例采用Static。

    • Static:静态模式,若设置为该值,则模型一次处理的图片数量为Input Node:data第一个参数的取值。适用于业务每次推理图片数量固定的场景。
    • Dynamic:动态模式,若设置为该值,则由用户根据Dynamic Batch参数中具体选定的Batch数,决定模型一次处理图片的数量。适用于业务每次推理图片数量不固定的场景,可以提高处理性能,减少模型空间和内存占用。

    Dynamic Batch

    “Batch Mode”取值为“Dynamic”出现。

    动态batch数,最多支持8档配置,每一档通过英文分号分隔,每个档位数值限制为:[1~2048]。例如图5中所示的[2;4;8],建议配置为3档。每档最大数值建议不超过32。

    由于内存限制,支持用户可配置的档位数值以及档位数不同:

    • 支持的最大档位数值受Input Node大小影响,不同的Input Node大小(N*C*H*W)支持的最大档位数值不同:Input Node值越大,支持用户可配置的最大档位数值应该越小。
    • 支持的最大档数受模型大小(.prototxt文件大小)影响,不同的模型大小支持的最大档不同:模型越大,支持用户可配置的最大档数应该越小。
    说明:
    • 具体申请多少档位由用户根据实际业务情况决定,例如用户执行推理业务时需要每次处理2张,4张,8张图片,则可以申请档位[2;4;8],申请了档位后,模型推理时会根据档位中的最大数值申请内存。若用户申请了档位后,执行推理业务时需要处理的图片数量与档位中的数值不匹配,则取与实际图片数量相近的最大档位进行处理,例如用户实际需要处理5张图片,则执行推理业务时获取的Dynamic Batch取值为8。
    • 执行推理业务时,模型一次处理图片的数量要小于等于Dynamic Batch档位中的最大值。
    • 如果用户设置的档位超过3档或档位数值过大,可能会导致模型转换失败,此时建议用户减少档位或调低档位数值。
    • 如果使用了该参数,则图2中不支持标记某层算子的输出。

    Input Node:data

    输入数据。

    • Batch Mode取值为Static:
      • 对于Caffe模型:

        右侧四个输入框分别代表输入数据的N(模型一次处理的图片个数),C(Channel,例如彩色RGB图像的Channel数为3),H(Height),W(Width)。

      • 对于Tensorflow模型:

        右侧四个输入框分别代表输入数据的N(模型一次处理的图片个数),H(Height),W(Width),C(Channel,例如彩色RGB图像的Channel数为3)。

    • Batch Mode取值为Dynamic:
      • 对于Caffe模型:

        右侧三个输入框分别代表输入数据的C(Channel,例如彩色RGB图像的Channel数为3),H(Height),W(Width)。

      • 对于Tensorflow模型:

        右侧三个输入框分别代表输入数据的H(Height),W(Width),C(Channel,例如彩色RGB图像的Channel数为3)。

    Input Node会自动解析对应模型文件中“input_param”的参数并填充相应的N、C、H、W;如果无法解析,需要用户根据实际.prototxt文件中的“input: "data"”对应的参数填写。如果模型有多个输入,模型转换界面还会出现“Input Node:im_info”参数,该参数的取值需要根据.prototxt文件中“input: "im_info"”对应的参数填写。

    Output Node

    输出节点信息。

    • 如果图2中没有标记任何一层算子,则该参数不会出现。
    • 如果标记了某层算子,则输出节点为标记层的算子名。由于图2中标记了名称为“res2b”,类型为“Eltwise”算子,则该参数才会展示。
    说明:

    如果模型转换过程中该算子被融合掉,则该算子不能作为输出节点。

  3. 单击“Next”,进入“Quantization”界面。

    在对模型大小和性能有更高要求的时候可以选择执行量化操作。模型转换过程中量化会将高精度数据向低比特数据进行量化,让最终生成的模型更加轻量化,从而达到节约网络存储空间、降低传输时延以及提高运算执行效率的目的。

    在量化过程中,由于模型存储大小受参数影响很大,因此模型转换重点支持卷积算子(Convolution)、全连接算子(FullConnection)以及深度可分离卷积(ConvolutionDepthwise)等带有参数算子的量化。

    单击“Quantization Configuration”右侧的开关,打开量化配置功能,如图6所示。如果不涉及量化,则不用开启量化开关, 直接进入4

    图6 量化配置

    参数说明如表3所示。

    表3 量化配置参数

    参数

    说明

    Input Type

    量化数据(校准集:用于训练量化参数、保证精度)类型。当前支持图片(IMAGE)和二进制文件(BINARY)两种格式。

    • IMAGE:图片格式。

      支持的图片格式包括:".bmp", ".dib", ".jpeg", ".jpg", ".jpe", ".jp2", ".png", ".webp",".pbm", ".pgm", ".ppm", ".sr", ".ras", ".tiff", ".tif",".BMP", ".DIB", ".JPEG", ".JPG", ".JPE", ".JP2", ".PNG", ".WEBP",".PBM", ".PGM", ".PPM", ".SR", ".RAS", ".TIFF", ".TIF"。

    • BINARY:二进制文件(Binary格式)格式,请参见表4,对于非四维(num、channels、height、width)的数据,需要补齐到四维,补齐的维度值为1。

    Image Folder

    量化数据所在目录,即校准集图片所在路径。当Input Type选择IMAGE时出现。

    选择图片前请先将图片上传到服务器Mind Studio安装用户所在目录下,建议使用与应用场景相关的图片。

    说明:

    进行量化时,建议选择多张图片进行量化,如果数量太少,可能会影响精度;最多建议不超过50张,数量太多,有可能因为量化时间太长导致进程超时(限定3小时)。

    Image File

    量化数据所在文件,即校准集二进制文件所在路径。当Input Type选择BINARY时出现。

    选择文件前请先将文件上传到服务器Mind Studio安装用户所在目录下,建议使用与应用场景相关的二进制文件。

    Image Format

    模型训练时图片三通道排序格式。当Input Type选择IMAGE时需要配置。

    支持BRG、RGB两种格式,默认为BRG。

    Mean Less(BGR)

    图片预处理单个通道的均值,默认开启。当Input Type选择IMAGE时需要配置。

    三个通道的值默认为104.0、117.0、123.0。

    Standard Deviation

    图像预处理的标准方差。当Input Type选择IMAGE时需要配置。默认为1.0。

    表4 二进制文件格式

    文件头/数据

    地址偏移

    type

    value

    description

    文件头(共20字节)

    0000

    32bit int

    510

    magic number

    当magic number = 510,用来校验文件的合法性。

    0004

    32bit int

    50

    input num

    请根据实际输入数据的N进行修改,例如图4中的1。

    0008

    32bit int

    3

    input channels

    请根据实际输入数据的C进行修改,例如图4中的3。

    0012

    32bit int

    28

    input height

    请根据实际输入数据的H进行修改,例如图4中的224。

    0016

    32bit int

    28

    input width

    请根据实际输入数据的W进行修改,例如图4中的224。

    数据

    float

    126

    数据数量等于N*C*H*W。

  4. 单击“Next”,进入“AIPP”预处理界面。

    AIPP是昇腾AI处理器提供的硬件图像预处理模块,包括色域转换,图像归一化(减均值/乘系数)和抠图(指定抠图起始点,抠出神经网络需要大小的图片)等功能。DVPP模块输出的图片多为对齐后的YUV420SP类型,不支持输出RGB图片。因此,业务流需要使用AIPP模块转换对齐后YUV420SP类型图片的格式,并抠出模型需要的输入图片。

    单击“Image Pre-processing”右侧的开关,打开AIPP预处理功能,如图7图8所示。如果不涉及预处理,则不用开启预处理开关, 直接进入5
    图7 AIPP预处理界面(static)
    图8 AIPP预处理界面(dynamic)

    参数说明如表5所示。

    表5 AIPP预处理配置参数

    参数

    说明

    Configuration (data)

    节点配置开关,如果有多个节点,可以控制每个节点的开关情况。

    Image Pre-process Mode

    AIPP图片预处理模式,默认为static。本示例采用static。

    • static:静态AIPP。在该模式下,模型生成后,AIPP参数值被保存在生成的.om模型中,模型推理过程采用固定的AIPP预处理(无法修改)。
    • dynamic:动态AIPP。在该模式下,模型生成后,每次模型推理前,根据需求在推理Engine的代码中设置动态AIPP参数值,然后在模型推理时可使用不同的AIPP参数。动态AIPP在根据业务要求改变预处理参数的场合下使用(如不同摄像头采用不同的归一化参数,输入图片格式需要兼容YUV420和RGB等)。
      须知:
      • 当“Image Pre-process Mode”取值static时,系统显示参数包括Input Image Format、Input Image Size [W|H]、Model Image Format、Crop Start Loc [W|H]、Mean Less [B][G][R]和Multiplying Factor [B][G][R];当“Image Pre-process Mode”取值dynamic时,系统只显示参数Max Image Size(Byte)。
      • 当“Image Pre-process Mode”取值dynamic时,如果在模型转换后需要修改图片的输入/输出格式,请修改应用工程推理引擎节点MindInferenceEngine.cpp的如下代码:
        hiai::AippInputFormat inputImageFormat = hiai::YUV420SP_U8;
        hiai::AippModelFormat modelImageFormat = hiai::MODEL_BGR888_U8;

        如果需要修改图片的输入/输出之外的其他信息,请参见《 Matrix API参考》中的模型管家接口>动态AIPP配置接口

      • 在使用dynamic动态AIPP参数时, 请确保所创建的工程为Ascend APP工程。

    Input Image Format

    输入图片格式。

    选项:YUV420SP_U8、XRGB8888_U8、RGB888_U8、YUV400_U8。

    说明:

    模型转换完毕后,在对应的*.om模型文件中,上述四个参数分别以1、2、3、4参数呈现。

    Input Image Size [W|H]

    输入图片大小,由模型文件Input层的宽和高分别16和2对齐得到。

    说明:

    此处需要用户手动进行对齐。

    Model Image Format

    模型处理图片格式。

    选项:YUV444SP_U8,YVU444SP_U8,RGB888_U8,BGR888_U8,GRAY。

    该参数同时也是色域转换开关,默认开启。

    当输入图片格式与模型处理文件格式不一致时需要开启。

    Crop Start Loc [W|H]

    抠图开始位置,默认关闭,开启开关后可以设置起始位置。

    Mean Less [B][G][R]

    减均值,默认开启。

    三个通道的值默认为104、117、123。

    Multiplying Factor [B][G][R]

    乘系数(均方差或(max-min)的倒数),默认关闭。

    Max Image Size(Byte)

    “Image Pre-process Mode”取值“dynamic”时出现。

    处理图片时一次申请的内存空间大小,取值范围为(0, 4294967295]。

    如果用户需要修改该参数,则取值等于N * H * W * 4。(N,H,W来自“Input Node”参数。W和H默认值由模型文件Input层的宽和高分别16和2对齐得到。4表示系数,系统校验时该系数根据输入图片格式有不同的取值,分别是YUV400_U8:1、YUV420SP_U8:1.5、RGB888_U8:3、XRGB8888_U8:4,为了保证空间充足,该参数使用最大值4)。

    模型转换是否开启AIPP功能,执行推理业务时,对输入图片数据的要求:
    • 模型转换时开启AIPP:Input Image Format选择XRGB8888_U8或RGB888_U8,使用该种配置转换后的模型,在进行推理业务时,输入图片数据要求为NHWC排布。
    • 模型转换时没有开启AIPP,模型转换完毕,在进行推理业务时,输入图片数据要求为NCHW排布,因此需要用户自行把NHWC排布的原始图片数据转换为NCHW排布。

  5. 单击“Finish”,开始进行模型转换。

    Mind Studio界面下方,Output窗口会显示模型转换的结果、模型输出路径以及模型转换日志,如图9所示。

    图9 模型转换结果

  6. 模型转换完毕,在服务器后台路径“$HOME/modelzoo/resnet18/device”下会生成.om的模型文件,如果开启量化和AIPP预处理功能,在.om同级目录下,还会生成量化配置文件(cal.cfg)和AIPP预处理的配置信息文件(insert_op.cfg),如图10所示。

    模型转换的日志文件(ModelConvert.log)所在路径为:“$HOME/modelzoo/resnet18”

    图10 后台服务器生成的文件

图5配置的“Batch Mode”取值为“Dynamic”图8中配置的“Image Pre-process Mode”取值为“dynamic”,模型转换完毕后, 如果要在应用工程中使用该.om模型文件,需要进行应用工程适配,详细适配方法请参见《Ascend 310 应用开发指导(Mind Studio方式)》中的离线模型推理>AIPP功能或Batch功能

异常处理

如果模型转换失败,可以参见该章节进行处理。

  1. 如果转换失败,弹出Model Conversion Failed模型转换失败报告页面:
    1. 如果失败类型是需要重新指定算子,弹出图11所示界面。
      图11 模型转换失败_重新指定算子

      图11中会给出总的算子数,不支持的算子数,不支持算子的类型、不支持算子的名称、不支持的原因,以及处理建议。同时Output窗口会给出详细日志信息,如图12所示。

      图12 日志信息

      从下拉框选择一个算子后,单击“Retry”进行重试,如图13所示。

      图13 重新指定算子
    2. 如果失败类型包含不支持的算子,则弹出图14所示界面。
      图14 模型转换失败_包含不支持算子

      图14中会给出模型转换总的算子数、不支持的算子数、不支持算子的类型、不支持算子的名称、不支持的原因,以及处理建议,同时Output窗口会给出详细日志信息,如图15所示。

      图15 日志信息

      单击“Customize”对该类型的算子创建工程,进行自定义算子插件开发,详细请参见《 TBE自定义算子开发指导 (Mind Studio方式)》。自定义算子插件开发完成后,重新进行离线模型导入,导入时需要选择开发好的自定义算子插件,如图16所示。

      图16 选择自定义开发算子插件

      然后参见2~6重新进行模型转换。

  2. 如果模型转换时设置了“Batch Mode”“Dynamic”,模型转换失败,提示类似如图17所示错误信息,其中1024(具体报错信息以用户实际设置的Batch值为准)为用户设置的Dynamic Batch中的值。
    图17 模型转换失败日志

    或模型转换成功,但执行推理业务时提示图18所示异常信息。

    图18 推理阶段失败日志

    出现图17图18问题是由于用户设置的Dynamic Batch值过大导致,建议用户调低Batch值(每Batch最大数值建议不超过32),重新进行模型转换。

分享:

    相关文档

    相关产品

关闭导读