动态分辨率推理样例(ResNet-50)
示例代码
import numpy as np from mindx.sdk import base from mindx.sdk.base import Tensor import cv2 as cv try: # 设置待推理图片路径 jpg_path = "./test.jpg" # 读入原图片 img = cv.imread(jpg_path) # 缩放到224 * 224,输出尺寸格式为(宽,高) img_test1 = cv.resize(img, (224, 224)) # 色域转换 BGR -> YUV420 input_image = cv.cvtColor(img_test1, cv.COLOR_BGR2YUV_I420) device_id = 1 # 芯片ID base.mx_init() # 全局初始化,申请设备资源与日志资源 input_image1 = np.reshape(input_image,((1,) + input_image.shape[:2] + (1,))) imgTensor = [Tensor(input_image1)] # 将Image类转为Tensor model_path = "./resnet50_dynamic_image.om" # 模型路径 model_ = base.model(model_path, deviceId=device_id) # 创造模型对象 outputs = model_.infer(imgTensor) # 使用模型对Tensor对象进行推理 label_path = "./resnet50_clsidx_to_labels.names" # 分类标签文件的路径 output0 = outputs[0] # 获取推理结果 output0.to_host() # 将推理结果Tensor转至Host侧 result0_array = np.array(output0) # 将推理结果Tensor转为numpy数组,用于后处理 max_idx = result0_array.argmax(axis=1)[0] # 获取置信度最高的label下标索引 print('label_index:', max_idx) # 输出置信度最高的label下标索引 with open(label_path, 'r', encoding='utf-8') as f: # 读取分类标签文件 file = f.read() label_list = file.split('\n')[1:-1] # 获取有效分类标签 infer_result = label_list[max_idx] # 获得标签名称 print('infer result:{}'.format(infer_result)) # 打印推理结果 except Exception as e: print(e)
示例说明
动态分辨率模型在使用DVPP类进行数据预处理时,推理处理流程可参考端到端推理处理样例(ResNet-50),本样例为使用OpenCV进行数据预处理并推理的流程。
样例仅供参考,模型构建部分命令和相关配置具体请参见《CANN ATC工具使用指南》。
如在使用ATC工具时选择配置AIPP色域转换,请注意OpenCV读取图片时色域转换与OM模型输入对应。
- 本样例模型构建使用的动态分辨率转换命令参考:
atc --model=./resnet50_v1.5.pb --framework=3 --output=resnet50_dynamic_image --output_type=FP32 --soc_version=Ascend310 --input_shape=input_tensor:1,-1,-1,3 --insert_op_conf=./aipp_resnet50_dynamic_image.aippconfig --dynamic_image_size="224,224;448,448"
- 动态分辨率aipp配置参考:
aipp_op { aipp_mode: static input_format : YUV420SP_U8 csc_switch : true rbuv_swap_switch : false src_image_size_w : 0 src_image_size_h : 0 matrix_r0c0 : 256 matrix_r0c1 : 0 matrix_r0c2 : 359 matrix_r1c0 : 256 matrix_r1c1 : -88 matrix_r1c2 : -183 matrix_r2c0 : 256 matrix_r2c1 : 454 matrix_r2c2 : 0 input_bias_0 : 0 input_bias_1 : 128 input_bias_2 : 128 mean_chn_0 : 124 mean_chn_1 : 117 mean_chn_2 : 104 }
父主题: 样例演示