Solução de problemas comuns com YOLO

YOLO common training and deployment issues

Introdução

Este guia serve como uma ajuda abrangente para solucionar problemas comuns encontrados ao trabalhar com YOLO26 em seus projetos Ultralytics. Navegar por esses problemas pode ser simples com a orientação correta, garantindo que seus projetos permaneçam no caminho certo sem atrasos desnecessários.



Watch: Ultralytics YOLO26 Common Issues | Installation Errors, Model Training Issues

Problemas Comuns

Erros de instalação

Erros de instalação podem surgir devido a vários motivos, como versões incompatíveis, dependências ausentes ou configurações de ambiente incorretas. Primeiro, verifique se você está fazendo o seguinte:

  • Você está usando Python 3.8 ou posterior conforme recomendado.
  • Certifique-se de ter a versão correta do PyTorch (1.8 ou posterior) instalada.
  • Considere usar ambientes virtuais para evitar conflitos.
  • Siga o guia oficial de instalação passo a passo.

Além disso, aqui estão alguns problemas de instalação comuns que os usuários encontraram, juntamente com suas respectivas soluções:

  • Erros de importação ou problemas de dependência - Se você estiver recebendo erros durante a importação do YOLO26 ou se estiver tendo problemas relacionados a dependências, considere as seguintes etapas de solução de problemas:

    • Instalação limpa: Às vezes, começar com uma instalação limpa pode resolver problemas inesperados. Especialmente com bibliotecas como Ultralytics, onde as atualizações podem introduzir alterações na estrutura da árvore de arquivos ou funcionalidades.

    • Atualize regularmente: Certifique-se de estar usando a versão mais recente da biblioteca. Versões mais antigas podem não ser compatíveis com atualizações recentes, levando a possíveis conflitos ou problemas.

    • Verifique as dependências: Verifique se todas as dependências necessárias estão instaladas corretamente e se são das versões compatíveis.

    • Revise as mudanças: Se você clonou ou instalou inicialmente uma versão mais antiga, esteja ciente de que atualizações significativas podem afetar a estrutura ou as funcionalidades da biblioteca. Sempre consulte a documentação oficial ou os registros de alterações para entender quaisquer mudanças importantes.

    • Lembre-se, manter suas bibliotecas e dependências atualizadas é crucial para uma experiência tranquila e livre de erros.

  • Executando YOLO26 na GPU - Se você estiver com problemas para executar o YOLO26 na GPU, considere as seguintes etapas de solução de problemas:

    • Verifique a compatibilidade e a instalação do CUDA: Certifique-se de que sua GPU seja compatível com CUDA e que o CUDA esteja instalado corretamente. Use o comando nvidia-smi para verificar o status da sua GPU NVIDIA e a versão do CUDA.

    • Verifique a integração entre PyTorch e CUDA: Certifique-se de que o PyTorch possa utilizar CUDA executando import torch; print(torch.cuda.is_available()) em um terminal Python. Se retornar 'True', o PyTorch está configurado para usar CUDA.

    • Verifique a compatibilidade da GPU: O suporte para arquiteturas de GPU anteriores à Turing e capacidade de computação (SM) < 7.5 foi abandonado desde o cuDNN 9.11.0. Portanto, se você tiver uma GPU mais antiga - como a 1080Ti - talvez precise usar uma versão do PyTorch compilada com uma versão mais antiga do CUDA/cuDNN. Você pode verificar isso executando import torch; cap = torch.cuda.get_device_capability(0) if torch.cuda.is_available() else (0, 0); cudnn = torch.backends.cudnn.version() or 0; ok = "not compatible" if cudnn >= 91100 and (cap[0] < 7 or (cap[0] == 7 and cap[1] < 5)) else "should be ok"; print(f"Compute capability: SM {cap[0]}.{cap[1]}, cuDNN: {cudnn} => {ok}")

    • Ativação do ambiente: Certifique-se de estar no ambiente correto onde todos os pacotes necessários estão instalados.

    • Atualize seus pacotes: Pacotes desatualizados podem não ser compatíveis com sua GPU. Mantenha-os atualizados.

    • Configuração do programa: Verifique se o programa ou código especifica o uso da GPU. No YOLO26, isso pode estar nas configurações.

