Inteligência artificial

Desvendando o Yolov8: A Obra-Prima de Visão Computacional da Ultralytics

mm
Blog featured image for YOLOv8

Até agora, a detecção de objetos em imagens usando modelos de visão computacional enfrentava um grande obstáculo devido ao atraso de alguns segundos no processamento. Esse atraso impediu a adoção prática em casos de uso como dirigir veículos autônomos. No entanto, o lançamento do modelo de visão computacional YOLOv8 pela Ultralytics quebrou a barreira do processamento. O novo modelo pode detectar objetos em tempo real com precisão e velocidade sem precedentes, tornando-o popular no espaço de visão computacional.

Este artigo explora o YOLOv8, suas capacidades e como você pode ajustar e criar seus próprios modelos por meio do repositório Github de código aberto.

Yolov8 Explained

YOLOv8-Ultralytics

YOLO (You Only Live Once) é um modelo de visão computacional popular capaz de detectar e segmentar objetos em imagens. O modelo passou por várias atualizações no passado, com YOLOv8 marcando a 8ª versão.

Como está, o YOLOv8 constrói sobre as capacidades das versões anteriores, introduzindo novos recursos e melhorias poderosas. Isso permite a detecção de objetos em tempo real em dados de imagem e vídeo com precisão e precisão aprimoradas.

From v1 to v8: A Brief History

Yolov1: Lançado em 2015, a primeira versão do YOLO foi introduzida como um modelo de detecção de objetos de uma única etapa. Recursos incluíam o modelo lendo a imagem inteira para prever cada caixa delimitadora em uma avaliação.

Yolov2: A próxima versão, lançada em 2016, apresentou um desempenho superior em benchmarks como PASCAL VOC e COCO e opera a altas velocidades (67-40 FPS). Ele também podia detectar com precisão mais de 9000 categorias de objetos, mesmo com dados de detecção específica limitados.

Yolov3: Lançado em 2018, o Yolov3 apresentou novos recursos, como uma rede tronco mais eficaz, várias âncoras e pooling piramidal espacial para extração de recursos em múltiplas escalas.

Yolov4: Com o lançamento do Yolov4 em 2020, a nova técnica de aumento de dados Mosaic foi introduzida, que ofereceu capacidades de treinamento aprimoradas.

Yolov5: Lançado em 2021, o Yolov5 adicionou recursos poderosos, incluindo otimização de hiperparâmetros e rastreamento de experimentos integrado.

Yolov6: Com o lançamento do Yolov6 em 2022, o modelo foi aberto para promover o desenvolvimento impulsionado pela comunidade. Novos recursos foram introduzidos, como uma nova estratégia de auto-destilação e uma estratégia de treinamento auxiliada por âncoras (AAT).

Yolov7: Lançado no mesmo ano, 2022, o Yolov7 melhorou o modelo existente em velocidade e precisão e foi o modelo de detecção de objetos mais rápido no momento do lançamento.

O que torna o YOLOv8 destacado?

Imagem mostrando detecção de veículos

A precisão sem precedentes e a alta velocidade do YOLOv8 tornam o modelo de visão computacional destacado em relação às versões anteriores. É um feito notável, pois os objetos agora podem ser detectados em tempo real sem atrasos, ao contrário das versões anteriores.

Mas, além disso, o YOLOv8 vem com recursos poderosos, que incluem:

  1. Arquitetura personalizável: O YOLOv8 oferece uma arquitetura flexível que os desenvolvedores podem personalizar para atender às suas necessidades específicas.
  2. Treinamento adaptativo: As novas capacidades de treinamento adaptativo do YOLOv8, como o equilíbrio da função de perda durante o treinamento e técnicas, melhoram a taxa de aprendizado. Pegue o Adam, que contribui para uma melhor precisão, convergência mais rápida e um desempenho geral melhor do modelo.
  3. Análise de imagem avançada: Por meio de novas capacidades de segmentação semântica e previsão de classe, o modelo pode detectar atividades, cor, textura e até relacionamentos entre objetos, além de sua funcionalidade de detecção de objetos principal.
  4. Aumento de dados: Novas técnicas de aumento de dados ajudam a lidar com aspectos de variações de imagem, como baixa resolução, ocultação, etc., em situações de detecção de objetos do mundo real, onde as condições não são ideais.
  5. Suporte a espinha dorsal: O YOLOv8 oferece suporte a várias espinhas dorsais, incluindo CSPDarknet (espinha dorsal padrão), EfficientNet (espinha dorsal leve) e ResNet (espinha dorsal clássica), que os usuários podem escolher.

