资讯详情

【Mindspore】【export】resnext101导出air,atc转换成功后离线推理精度只有0.0008

转换代码主要涉及三个步骤

  1. 生成网络结构
  2. 导入参数
  3. 调用export函数导出air
# generate net work  network =get_network(args.backbone,args.num_classes)# load ckpt  param_dict =load_checkpoint(model)  param_dict_new ={}  forkey,values inparam_dict.items():  ifkey.startswith('moments.'):  continue  elifkey.startswith('network.'):  param_dict_new[key[8:]]=values  else:  param_dict_new[key]=values  load_param_into_net(network,param_dict_new)  network.set_train(False)  args.logger.info('load model {} success'.format(model))  # export airinput=np.random.uniform(0.0,1.0,size=[1,3,224,224]).astype(np.float32)  export(network,Tensor(input),file_name='resnext101-150-with-softmax.air',file_format='AIR')  args.logger.info('export model resnext101-150-with-softmax.air success')

调用export一些函数输出warning

2021-01-10 18:45:44,901:INFO:load model /root/resnext101_neoming/resnext101/models/0-150_20018.ckpt success[WARNING]GE_ADPT(102257,python):2021-01-10-18:47:11.245.840 [mindspore/ccsrc/transform/graph_ir/op_adapter_util.cc:216]ConvertAnyUtil]Unsupported value type: Float to convert to tensor. Value: Float16[WARNING]GE_ADPT(102257,python):2021-01-10-18:47:11.260.231 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149]ConvertMakeTuple]ConvertMakeTuple: 0xaaab34e133d0 64[WARNING]GE_ADPT(102257,python):2021-01-10-18:47:11.269.363 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149]ConvertMakeTuple]ConvertMakeTuple: 0xaaab26bdb240 64[WARNING]GE_ADPT(102257,python):2021-01-10-18:47:11.278.786 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149]ConvertMakeTuple]ConvertMakeTuple: 0xaaab167465c0 64[WARNING]GE_ADPT(102257,python):2021-01-10-18:47:11.288.567 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149]ConvertMakeTuple]ConvertMakeTuple: 0xaaab2a975b50 64[WARNING]GE_ADPT(102257,python):2021-01-10-18:47:11.297.078 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149]ConvertMakeTuple]ConvertMakeTuple: 0xaaab2aecb3f0 64[WARNING]GE_ADPT(102257,python):2021-01-10-18:47:11.305.033 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149]ConvertMakeTuple]ConvertMakeTuple: 0xaaab1666c7f0 64[WARNING]GE_ADPT(102257,python):2021-01-10-18:47:11.313.385 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149]ConvertMakeTuple]ConvertMakeTuple: 0xaaab166c8b70 64[WARNING]GE_ADPT(102257,python):2021-01-10-18:47:11.321.404 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149]ConvertMakeTuple]ConvertMakeTuple: 0xaaab16d7ac70 64[WARNING]GE_ADPT(102257,python):2021-01-10-18:47:11.329.271 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149]ConvertMakeTuple]ConvertMakeTuple: 0xaaab1661b730 64[WARNING]GE_ADPT(102257,python):2021-01-10-18:47:11.337.110 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149]ConvertMakeTuple]ConvertMakeTuple: 0xaaab064202f0 64[WARNING]GE_ADPT(102257,python):2021-01-10-18:47:11.344.787 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149]ConvertMakeTuple]ConvertMakeTuple: 0xaaab18607ae0 64[WARNING]GE_ADPT(102257,python):2021-01-10-18:47:11.352.329 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149]ConvertMakeTuple]ConvertMakeTuple: 0xaaab10c26400 64[WARNING]GE_ADPT(102257,python):2021-01-10-18:47:11.359.826 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149]ConvertMakeTuple]ConvertMakeTuple: 0xaaaafad57460 64[WARNING]GE_ADPT(102257,python):2021-01-10-18:47:11.367.515 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149]ConvertMakeTuple]ConvertMakeTuple: 0xaaab630657d0 64[WARNING]GE_ADPT(102257,python):2021-01-10-18:47:11.375.417 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149]ConvertMakeTuple]ConvertMakeTuple: 0xaaab1128f200 64[WARNING]GE_ADPT(102257,python):2021-01-10-18:47:11.382.835 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149]ConvertMakeTuple]ConvertMakeTuple: 0xaaab18826440 64[WARNING]GE_ADPT(102257,pythn):2021-01-10-18:47:11.390.312 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149] ConvertMakeTuple] ConvertMakeTuple: 0xaaab16e120a0 64[WARNING] GE_ADPT(102257,python):2021-01-10-18:47:11.397.779 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149] ConvertMakeTuple] ConvertMakeTuple: 0xaaab62739750 64[WARNING] GE_ADPT(102257,python):2021-01-10-18:47:11.405.440 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149] ConvertMakeTuple] ConvertMakeTuple: 0xaaab2b0b0d20 64[WARNING] GE_ADPT(102257,python):2021-01-10-18:47:11.412.949 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149] ConvertMakeTuple] ConvertMakeTuple: 0xaaab62411a30 64[WARNING] GE_ADPT(102257,python):2021-01-10-18:47:11.420.941 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149] ConvertMakeTuple] ConvertMakeTuple: 0xaaab1053f610 64[WARNING] GE_ADPT(102257,python):2021-01-10-18:47:11.428.574 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149] ConvertMakeTuple] ConvertMakeTuple: 0xaaab0dfd4ed0 64[WARNING] GE_ADPT(102257,python):2021-01-10-18:47:11.436.026 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149] ConvertMakeTuple] ConvertMakeTuple: 0xaaaaf1b82020 64[WARNING] GE_ADPT(102257,python):2021-01-10-18:47:11.443.479 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149] ConvertMakeTuple] ConvertMakeTuple: 0xaaaafd7ed2f0 64[WARNING] GE_ADPT(102257,python):2021-01-10-18:47:11.450.909 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149] ConvertMakeTuple] ConvertMakeTuple: 0xaaab07c64010 64[WARNING] GE_ADPT(102257,python):2021-01-10-18:47:11.458.355 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149] ConvertMakeTuple] ConvertMakeTuple: 0xaaab0df5c7e0 64[WARNING] GE_ADPT(102257,python):2021-01-10-18:47:11.466.103 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149] ConvertMakeTuple] ConvertMakeTuple: 0xaaab11431e20 64[WARNING] GE_ADPT(102257,python):2021-01-10-18:47:11.473.541 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149] ConvertMakeTuple] ConvertMakeTuple: 0xaaab60b9f530 64[WARNING] GE_ADPT(102257,python):2021-01-10-18:47:11.481.745 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149] ConvertMakeTuple] ConvertMakeTuple: 0xaaab061ae260 64[WARNING] GE_ADPT(102257,python):2021-01-10-18:47:11.489.055 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149] ConvertMakeTuple] ConvertMakeTuple: 0xaaab06c538e0 64[WARNING] GE_ADPT(102257,python):2021-01-10-18:47:11.496.550 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149] ConvertMakeTuple] ConvertMakeTuple: 0xaaab0e2eb050 64[WARNING] GE_ADPT(102257,python):2021-01-10-18:47:11.503.977 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149] ConvertMakeTuple] ConvertMakeTuple: 0xaaab1c6a8010 64[WARNING] GE_ADPT(102257,python):2021-01-10-18:47:11.511.435 [mindspore/ccsrc/transform/graph_ir/convert.cc:1149] ConvertMakeTuple] ConvertMakeTuple: 0xaaab2cfd4ab0 64[WARNING] GE_ADPT(102257,python):2021-01-10-18:47:12.321.757 [mindspore/ccsrc/transform/graph_ir/df_graph_manager.cc:69] AddGraph] The new graph {init_subgraph.air.0.1610275540685778176}'s pointer is null, add graph failed

