Embellecimiento de la alarma de sonido después de que YOLOv5 detecta el objetivo: interfaz de detección de YOLOv5 basada en PyQt5

La publicación de blog anterior escribió cómo habilitar YOLOv5 para emitir una alarma sonora después de detectar el objetivo. Esta publicación de blog es para optimizar su interfaz para que sea más conveniente y fácil de usar, y está un paso más cerca del producto.

Principalmente me refiero al código de este jefe, y de acuerdo a mis propias necesidades, realicé mejoras para agregar alarmas de voz.
Aquí está el enlace de video del jefe: Interfaz de detección YOLOv5 - Implementación de PyQt5
El código fuente del jefe está aquí: He movido el código fuente

Nota: Mi algoritmo de detección de YOLOv5 se basa en la versión 6.1 de YOLOv5, y es un modelo s, a partir del cual se entrena el modelo para obtener el peso de entrenamiento; si no es la versión 6.1 de YOLOv5, al ejecutar mi conjunto de cosas, pueden ocurrir varios problemas Varios errores de programa. El YOLOv5 utilizado en la última publicación de blog que escribí también es la versión 6.1: ¿ Cómo hacer que YOLOv5 suene una alarma después de detectar el objetivo?

1. Pantalla de efectos de interfaz

Debido a que se utiliza la función de guardado de resultados de detección del algoritmo YOLOv5, el archivo de video guardado no tiene sonido. Así que utilicé la grabación de pantalla QQ para grabar todos los efectos. Se grabó en el laboratorio y el fondo era un poco ruidoso.

Visualización del efecto de la interfaz de detección

2. Mejoras realizadas

1. Primero, agregue el código de alarma de voz en el archivo main.py, y la posición de adición es la siguiente:
①Agregue estas tres líneas de código en esta posición. inserte la descripción de la imagen aquí
El código es el siguiente:

t0 = time.time() 
count = 0 
tplay = 0

②Agregue el siguiente código en esta posición
inserte la descripción de la imagen aquí
El código es el siguiente:

 value = det[:, 4].max().item()  # 解决的是看到视频就报警,每取四个置信度的值,找到最大,大于0.5才播放告警语音
 if value > 0.5:  # 大于0.5播放警示语音
    count += 1  # count相当于一个滤波器,小延时功能,防止误报(累计5个数之后再报语音)。
    if count > 5:
        count = 0
        if time.time() - tplay > 2.0:  # 防止告警声音的叠加播放,2s播放完再继续播报
            import os
            os.system('start /b D:/YOLOv5-5.0-PYQT-series/pyqt5-yolov5-yolov5_v6.1/ffmpeg/bin/ffplay.exe -autoexit -nodisp D:/YOLOv5-5.0-PYQT-series/pyqt5-yolov5-yolov5_v6.1/Smoking-warning.mp3')  # 音乐播放函数
          # 参数含义: start /b 后台启动    ffplay音乐播放软件的位置      -autoexit 播放完毕自动退出 -nodisp不显示窗口        mp3语音的位置
            tplay = time.time()  # 当前系统时钟

Un detalle importante, muchas personas no han notado que
después de agregar los dos códigos anteriores, ejecute el programa main.py, y la interfaz que aparece tendrá un problema atascado al cambiar el modo de detección (por ejemplo, cambiar de video de detección a la detección en tiempo real de la cámara, hay un error al informar un problema de tartamudeo), el error es: variable local 'tplay' referenciada antes de la asignación. Este error ocurrirá si la variable global se cambia dentro de la función.
La solución es agregar esta línea de código aquí
inserte la descripción de la imagen aquí
:

global tplay #将tplay设置为全局变量,解决了报错:local variable 'tplay' referenced before assignment 的问题。 注:在函数内部更改全局变量就会出现此错误

Con respecto al nombre del archivo y la ruta,
¡no use chino! ¡No uses chino! ¡No uses chino!
Cambie todo a inglés para nombrar todas las carpetas de su proyecto.
Si hay chino en la ruta del archivo, se informará un error: no se puede abrir/leer el archivo: verifique la ruta/integridad del archivo
**Solución: **Modifique el nombre de la ruta, el chino nunca aparecerá y, a veces, las mayúsculas en inglés no permitido.

Una vez completada la mejora del código, puede ejecutar el programa

3. Perspectivas de futuro

También puede empaquetar los proyectos de código abierto de los grandes antes mencionados y mis mejoras al proyecto en un solo archivo y ejecutarlo como un programa ejecutable .exe.
La ventaja de esto es 1. Después de trasplantar el proyecto a otros dispositivos informáticos, no es necesario reconfigurar el entorno de soporte requerido por el algoritmo de detección de YOLOv5 (como todos sabemos, el problema de configuración del entorno de soporte es un obstáculo). Después de empaquetar el exe, haga clic en el archivo para usarlo.; 2. Es más fácil de mostrar, no necesita mirar un montón de códigos, haga clic para ejecutar en el editor IDE, en otras palabras, después de empaquetar en un archivo .exe, es más como un producto (al mostrar el efecto del proyecto a la Parte A, siempre No puede dejar que vean un montón de códigos ejecutándose, parece informal), y hay un cierto efecto de confidencialidad, otras personas no puede ver su código y no puede copiarlo fácilmente (por supuesto, definitivamente se puede hacer cracking inverso), no es 100% confidencial).
En la actualidad, se ha implementado el paquete exe, pero el archivo es un poco grande.El
inserte la descripción de la imagen aquí
efecto general es exactamente el mismo que en el video anterior.

Supongo que te gusta

Origin blog.csdn.net/Mr_LanGX/article/details/130408059
Recomendado
Clasificación