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í!
Pasos de instalación manual:
opencv_python-4.4.0.46-cp37-cp37m-linux_armv7l.whl
Descargue 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.
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_mobile
modelo para lograr la detección de rostros:
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
¡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!