[WARNING] GE_ADPT(102257,python):2021-01-10-18:47:12.321.805 [mindspore/ccsrc/transform/graph_ir/df_graph_manager.cc:69] AddGraph] The new graph {broadcast_subgraph}'s pointer is null, add graph failed[WARNING] GE_ADPT(102257,python):2021-01-10-18:47:12.321.818 [mindspore/ccsrc/transform/graph_ir/df_graph_manager.cc:69] AddGraph] The new graph {save.air.0.1610275540685778176}'s pointer is null, add graph failed2021-01-10 18:47:14,438:INFO:export model resnext101-150-with-softmax.air success[WARNING] SESSION(102257,python):2021-01-10-18:49:00.530.199 [mindspore/ccsrc/backend/session/ascend_session.cc:945] SelectKernel] There are 2184 node/nodes used reduce precision to selected the kernel!

使用如下命令进行转换,成功运行

atc --framework=1 --model=resnext101-150-with-softmax.air --output=resnext101-150-with-softmax --input_format=NCHW --soc_version=Ascend310

ATC start working now, please wait for a moment.

ATC run success, welcome to the next use.

使用与在线推理相同的数据预处理,调用numpy的tofile方法将图片导出到bin文件

"""

generate val dataset.

"""import osfrom mindspore.common import dtype as mstypeimport mindspore.dataset as deimport mindspore.dataset.transforms.c_transforms as Cimport mindspore.dataset.vision.c_transforms as V_Cfrom PIL import Image, ImageFilefrom src.utils.sampler import DistributedSamplerimport numpy as np



