From e723bddc29f901141494f08a85e6d4dcaaac8afd Mon Sep 17 00:00:00 2001 From: zhouneng Date: Thu, 1 Apr 2021 17:18:29 +0800 Subject: [PATCH] fix export mindir failure for fasterrcnn --- .../ascend310_infer/src/AclProcess.cpp | 19 ++++++++++++------- model_zoo/official/cv/faster_rcnn/export.py | 5 +++++ .../official/cv/faster_rcnn/postprocess.py | 2 +- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/model_zoo/official/cv/faster_rcnn/ascend310_infer/src/AclProcess.cpp b/model_zoo/official/cv/faster_rcnn/ascend310_infer/src/AclProcess.cpp index e3dfde4d17..4aa284fcdb 100755 --- a/model_zoo/official/cv/faster_rcnn/ascend310_infer/src/AclProcess.cpp +++ b/model_zoo/official/cv/faster_rcnn/ascend310_infer/src/AclProcess.cpp @@ -284,19 +284,24 @@ int AclProcess::ModelInfer(std::map *costTime_map) { heightScale = static_cast(resizeOutData->height) / inputImg->height; } - float im_info[4]; - im_info[0] = static_cast(inputImg->height); - im_info[1] = static_cast(inputImg->width); - im_info[2] = heightScale; - im_info[3] = widthScale; + aclFloat16 inputWidth = aclFloatToFloat16(static_cast(inputImg->width)); + aclFloat16 inputHeight = aclFloatToFloat16(static_cast(inputImg->height)); + aclFloat16 resizeWidthRatioFp16 = aclFloatToFloat16(widthScale); + aclFloat16 resizeHeightRatioFp16 = aclFloatToFloat16(heightScale); + + aclFloat16 *im_info = reinterpret_cast(malloc(sizeof(aclFloat16) * 4)); + im_info[0] = inputHeight; + im_info[1] = inputWidth; + im_info[2] = resizeHeightRatioFp16; + im_info[3] = resizeWidthRatioFp16; void *imInfo_dst = nullptr; - int ret = aclrtMalloc(&imInfo_dst, 16, ACL_MEM_MALLOC_NORMAL_ONLY); + int ret = aclrtMalloc(&imInfo_dst, 8, ACL_MEM_MALLOC_NORMAL_ONLY); if (ret != ACL_ERROR_NONE) { std::cout << "aclrtMalloc failed, ret = " << ret << std::endl; aclrtFree(imInfo_dst); return ret; } - ret = aclrtMemcpy(reinterpret_cast(imInfo_dst), 16, im_info, 16, ACL_MEMCPY_HOST_TO_DEVICE); + ret = aclrtMemcpy(reinterpret_cast(imInfo_dst), 8, im_info, 8, ACL_MEMCPY_HOST_TO_DEVICE); if (ret != ACL_ERROR_NONE) { std::cout << "aclrtMemcpy failed, ret = " << ret << std::endl; aclrtFree(imInfo_dst); diff --git a/model_zoo/official/cv/faster_rcnn/export.py b/model_zoo/official/cv/faster_rcnn/export.py index 4ff45e29c2..4da6cf8169 100644 --- a/model_zoo/official/cv/faster_rcnn/export.py +++ b/model_zoo/official/cv/faster_rcnn/export.py @@ -17,6 +17,7 @@ import argparse import numpy as np import mindspore as ms +import mindspore.common.dtype as mstype from mindspore import Tensor, load_checkpoint, load_param_into_net, export, context from src.FasterRcnn.faster_rcnn_r50 import FasterRcnn_Infer @@ -46,6 +47,10 @@ if __name__ == '__main__': load_param_into_net(net, param_dict_new) + device_type = "Ascend" if context.get_context("device_target") == "Ascend" else "Others" + if device_type == "Ascend": + net.to_float(mstype.float16) + img = Tensor(np.zeros([config.test_batch_size, 3, config.img_height, config.img_width]), ms.float32) img_metas = Tensor(np.random.uniform(0.0, 1.0, size=[config.test_batch_size, 4]), ms.float32) diff --git a/model_zoo/official/cv/faster_rcnn/postprocess.py b/model_zoo/official/cv/faster_rcnn/postprocess.py index 89bfda3885..8fc628e40d 100644 --- a/model_zoo/official/cv/faster_rcnn/postprocess.py +++ b/model_zoo/official/cv/faster_rcnn/postprocess.py @@ -45,7 +45,7 @@ def get_eval_result(ann_file): label_result_file = result_path + file_id + "_1.bin" mask_result_file = result_path + file_id + "_2.bin" - all_bbox = np.fromfile(bbox_result_file, dtype=np.float32).reshape(80000, 5) + all_bbox = np.fromfile(bbox_result_file, dtype=np.float16).reshape(80000, 5) all_label = np.fromfile(label_result_file, dtype=np.int32).reshape(80000, 1) all_mask = np.fromfile(mask_result_file, dtype=np.bool_).reshape(80000, 1)