1 系统环境
硬件环境(Ascend/GPU/CPU): Ascend/GPU/CPU
MindSpore版本: mindspore=2.3.1
执行模式(PyNative/ Graph): Graph
Python版本: Python=3.9
操作系统平台: linux
2 报错信息
2.1 问题描述
使用如下代码将一个.ckpt文件转.air文件。
2.2 报错信息
2.3 脚本信息
再通过如下命令在香橙派上将上面的.air转成.om
使用如下代码尝试进行模型推理
3 根因分析
******此处由用户填写******
4 解决方案
******此处由用户填写******
包含文字方案和最终脚本代码
请将正确的脚本打包并上传附件
1 系统环境
硬件环境(Ascend/GPU/CPU): Ascend/GPU/CPU
MindSpore版本: mindspore=2.3.1
执行模式(PyNative/ Graph): Graph
Python版本: Python=3.9
操作系统平台: linux
2 报错信息
2.1 问题描述
使用如下代码将一个.ckpt文件转.air文件。
2.2 报错信息
(mindspore) HwHiAiUser@orangepiaipro:~/PythonProject/sh_cell_classifications python demo/om_infer.py /home/HwHiAiUser/.conda/envs/mindspore/lib/python3.9/site-packages/numpy/core/getlimits.py:549: Userwarning: The value of the smallest subnormal for <class 'numpy.float64'> type is zero. setattr(self, word, getattr(machar, word).flat[e]) /home/HwHiAiUser/.conda/envs/mindspore/lib/python3.9/site-pac kages/numpy/core/getlimits.py:89: UserWarning: The value of the smallest subnormal for <class 'numpy.float64'> type is zero. return self._float_to_str(self.sma1lest_subnormal) /home/HwHiAiUser/.conda/envs/mindspore/lib/python3.9/site-packages/numpy/core/getlimits.py:549: Userwarning: The value of the smallest subnormal for <class 'numpy.float32'> type is zero. setattr(self, word, getattr(machar, word).flat[0]) /home/HwHiAiUser/.conda/envs/mindspore/lib/python3.9/site-pac kages/numpy/core/getlimits.py:89: UserWarning: The value of the smallest subnormal for <class 'numpy.float32'> type is zero. return self._float_to_str(self.smallest_subnormal) Init model resource start... Traceback (most recent cal1 last): File "/home/HwHiAiUser/PythonProject/shangjing_cel1_classification/demo/om_infer.py", line 62, in <module> model = AclLiteModel(model_path) File "/usr/local/Ascend/thirdpart/aarch64/acl1ite/ac11ite model.py", line 44, in _init 1920 self._ init_resource() File "/usr/local/Ascend/thirdpart/aarch64/acllite/acllite_model .py", line 58, in _init_resource utils.check_ret("acl.mdl. l0ad_from_file", ret) File "/usr/local/Ascend/thirdpart/aarch64/acllite/acllite_utils .py", line 17, in check_ret raise Exception("{} failed ret_int={}" Exception: acl.mdl. load_from_file failed ret_int=145001 Exception ignored in: <function AclLiteModel.__del__ at 0xe7ff6839dee0> Traceback (most recent call last): File "/usr/local/Ascend/thirdpart/aarch64/acllite/acllite_model.py", line 445, in __del__ self.destroy() File "/usr/local/Ascend/thirdpart/aarch64/acllite/acllite_model.py", line 426, in destroy if self._is_destroyed: AttributeError: 'AclLiteModel' object has no attribute '_is_destroyed'2.3 脚本信息
import mindspore from mindspore import export from mindspore import load_checkpoint, load_param_into_net from mindspore.common.tensor import Tensor from src.deep_learning.networks import NestedUNet import numpy as np net = NestedUNet(n_channels=3, n_classes=2, is_train=False) params = load_checkpoint('nested_unet_checkpoints/nested_unet_checkpoints.ckpt') load_param_into_net(net, params) net.set_train(False) input_tensor = Tensor(np.ones([1, 3, 256, 256]), dtype=mindspore.float32) export(net, input_tensor, file_name='nested_unet', file_format='AIR') print('模型已导出为AIR格式')再通过如下命令在香橙派上将上面的.air转成.om
使用如下代码尝试进行模型推理
import os import cv2 import numpy as np import matplotlib.pyplot as plt import mindspore.dataset as ds import acl import acllite_utils as utils from acllite_model import AclLiteModel from acllite_resource import resource_list class AclLiteResource: """ AclLiteResource """ def __init__(self, device_id=0): self.device_id = device_id self.context = None self.stream = None self.run_mode = None def init(self): """ init resource """ print("init resource stage:") ret = acl.init() ret = acl.rt.set_device(self.device_id) utils.check_ret("acl.rt.set_device", ret) self.context, ret = acl.rt.create_context(self.device_id) utils.check_ret("acl.rt.create_context", ret) self.stream, ret = acl.rt.create_stream() utils.check_ret("acl.rt.create_stream", ret) self.run_mode, ret = acl.rt.get_run_mode() utils.check_ret("acl.rt.get_run_mode", ret) print("Init resource success") def __del__(self): print("acl resource release all resource") resource_list.destroy() if self.stream: print("acl resource release stream") acl.rt.destroy_stream(self.stream) if self.context: print("acl resource release context") acl.rt.destroy_context(self.context) print("Reset acl device ", self.device_id) acl.rt.reset_device(self.device_id) print("Release acl resource success") # 加载模型 path = os.getcwd() model_path = os.path.join(path, "nested_unet.om") model = AclLiteModel(model_path) @utils.display_time def pre_process(image): """ image preprocess """ copied_image = np.copy(image) image = cv2.resize(np.array(image), dsize=(256, 256)) if len(image.shape) == 3: input_image = np.expand_dims(image.transpose((2, 0, 1)), axis=0) / 127.5 - 1 else: input_image = np.expand_dims(np.tile(image, reps=(3, 1, 1)), axis=0) / 127.5 - 1 return input_image, copied_image # 图片推理 @utils.display_time def inference(image): """ model inference """ input_image, copied_image = pre_process(image) # show_images = show_data["data"].asnumpy() # mask_images = show_data["label"].reshape([1, 512, 512]) result = model.execute([input_image, ]) # 输入需要一个list类型的东西,里面需要一个numpy型的东西 res = result[0].argmax(axis=1) # result是一个列表,里面只有一个元素是一个numpy数组,即模型输出转numpy型的东西 return res def main(): # acl初始化 acl_resource = AclLiteResource() acl_resource.init() dataset = cv2.imread('ultrasound_images_to_show/0.jpg') # inference res = inference(dataset) # 推理 main()3 根因分析
******此处由用户填写******
4 解决方案
******此处由用户填写******
包含文字方案和最终脚本代码
请将正确的脚本打包并上传附件