YOLOv4: Deteção de Objetos de Alta Velocidade e Precisão

Bem-vindo à página de documentação da Ultralytics para o YOLOv4, um detetor de objetos em tempo real de última geração, lançado em 2020 por Alexey Bochkovskiy em https://github.com/AlexeyAB/darknet. O YOLOv4 foi concebido para proporcionar o equilíbrio ideal entre velocidade e precisão, tornando-o uma excelente escolha para muitas aplicações.

Diagrama da arquitetura YOLOv4 Diagrama da arquitetura YOLOv4. Apresenta o design de rede complexo do YOLOv4, incluindo os componentes backbone, neck e head, e as suas camadas interligadas para uma deteção de objetos em tempo real otimizada.

Introdução

YOLOv4 significa You Only Look Once version 4. É um modelo de deteção de objetos em tempo real desenvolvido para resolver as limitações de versões anteriores do YOLO, como o YOLOv3 e outros modelos de deteção de objetos. Ao contrário de outros detetores de objetos baseados em redes neuronais convolucionais (CNN), o YOLOv4 não é apenas aplicável a sistemas de recomendação, mas também à gestão de processos autónomos e à redução da intervenção humana. O seu funcionamento em unidades de processamento gráfico (GPUs) convencionais permite uma utilização em massa a um preço acessível, sendo concebido para funcionar em tempo real num GPU convencional, necessitando apenas de um GPU para o treino.

Arquitetura

O YOLOv4 utiliza várias funcionalidades inovadoras que trabalham em conjunto para otimizar o seu desempenho. Estas incluem Weighted-Residual-Connections (WRC), Cross-Stage-Partial-connections (CSP), Cross mini-Batch Normalization (CmBN), Self-adversarial-training (SAT), Mish-activation, Mosaic data augmentation, DropBlock regularization e CIoU loss. Estas funcionalidades são combinadas para alcançar resultados de última geração.

Um detetor de objetos típico é composto por várias partes, incluindo a entrada (input), o backbone, o neck e o head. O backbone do YOLOv4 é pré-treinado no ImageNet e é utilizado para prever classes e caixas delimitadoras (bounding boxes) de objetos. O backbone pode ser proveniente de vários modelos, incluindo VGG, ResNet, ResNeXt ou DenseNet. A parte neck do detetor é utilizada para recolher mapas de características de diferentes fases e inclui geralmente vários caminhos ascendentes e descendentes. A parte head é o que é utilizado para efetuar as deteções e classificações finais de objetos.

Bag of Freebies

O YOLOv4 também utiliza métodos conhecidos como "bag of freebies", que são técnicas que melhoram a precisão do modelo durante o treino sem aumentar o custo da inferência. A data augmentation é uma técnica comum de "bag of freebies" utilizada na deteção de objetos, que aumenta a variabilidade das imagens de entrada para melhorar a robustez do modelo. Alguns exemplos de data augmentation incluem distorções fotométricas (ajustar o brilho, contraste, matiz, saturação e ruído de uma imagem) e distorções geométricas (adicionar escala aleatória, corte, inversão e rotação). Estas técnicas ajudam o modelo a generalizar melhor para diferentes tipos de imagens.

Funcionalidades e Desempenho

O YOLOv4 foi concebido para uma velocidade e precisão ideais na deteção de objetos. A arquitetura do YOLOv4 inclui CSPDarknet53 como backbone, PANet como neck e YOLOv3 como detection head. Este design permite ao YOLOv4 realizar a deteção de objetos a uma velocidade impressionante, tornando-o adequado para aplicações em tempo real. O YOLOv4 também se destaca na precisão, alcançando resultados de última geração em benchmarks de deteção de objetos como o COCO.

Quando comparado com outros modelos da família YOLO, como o YOLOv5 e o YOLOv7, o YOLOv4 mantém uma posição forte no equilíbrio entre velocidade e precisão. Embora modelos mais recentes possam oferecer certas vantagens, as inovações arquitetónicas do YOLOv4 continuam a torná-lo relevante para muitas aplicações que exigem desempenho em tempo real.

Exemplos de Uso

O YOLOv4 é um modelo baseado em Darknet e não é suportado nativamente pelo pacote Python da Ultralytics: não existem pesos pré-treinados yolov4.pt publicados em ultralytics/assets nem YAMLs ultralytics/cfg/models/v4/. Esta página é mantida como referência arquitetónica. Os utilizadores interessados em executar o YOLOv4 devem consultar diretamente o repositório GitHub do YOLOv4 para obter instruções de instalação e utilização.

Aqui está uma breve visão geral dos passos típicos que podes seguir para utilizar o YOLOv4:

  1. Visita o repositório GitHub do YOLOv4: https://github.com/AlexeyAB/darknet.

  2. Segue as instruções fornecidas no ficheiro README para a instalação. Isto envolve normalmente clonar o repositório, instalar as dependências necessárias e configurar quaisquer variáveis de ambiente necessárias.

  3. Assim que a instalação estiver concluída, podes treinar e utilizar o modelo de acordo com as instruções de utilização fornecidas no repositório. Isto envolve geralmente a preparação do teu conjunto de dados (dataset), a configuração dos parâmetros do modelo, o treino do modelo e, em seguida, a utilização do modelo treinado para efetuar a deteção de objetos.