Problemas de treinamento de modelo

Esta seção abordará problemas comuns enfrentados durante o treinamento e suas respectivas explicações e soluções.

Verificação das configurações

Problema: Você não tem certeza se as configurações no arquivo .yaml estão sendo aplicadas corretamente durante o treinamento do modelo.

Solução: As configurações no arquivo .yaml devem ser aplicadas ao usar a função model.train(). Para garantir que essas configurações sejam aplicadas corretamente, siga estas etapas:

  • Confirme se o caminho para o seu arquivo de configuração .yaml está correto.

  • Certifique-se de passar o caminho para o seu arquivo .yaml como o argumento data ao chamar model.train(), conforme mostrado abaixo:

    model.train(data="/path/to/your/data.yaml", batch=4)

Acelerando o 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 da GPU. Para acelerar o treinamento com várias GPUs, siga estas etapas:

  • Certifique-se de ter 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 de acordo para utilizar totalmente as várias GPUs sem exceder os limites de memória.

  • Modifique seu comando de treinamento 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)

Parâmetros de monitoramento contínuo

Problema: Você quer saber quais parâmetros devem ser monitorados continuamente durante o treinamento, além da perda.

Solução: Embora a perda seja uma métrica crucial para monitorar, também é essencial acompanhar outras métricas para otimização do desempenho do modelo. Algumas métricas importantes para monitorar durante o treinamento incluem:

Você pode acessar essas métricas nos logs de treinamento ou usando ferramentas como TensorBoard ou wandb para visualização. Implementar a parada antecipada com base nessas métricas pode ajudá-lo a alcançar melhores resultados.

Ferramentas para acompanhar o progresso do treinamento

Problema: Você está procurando recomendações de ferramentas para acompanhar o progresso do treinamento.

Solução: Para acompanhar e visualizar o progresso do treinamento, você pode considerar o uso das seguintes ferramentas:

  • TensorBoard: TensorBoard é uma escolha popular para visualizar métricas de treinamento, incluindo perda, precisão e muito mais. Você pode integrá-lo ao seu processo de treinamento YOLO26.
  • Comet: Comet fornece um conjunto de ferramentas abrangente para rastreamento e comparação de experimentos. Ele permite que você rastreie métricas, hiperparâmetros e até pesos do modelo. A integração com modelos YOLO também é direta, oferecendo uma visão geral completa do seu ciclo de experimento.
  • Ultralytics Platform: A Ultralytics Platform oferece um ambiente especializado para rastrear modelos YOLO, oferecendo uma plataforma completa para gerenciar métricas, conjuntos de dados e até colaborar com sua equipe. Dado seu foco personalizado no YOLO, ela oferece opções de rastreamento mais customizadas.

Cada uma dessas ferramentas oferece seu próprio conjunto de vantagens, então você pode considerar as necessidades específicas do seu projeto ao fazer uma escolha.

Como verificar se o treinamento está ocorrendo na GPU

Problema: O valor de 'device' nos logs de treinamento é 'null' e você não tem certeza se o treinamento está ocorrendo na GPU.

Solução: O valor de 'device' ser 'null' normalmente significa que o processo de treinamento está configurado para usar automaticamente uma GPU disponível, que é o comportamento padrão. Para garantir que o treinamento ocorra em uma GPU específica, você pode definir manualmente o valor de 'device' para o índice da GPU (por exemplo, '0' para a primeira GPU) no seu arquivo de configuração .yaml:

device: 0

Isso atribuirá explicitamente o processo de treinamento à GPU especificada. Se você deseja treinar na CPU, defina 'device' como 'cpu'.

