Salta para o conte√ļdo

Ultralytics YOLOv5 Arquitetura

YOLOv5 (v6.0/6.1) √© um poderoso algoritmo de dete√ß√£o de objectos desenvolvido por Ultralytics. Este artigo aprofunda a arquitetura do YOLOv5 , as estrat√©gias de aumento de dados, as metodologias de forma√ß√£o e as t√©cnicas de c√°lculo de perdas. Esta compreens√£o abrangente ajudar√° a melhorar a tua aplica√ß√£o pr√°tica da dete√ß√£o de objectos em v√°rios campos, incluindo vigil√Ęncia, ve√≠culos aut√≥nomos e reconhecimento de imagens.

1. Estrutura do modelo

YOLOv5é composta por três partes principais:

  • Espinha dorsal: √Č o corpo principal da rede. Para YOLOv5, a espinha dorsal √© desenhada usando o New CSP-Darknet53 uma modifica√ß√£o da arquitetura Darknet utilizada nas vers√Ķes anteriores.
  • Pesco√ßo: Esta parte liga a espinha dorsal √† cabe√ßa. Em YOLOv5, SPPF e New CSP-PAN utiliza as estruturas.
  • Cabe√ßa: Esta parte √© respons√°vel por gerar a sa√≠da final. YOLOv5 utiliza o YOLOv3 Head para este efeito.

A estrutura do modelo est√° representada na imagem abaixo. Os detalhes da estrutura do modelo podem ser encontrados em yolov5l.yaml.

yolov5

YOLOv5 introduz algumas pequenas altera√ß√Ķes em rela√ß√£o aos seus antecessores:

  1. O Focus encontrada em vers√Ķes anteriores, √© substitu√≠da por uma estrutura 6x6 Conv2d estrutura. Esta altera√ß√£o aumenta a efici√™ncia #4825.
  2. O SPP é substituída pela estrutura SPPF. Esta alteração mais do que duplica a velocidade de processamento.

Para testar a velocidade de SPP e SPPFPodes utilizar o seguinte código:

Exemplo de perfil de velocidade SPP vs SPPF (clica para abrir)
import time
import torch
import torch.nn as nn


class SPP(nn.Module):
    def __init__(self):
        super().__init__()
        self.maxpool1 = nn.MaxPool2d(5, 1, padding=2)
        self.maxpool2 = nn.MaxPool2d(9, 1, padding=4)
        self.maxpool3 = nn.MaxPool2d(13, 1, padding=6)

    def forward(self, x):
        o1 = self.maxpool1(x)
        o2 = self.maxpool2(x)
        o3 = self.maxpool3(x)
        return torch.cat([x, o1, o2, o3], dim=1)


class SPPF(nn.Module):
    def __init__(self):
        super().__init__()
        self.maxpool = nn.MaxPool2d(5, 1, padding=2)

    def forward(self, x):
        o1 = self.maxpool(x)
        o2 = self.maxpool(o1)
        o3 = self.maxpool(o2)
        return torch.cat([x, o1, o2, o3], dim=1)


def main():
    input_tensor = torch.rand(8, 32, 16, 16)
    spp = SPP()
    sppf = SPPF()
    output1 = spp(input_tensor)
    output2 = sppf(input_tensor)

    print(torch.equal(output1, output2))

    t_start = time.time()
    for _ in range(100):
        spp(input_tensor)
    print(f"SPP time: {time.time() - t_start}")

    t_start = time.time()
    for _ in range(100):
        sppf(input_tensor)
    print(f"SPPF time: {time.time() - t_start}")


if __name__ == '__main__':
    main()
resultado:
True
SPP time: 0.5373051166534424
SPPF time: 0.20780706405639648

2. Técnicas de aumento de dados

YOLOv5 utiliza várias técnicas de aumento de dados para melhorar a capacidade de generalização do modelo e reduzir o sobreajuste. Estas técnicas incluem:

  • Aumento do mosaico: Uma t√©cnica de processamento de imagem que combina quatro imagens de treino numa s√≥, de forma a encorajar os modelos de dete√ß√£o de objectos a lidar melhor com v√°rias escalas e transla√ß√Ķes de objectos.

