Resolução de problemas comuns em YOLO
Introdução
Este guia constitui uma ajuda abrangente para a resolução de problemas comuns encontrados ao trabalhar com YOLO11 nos seus projectos Ultralytics . Navegar por estes problemas pode ser fácil com a orientação correta, garantindo que os seus projectos permanecem no caminho certo sem atrasos desnecessários.
Ver: Ultralytics YOLO11 Problemas comuns | Erros de instalação, Problemas de formação de modelos
Problemas comuns
Erros de instalação
Os erros de instalação podem surgir devido a várias razões, tais como versões incompatíveis, dependências em falta ou configurações de ambiente incorrectas. Primeiro, verifique se está a fazer o seguinte:
-
Está a utilizar Python 3.8 ou posterior, conforme recomendado.
-
Certifique-se de que tem a versão correta do PyTorch (1.8 ou posterior) instalada.
-
Considere a utilização de ambientes virtuais para evitar conflitos.
-
Siga passo a passo o guia de instalação oficial.
Além disso, aqui estão alguns problemas de instalação comuns que os utilizadores encontraram, juntamente com as respectivas soluções:
-
Erros de importação ou problemas de dependência - Se estiver a receber erros durante a importação de YOLO11, ou se estiver a ter problemas relacionados com dependências, considere os seguintes passos de resolução de problemas:
-
Instalação nova: Por vezes, começar com uma nova instalação pode resolver problemas inesperados. Especialmente com bibliotecas como Ultralytics, onde as actualizações podem introduzir alterações na estrutura da árvore de ficheiros ou nas funcionalidades.
-
Atualizar regularmente: Certifique-se de que está a utilizar a versão mais recente da biblioteca. As versões mais antigas podem não ser compatíveis com as actualizações recentes, dando origem a potenciais conflitos ou problemas.
-
Verificar dependências: Verificar se todas as dependências necessárias estão corretamente instaladas e se têm as versões compatíveis.
-
Rever alterações: Se inicialmente clonou ou instalou uma versão mais antiga, tenha em atenção que as actualizações significativas podem afetar a estrutura ou as funcionalidades da biblioteca. Consulte sempre a documentação oficial ou os registos de alterações para compreender quaisquer alterações importantes.
-
Lembre-se, manter as suas bibliotecas e dependências actualizadas é crucial para uma experiência suave e sem erros.
-
-
Executar YOLO11 em GPU - Se estiver a ter problemas em executar YOLO11 em GPU, considere os seguintes passos de resolução de problemas:
-
Verificar a compatibilidade e a instalação do CUDA: Certifique-se de que o seu GPU é compatível com CUDA e que CUDA está corretamente instalado. Utilizar o
nvidia-smi
para verificar o estado da sua versão NVIDIA GPU e CUDA . -
Verificar a integração de PyTorch e CUDA: Certifique-se de que PyTorch pode utilizar CUDA executando
import torch; print(torch.cuda.is_available())
num terminal Python . Se devolver 'True', PyTorch está configurado para utilizar CUDA. -
Ativação de ambiente: Certifique-se de que está no ambiente correto onde todos os pacotes necessários estão instalados.
-
Actualize os seus pacotes: Os pacotes desactualizados podem não ser compatíveis com o seu GPU. Mantenha-os actualizados.
-
Configuração do programa: Verifique se o programa ou código especifica a utilização do GPU . Em YOLO11, isso pode estar nas definições ou na configuração.
-
Questões de formação de modelos
Esta secção abordará os problemas mais comuns enfrentados durante a formação e as respectivas explicações e soluções.
Verificação das definições de configuração
Questão: Não tem a certeza se as definições de configuração no .yaml
estão a ser aplicados corretamente durante o treino do modelo.
Solução: As definições de configuração no .yaml
deve ser aplicado quando se utiliza o ficheiro model.train()
função. Para garantir que estas definições são corretamente aplicadas, siga estes passos:
- Confirme que o caminho para o seu
.yaml
o ficheiro de configuração está correto. - Certifique-se de que passa o caminho para o seu
.yaml
como o ficheirodata
ao chamarmodel.train()
, como indicado abaixo:
Aceleração do treinamento com várias GPUs
Problema: O treinamento é lento em uma única GPU, e você deseja acelerar o processo usando várias GPUs.
Solução: Aumentar o tamanho do lote pode acelerar o treinamento, mas é essencial considerar a capacidade de memória do GPU . Para acelerar o treinamento com várias GPUs, siga estas etapas:
-
Certifique-se de que tem várias GPUs disponíveis.
-
Modifique seu arquivo de configuração .yaml para especificar o número de GPUs a serem usadas, por exemplo, gpus: 4.
-
Aumente o tamanho do lote em conformidade para utilizar totalmente as várias GPUs sem exceder os limites de memória.
-
Modifique o seu comando de treino para utilizar várias GPUs:
# Adjust the batch size and other settings as needed to optimize training speed
model.train(data="/path/to/your/data.yaml", batch=32, multi_scale=True)
Parâmetros de monitorização contínua
Questão: Pretende saber quais os parâmetros que devem ser continuamente monitorizados durante o treino, para além da perda.
Solução: Embora a perda seja uma métrica crucial a monitorizar, é também essencial seguir outras métricas para a otimização do desempenho do modelo. Algumas das principais métricas a monitorizar durante a formação incluem:
- Precisão
- Recall
- Precisão média média (mAP)
É possível aceder a estas métricas a partir dos registos de treino ou utilizando ferramentas como o TensorBoard ou o wandb para visualização. A implementação de paragens antecipadas com base nestas métricas pode ajudá-lo a obter melhores resultados.
Ferramentas para acompanhar o progresso da formação
Questão: Está à procura de recomendações sobre ferramentas para acompanhar o progresso da formação.
Solução: Para acompanhar e visualizar o progresso da formação, pode considerar a utilização das seguintes ferramentas:
- TensorBoard: O TensorBoard é uma escolha popular para visualizar métricas de formação, incluindo perda, precisão e muito mais. Pode integrá-lo no seu processo de formação YOLO11 .
- CometComet fornece um vasto conjunto de ferramentas para o controlo e comparação de experiências. Permite-lhe acompanhar as métricas, os hiperparâmetros e até os pesos dos modelos. A integração com os modelos YOLO também é simples, proporcionando-lhe uma visão completa do seu ciclo de experiências.
- Ultralytics HUB: Ultralytics O HUB oferece um ambiente especializado para o acompanhamento dos modelos YOLO , proporcionando-lhe uma plataforma única para gerir métricas, conjuntos de dados e até colaborar com a sua equipa. Dado o seu foco personalizado em YOLO, oferece opções de acompanhamento mais personalizadas.
Cada uma destas ferramentas oferece o seu próprio conjunto de vantagens, pelo que poderá querer considerar as necessidades específicas do seu projeto ao fazer uma escolha.
Como verificar se a formação está a decorrer no GPU
Problema: O valor do "dispositivo" nos registos de formação é "nulo" e não tem a certeza se a formação está a decorrer no GPU.
Solução: O valor 'device' sendo 'null' normalmente significa que o processo de treinamento está definido para usar automaticamente um GPU disponível, que é o comportamento padrão. Para garantir que o treino ocorre num GPU específico, pode definir manualmente o valor 'device' para o índice GPU (por exemplo, '0' para o primeiro GPU) no seu ficheiro de configuração .yaml:
Isto atribuirá explicitamente o processo de formação ao GPU especificado. Se pretender treinar em CPU, defina 'device' para 'cpu'.
Mantenha-se atento à pasta "corridas" para obter registos e métricas para monitorizar eficazmente o progresso do treino.
Considerações fundamentais para uma formação eficaz de modelos
Eis alguns aspectos a ter em conta, se estiver a enfrentar problemas relacionados com a formação de modelos.
Formato e etiquetas do conjunto de dados
-
Importância: A base de qualquer modelo de aprendizagem automática reside na qualidade e no formato dos dados em que é treinado.
-
Recomendação: Certifique-se de que o seu conjunto de dados personalizado e as respectivas etiquetas estão em conformidade com o formato esperado. É crucial verificar se as anotações são precisas e de alta qualidade. Anotações incorrectas ou de qualidade inferior podem prejudicar o processo de aprendizagem do modelo, conduzindo a resultados imprevisíveis.
Convergência do modelo
-
Importância: Atingir a convergência do modelo garante que o modelo aprendeu o suficiente com os dados de treino.
-
Recomendação: Ao treinar um modelo "do zero", é vital garantir que o modelo atinja um nível satisfatório de convergência. Isto pode exigir uma duração de treino mais longa, com mais épocas, em comparação com quando se está a afinar um modelo existente.
Taxa de aprendizagem e tamanho do lote
-
Importância: Estes hiperparâmetros desempenham um papel fundamental na determinação da forma como o modelo actualiza os seus pesos durante o treino.
-
Recomendação: Avalie regularmente se a taxa de aprendizagem e o tamanho do lote escolhidos são óptimos para o seu conjunto de dados específico. Os parâmetros que não estão em harmonia com as caraterísticas do conjunto de dados podem prejudicar o desempenho do modelo.
Distribuição de classes
-
Importância: A distribuição das classes no seu conjunto de dados pode influenciar as tendências de previsão do modelo.
-
Recomendação: Avalie regularmente a distribuição das classes no seu conjunto de dados. Se houver um desequilíbrio entre as classes, existe o risco de o modelo desenvolver uma tendência para a classe mais predominante. Esta tendência pode ser evidente na matriz de confusão, onde o modelo pode prever predominantemente a classe maioritária.
Verificação cruzada com pesos pré-treinados
-
Importância: A utilização de pesos pré-treinados pode fornecer um ponto de partida sólido para a formação de modelos, especialmente quando os dados são limitados.
-
Recomendação: Como passo de diagnóstico, considere treinar o seu modelo utilizando os mesmos dados, mas inicializando-o com pesos pré-treinados. Se esta abordagem produzir uma matriz de confusão bem formada, isso pode sugerir que o modelo "de raiz" pode necessitar de mais formação ou ajustes.
Questões relacionadas com as previsões do modelo
Esta secção abordará os problemas comuns enfrentados durante a previsão de modelos.
Obter previsões de caixa delimitadora com o seu modelo personalizado YOLO11
Problema: Ao executar previsões com um modelo YOLO11 personalizado, existem desafios com o formato e a visualização das coordenadas da caixa delimitadora.
Solução:
- Formato das coordenadas: YOLO11 fornece coordenadas da caixa delimitadora em valores absolutos de píxeis. Para as converter em coordenadas relativas (de 0 a 1), é necessário dividir pelas dimensões da imagem. Por exemplo, digamos que o tamanho da imagem é 640x640. Nesse caso, deve fazer o seguinte:
# Convert absolute coordinates to relative coordinates
x1 = x1 / 640 # Divide x-coordinates by image width
x2 = x2 / 640
y1 = y1 / 640 # Divide y-coordinates by image height
y2 = y2 / 640
- Nome do ficheiro: Para obter o nome do ficheiro da imagem em que está a fazer a previsão, aceda ao caminho do ficheiro da imagem diretamente a partir do objeto de resultado no seu ciclo de previsão.
Filtragem de objectos em YOLO11 Previsões
Problema: Problemas com a forma de filtrar e apresentar apenas objectos específicos nos resultados da previsão ao executar YOLO11 utilizando a biblioteca Ultralytics .
Solução: Para detetar classes específicas, utilize o argumento classes para especificar as classes que pretende incluir na saída. Por exemplo, para detetar apenas carros (assumindo que 'carros' tem índice de classe 2):
Compreender as métricas de precisão em YOLO11
Questão: Confusão relativamente à diferença entre a precisão da caixa, a precisão da máscara e a precisão da matriz de confusão em YOLO11.
Solução: A precisão da caixa mede a exatidão das caixas delimitadoras previstas em comparação com as caixas reais da verdade terrestre, utilizando a IoU (Intersecção sobre União) como métrica. A precisão da máscara avalia a concordância entre as máscaras de segmentação previstas e as máscaras reais na classificação de objectos por pixel. A precisão da matriz de confusão, por outro lado, concentra-se na precisão geral da classificação em todas as classes e não considera a precisão geométrica das previsões. É importante notar que uma caixa delimitadora pode ser geometricamente exacta (verdadeiro positivo) mesmo que a previsão da classe esteja errada, o que leva a diferenças entre a precisão da caixa e a precisão da matriz de confusão. Estas métricas avaliam aspectos distintos do desempenho de um modelo, reflectindo a necessidade de diferentes métricas de avaliação em várias tarefas.
Extração de dimensões de objeto em YOLO11
Problema: Dificuldade em recuperar o comprimento e a altura dos objectos detectados em YOLO11, especialmente quando são detectados vários objectos numa imagem.
Solução: Para recuperar as dimensões da caixa delimitadora, utilize primeiro o modelo Ultralytics YOLO11 para prever objectos numa imagem. Em seguida, extraia as informações de largura e altura das caixas delimitadoras a partir dos resultados da previsão.
from ultralytics import YOLO
# Load a pre-trained YOLO11 model
model = YOLO("yolo11n.pt")
# Specify the source image
source = "https://ultralytics.com/images/bus.jpg"
# Make predictions
results = model.predict(source, save=True, imgsz=320, conf=0.5)
# Extract bounding box dimensions
boxes = results[0].boxes.xywh.cpu()
for box in boxes:
x, y, w, h = box
print(f"Width of Box: {w}, Height of Box: {h}")
Desafios da implantação
GPU Problemas de implantação
Problema: A implantação de modelos em um ambiente multiGPU pode, às vezes, levar a comportamentos inesperados, como uso inesperado de memória, resultados inconsistentes em GPUs, etc.
Solução: Verifique se há uma inicialização GPU padrão. Alguns frameworks, como PyTorch, podem inicializar operações CUDA em um GPU padrão antes de fazer a transição para as GPUs designadas. Para contornar inicializações padrão inesperadas, especifique o GPU diretamente durante a implantação e a previsão. Em seguida, use ferramentas para monitorar a utilização de GPU e o uso de memória para identificar quaisquer anomalias em tempo real. Além disso, certifique-se de que está a utilizar a versão mais recente da estrutura ou biblioteca.
Problemas de conversão/exportação de modelos
Problema: Durante o processo de conversão ou exportação de modelos de aprendizagem automática para diferentes formatos ou plataformas, os utilizadores podem encontrar erros ou comportamentos inesperados.
Solução:
-
Verificação de compatibilidade: Certifique-se de que está a utilizar versões de bibliotecas e estruturas que são compatíveis entre si. Versões incompatíveis podem levar a erros inesperados durante a conversão.
-
Reinicialização do ambiente: Se estiver a utilizar um ambiente interativo como o Jupyter ou o Colab, considere reiniciar o seu ambiente depois de fazer alterações ou instalações significativas. Um novo começo pode, por vezes, resolver problemas subjacentes.
-
Documentação oficial: Consulte sempre a documentação oficial da ferramenta ou biblioteca que está a utilizar para a conversão. Esta contém frequentemente diretrizes específicas e melhores práticas para a exportação de modelos.
-
Suporte da comunidade: Verifique o repositório oficial da biblioteca ou estrutura para problemas semelhantes relatados por outros utilizadores. Os mantenedores ou a comunidade podem ter fornecido soluções ou soluções alternativas em tópicos de discussão.
-
Atualizar regularmente: Certifique-se de que está a utilizar a versão mais recente da ferramenta ou biblioteca. Os programadores lançam frequentemente actualizações que corrigem erros conhecidos ou melhoram a funcionalidade.
-
Teste por incrementos: Antes de efetuar uma conversão completa, teste o processo com um modelo ou conjunto de dados mais pequeno para identificar potenciais problemas numa fase inicial.
Comunidade e apoio
O envolvimento com uma comunidade de pessoas que pensam da mesma forma pode melhorar significativamente a sua experiência e sucesso no trabalho com YOLO11. Abaixo estão alguns canais e recursos que podem ser úteis.
Fóruns e canais para obter ajuda
Problemas do GitHub: O repositório YOLO11 no GitHub tem um separador Problemas onde pode fazer perguntas, reportar erros e sugerir novas funcionalidades. A comunidade e os mantenedores são ativos aqui, e é um ótimo lugar para obter ajuda com problemas específicos.
Ultralytics Servidor Discord: Ultralytics tem um servidor Discord onde pode interagir com outros utilizadores e com os criadores.
Documentação e recursos oficiais
Ultralytics YOLO11 Documentação: A documentação oficial fornece uma visão geral abrangente de YOLO11, juntamente com guias sobre instalação, utilização e resolução de problemas.
Esses recursos devem fornecer uma base sólida para solucionar problemas e melhorar seus projetos YOLO11 , bem como para se conectar com outras pessoas na comunidade YOLO11 .
Conclusão
A resolução de problemas é parte integrante de qualquer processo de desenvolvimento, e estar equipado com o conhecimento correto pode reduzir significativamente o tempo e o esforço gastos na resolução de problemas. Este guia tem como objetivo abordar os desafios mais comuns enfrentados pelos utilizadores do modelo YOLO11 no ecossistema Ultralytics . Ao compreender e abordar estas questões comuns, pode garantir um progresso mais suave do projeto e obter melhores resultados com as suas tarefas de visão computacional.
Lembre-se, a comunidade Ultralytics é um recurso valioso. O contacto com colegas programadores e especialistas pode fornecer informações e soluções adicionais que podem não estar incluídas na documentação padrão. Continue sempre a aprender, a experimentar e a partilhar as suas experiências para contribuir para o conhecimento coletivo da comunidade.
Feliz resolução de problemas!
FAQ
Como posso resolver erros de instalação com YOLO11?
Os erros de instalação podem frequentemente dever-se a problemas de compatibilidade ou a dependências em falta. Certifique-se de que utiliza Python 3.8 ou posterior e que tem instalado PyTorch 1.8 ou posterior. É vantajoso utilizar ambientes virtuais para evitar conflitos. Para obter um guia de instalação passo a passo, siga o nosso guia de instalação oficial. Se encontrar erros de importação, tente uma nova instalação ou actualize a biblioteca para a versão mais recente.
Porque é que o treino do meu modelo YOLO11 é lento num único GPU?
O treinamento em um único GPU pode ser lento devido a grandes tamanhos de lote ou memória insuficiente. Para acelerar o treino, utilize várias GPUs. Certifique-se de que o seu sistema tem várias GPUs disponíveis e ajuste o seu .yaml
ficheiro de configuração para especificar o número de GPUs, por exemplo, gpus: 4
. Aumente o tamanho do lote em conformidade para utilizar totalmente as GPUs sem exceder os limites de memória. Exemplo de comando:
Como posso garantir que o meu modelo YOLO11 está a ser treinado em GPU?
Se o valor do 'dispositivo' mostrar 'null' nos registos de formação, isso significa geralmente que o processo de formação está definido para utilizar automaticamente um GPU disponível. Para atribuir explicitamente um GPU específico, defina o valor 'device' no seu .yaml
ficheiro de configuração. Por exemplo:
Isto define o processo de formação para o primeiro GPU. Consultar o nvidia-smi
para confirmar a configuração do CUDA .
Como posso monitorizar e acompanhar o meu progresso de treino do modelo YOLO11 ?
O acompanhamento e a visualização do progresso da formação podem ser geridos de forma eficiente através de ferramentas como o TensorBoard, Comete Ultralytics HUB. Estas ferramentas permitem-lhe registar e visualizar métricas como a perda, a precisão, a recuperação e o mAP. A implementação de paragens precoces com base nestas métricas também pode ajudar a obter melhores resultados de formação.
O que devo fazer se o YOLO11 não estiver a reconhecer o formato do meu conjunto de dados?
Certifique-se de que o conjunto de dados e as etiquetas estão em conformidade com o formato esperado. Verifique se as anotações são exactas e de alta qualidade. Se tiver algum problema, consulte o Guia de recolha de dados e anotações para obter as melhores práticas. Para obter mais orientações específicas sobre conjuntos de dados, consulte a secção Conjuntos de dados na documentação.