Sistema de detección y reconocimiento de fútbol de alta precisión basado en aprendizaje profundo (modelo PyTorch+Pyside6+YOLOv5)

Resumen: El sistema de detección y reconocimiento de fútbol de alta precisión basado en el aprendizaje profundo se puede utilizar en la vida diaria o en el campo para detectar y localizar objetivos de fútbol.El uso de algoritmos de aprendizaje profundo puede realizar la detección y el reconocimiento de objetivos de fútbol en imágenes, videos, cámaras, etc. Exportación de resultados de detección de imágenes o videos. Este sistema utiliza el conjunto de datos de entrenamiento del modelo de detección de objetivos YOLOv5, utiliza la biblioteca Pysdie6 para crear un sistema de visualización de páginas y es compatible con ONNX, PT y otros modelos como salida del modelo de peso. Las funciones admitidas por este sistema incluyen la importación e inicialización de modelos de entrenamiento de fútbol; el ajuste de la puntuación de confianza y el umbral del IOU, carga de imágenes, detección, visualización de resultados, exportación de resultados y detección final; carga de video, detección, visualización de resultados, visualización de resultados exportación y detección final; carga de cámara, detección, visualización de resultados y detección final; lista de objetivos detectados, información de ubicación; tiempo de razonamiento hacia adelante. Además, el sistema de detección y reconocimiento de fútbol admite la visualización simultánea de la imagen original y la imagen del resultado de la detección, y la visualización simultánea del video original y el video del resultado de la detección. Esta publicación de blog proporciona un código completo de Python y un tutorial de uso, adecuado para principiantes. Para obtener el archivo de recursos de código completo, vaya al enlace de descarga al final de la publicación.
inserte la descripción de la imagen aquí

introducción básica

En los últimos años, el aprendizaje automático y el aprendizaje profundo han progresado mucho, y los métodos de aprendizaje profundo han mostrado un mejor rendimiento que los métodos tradicionales en términos de precisión y velocidad de detección. YOLOv5 es la quinta generación del algoritmo de detección de objetivos de una sola etapa YOLO. Según los experimentos, se ha mejorado significativamente en términos de velocidad y precisión. El código fuente abierto se puede encontrar en https://github.com/ultralytics/yolov5 . Por lo tanto, esta publicación de blog utiliza el algoritmo de detección YOLOv5 para implementar un modelo de detección y reconocimiento de fútbol de alta precisión, y luego escribe el sistema de interfaz con la biblioteca Pyside6 para completar el desarrollo de la página de reconocimiento y detección de objetivos. Noté que el último progreso de la serie de algoritmos YOLO tiene YOLOv6, YOLOv7, YOLOv8 y otros algoritmos. El código para reemplazar el algoritmo de detección en este sistema con el último algoritmo también se lanzará más adelante. Bienvenido a prestar atención a la colección.

Construcción del entorno