Fique de olho na pasta 'runs' para logs e métricas para monitorar o progresso do treinamento de forma eficaz.

Considerações importantes para um treinamento de modelo eficaz

Aqui estão algumas coisas para manter em mente se você estiver enfrentando problemas relacionados ao treinamento do modelo.

Formato do conjunto de dados e rótulos

  • Importância: A base de qualquer modelo de aprendizado de máquina reside na qualidade e no formato dos dados nos quais ele é treinado.
  • Recomendação: Certifique-se de que seu conjunto de dados personalizado e seus rótulos associados estejam em conformidade com o formato esperado. É crucial verificar se as anotações são precisas e de alta qualidade. Anotações incorretas ou de baixa qualidade podem prejudicar o processo de aprendizado do modelo, levando a resultados imprevisíveis.

Convergência do modelo

  • Importância: Alcançar a convergência do modelo garante que o modelo tenha aprendido suficientemente com os dados de treinamento.
  • Recomendação: Ao treinar um modelo 'do zero', é vital garantir que o modelo atinja um nível satisfatório de convergência. Isso pode exigir uma duração de treinamento mais longa, com mais épocas, em comparação com quando você está ajustando um modelo existente.

Taxa de aprendizado e tamanho do lote

  • Importância: Esses hiperparâmetros desempenham um papel fundamental na determinação de como o modelo atualiza seus pesos durante o treinamento.
  • Recomendação: Avalie regularmente se a taxa de aprendizado e o tamanho do lote escolhidos são ideais para seu conjunto de dados específico. 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 de classes em seu conjunto de dados pode influenciar as tendências de previsão do modelo.
  • Recomendação: Avalie regularmente a distribuição de classes dentro do seu conjunto de dados. Se houver um desequilíbrio de classe, existe o risco de que o modelo desenvolva um viés em relação à classe mais prevalente. Esse viés pode ficar evidente na matriz de confusão, onde o modelo pode prever predominantemente a classe majoritária.

Verificação cruzada com pesos pré-treinados

  • Importância: Aproveitar 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, considere treinar seu modelo usando os mesmos dados, mas inicializando-o com pesos pré-treinados. Se essa abordagem resultar em uma matriz de confusão bem formada, isso pode sugerir que o modelo 'do zero' pode exigir mais treinamento ou ajustes.

Problemas relacionados a previsões de modelo

Esta seção abordará problemas comuns enfrentados durante a previsão do modelo.

Obtendo previsões de caixa delimitadora com seu modelo personalizado YOLO26

Problema: Ao executar previsões com um modelo YOLO26 personalizado, há desafios com o formato e a visualização das coordenadas da caixa delimitadora.

Solução:

  • Formato de coordenada: O YOLO26 fornece coordenadas de caixa delimitadora em valores absolutos de pixel. Para convertê-las em coordenadas relativas (variando de 0 a 1), você precisa dividir pelas dimensões da imagem. Por exemplo, digamos que o tamanho da sua imagem seja 640x640. Então você faria 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 arquivo: Para obter o nome do arquivo da imagem na qual você está fazendo previsões, acesse o caminho do arquivo de imagem diretamente do objeto de resultado dentro do seu loop de previsão.

Filtrando objetos nas previsões do YOLO26

Problema: Enfrentando problemas sobre como filtrar e exibir apenas objetos específicos nos resultados de previsão ao executar o YOLO26 usando a biblioteca Ultralytics.

Solução: Para detectar classes específicas, use o argumento classes para especificar as classes que você deseja incluir na saída. Por exemplo, para detectar apenas carros (assumindo que 'carros' tenham o índice de classe 2):

yolo task=detect mode=segment model=yolo26n-seg.pt source='path/to/car.mp4' show=True classes=2

Entendendo as métricas de precisão no YOLO26

Problema: Confusão quanto à diferença entre precisão de caixa, precisão de máscara e precisão da matriz de confusão no YOLO26.

