Sistema de detecção e reconhecimento de futebol de alta precisão baseado em aprendizado profundo (modelo PyTorch+Pyside6+YOLOv5)

Resumo: O sistema de detecção e reconhecimento de futebol de alta precisão baseado em aprendizado profundo pode ser usado na vida diária ou no campo para detectar e localizar alvos de futebol. O uso de algoritmos de aprendizado profundo pode realizar a detecção e reconhecimento de alvos de futebol em imagens, vídeos, câmeras, etc. Exportação de resultados de detecção de imagem ou vídeo. Este sistema usa o conjunto de dados de treinamento do modelo de detecção de alvo YOLOv5, usa a biblioteca Pysdie6 para construir um sistema de exibição de página e suporta ONNX, PT e outros modelos como a saída do modelo de peso. As funções suportadas por este sistema incluem a importação e inicialização de modelos de treinamento de futebol; o ajuste de pontuação de confiança e limite IOU, upload de imagem, detecção, exibição de resultado de visualização, exportação de resultado e detecção final; upload de vídeo, detecção, exibição de resultado de visualização, resultado exportação e detecção final; upload da câmera, detecção, exibição do resultado da visualização e detecção final; lista de alvos detectados, informações de localização; tempo de raciocínio avançado. Além disso, o sistema de detecção e reconhecimento de futebol suporta a exibição simultânea da imagem original e da imagem do resultado da detecção, e a exibição simultânea do vídeo original e do vídeo do resultado da detecção. Esta postagem do blog fornece um tutorial de uso e código Python completo, adequado para iniciantes. Para obter o arquivo de recurso de código completo, acesse o link de download no final da postagem.
insira a descrição da imagem aqui

introdução básica

Nos últimos anos, o aprendizado de máquina e o aprendizado profundo fizeram grandes progressos, e os métodos de aprendizado profundo mostraram melhor desempenho do que os métodos tradicionais em termos de precisão e velocidade de detecção. YOLOv5 é a quinta geração do algoritmo de detecção de alvo de estágio único YOLO. De acordo com experimentos, ele foi significativamente melhorado em termos de velocidade e precisão. O código-fonte aberto pode ser encontrado em https://github.com/ultralytics/yolov5 . Portanto, esta postagem do blog usa o algoritmo de detecção YOLOv5 para implementar um modelo de reconhecimento e detecção de futebol de alta precisão e, em seguida, escreve o sistema de interface com a biblioteca Pyside6 para concluir o desenvolvimento da página de detecção e reconhecimento de alvo. Percebi que o último progresso da série de algoritmos YOLO tem YOLOv6, YOLOv7, YOLOv8 e outros algoritmos. O código para substituir o algoritmo de detecção neste sistema pelo algoritmo mais recente também será lançado posteriormente. Bem-vindo a prestar atenção à coleta.

Construção do ambiente

