Closed ouxiand closed 4 months ago
请问有sface的onnx文件转Rknn3588例子吗?使用opencv zoo的开源模型测试,具体如下: onnx来源:https://github.com/opencv/opencv_zoo/blob/main/models/face_recognition_sface/face_recognition_sface_2021dec.onnx 测试图片:112*112尺寸的图片
转换脚本如下:
import cv2 import numpy as np import time
from rknn.api import RKNN import os import torch
import decimal decimal.getcontext().prec=10
np.set_printoptions(threshold=np.inf) np.set_printoptions(formatter={'float': '{: 0.10f}'.format})
def cos_sim(a, b): a_norm = np.linalg.norm(a) b_norm = np.linalg.norm(b) cos = np.dot(a,b)/(a_norm * b_norm) return cos
if name == 'main':
platform = 'rk3588' Width = 112 Height = 112 datestr =time.strftime('%Y%m%d%H%M') MODEL_PATH_NAME = 'face_recognition_sface_2021dec' NEED_BUILD_MODEL = True # Create RKNN object rknn = RKNN() #OUT_DIR = "rknn_models" MODEL_PATH = './{}.onnx'.format(MODEL_PATH_NAME) RKNN_MODEL_PATH = './{}_{}_{}.rknn'.format(MODEL_PATH_NAME,datestr,platform) if NEED_BUILD_MODEL: DATASET = './dataset.txt' rknn.config(mean_values=[[127.5, 127.5, 127.5]], std_values=[[127.5, 127.5, 127.5]], target_platform=platform) # Load model print('--> Loading model') ret = rknn.load_onnx(model=MODEL_PATH) if ret != 0: print('load model failed!') exit(ret) print('done') # Build model print('--> Building model') ret = rknn.build(do_quantization=False, dataset=DATASET) if ret != 0: print('build model failed.') exit(ret) print('done') # Export rknn model print('--> Export RKNN model: {}'.format(RKNN_MODEL_PATH)) ret = rknn.export_rknn(RKNN_MODEL_PATH) if ret != 0: print('Export rknn model failed.') exit(ret) # Init runtime environment print('--> Init runtime environment') ret = rknn.init_runtime() if ret != 0: print('Init runtime environment failed!') exit(ret) # 测试效果如下 img = cv2.imread("./sface1.jpg") img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB) img = np.expand_dims(img,axis=0) # Inference print('--> Running model') output1 = rknn.inference(inputs=[img],data_format='nhwc')[0] print(output1) img = cv2.imread("./sface2.jpg") img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB) img = np.expand_dims(img,axis=0) print('--> Running model') output2 = rknn.inference(inputs=[img],data_format='nhwc')[0] print(output2) print(cos_sim(output1[0],output2[0])) rknn.release() print('done') else: ret = rknn.load_rknn(RKNN_MODEL_PATH) rknn.release()
上面脚本转换可以转出rknn文件,但是结果是有问题,所有图片结果都是0.99,明细不对,请问各位有对应解决方法?
onnx来源:https://github.com/opencv/opencv_zoo/blob/main/models/face_recognition_sface/ ,然后下载face_recognition_sface_2021dec.onnx
请问有sface的onnx文件转Rknn3588例子吗?使用opencv zoo的开源模型测试,具体如下: onnx来源:https://github.com/opencv/opencv_zoo/blob/main/models/face_recognition_sface/face_recognition_sface_2021dec.onnx 测试图片:112*112尺寸的图片
转换脚本如下:
import cv2 import numpy as np import time
from rknn.api import RKNN import os import torch
import decimal decimal.getcontext().prec=10
np.set_printoptions(threshold=np.inf) np.set_printoptions(formatter={'float': '{: 0.10f}'.format})
def cos_sim(a, b): a_norm = np.linalg.norm(a) b_norm = np.linalg.norm(b) cos = np.dot(a,b)/(a_norm * b_norm) return cos
if name == 'main':
上面脚本转换可以转出rknn文件,但是结果是有问题,所有图片结果都是0.99,明细不对,请问各位有对应解决方法?