Solução: A precisão da caixa mede a precisão das caixas delimitadoras previstas em comparação com as caixas de verdade real usando 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 de verdade real na classificação de objetos em nível de pixel. A precisão da matriz de confusão, por outro lado, foca 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 precisa (verdadeiro positivo) mesmo se a previsão da classe estiver errada, levando a diferenças entre a precisão da caixa e a precisão da matriz de confusão. Essas métricas avaliam aspectos distintos do desempenho de um modelo, refletindo a necessidade de diferentes métricas de avaliação em várias tarefas.

Extraindo dimensões de objetos no YOLO26

Problema: Dificuldade em recuperar o comprimento e a altura de objetos detectados no YOLO26, especialmente quando vários objetos são detectados em uma imagem.

Solução: Para recuperar as dimensões da caixa delimitadora, primeiro use o modelo Ultralytics YOLO26 para prever objetos em uma imagem. Em seguida, extraia as informações de largura e altura das caixas delimitadoras dos resultados da previsão.

from ultralytics import YOLO

# Load a pretrained YOLO26 model
model = YOLO("yolo26n.pt")

# Specify the source image
source = "https://ultralytics.com/images/bus.jpg"

# Make predictions
results = model.predict(source, save=True, imgsz=320, conf=0.25)

# 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 de implantação

Problemas de implantação em GPU

Problema: Implantar modelos em um ambiente com várias GPUs às vezes pode levar a comportamentos inesperados, como uso inesperado de memória, resultados inconsistentes entre GPUs, etc.

Solução: Verifique a inicialização padrão da GPU. Algumas estruturas, como o PyTorch, podem inicializar operações CUDA em uma GPU padrão antes de transicionar para as GPUs designadas. Para evitar inicializações padrão inesperadas, especifique a GPU diretamente durante a implantação e a previsão. Em seguida, use ferramentas para monitorar a utilização da GPU e o uso de memória para identificar quaisquer anomalias em tempo real. Além disso, certifique-se de estar usando a versão mais recente da estrutura ou biblioteca.

Problemas de conversão/exportação de modelo

Problema: Durante o processo de conversão ou exportação de modelos de aprendizado de máquina para diferentes formatos ou plataformas, os usuários podem encontrar erros ou comportamentos inesperados.

Solução:

  • Verificação de compatibilidade: Certifique-se de estar usando versões de bibliotecas e estruturas que sejam compatíveis entre si. Versões incompatíveis podem levar a erros inesperados durante a conversão.
  • Redefinição de ambiente: Se você estiver usando um ambiente interativo como Jupyter ou Colab, considere reiniciar seu ambiente após fazer alterações ou instalações significativas. Um novo começo às vezes pode resolver problemas subjacentes.
  • Documentação oficial: Sempre consulte a documentação oficial da ferramenta ou biblioteca que você está usando para conversão. Ela geralmente contém diretrizes específicas e práticas recomendadas para a exportação de modelos.
  • Suporte da comunidade: Verifique o repositório oficial da biblioteca ou estrutura para problemas semelhantes relatados por outros usuários. Os mantenedores ou a comunidade podem ter fornecido soluções ou alternativas em discussões.
  • Atualize regularmente: Certifique-se de estar usando a versão mais recente da ferramenta ou biblioteca. Os desenvolvedores frequentemente lançam atualizações que corrigem bugs conhecidos ou melhoram a funcionalidade.
  • Teste incrementalmente: Antes de realizar uma conversão completa, teste o processo com um modelo ou conjunto de dados menor para identificar possíveis problemas desde o início.

Comunidade e Suporte

Envolver-se com uma comunidade de pessoas com interesses semelhantes pode melhorar significativamente sua experiência e sucesso ao trabalhar com o YOLO26. Abaixo estão alguns canais e recursos que você pode achar úteis.

Fóruns e canais para obter ajuda