mosaico

  • Aumento do copiar-colar: Um m√©todo inovador de aumento de dados que copia manchas aleat√≥rias de uma imagem e cola-as noutra imagem escolhida aleatoriamente, gerando efetivamente uma nova amostra de treino.

copia e cola

  • Transforma√ß√Ķes afins aleat√≥rias: Inclui rota√ß√£o, escalonamento, transla√ß√£o e cisalhamento aleat√≥rios das imagens.

Afina aleatória

  • Aumento de MixUp: Um m√©todo que cria imagens compostas atrav√©s de uma combina√ß√£o linear de duas imagens e das suas etiquetas associadas.

confus√£o

  • Albumenta√ß√Ķes: Uma biblioteca poderosa para aumento de imagens que suporta uma grande variedade de t√©cnicas de aumento.

  • Aumento HSV: Altera aleatoriamente a tonalidade, a satura√ß√£o e o valor das imagens.

hsv

  • Invers√£o horizontal aleat√≥ria: Um m√©todo de aumento que inverte aleatoriamente as imagens na horizontal.

horizontal-flip

3. Estratégias de formação

YOLOv5 aplica várias estratégias de formação sofisticadas para melhorar o desempenho do modelo. Estas incluem:

  • Treino multiescala: As imagens de entrada s√£o redimensionadas aleatoriamente num intervalo de 0,5 a 1,5 vezes o seu tamanho original durante o processo de treino.
  • AutoAnchor: Esta estrat√©gia optimiza as caixas de ancoragem anteriores para corresponder √†s caracter√≠sticas estat√≠sticas das caixas de verdade terrestre nos teus dados personalizados.
  • Agendamento de Warmup e Cosine LR: Um m√©todo para ajustar a taxa de aprendizagem para melhorar o desempenho do modelo.
  • M√©dia m√≥vel exponencial (EMA): Uma estrat√©gia que usa a m√©dia dos par√Ęmetros em etapas anteriores para estabilizar o processo de treinamento e reduzir o erro de generaliza√ß√£o.
  • Treino de precis√£o mista: Um m√©todo para efetuar opera√ß√Ķes em formato de meia-precis√£o, reduzindo a utiliza√ß√£o de mem√≥ria e melhorando a velocidade computacional.
  • Evolu√ß√£o do hiperpar√Ęmetro: Uma estrat√©gia para ajustar automaticamente os hiperpar√Ęmetros para obter um desempenho √≥timo.

4. Características adicionais

4.1 Calcula as perdas

A perda em YOLOv5 é calculada como uma combinação de três componentes individuais de perda:

  • Perda de classes (Perda BCE): Perda de entropia cruzada bin√°ria, mede o erro para a tarefa de classifica√ß√£o.
  • Perda de objetividade (Perda BCE): Outra perda de entropia cruzada bin√°ria, calcula o erro na dete√ß√£o da presen√ßa ou n√£o de um objeto numa determinada c√©lula da grelha.
  • Perda de localiza√ß√£o (Perda CIoU): Mede o erro na localiza√ß√£o do objeto dentro da c√©lula da grelha.

A função de perda global é representada por:

perda

4.2 Perdas de saldo

As perdas de objetividade das tr√™s camadas de previs√£o (P3, P4, P5) s√£o ponderados de forma diferente. Os pesos de equil√≠brio s√£o [4.0, 1.0, 0.4] respetivamente. Esta abordagem garante que as previs√Ķes a diferentes escalas contribuem adequadamente para a perda total.

obj_perda

4.3 Eliminar a sensibilidade da rede

A arquitetura YOLOv5 introduz algumas altera√ß√Ķes importantes na estrat√©gia de previs√£o da caixa em compara√ß√£o com as vers√Ķes anteriores de YOLO. No YOLOv2 e no YOLOv3, as coordenadas da caixa eram previstas diretamente utilizando a ativa√ß√£o da √ļltima camada.

