1. Primero use Baidu AI para ejecutar el código. Consulte la URL del enlace /aistudio/projectdetail/2160041 para obtener el modelo. Sin embargo, el modelo obtenido al ejecutar paddlex no se puede ejecutar directamente en Raspberry Pi. Así que continúa con el paso dos.
2. Convierta el modelo a un modelo compatible con paddle-lite.
En Baidu Studio, ejecute el código del paso anterior
paddle_lite_opt --model_fie=su enfoque de modelo
--param_file=su enfoque de peso
- -valid_targets =arm
--optimize_out_type=naive_buffer
--optimize_out=La ruta y el nombre del modelo nb de salida que desea
3. Ejecute el siguiente código de clasificación , modifica tus parámetros
desde paddlelite.lite import *
import cv2
import numpy as np
import sys p>
tiempo de importación
desde PIL importar imagen
desde PIL importar ImageFont
desde PIL importar ImageDraw
# Cargar modelo
p>def create_predictor(model_dir):
config = MobileConfig()
config.set_model_from_file(model_dir)
predictor = create_paddle_predictor(config )
predictor de retorno
#Procesamiento de normalización de imagen
def process_img(image, input_image_size):
origen = imagen p>
img = origin.resize(input_image_size, Image.BILINEAR)
resized_img = img.copy()
if img.mode != 'RGB': p>
img = img.convert('RGB')
img = np.array(img).astype('float32').transpose((2, 0, 1)) # HWC a CHW p>
img -= 127.5
img *= 0.007843
img = img[np.newaxis, :]
retorno origen,img p>
# Predicción
def predecir(imagen, predictor, input_image_size):
#Procesamiento de datos de entrada
input_tensor = get_input(0)
input_tensor.resize([1, 3, input_image_size[0], input_image_size[1]])
imagen = Image.fromarray(cv2.cvtColor(imagen, cv2.COLOR_BGRA2RGBA) )
origen, img = process_img(image, input_image_size)
image_data = np.array(img).flatten().tolist()
input_tensor. conjunto_floa
t_data(image_data)
#Realizar predicción
predictor.run()
#Obtener salida
salida_tensor = predictor.get_output(0 )
print("salida_tensor.float_data()[:] : ", salida_tensor.float_data()[:])
res = salida_tensor.float_data()[:] p>
return res
# Mostrar resultados
def post_res(label_dict, res):
print(max(res))
target_index = res.index(max(res))
print("El resultado es: " + " " + label_dict[target_index])
if __name__ == ' __main__ ':
#Definición inicial
label_dict = {0:"metal", 1:"papel", 2:"plástico", 3:"vidrio"}
image = "./test_pic/images_orginal/glass/glass300.jpg"
model_dir = "./trained_model/ResNet50_trash_x86_model.nb"
image_size = (224, 224 )
# Inicialización
predictor = create_predictor(model_dir)
# Leer en la imagen
imagen = cv2.imread(imagen) p>
# Predicción
res = predict(imagen, predictor, image_size)
# Mostrar resultados
post_res(label_dict, res)
cv2.imshow("imagen", imagen)
cv2.waitKey()