(1) Descargue la biblioteca fuente de YOLOv5, colóquela en el directorio de su computadora y luego abra cmd para ingresar al directorio de YOLOv5. El directorio que se muestra en este artículo es: D:\vscode_workspace\yolov5 (2) Use Conda para crear el medio ambiente (Anacodna), conda create
- n yolo5 python=3.8 y luego instale torch y torchvision (pip install torch1.10.0+cu113 antorcha visión0.11.0+cu113 -f https://download.pytorch.org/whl/torch_stable.html -i https://pypi.tuna.tsinghua.edu.cn/simple) donde -i https://pypi.tuna .tsinghua.edu.cn/simple representa el uso de la fuente Tsinghua, este comando requiere la versión CUDA mostrada por nvidia-smi >=11.3, y finalmente instale los paquetes dependientes restantes usando: pip install -r requirements.txt -i https: //pypi.tuna.tsinghua.edu.cn/simple
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

(3) Instale la biblioteca Pyside6 pip install pyside6==6.3 -i https://pypi.tuna.tsinghua.edu.cn/simple
inserte la descripción de la imagen aquí

(4) Para la instalación de la biblioteca pycocotools bajo el sistema de Windows: pip install pycocotools-windows -i https://pypi.tuna.tsinghua.edu.cn/simple

Pantalla de interfaz y función

La interfaz de software diseñada en esta publicación de blog se proporciona a continuación. La interfaz general es simple y elegante. Las funciones generales incluyen la importación e inicialización del modelo de capacitación; puntaje de confianza y ajuste del umbral de IOU, carga de imágenes, detección, visualización de resultados, exportación de resultados y finalización detección; carga de video, detección, visualización de resultados visuales, exportación de resultados y detección final; lista de objetivos detectados, información de ubicación; tiempo de razonamiento hacia adelante. Espero que les guste, la interfaz inicial es la siguiente:
inserte la descripción de la imagen aquí

Selección e inicialización del modelo

Los usuarios pueden hacer clic en el botón de selección de peso del modelo para cargar los pesos del modelo entrenado, y el formato del peso de entrenamiento puede ser .pt, .onnx y . motor, etc., y luego haga clic en el botón de inicialización del peso del modelo para realizar la configuración de la información de inicialización del modelo seleccionado.

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

Puntuación de confianza y cambio de IOU

Cambie el valor en el cuadro de entrada debajo de Confianza o IOU para cambiar el progreso del control deslizante sincrónicamente. Al mismo tiempo, cambiar el valor de progreso del control deslizante también puede cambiar el valor del cuadro de entrada sincrónicamente; el cambio del valor de Confianza o IOU se sincronizará con la configuración en el modelo. El umbral de confianza de detección y el umbral de IOU se cambiarán.

Selección, detección y exportación de imágenes

Los usuarios pueden hacer clic en el botón Seleccionar imagen para cargar una sola imagen para detección y reconocimiento.
inserte la descripción de la imagen aquí

Luego haga clic en el botón de detección de imagen para completar la función de detección de objetivo de la imagen de entrada. Después de eso, el sistema generará el tiempo de detección en la columna de tiempo empleado y el número de objetivos detectados en la columna de cantidad objetivo. Puede seleccionar el objetivo detectado en el cuadro desplegable, correspondiente al objetivo Cambios en los valores de etiqueta para las posiciones (es decir, xmin, ymin, xmax e ymax).
inserte la descripción de la imagen aquí

Luego haga clic en el botón de visualización del resultado de la detección para mostrar el resultado de la detección de la imagen de entrada en la parte inferior izquierda del sistema, y ​​el sistema mostrará la categoría, la ubicación y la información de confianza del objetivo reconocido en la imagen.
inserte la descripción de la imagen aquí

Haga clic en el botón de exportación de resultados de detección de imágenes para exportar la imagen detectada e ingrese el nombre y el sufijo de la imagen guardada en la barra de guardar para guardar la imagen de resultado de detección.
inserte la descripción de la imagen aquí

Haga clic en el botón Finalizar detección de imagen para completar la actualización de la interfaz del sistema, borre toda la información de salida y luego haga clic en el botón Seleccionar imagen o Seleccionar video para cargar la imagen o el video.

Selección, detección y exportación de video

Los usuarios pueden hacer clic en el botón Seleccionar video para cargar un video para detección y reconocimiento, y luego el sistema ingresará el primer cuadro del video en la parte superior izquierda de la interfaz del sistema para mostrarlo.
inserte la descripción de la imagen aquí

Luego haga clic en el botón de detección de video para completar la función de detección de objetivos del video de entrada. Después de eso, el sistema generará el tiempo de detección en la columna de tiempo empleado y el número de objetivos detectados en la columna de cantidad de objetivos. Puede seleccionar el objetivo detectado en el cuadro desplegable, correspondiente al objetivo Cambios en los valores de etiqueta para las posiciones (es decir, xmin, ymin, xmax e ymax).
inserte la descripción de la imagen aquí

Haga clic en el botón Pausar detección de video para pausar el video de entrada. En este momento, el botón cambia para continuar con la detección de video. El marco de video de entrada y los resultados de detección de marco permanecerán en la interfaz del sistema. Puede hacer clic en el cuadro de destino desplegable para seleccionar la información de posición de las coordenadas del objetivo detectado, y luego haga clic en el botón continuar detección de video para realizar la detección del video de entrada.
Haga clic en el botón de exportación del resultado de la detección de video para exportar el video detectado e ingrese el nombre de la imagen guardada y el sufijo en la barra de guardar para guardar el video del resultado de la detección.
inserte la descripción de la imagen aquí

Haga clic en el botón Finalizar detección de video para completar la actualización de la interfaz del sistema, borre toda la información de salida y luego haga clic en el botón Seleccionar imagen o Seleccionar video para cargar imágenes o videos.

Apertura, detección y terminación de cámaras

El usuario puede hacer clic en el botón Abrir cámara para abrir el dispositivo de la cámara para su detección e identificación, y luego el sistema ingresará la imagen de la cámara en la parte superior izquierda de la interfaz del sistema para su visualización.
inserte la descripción de la imagen aquí

A continuación, haga clic en el botón de detección de cámara para completar la función de detección de objetivos de la cámara de entrada. Después de eso, el sistema generará el tiempo de detección en la columna de tiempo dedicado y generará el número de objetivos detectados en la columna de cantidad objetivo. Puede seleccione el objetivo detectado en el cuadro desplegable, correspondiente al objetivo Cambios en los valores de etiqueta para las posiciones (es decir, xmin, ymin, xmax e ymax).
inserte la descripción de la imagen aquí

Haga clic en el botón Finalizar detección de video para completar la actualización de la interfaz del sistema, borre toda la información de salida y luego haga clic en el botón Seleccionar imagen o Seleccionar video o Abrir cámara para cargar imágenes, videos o abrir la cámara.

Introducción a los principios de los algoritmos

本系统采用了基于深度学习的单阶段目标检测算法YOLOv5,相比于YOLOv3和YOLOv4,YOLOv5在检测精度和速度上都有很大的提升。YOLOv5算法的核心思想是将目标检测问题转化为一个回归问题,通过直接预测物体中心点的坐标来代替Anchor框。此外,YOLOv5使用SPP(Spatial Pyramid Pooling)的特征提取方法,这种方法可以在不增加计算量的情况下,有效地提取多尺度特征,提高检测性能。YOLOv5s模型的整体结构如下图所示。

inserte la descripción de la imagen aquí

La estructura de la red YOLOv5 está compuesta por Input, Backbone, Neck y Prediction. La parte de entrada de YOLOv5 es el extremo de entrada de la red, y el método de mejora de datos Mosaic se usa para recortar aleatoriamente los datos de entrada y luego empalmarlos. La red troncal es la parte de la red de funciones de extracción de YOLOv5, y la capacidad de extracción de funciones afecta directamente el rendimiento de toda la red. En la etapa de extracción de características, YOLOv5 utiliza la estructura CSPNet (Cross Stage Partial Network), que divide el mapa de características de entrada en dos partes, una parte se procesa a través de una serie de capas convolucionales, la otra parte se muestrea directamente y finalmente el mapa de funciones de dos partes Realiza la fusión. Este diseño hace que la red tenga una mayor capacidad expresiva no lineal y pueda manejar mejor fondos complejos y diversos objetos en tareas de detección de objetivos. En la etapa Neck, los mapas de características se fusionan utilizando bloques estructurales C3 del núcleo convolucional continuo. En la etapa de predicción, el modelo utiliza el mapa de características resultante para predecir las coordenadas del centro y la información de tamaño del objetivo. El blogger siente que YOLOv5 es una solución de alto rendimiento para la detección de objetivos, que puede clasificar y localizar objetivos con gran precisión. Por supuesto, YOLOv6, YOLOv7, YOLOv8 y otros algoritmos se proponen y mejoran constantemente, y los bloggers de seguimiento también integrarán estos algoritmos en este sistema, así que permanezca atento.

Introducción al conjunto de datos

El conjunto de datos de fútbol utilizado en este sistema se marca manualmente con la categoría de fútbol, ​​y el conjunto de datos tiene un total de 11966 imágenes. Las categorías en este conjunto de datos tienen una gran cantidad de rotaciones y diferentes condiciones de iluminación, lo que ayuda a entrenar un modelo de detección más sólido. El conjunto de datos de detección y reconocimiento de fútbol en este documento contiene imágenes 11,445 en el conjunto de entrenamiento y imágenes 521 en el conjunto de verificación.Algunos de los datos seleccionados y algunos conjuntos de datos de muestra se muestran en la figura a continuación. Dado que el algoritmo YOLOv5 tiene un límite en el tamaño de la imagen de entrada, todas las imágenes deben ajustarse al mismo tamaño. Para reducir la distorsión de la imagen tanto como sea posible sin afectar la precisión de detección, redimensionamos todas las imágenes a 640x640 y mantenemos la relación de aspecto original. Además, para mejorar la capacidad de generalización y la solidez del modelo, también usamos técnicas de aumento de datos, que incluyen rotación aleatoria, escalado, recorte y transformación de color, etc., para expandir el conjunto de datos y reducir el riesgo de sobreajuste.
inserte la descripción de la imagen aquí

Análisis de código clave

El modelo de aprendizaje profundo de este sistema se implementa mediante PyTorch y la detección de objetivos se basa en el algoritmo YOLOv5. En la fase de entrenamiento, usamos el modelo preentrenado como modelo inicial para el entrenamiento y luego optimizamos los parámetros de la red a través de múltiples iteraciones para lograr un mejor rendimiento de detección. Durante el entrenamiento, empleamos técnicas como la disminución de la tasa de aprendizaje y el aumento de datos para mejorar la capacidad de generalización y la solidez del modelo.
Durante la fase de prueba, usamos el modelo entrenado para detectar nuevas imágenes y videos. Al establecer el umbral, se filtra el marco de detección cuya confianza es inferior al umbral y, finalmente, se obtiene el resultado de la detección. Al mismo tiempo, también podemos guardar los resultados de la detección en formato de imagen o vídeo para su posterior análisis y aplicación. Este sistema se basa en el algoritmo YOLOv5 y se implementa mediante PyTorch. Las principales bibliotecas utilizadas en el código incluyen PyTorch, NumPy, OpenCV, PyQt, etc.
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

Diseño de interfaz Pyside6

Pyside6 es una de las soluciones de programación GUI para el lenguaje Python, que puede crear rápidamente aplicaciones GUI para programas Python. En esta publicación de blog, usamos la biblioteca Pyside6 para crear una interfaz gráfica que brinde a los usuarios una interfaz interactiva fácil de usar, que les permita seleccionar imágenes y videos para la detección de objetivos.
Usamos Qt Designer para diseñar la interfaz gráfica y luego usamos Pyside6 para convertir el archivo de interfaz de usuario diseñado en código Python. La interfaz gráfica contiene varios controles de IU, como etiquetas, botones, cuadros de texto, cuadros de selección múltiple, etc. A través del mecanismo de ranura de señal en Pyside6, los controles de la interfaz de usuario y los códigos lógicos del programa se pueden conectar entre sí.

Resultados experimentales y análisis.

En la sección de análisis y resultados experimentales, utilizamos indicadores como precisión y recuperación para evaluar el rendimiento del modelo, y también analizamos el proceso de entrenamiento a través de la curva de pérdida y la curva PR. En la fase de entrenamiento, usamos el conjunto de datos de fútbol presentado anteriormente para el entrenamiento, y usamos el algoritmo YOLOv5 para entrenar el conjunto de datos. Se entrenaron un total de 300 épocas. Durante el proceso de entrenamiento, usamos tensorboard para registrar las curvas de pérdida del modelo en el conjunto de entrenamiento y el conjunto de validación. Como se puede ver en la figura a continuación, a medida que aumenta el número de entrenamientos, la pérdida de entrenamiento y la pérdida de verificación del modelo disminuyen gradualmente, lo que indica que el modelo continúa aprendiendo características más precisas. Después del entrenamiento, evaluamos el modelo en el conjunto de validación del conjunto de datos y obtuvimos los siguientes resultados.
La siguiente figura muestra la curva PR de nuestro modelo YOLOv5 entrenado en el conjunto de verificación. En la figura se puede ver que el modelo ha logrado una tasa de recuperación y una tasa de precisión altas, y que el rendimiento general es bueno.
inserte la descripción de la imagen aquí

La siguiente figura muestra la imagen de mejora de datos de mosaico de esta publicación de blog cuando se usa el modelo YOLOv5 para entrenar el conjunto de datos de fútbol.
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

En resumen, el modelo YOLOv5 entrenado en esta publicación de blog funciona bien en el conjunto de datos, tiene una alta precisión y robustez de detección y se puede aplicar en escenarios reales. Además, el bloguero realizó una prueba detallada de todo el sistema y finalmente desarrolló una versión fluida de la interfaz del sistema de detección de objetivos de alta precisión, que es la parte de demostración de esta publicación de blog. los archivos, etc. han sido empaquetados y cargados, los amigos interesados ​​​​pueden seguir mi mensaje privado para obtenerlo.

Otros sistemas de detección de objetivos basados ​​en el aprendizaje profundo, como tomates, gatos y perros, cabras, objetivos salvajes, colillas de cigarrillos, códigos QR, cascos, policía de tránsito, sistemas de detección de Apple, etc. Amigos que lo necesiten, síganme y obtengan enlaces de descarga de otros videos de bloggers

El directorio completo del proyecto es el siguiente:
inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/sc1434404661/article/details/131216750
Recomendado
Clasificación