b_x b_y b_w b_h

YOLOv5 c√°lculo da grelha

No entanto, em YOLOv5, a f√≥rmula para prever as coordenadas da caixa foi actualizada para reduzir a sensibilidade da grelha e evitar que o modelo preveja dimens√Ķes de caixa n√£o limitadas.

As fórmulas revistas para calcular a caixa delimitadora prevista são as seguintes:

bx por bw bh

Compara o desvio do ponto central antes e depois do escalonamento. O intervalo de desvio do ponto central é ajustado de (0, 1) a (-0,5, 1,5). Por isso, o desvio pode facilmente ser 0 ou 1.

YOLOv5 escalonamento da grelha

Compara o r√°cio de escala da altura e da largura (em rela√ß√£o √† √Ęncora) antes e depois do ajuste. As equa√ß√Ķes originais da caixa yolo/darknet t√™m uma falha grave. A largura e a altura s√£o completamente ilimitadas, pois s√£o simplesmente out=exp(in), o que √© perigoso, pois pode levar a gradientes descontrolados, instabilidades, perdas de NaN e, em √ļltima an√°lise, a uma perda completa do treino.

YOLOv5 escalonamento sem limites

4.4 Objectivos de construção

O processo de construção de alvos em YOLOv5 é fundamental para a eficiência do treino e a precisão do modelo. Envolve a atribuição de caixas de verdade terrestre às células de grelha apropriadas no mapa de saída e a sua correspondência com as caixas de ancoragem apropriadas.

Este processo segue os seguintes passos:

  • Calcula o r√°cio entre as dimens√Ķes da caixa da verdade terrestre e as dimens√Ķes de cada modelo de √Ęncora.

rw

rh

rwmax

rhmax

rmax

combina

YOLOv5 Computação IoU

  • Se o r√°cio calculado estiver dentro do limite, faz corresponder a caixa da verdade terrestre com a √Ęncora correspondente.

YOLOv5 sobreposição de grelha

  • Atribui a √Ęncora correspondente √†s c√©lulas apropriadas, tendo em conta que, devido ao desvio do ponto central revisto, uma caixa de verdade terrestre pode ser atribu√≠da a mais do que uma √Ęncora. Porque o intervalo de desvio do ponto central √© ajustado de (0, 1) para (-0,5, 1,5). A caixa GT pode ser atribu√≠da a mais √Ęncoras.

YOLOv5 sele√ß√£o de √Ęncoras

Desta forma, o processo de construção de alvos garante que cada objeto de verdade terrestre é corretamente atribuído e correspondido durante o processo de formação, permitindo que o YOLOv5 aprenda a tarefa de deteção de objectos de forma mais eficaz.

Conclus√£o

Em conclus√£o, o YOLOv5 representa um avan√ßo significativo no desenvolvimento de modelos de dete√ß√£o de objectos em tempo real. Ao incorporar v√°rias novas funcionalidades, melhorias e estrat√©gias de forma√ß√£o, ultrapassa as vers√Ķes anteriores da fam√≠lia YOLO em termos de desempenho e efici√™ncia.

As principais melhorias em YOLOv5 incluem a utiliza√ß√£o de uma arquitetura din√Ęmica, uma vasta gama de t√©cnicas de aumento de dados, estrat√©gias de forma√ß√£o inovadoras, bem como ajustes importantes nas perdas de computa√ß√£o e no processo de constru√ß√£o de alvos. Todas estas inova√ß√Ķes melhoram significativamente a precis√£o e a efici√™ncia da dete√ß√£o de objectos, mantendo um elevado grau de velocidade, que √© a marca registada dos modelos YOLO .



Criado em 2023-11-12, Atualizado em 2024-01-14
Autores: glenn-jocher (5), sergiuwaxmann (1)

Coment√°rios