GitHub Issues: O repositório do YOLO26 no GitHub possui uma aba de Issues onde podes tirar dúvidas, relatar bugs e sugerir novas funcionalidades. A comunidade e os mantenedores são ativos aqui, sendo um ótimo lugar para obter ajuda com problemas específicos.

Servidor Discord da Ultralytics: A Ultralytics tem um servidor Discord onde podes interagir com outros utilizadores e com os desenvolvedores.

Documentação Oficial e Recursos

Documentação da YOLO26 da Ultralytics: A documentação oficial fornece uma visão geral completa do YOLO26, juntamente com guias de instalação, utilização e resolução de problemas.

Estes recursos devem fornecer uma base sólida para a resolução de problemas e a melhoria dos teus projetos YOLO26, bem como para te conectar com outras pessoas na comunidade YOLO26.

Conclusão

A resolução de problemas é uma 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 questões. Este guia teve como objetivo abordar os desafios mais comuns enfrentados pelos utilizadores do modelo YOLO26 dentro do ecossistema Ultralytics. Ao compreender e abordar estes problemas comuns, podes garantir um progresso mais fluido do projeto e alcançar melhores resultados com as tuas tarefas de visão computacional.

Lembra-te, a comunidade Ultralytics é um recurso valioso. Interagir com outros desenvolvedores e especialistas pode fornecer insights e soluções adicionais que podem não estar cobertas 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.

FAQ

Como resolvo erros de instalação com o YOLO26?

Erros de instalação podem muitas vezes ocorrer devido a problemas de compatibilidade ou dependências em falta. Certifica-te de que usas Python 3.8 ou superior e que tens o PyTorch 1.8 ou superior instalado. É benéfico utilizar ambientes virtuais para evitar conflitos. Para um guia de instalação passo a passo, segue o nosso guia oficial de instalação. Se encontrares erros de importação, tenta uma instalação limpa ou atualiza a biblioteca para a versão mais recente.

Por que é que o treino do meu modelo YOLO26 está lento num único GPU?

O treino num único GPU pode ser lento devido a tamanhos de batch grandes ou memória insuficiente. Para acelerar o treino, utiliza múltiplos GPUs. Garante que o teu sistema tem múltiplos GPUs disponíveis e ajusta o teu ficheiro de configuração .yaml para especificar o número de GPUs, por exemplo: gpus: 4. Aumenta o tamanho do batch de forma correspondente para utilizar totalmente os GPUs sem exceder os limites de memória. Comando de exemplo:

model.train(data="/path/to/your/data.yaml", batch=32)

Como posso garantir que o meu modelo YOLO26 está a treinar no GPU?

Se o valor de 'device' aparecer como 'null' nos logs de treino, geralmente significa que o processo de treino está configurado para utilizar automaticamente um GPU disponível. Para atribuir explicitamente um GPU específico, define o valor de 'device' no teu ficheiro de configuração .yaml. Por exemplo:

device: 0

Isto define o processo de treino para o primeiro GPU. Consulta o comando nvidia-smi para confirmar a tua configuração de CUDA.

Como posso monitorizar e rastrear o progresso do treino do meu modelo YOLO26?

O rastreio e a visualização do progresso do treino podem ser geridos eficientemente através de ferramentas como TensorBoard, Comet e a Plataforma Ultralytics. Estas ferramentas permitem-te registar e visualizar métricas como perda (loss), precisão, recall e mAP. Implementar paragem antecipada com base nestas métricas também pode ajudar a alcançar melhores resultados de treino.

O que devo fazer se o YOLO26 não reconhecer o formato do meu conjunto de dados?

Certifica-te de que o teu conjunto de dados e as etiquetas estão em conformidade com o formato esperado. Verifica se as anotações estão precisas e com alta qualidade. Se enfrentares algum problema, consulta o guia de Coleta e Anotação de Dados para obter as melhores práticas. Para orientações mais específicas sobre conjuntos de dados, verifica a secção de Conjuntos de Dados na documentação.

Comentários