(1) Baixe a biblioteca de origem YOLOv5, coloque-a no diretório do seu computador e, em seguida, abra cmd para entrar no diretório YOLOv5. O diretório demonstrado neste artigo é: D:\vscode_workspace\yolov5 (2) Use Conda para criar o ambiente (Anacodna), conda create
- n yolo5 python = 3.8 e, em seguida, instale a tocha e a archivision (pip install tocha1.10.0+cu113 visão de tocha0.11.0+cu113 -f https://download.pytorch.org/whl/torch_stable.html -i https://pypi.tuna.tsinghua.edu.cn/simple) onde -i https://pypi.tuna .tsinghua.edu.cn/simple representa o uso da fonte Tsinghua, este comando requer a versão CUDA exibida por nvidia-smi >=11.3 e, finalmente, instale os pacotes dependentes restantes usando: pip install -r requirements.txt -i https: //pypi.tuna.tsinghua.edu.cn/simples
insira a descrição da imagem aqui
insira a descrição da imagem aqui

(3) Instale a biblioteca Pyside6 pip install pyside6==6.3 -i https://pypi.tuna.tsinghua.edu.cn/simple
insira a descrição da imagem aqui

(4) Para a instalação da biblioteca pycocotools no sistema Windows: pip install pycocotools-windows -i https://pypi.tuna.tsinghua.edu.cn/simple

Exibição de interface e função

A interface do software projetada nesta postagem do blog é fornecida abaixo. A interface geral é simples e elegante. As funções gerais incluem importação e inicialização do modelo de treinamento; pontuação de confiança e ajuste de limite de IOU, upload de imagem, detecção, exibição de resultado visual, exportação de resultado e finalização detecção; upload de vídeo, detecção, exibição de resultado visual, exportação de resultado e detecção final; lista de alvos detectados, informações de localização; tempo de raciocínio avançado. Espero que gostem, a interface inicial é a seguinte:
insira a descrição da imagem aqui

Seleção e inicialização do modelo

Os usuários podem clicar no botão de seleção de peso do modelo para carregar os pesos do modelo treinado, e o formato do peso de treinamento pode ser .pt, .onnx e . motor, etc., e então clique no botão de inicialização do peso do modelo para realizar a configuração das informações de inicialização do modelo selecionado.

insira a descrição da imagem aqui
insira a descrição da imagem aqui

Pontuação de confiança e mudança de IOU

Altere o valor na caixa de entrada abaixo de Confiança ou IOU para alterar o progresso do controle deslizante de forma síncrona. Ao mesmo tempo, alterar o valor do progresso do controle deslizante também pode alterar o valor da caixa de entrada de forma síncrona; a alteração do valor de confiança ou IOU será sincronizado com a configuração no modelo. O limite de confiança de detecção e o limite de IOU serão alterados.

Seleção, detecção e exportação de imagens

Os usuários podem clicar no botão Selecionar imagem para carregar uma única imagem para detecção e reconhecimento.
insira a descrição da imagem aqui

Em seguida, clique no botão de detecção de imagem para concluir a função de detecção de alvo da imagem de entrada. Depois disso, o sistema exibirá o tempo de detecção na coluna de tempo gasto e o número de alvos detectados na coluna de quantidade de alvo. Você pode selecionar o alvo detectado na caixa suspensa, correspondente às alterações de destino nos valores de rótulo para posições (ou seja, xmin, ymin, xmax e ymax).
insira a descrição da imagem aqui

Em seguida, clique no botão de exibição do resultado da detecção para exibir o resultado da detecção da imagem de entrada na parte inferior esquerda do sistema, e o sistema exibirá a categoria, localização e informações de confiança do alvo reconhecido na imagem.
insira a descrição da imagem aqui

Clique no botão de exportação do resultado da detecção de imagem para exportar a imagem detectada e insira o nome e o sufixo da imagem salva na barra de salvar para salvar a imagem do resultado da detecção.
insira a descrição da imagem aqui

Clique no botão End Image Detection para concluir a atualização da interface do sistema, limpe todas as informações de saída e, em seguida, clique no botão Select Image ou Select Video para carregar a imagem ou vídeo.

Seleção, detecção e exportação de vídeo

Os usuários podem clicar no botão Selecionar vídeo para carregar um vídeo para detecção e reconhecimento e, em seguida, o sistema inserirá o primeiro quadro do vídeo no canto superior esquerdo da interface do sistema para exibição.
insira a descrição da imagem aqui

Em seguida, clique no botão de detecção de vídeo para concluir a função de detecção de alvo do vídeo de entrada. Depois disso, o sistema exibirá o tempo de detecção na coluna de tempo gasto e o número de alvos detectados na coluna de quantidade de alvo. Você pode selecionar o alvo detectado na caixa suspensa, correspondente às alterações de alvo nos valores de rótulo para posições (ou seja, xmin, ymin, xmax e ymax).
insira a descrição da imagem aqui

Clique no botão Pausar detecção de vídeo para pausar o vídeo de entrada. Neste momento, o botão muda para continuar a detecção de vídeo. O quadro de vídeo de entrada e os resultados da detecção de quadro permanecerão na interface do sistema. Você pode clicar na caixa de destino suspensa para selecionar as informações de posição de coordenadas do alvo detectado e, em seguida, clique no botão Continuar detecção de vídeo para realizar a detecção do vídeo de entrada.
Clique no botão de exportação do resultado da detecção de vídeo para exportar o vídeo detectado e insira o nome e o sufixo da imagem salva na barra de salvar para salvar o vídeo do resultado da detecção.
insira a descrição da imagem aqui

Clique no botão End Video Detection para concluir a atualização da interface do sistema, limpe todas as informações de saída e, em seguida, clique no botão Select Image ou Select Video para carregar imagens ou vídeos.

Abertura, detecção e terminação da câmera

O usuário pode clicar no botão Abrir câmera para abrir o dispositivo da câmera para detecção e identificação e, em seguida, o sistema inserirá a imagem da câmera no canto superior esquerdo da interface do sistema para exibição.
insira a descrição da imagem aqui

Em seguida, clique no botão de detecção de câmera para concluir a função de detecção de alvo da câmera de entrada. Depois disso, o sistema exibirá o tempo de detecção na coluna de tempo gasto e o número de alvos detectados na coluna de quantidade de alvo. Você pode selecione o alvo detectado na caixa suspensa, correspondente às alterações de alvo nos valores de rótulo para posições (ou seja, xmin, ymin, xmax e ymax).
insira a descrição da imagem aqui

Clique no botão End Video Detection para concluir a atualização da interface do sistema, limpe todas as informações de saída e, em seguida, clique no botão Select Image ou Select Video ou Open Camera para carregar imagens, vídeos ou abrir a câmera.

Introdução aos Princípios do Algoritmo

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

insira a descrição da imagem aqui

A estrutura da rede YOLOv5 é composta por Entrada, Backbone, Pescoço e Previsão. A parte de entrada do YOLOv5 é a extremidade de entrada da rede, e o método de aprimoramento de dados Mosaic é usado para cortar aleatoriamente os dados de entrada e, em seguida, unir. O backbone é a parte da rede dos recursos de extração do YOLOv5, e a capacidade de extração de recursos afeta diretamente o desempenho de toda a rede. No estágio de extração de recursos, o YOLOv5 usa a estrutura CSPNet (Cross Stage Partial Network), que divide o mapa de recursos de entrada em duas partes, uma parte é processada por uma série de camadas convolucionais, a outra parte é diretamente reduzida e, finalmente, o mapa de recursos de duas partes executa a fusão. Esse design faz com que a rede tenha uma capacidade expressiva não linear mais forte e pode lidar melhor com fundos complexos e diversos objetos em tarefas de detecção de alvos. No estágio Neck, os mapas de recursos são fundidos usando blocos estruturais C3 de kernel convolucional contínuo. No estágio de Previsão, o modelo usa o mapa de recursos resultante para prever as coordenadas do centro e as informações de tamanho do alvo. O blogueiro acredita que o YOLOv5 é uma solução de alto desempenho para detecção de alvos, que pode classificar e localizar alvos com alta precisão. É claro que YOLOv6, YOLOv7, YOLOv8 e outros algoritmos estão sendo constantemente propostos e aprimorados, e os blogueiros de acompanhamento também integrarão esses algoritmos a esse sistema, portanto, fique atento.

Introdução ao conjunto de dados

O conjunto de dados de futebol usado neste sistema é marcado manualmente com a categoria de futebol e o conjunto de dados possui um total de 11966 imagens. As categorias neste conjunto de dados possuem um grande número de rotações e diferentes condições de iluminação, o que ajuda a treinar um modelo de detecção mais robusto. O conjunto de dados de detecção e reconhecimento de futebol neste artigo contém 11445 imagens no conjunto de treinamento e 521 imagens no conjunto de verificação. Parte dos dados selecionados e alguns conjuntos de dados de amostra são mostrados na figura abaixo. Como o algoritmo YOLOv5 tem um limite no tamanho da imagem de entrada, todas as imagens precisam ser ajustadas para o mesmo tamanho. Para reduzir ao máximo a distorção da imagem sem afetar a precisão da detecção, redimensionamos todas as imagens para 640x640 e mantemos a proporção original. Além disso, para aumentar a capacidade de generalização e a robustez do modelo, também usamos técnicas de aumento de dados, incluindo rotação aleatória, dimensionamento, corte e transformação de cores, etc., para expandir o conjunto de dados e reduzir o risco de superajuste.
insira a descrição da imagem aqui

Análise de código-chave

O modelo de aprendizado profundo desse sistema é implementado usando PyTorch e a detecção de alvo é baseada no algoritmo YOLOv5. Na fase de treinamento, usamos o modelo pré-treinado como modelo inicial para treinamento e, em seguida, otimizamos os parâmetros de rede por meio de várias iterações para obter um melhor desempenho de detecção. Durante o treinamento, empregamos técnicas como decaimento da taxa de aprendizado e aumento de dados para aprimorar a capacidade de generalização e a robustez do modelo.
Durante a fase de testes, usamos o modelo treinado para detectar novas imagens e vídeos. Ao definir o limite, o quadro de detecção cuja confiança é inferior ao limite é filtrado e, finalmente, o resultado da detecção é obtido. Ao mesmo tempo, também podemos salvar os resultados da detecção em formato de imagem ou vídeo para posterior análise e aplicação. Este sistema é baseado no algoritmo YOLOv5 e implementado usando PyTorch. As principais bibliotecas usadas no código incluem PyTorch, NumPy, OpenCV, PyQt, etc.
insira a descrição da imagem aqui
insira a descrição da imagem aqui

Projeto de interface Pyside6

Pyside6 é uma das soluções de programação GUI para a linguagem Python, que pode criar rapidamente aplicativos GUI para programas Python. Nesta postagem do blog, usamos a biblioteca Pyside6 para criar uma interface gráfica para fornecer aos usuários uma interface interativa fácil de usar, permitindo que os usuários selecionem fotos e vídeos para detecção de alvo.
Usamos o Qt Designer para projetar a interface gráfica e, em seguida, usamos o Pyside6 para converter o arquivo de interface do usuário projetado em código Python. A interface gráfica contém vários controles de interface do usuário, como rótulos, botões, caixas de texto, caixas de seleção múltipla e assim por diante. Por meio do mecanismo de slot de sinal no Pyside6, os controles da interface do usuário e os códigos lógicos do programa podem ser conectados uns aos outros.

Resultados experimentais e análise

Na seção de resultados experimentais e análise, usamos indicadores como precisão e recall para avaliar o desempenho do modelo e também analisamos o processo de treinamento por meio da curva de perda e da curva PR. Na fase de treinamento, usamos o conjunto de dados de futebol introduzido anteriormente para treinamento e usamos o algoritmo YOLOv5 para treinar o conjunto de dados.Um total de 300 épocas foram treinadas. Durante o processo de treinamento, usamos o tensorboard para registrar as curvas de perda do modelo no conjunto de treinamento e no conjunto de validação. Como pode ser visto na figura abaixo, à medida que o número de treinamento aumenta, a perda de treinamento e a perda de verificação do modelo diminuem gradualmente, indicando que o modelo continua aprendendo recursos mais precisos. Após o treinamento, avaliamos o modelo no conjunto de validação do conjunto de dados e obtivemos os seguintes resultados.
A figura abaixo mostra a curva PR do nosso modelo YOLOv5 treinado no conjunto de verificação. Pode ser visto na figura que o modelo alcançou uma alta taxa de recuperação e taxa de precisão, e o desempenho geral é bom.
insira a descrição da imagem aqui

A figura abaixo mostra a imagem de aprimoramento de dados Mosaic desta postagem de blog ao usar o modelo YOLOv5 para treinar o conjunto de dados de futebol.
insira a descrição da imagem aqui
insira a descrição da imagem aqui

Em resumo, o modelo YOLOv5 treinado nesta postagem do blog tem um bom desempenho no conjunto de dados, tem alta precisão e robustez de detecção e pode ser aplicado em cenários reais. Além disso, o blogueiro realizou um teste detalhado em todo o sistema e, finalmente, desenvolveu uma versão suave da interface do sistema de detecção de alvo de alta precisão, que é a parte de demonstração desta postagem do blog. A interface de interface do usuário completa, vídeo de imagem de teste, código arquivos, etc. foram empacotados e carregados. Amigos interessados ​​podem seguir minha mensagem privada para obtê-lo.

Outros sistemas de detecção de alvos baseados em aprendizado profundo, como tomates, cães e gatos, cabras, alvos selvagens, pontas de cigarro, códigos QR, capacetes, polícia de trânsito, sistemas de detecção da Apple, etc. vídeos de blogueiros.

O diretório completo do projeto é o seguinte:
insira a descrição da imagem aqui

Acho que você gosta

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