Resolução de problemas comuns em YOLO
Introdução
Este guia serve como uma ajuda abrangente para a resolução de problemas comuns encontrados ao trabalhar com o YOLO11 nos teus projectos Ultralytics . Navegar por estes problemas pode ser fácil com a orientação certa, garantindo que os teus projectos permanecem no caminho certo sem atrasos desnecessários.
Observa: Ultralytics Problemas comuns do YOLO11 | 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, certifica-te de que estás a fazer o seguinte:
Estás a utilizar Python 3.8 ou posterior, conforme recomendado.
Certifica-te de que tens a versão correta do PyTorch (1.8 ou posterior) instalada.
Considera a possibilidade de utilizar ambientes virtuais para evitar conflitos.
Segue passo a passo o guia de instalação oficial.
Além disso, aqui estão alguns problemas comuns de instalação que os utilizadores encontraram, juntamente com as respectivas soluções:
Erros de importação ou problemas de dependência - Se estiveres a receber erros durante a importação do YOLO11, ou se estiveres a ter problemas relacionados com dependências, considera 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.
Actualiza regularmente: Certifica-te de que estás 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.
Verifica as dependências: Verifica se todas as dependências necessárias estão corretamente instaladas e se são de versões compatíveis.
Revê as alterações: Se inicialmente clonaste ou instalaste uma versão mais antiga, tem em atenção que as actualizações significativas podem afetar a estrutura ou as funcionalidades da biblioteca. Consulta sempre a documentação oficial ou os registos de alterações para compreenderes quaisquer alterações importantes.
Lembra-te, manter as tuas bibliotecas e dependências actualizadas é crucial para uma experiência suave e sem erros.
Executar o YOLO11 em GPU - Se estiveres a ter problemas em executar o YOLO11 em GPU, considera os seguintes passos de resolução de problemas:
Verifica a compatibilidade e a instalação do CUDA: Certifica-te de que o teu GPU é compatível com CUDA e que CUDA está corretamente instalado. Utiliza o
nvidia-smi
para verificar o estado da tua versão NVIDIA GPU e CUDA .Verifica a integração de PyTorch e CUDA: Certifica-te de que PyTorch pode utilizar CUDA , executando
import torch; print(torch.cuda.is_available())
num terminal Python . Se devolver 'True', PyTorch está configurado para usar CUDA.Ativação de ambiente: Certifica-te de que estás no ambiente correto onde todos os pacotes necessários estão instalados.
Actualiza os teus pacotes: Os pacotes desactualizados podem não ser compatíveis com o teu GPU. Mantém-nos actualizados.
Configuração do programa: Verifica se o programa ou código especifica a utilização do GPU . No YOLO11, isso pode estar nas definições ou na configuração.
Questões de formação de modelos
Esta secção aborda 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 tens 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 ao utilizar o ficheiro model.train()
função. Para garantir que estas definições são aplicadas corretamente, segue estes passos:
- Confirma que o caminho para o teu
.yaml
o ficheiro de configuração está correto. - Certifica-te de que passas o caminho para o teu
.yaml
como o ficheirodata
quando chamas o argumentomodel.train()
como se vê abaixo:
Acelerar o treinamento com várias GPUs
Problema: O treinamento é lento em um único GPU, e tu queres acelerar o processo usando várias GPUs.
Resolve o problema: 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, segue estas etapas:
Certifica-te de que tens várias GPUs disponíveis.
Modifica o teu ficheiro de configuração .yaml para especificar o número de GPUs a utilizar, por exemplo, gpus: 4.
Aumenta o tamanho do lote em conformidade para utilizar totalmente as várias GPUs sem exceder os limites de memória.
Modifica o teu 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: Queres saber que parâmetros 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 otimizar o 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)
Podes 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 ajudar-te a obter melhores resultados.
Ferramentas para acompanhar o progresso da formação
Questão: Estás à procura de recomendações sobre ferramentas para acompanhar o progresso da formação.
Solução: Para acompanhar e visualizar o progresso da formação, podes considerar a utilização das seguintes ferramentas:
- TensorBoard: O TensorBoard é uma escolha popular para visualizar métricas de treino, incluindo perda, precisão e muito mais. Podes integrá-lo no teu processo de treino YOLO11.
- CometComet fornece um vasto conjunto de ferramentas para o acompanhamento e comparação de experiências. Permite-lhe seguir as métricas, os hiperparâmetros e até os pesos dos modelos. A integração com os modelos YOLO também é simples, proporcionando-te uma visão completa do teu ciclo de experiências.
- Ultralytics HUB: Ultralytics O HUB oferece um ambiente especializado para acompanhar os modelos YOLO , proporcionando 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 deves ter em conta as necessidades específicas do teu projeto ao fazeres 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 tens a certeza se a formação está a decorrer no GPU.
Resolve o problema: 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:
Atribui explicitamente o processo de treino ao GPU especificado. Se quiseres treinar no CPU, define 'device' para 'cpu'.
Fica atento à pasta "corridas" para veres os registos e as métricas para monitorizares eficazmente o progresso do treino.
Considerações fundamentais para uma formação eficaz de modelos
Eis algumas coisas a ter em conta, se estiveres 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: Certifica-te de que o teu conjunto de dados personalizado e as respectivas etiquetas respeitam o formato esperado. É crucial verificar se as anotações são precisas e de alta qualidade. Anotações incorretas ou de baixa qualidade podem atrapalhar o processo de aprendizagem do modelo, levando 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: Quando treinas um modelo "de raiz", é vital garantir que o modelo atinge um nível de convergência satisfatório. Isto pode exigir uma duração de treino mais longa, com mais épocas, em comparação com quando estás 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: Avalia regularmente se a taxa de aprendizagem e o tamanho do lote escolhidos são ideais para o teu conjunto de dados específico. Os parâmetros que não estão em harmonia com as características do conjunto de dados podem prejudicar o desempenho do modelo.
Distribuição de classes
Importância: A distribuição das classes no teu conjunto de dados pode influenciar as tendências de previsão do modelo.
Recomendação: Avalia regularmente a distribuição das classes no teu 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: Aproveitar os pesos pré-treinados pode fornecer um ponto de partida sólido para o treinamento do modelo, especialmente quando os dados são limitados.
Recomendação: Como etapa de diagnóstico, considera treinar o modelo usando 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 treino ou ajustes.
Questões relacionadas com as previsões do modelo
Esta secção aborda os problemas mais comuns enfrentados durante a previsão de modelos.
Obter previsões de caixa delimitadora com o teu 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.
Resolve o problema:
- Formato das coordenadas: O YOLO11 fornece coordenadas da caixa delimitadora em valores absolutos de pixel. Para as converter em coordenadas relativas (de 0 a 1), tens de dividir pelas dimensões da imagem. Por exemplo, digamos que o tamanho da tua imagem é 640x640. Então, deves 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ás a fazer a previsão, acede ao caminho do ficheiro da imagem diretamente a partir do objeto de resultado no teu ciclo de previsão.
Filtrar objectos nas previsões do YOLO11
Problema: Enfrenta problemas sobre como filtrar e exibir apenas objetos específicos nos resultados da previsão ao executar o YOLO11 usando a biblioteca Ultralytics .
Solução: Para detetar classes específicas usa o argumento classes para especificar as classes que queres 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 no YOLO11
Problema: 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 no 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 (Intersection over Union) 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.
Extrair dimensões de objectos no YOLO11
Problema: Dificuldade em recuperar o comprimento e a altura dos objectos detectados no YOLO11, especialmente quando são detectados vários objectos numa imagem.
Solução: Para recuperar as dimensões da caixa delimitadora, utiliza primeiro o modelo Ultralytics YOLO11 para prever objectos numa imagem. Em seguida, extrai a informação 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 implementação
GPU Problemas de implementaçã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: Verifica 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, especifica o GPU diretamente durante a implantação e a previsão. Em seguida, usa ferramentas para monitorizar a utilização de GPU e a utilização de memória para identificar quaisquer anomalias em tempo real. Além disso, certifica-te de que estás 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.
Resolve o problema:
Verifica a compatibilidade: Certifica-te de que estás 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.
Reinicia o ambiente: Se estiveres a utilizar um ambiente interativo como o Jupyter ou o Colab, considera reiniciar o teu ambiente depois de fazeres alterações ou instalações significativas. Um novo começo pode, às vezes, resolver problemas subjacentes.
Documentação oficial: Consulta sempre a documentação oficial da ferramenta ou biblioteca que estás a utilizar para a conversão. Ela geralmente contém diretrizes específicas e práticas recomendadas para a exportação de modelos.
Suporte da comunidade: Verifica o repositório oficial da biblioteca ou da 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.
Actualiza regularmente: Certifica-te de que estás 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.
Testa de forma incremental: Antes de efetuar uma conversão completa, testa 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 com os mesmos interesses pode melhorar significativamente a tua experiência e o teu sucesso no trabalho com o YOLO11. Abaixo estão alguns canais e recursos que podem ser úteis para ti.
Fóruns e canais para obter ajuda
Problemas no GitHub: O repositório YOLO11 no GitHub tem um separador Issues onde podes fazer perguntas, reportar bugs 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 podes interagir com outros utilizadores e com os criadores.
Documentação e recursos oficiais
Ultralytics Documentos do YOLO11: A documentação oficial fornece uma visão geral abrangente do YOLO11, juntamente com guias de instalação, utilização e resolução de problemas.
Estes recursos devem fornecer uma base sólida para resolver problemas e melhorar os teus projectos YOLO11, bem como para te ligares a outros na comunidade YOLO11.
Conclusão
A solução de problemas é parte integrante de qualquer processo de desenvolvimento, e estar equipado com o conhecimento certo 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, podes garantir um progresso mais suave do projeto e obter melhores resultados com as tuas tarefas de visão computacional.
Lembra-te, a comunidade Ultralytics é um recurso valioso. O envolvimento com colegas desenvolvedores e especialistas pode fornecer informações e soluções adicionais que podem não ser abordadas na documentação padrão. Continua sempre a aprender, a experimentar e a partilhar as tuas experiências para contribuir para o conhecimento coletivo da comunidade.
Feliz resolução de problemas!
FAQ
Como é que resolvo os erros de instalação com o YOLO11?
Os erros de instalação podem muitas vezes dever-se a problemas de compatibilidade ou a dependências em falta. Certifica-te de que utilizas o Python 3.8 ou posterior e que tens instalado o PyTorch 1.8 ou posterior. É vantajoso utilizar ambientes virtuais para evitar conflitos. Para obter um guia de instalação passo a passo, segue o nosso guia de instalação oficial. Se encontrares erros de importação, tenta uma nova instalação ou actualiza a biblioteca para a versão mais recente.
Porque é que o meu modelo YOLO11 está a treinar lentamente 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, utiliza várias GPUs. Certifica-te de que o teu sistema tem várias GPUs disponíveis e ajusta o teu .yaml
ficheiro de configuração para especificar o número de GPUs, por exemplo, gpus: 4
. Aumenta 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 treinar em GPU?
Se o valor de 'device' mostrar 'null' nos registos de formação, geralmente significa que o processo de formação está definido para utilizar automaticamente um GPU disponível. Para atribuir explicitamente um GPU específico, define o valor 'device' no teu .yaml
ficheiro de configuração. Por exemplo:
Assim, inicia o processo de formação no primeiro GPU. Consulta o nvidia-smi
para confirmar a tua configuração CUDA .
Como posso monitorizar e acompanhar o progresso do meu treino com o 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-te registar e visualizar métricas como a perda, a precisão, a recuperação e o mAP. A implementação de uma paragem precoce 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?
Certifica-te de que o conjunto de dados e as etiquetas estão em conformidade com o formato esperado. Verifica se as anotações são precisas e de alta qualidade. Se tiveres algum problema, consulta o Guia de recolha de dados e anotações para obteres as melhores práticas. Para mais orientações específicas sobre conjuntos de dados, consulta a secção Conjuntos de dados na documentação.