Os usuários também podem personalizar a espinha dorsal substituindo a CSPDarknet53 por qualquer outra arquitetura de CNN compatível com as dimensões de entrada e saída do YOLOv8.

Treinamento e ajuste fino do YOLOv8

O modelo YOLOv8 pode ser ajustado para se adequar a certos casos de uso ou treinado completamente do zero para criar um modelo especializado. Mais detalhes sobre os procedimentos de treinamento podem ser encontrados na documentação oficial.

Vamos explorar como você pode realizar ambas as operações.

Ajuste fino do YOLOV8 com um conjunto de dados personalizado

A operação de ajuste fino carrega um modelo pré-existente e usa seus pesos padrão como o ponto de partida para o treinamento. Intuitivamente, o modelo lembra todo o seu conhecimento anterior, e a operação de ajuste fino adiciona novas informações ajustando os pesos.

O modelo YOLOv8 pode ser ajustado com o código Python ou por meio da interface de linha de comando (CLI).

1. Ajuste fino de um modelo YOLOv8 usando Python

Comece importando o pacote Ultralytics para o seu código. Em seguida, carregue o modelo personalizado que você deseja treinar usando o seguinte código:

Primeiro, instale a biblioteca Ultralytics a partir da distribuição oficial.

# Instale o pacote ultralytics do PyPI
pip install ultralytics

Em seguida, execute o seguinte código dentro de um arquivo Python:

from ultralytics import YOLO

# Carregue um modelo
model = YOLO(‘yolov8n.pt’) # carregue um modelo pré-treinado (recomendado para treinamento)

# Treine o modelo no conjunto de dados MS COCO
results = model.train(data=’coco128.yaml’, epochs=100, imgsz=640)

Por padrão, o código treinará o modelo usando o conjunto de dados COCO por 100 épocas. No entanto, você também pode configurar essas configurações para definir o tamanho, época, etc., em um arquivo YAML.

Uma vez que você treine o modelo com suas configurações e caminho de dados, monitore o progresso, teste e ajuste o modelo e continue treinando até alcançar os resultados desejados.

2. Ajuste fino de um modelo YOLOv8 usando a CLI

Para treinar um modelo usando a CLI, execute o seguinte script na linha de comando:

yolo train model=yolov8n.pt data=coco8.yaml epochs=100 imgsz=640

O comando CLI carrega o modelo pré-treinado `yolov8n.pt` e o treina mais no conjunto de dados definido no arquivo `coco8.yaml`.

Criando seu próprio modelo com o YOLOv8

Existem basicamente 2 maneiras de criar um modelo personalizado com o framework YOLO:

  • Treinamento a partir do zero: Essa abordagem permite que você use a arquitetura YOLOv8 pré-definida, mas NÃO usará pesos pré-treinados. O treinamento ocorrerá a partir do zero.
  • Arquitetura personalizada: Você ajusta a arquitetura YOLO padrão e treina a nova estrutura a partir do zero.

A implementação de ambos os métodos permanece a mesma. Para treinar um modelo YOLO a partir do zero, execute o seguinte código Python:

from ultralytics import YOLO

# Carregue um modelo
model = YOLO(‘yolov8n.yaml’) # construa um novo modelo a partir do YAML

# Treine o modelo
results = model.train(data=’coco128.yaml’, epochs=100, imgsz=640)

Observe que desta vez, carregamos um arquivo `.yaml` em vez de um arquivo `.pt`. O arquivo YAML contém as informações de arquitetura do modelo e nenhum peso é carregado. O comando de treinamento começará a treinar esse modelo a partir do zero.

Para treinar uma arquitetura personalizada, você deve definir a estrutura personalizada em um arquivo `.yaml` semelhante ao `yolov8n.yaml` acima. Em seguida, carregue esse arquivo e treine o modelo usando o mesmo código acima.

Para aprender mais sobre detecção de objetos usando IA e para se manter informado sobre as últimas tendências de IA, visite unite.ai.

Haziqa é uma Cientista de Dados com ampla experiência em escrever conteúdo técnico para empresas de IA e SaaS.