ImageFile.LOAD_TRUNCATED_IMAGES = Truedef evalBinDataset(data_dir, target_dir, image_size, rank, group_size,num_parallel_workers=None):           

   # Per process

    mean = [0.485 * 255, 0.456 * 255, 0.406 * 255]

   std = [0.229 * 255, 0.224 * 255, 0.225 * 255]

transform_img = [

      V_C.Decode(),

      V_C.Resize((256, 256)),

      V_C.CenterCrop(image_size),

      V_C.Normalize(mean=mean, std=std),

      V_C.HWC2CHW()

    ]

transform_label = [C.TypeCast(mstype.int32)]

    

    # get val dataset

de_dataset = de.ImageFolderDataset(data_dir, num_parallel_workers=num_parallel_workers,

                                       num_shards=group_size,shard_id=rank)

    de_dataset = de_dataset.map(input_columns="image", num_parallel_workers=num_parallel_workers,

                                operations=transform_img)

    de_dataset = de_dataset.map(input_columns="label", num_parallel_workers=num_parallel_workers,

                                operations=transform_label)

    

    file_prefix = "ILSVRC2012_val_"

    file_suffix = ".JPEG.bin"

   index=1

   for data in de_dataset.create_dict_iterator():

        # generate file names

        s = "{:08d}".format(index)

        index += 1

        bin_filename=target_dir+"/"+file_prefix+s+file_suffix



        # get data from dataset

        image = data['image'].asnumpy()

        label = data['label']

        print("[INFO] Image shape:", image.shape, ", Label:", label)

        image.tofile(bin_filename)

    return de_dataset



de_dataset = evalBinDataset('/data/dataset/ImageNet/imagenet_original/val', '/data/dataset/ImageNet/imagenet_bin/val_bin',image_size=[224,224],rank=0, group_size=1,num_parallel_workers=16)

#!/bin/bashom_path="/home/HwHiAiUser/AscendProjects/resnext101/models/resnext101-150-with-softmax.om"output_path="/home/HwHiAiUser/AscendProjects/resnext101/msname_output/folder_test"imgbin_path="/home/HwHiAiUser/data/imagenet_bin/val_bin/images"

./msame --model $om_path --input $imgbin_path --output $output_path

解答:

请注意该网络与offiical的resnext不同,输出是1000个类型为fp16的数,内存长度为2000字节。不知道msame工具是谁提供的、或用什么代码编出来的,如果你掌握了msame的代码,请将fp16转为float或double类型再进行精度校验。我从imagenet2012验证集里拿了10张鱼做本地推理,有9张推对了

标签: 120a单相固态继电器mgr

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台