2020/8/3/ATC工具以及AIPP

        ATC(Ascend Tensor Compiler)工具可以将开源框架的网络模型(如Caffe、TensorFlow等)以及单算子Json文件,转换成昇腾AI处理器的离线模型,在这个转换过程中,可以实现算子调度的优化、权值数据重排、内存使用优化等,可以脱离设备完成模型的预处理。

以一下模型转换命令为例:

atc --model=yolov3.prototxt --weight=yolov3.caffemodel --framework=0 --output=yolov3_BGR --soc_version=Ascend310 --insert_op_conf=aipp_bgr.cfg

命令中参数:--mode :以上没有写,此参数设置atc运行模式,默认为0不用写,0模式为生成适配昇腾AI处理器的离线模型。

                      --model:原始模型的路径。填相对路径。

                      --weight:权重文件路径。当原始模型是caffe是才需要指定。

                      --framework:原始框架类型。0:Caffe,1:MindSpore,2:TensorFlow

                      --output:输出文件路径及名字

                      --check_report:预检结果保存文件路径。

                      --insert_op_conf:输入预处理算子的配置文件路径,例如AIPP算子。

AIPP(AI Preprocessing):用于在AI Core上完成图像预处理,包括色域转换(转换图像格式)、图像归一化(减均值/乘系数)和抠图(指定抠图起始点,抠出神经网络需要的大小的图片)。

AIPP分为静态和动态AIPP,二者只可选其一。

     1、静态AIPP:模型转换时设置AIPP模式为静态,同时设置AIPP参数,模型生成后,AIPP参数值被保存在离线模型中,每次模型推理过程采用固定的AIPP预处理参数(无法修改)。在这种方式下,多batch情况下共用同一份AIPP参数。可以随着输入图片数量的增多,配置多组AIPP即AIPP文件中包含多个aipp_op。

     2、动态AIPP:模型转换时设置模式为动态,每次模型推理前,根据需求,在执行模型前设置动态AIPP参数,然后在模型执行时可使用不同的AIPP参数。这种方式下,多batch使用的预处理参数不同。这种方式每次推理都需要计算,耗时长,故性能较差。一个AIPP文件中只能配置一个aipp_op。

     3、如果不开启AIPP的话,由于在推理阶段要求输入图片的数据要求是NHWC排布(即RGBRGBRGB排序方式),而原始图片数据排布是NCHW(即RRRGGGBBB排序方式),故需要自己手动将排布转换,不然会报错推理不能成功。

AIPP配置文件中常见点:

     (1)、AIPP的mode(静态或者动态)在此设置。

     (2)、input_format的取值为YUV420_U8时,抠图时的裁剪值必须为偶数。但input_format的取值是其他值时,没有约束。

     (3)、色域转换开关csc_switch默认为true开启状态。(YUV和RGB之间的转换)

     (4)、mean:每个通道的均值。

     (5)、min:每个通道的最小值。

     (6)、variance:每个通道的方差。

    4、由于200dk需要使用dvpp对图片的信息(即宽、高、通道数)进行提取,且其输出的图片多为YUV420sp格式,所以需要AIPP对其进行处理,将YUV420sp转换为BGR格式。

单算子Json文件:配置文件支持定义多组算子Json文件配置,一组配置包括算子类型(op)、算子输入描述(input_desc)和输出描述(output_desc)、视算子情况决定是否包括属性信息(attr)。

融合开关配置文件:模型小型化工具是一个对原始模型进行量化的工具,过程中会插入量化和反量化因子,但是使用ATC工具进行模型转换过程中,会对插入的量化和反量化算子进行融合,此情况下就无法进行量化后的模型dump结果与原始模型dump结果的比对,因此如果用户想使用通过模型小型化工具进行精度对比,则必须通过该配置文件,关闭融合功能。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值