问题描述
对完成训练的paddlehub的可用模型(人脸检测)进行转换,使其能够部署在paddlelite环境下,已完成x86架构linux(ubuntu)中的模型部署
环境配置
linux下配置个新的conda环境用来测试,需要添加opencv模块和paddlelite模块
1 2 3 4
| conda create --name test python=3.7 conda activate test pip install paddlelite pip install opencv-python==4.5.1.48
|
模型转换
有python脚本和shell脚本两种方式,分别用于windows环境和linux环境
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| from paddlelite.lite import *
opt = Opt()
opt.set_model_dir(r"models\ultra_light_fast_generic_face_detector_1mb_640\ultra_light_fast_generic_face_detector_1mb_640")
opt.set_valid_places("x86")
opt.set_model_type("naive_buffer")
opt.set_optimize_out(r"models\new_models\ultra_light_fast_generic_face_detector_1mb_640")
opt.run()
|
- bash命令,需要先切换到安装paddlelite的环境
1
| paddle_lite_opt --model_dir=./ultra_light_fast_generic_face_detector_1mb_640/ultra_light_fast_generic_face_detector_1mb_640 --optimize_out=./new_models/ultra_light_fast_generic_face_detector_1mb_640 --optimize_out_type=naive_buffer --valid_targets=x86
|
![模型转换]()
通过模型转换获得一个以nb为后缀的模型文件
模型的加载与使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| from paddlelite.lite import * import cv2 import numpy as np
image_path = "./faces/0.jpg" image_orig = cv2.imread(image_path)
c, h, w = 3, 480, 640
image_data = cv2.cvtColor(image_orig, cv2.COLOR_BGR2RGB) image_data = cv2.resize(image_data, (w, h)) image_mean = np.array([127, 127, 127]) image_data = (image_data - image_mean) / 128.0 image_data = np.transpose(image_data, [2, 0, 1]) image_data = image_data.reshape([1, c, h, w]).astype('float32')
config = MobileConfig() config.set_model_from_file('ultra_light_fast_generic_face_detector_1mb_640.nb') predictor = create_paddle_predictor(config)
input_tensor = predictor.get_input(0) input_tensor.from_numpy(image_data) predictor.run()
output_tensor_0 = predictor.get_output(0) output_tensor_1 = predictor.get_output(1) output_data_0 = output_tensor_0.numpy()[0] output_data_1 = output_tensor_1.numpy()[0]
|