Por favor, tem em atenção que os passos específicos podem variar dependendo do teu caso de uso específico e do estado atual do repositório YOLOv4. Por conseguinte, recomenda-se vivamente que consultes diretamente as instruções fornecidas no repositório GitHub do YOLOv4.

Para treino e inferência dentro do framework Ultralytics, vê YOLO11 ou YOLO26.

Conclusão

O YOLOv4 é um modelo de deteção de objetos potente e eficiente que estabelece um equilíbrio entre velocidade e precisão. A sua utilização de funcionalidades únicas e técnicas de "bag of freebies" durante o treino permite-lhe um desempenho excelente em tarefas de deteção de objetos em tempo real. O YOLOv4 pode ser treinado e utilizado por qualquer pessoa com um GPU convencional, tornando-o acessível e prático para uma vasta gama de aplicações, incluindo sistemas de vigilância, veículos autónomos e automação industrial.

Para aqueles que procuram implementar a deteção de objetos nos seus projetos, o YOLOv4 continua a ser um forte candidato, especialmente quando o desempenho em tempo real é uma prioridade. Embora a Ultralytics se foque atualmente no suporte de versões mais recentes do YOLO, como o YOLO11 e o YOLO26, as inovações arquitetónicas introduzidas no YOLOv4 influenciaram o desenvolvimento destes modelos posteriores.

Citações e Agradecimentos

Gostaríamos de agradecer aos autores do YOLOv4 pelas suas contribuições significativas no campo da deteção de objetos em tempo real:

Citação
@misc{bochkovskiy2020yolov4,
      title={YOLOv4: Optimal Speed and Accuracy of Object Detection},
      author={Alexey Bochkovskiy and Chien-Yao Wang and Hong-Yuan Mark Liao},
      year={2020},
      eprint={2004.10934},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

O artigo original sobre o YOLOv4 pode ser encontrado no arXiv. Os autores tornaram o seu trabalho publicamente disponível e a base de código pode ser acedida no GitHub. Apreciamos os seus esforços em promover o campo e tornar o seu trabalho acessível à comunidade em geral.

FAQ

O que é o YOLOv4 e por que devo utilizá-lo para deteção de objetos?

O YOLOv4, que significa "You Only Look Once version 4", é um modelo de deteção de objetos em tempo real de última geração desenvolvido por Alexey Bochkovskiy em 2020. Atinge um equilíbrio ideal entre velocidade e precisão, tornando-o altamente adequado para aplicações em tempo real. A arquitetura do YOLOv4 incorpora várias funcionalidades inovadoras como Weighted-Residual-Connections (WRC), Cross-Stage-Partial-connections (CSP) e Self-adversarial-training (SAT), entre outras, para alcançar resultados de última geração. Se procuras um modelo de alto desempenho que funcione eficientemente em GPUs convencionais, o YOLOv4 é uma excelente escolha.

Como é que a arquitetura do YOLOv4 melhora o seu desempenho?

A arquitetura do YOLOv4 inclui vários componentes chave: o backbone, o neck e o head. O backbone, que pode ser modelos como VGG, ResNet ou CSPDarknet53, é pré-treinado para prever classes e caixas delimitadoras. O neck, utilizando o PANet, liga mapas de características de diferentes fases para uma extração de dados abrangente. Finalmente, o head, que utiliza configurações do YOLOv3, faz as deteções finais de objetos. O YOLOv4 também emprega técnicas de "bag of freebies" como mosaic data augmentation e DropBlock regularization, otimizando ainda mais a sua velocidade e precisão.

O que são "bag of freebies" no contexto do YOLOv4?

"Bag of freebies" refere-se a métodos que melhoram a precisão de treino do YOLOv4 sem aumentar o custo da inferência. Estas técnicas incluem várias formas de data augmentation, como distorções fotométricas (ajustar brilho, contraste, etc.) e distorções geométricas (escala, corte, inversão, rotação). Ao aumentar a variabilidade das imagens de entrada, estas aumentações ajudam o YOLOv4 a generalizar melhor para diferentes tipos de imagens, melhorando assim a sua robustez e precisão sem comprometer o seu desempenho em tempo real.

Por que é que o YOLOv4 é considerado adequado para deteção de objetos em tempo real em GPUs convencionais?

O YOLOv4 foi concebido para otimizar tanto a velocidade como a precisão, tornando-o ideal para tarefas de deteção de objetos em tempo real que requerem um desempenho rápido e fiável. Funciona eficientemente em GPUs convencionais, necessitando apenas de um para treino e inferência. Isto torna-o acessível e prático para várias aplicações, desde sistemas de recomendação a gestão de processos autónomos, reduzindo assim a necessidade de configurações de hardware extensas e tornando-o uma solução económica para a deteção de objetos em tempo real.

Como posso começar com o YOLOv4 se a Ultralytics não o suporta atualmente?

Para começar com o YOLOv4, deves visitar o repositório GitHub oficial do YOLOv4. Segue as instruções de instalação fornecidas no ficheiro README, que incluem normalmente a clonagem do repositório, a instalação de dependências e a configuração de variáveis de ambiente. Uma vez instalado, podes treinar o modelo preparando o teu conjunto de dados, configurando os parâmetros do modelo e seguindo as instruções de utilização fornecidas. Como a Ultralytics não suporta atualmente o YOLOv4, recomenda-se que consultes diretamente o GitHub do YOLOv4 para obter a orientação mais atualizada e detalhada.

Comentários