Implementación de código PaddleHub-Lightweight para llamar al modelo preentrenado para lograr la detección de objetivos

Debido a que necesito hacer un diseño de curso de microcomputadora de un solo chip, el tema es el ventilador inteligente, probé muchos sensores y sentí que el ventilador no es lo suficientemente inteligente, por lo que quiero usar directamente un modelo de IA para la detección de rostros o la detección de peatones para detectar la posición de la persona, y luego darse cuenta de que el ventilador sopla sobre la persona, si una persona está ausente, se apagará automáticamente, dándose cuenta de la inteligenteización del ventilador.
Debido a que el modelo de IA no es el foco del proyecto, no quiero perder demasiado tiempo en entrenar el modelo, así que elegí el modelo de preentrenamiento en la biblioteca de modelos de paddlehub para completar la función.

Instalar PaddleHub

pip3 install paddlehub

También encontré una situación en la que la instalación de opencv-python se atascó y la instalación no funcionó en toda la noche, así que instalé directamente opencv-python manualmente:

¡Atascado aquí!
Inserte la descripción de la imagen aquí
Pasos de instalación manual:

  • opencv_python-4.4.0.46-cp37-cp37m-linux_armv7l.whlDescargue el paquete en esta página :
https://www.piwheels.org/simple/opencv-python/opencv_python-4.4.0.46-cp37-cp37m-linux_armv7l.whl
  • Instalación manual:
pip3 install opencv_python-4.4.0.46-cp37-cp37m-linux_armv7l.whl

La instalación de 10s está completa.
Inserte la descripción de la imagen aquíLuego reinstale paddlehub.

Vaya al sitio web oficial para elegir el modelo correcto

Biblioteca de modelos de PaddleHub

En el diseño de este curso, considerando que la Raspberry Pi tiene una potencia informática limitada y no requiere una precisión de reconocimiento particularmente alta, elegí un pyramidbox_lite_mobilemodelo para lograr la detección de rostros:
Inserte la descripción de la imagen aquí

Código de predicción

import paddlehub as hub
import cv2
import time

def draw_bbox_image(frame, boxes):
    cv2.rectangle(frame, (boxes["left"], boxes["top"]), (boxes["right"], boxes["bottom"]), (0,255,0), 2)
    #cv2.putText(图像, 文字, (x, y), 字体, 大小, (b, g, r), 宽度)
    cv2.putText(frame, str(boxes["confidence"]), (boxes["left"], boxes["top"]-2), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0,255,0), 2)


if __name__ == "__main__":
    vedio_capter = cv2.VideoCapture(0)
    face_detector = hub.Module(name="pyramidbox_lite_mobile")
    
    while True:
        ret, frame = vedio_capter.read() 
        tim1 = time.time()
        result = face_detector.face_detection(images=[frame])
        try:
            data_dict = result[0]["data"][0]
            draw_bbox_image(frame, data_dict)
            print("data_dict:", data_dict)
        except IndexError:
            pass
        cv2.imshow("result", frame)
        tim2 = time.time()
        tim = tim2 - tim1
        print("tim", tim)
        print("result", result)
        if cv2.waitKey(1) & 0xFF == ord('q'):
                break

    vedio_capter.realse() 

Efecto de realización final de Windows

Inserte la descripción de la imagen aquí

¡Terminado!

Ve a hacer un microcontrolador, jejeje.

De repente, descubrí que PaddlePaddle no admite la arquitectura del brazo, por lo que paddlehub no se puede usar en Raspberry Pi.

Luego, por cierto, cuelgue un artículo sobre la comunicación entre PYB MCU y Raspberry Pi. Los amigos interesados ​​pueden hacerlo directamente, ¡y se hará en 1 hora!

Supongo que te gusta

Origin blog.csdn.net/qq_45779334/article/details/110311009
Recomendado
Clasificación