Saltar 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 sua 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é constituída por três partes principais:

  • Espinha dorsal: Este é o corpo principal da rede. Para YOLOv5, a espinha dorsal é projectada utilizando o CSPDarknet53 uma modificação da arquitetura Darknet utilizada nas versões anteriores.
  • Pescoço: Esta parte liga a espinha dorsal à cabeça. Em YOLOv5, SPPF (Agrupamento de pirâmides espaciais - rápido) e PANet (Path Aggregation Network) são utilizadas.
  • 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 pormenores da estrutura do modelo podem ser consultados em yolov5l.yaml.

yolov5

YOLOv5 apresenta algumas melhorias notáveis em comparação com os 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, mantendo o mesmo rendimento.

Para testar a velocidade de SPP e SPPFpode ser utilizado o seguinte código:

Exemplo de perfil de velocidade SPP vs SPPF (clique para abrir)
import time

import torch
import torch.nn as nn


class SPP(nn.Module):
    def __init__(self):
        """Initializes an SPP module with three different sizes of max pooling layers."""
        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):
        """Applies three max pooling layers on input `x` and concatenates results along channel dimension."""
        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):
        """Initializes an SPPF module with a specific configuration of MaxPool2d layer."""
        super().__init__()
        self.maxpool = nn.MaxPool2d(5, 1, padding=2)

    def forward(self, x):
        """Applies sequential max pooling and concatenates results with input tensor."""
        o1 = self.maxpool(x)
        o2 = self.maxpool(o1)
        o3 = self.maxpool(o2)
        return torch.cat([x, o1, o2, o3], dim=1)


def main():
    """Compares outputs and performance of SPP and SPPF on a random tensor (8, 32, 16, 16)."""
    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 incentivar os modelos de deteção de objectos a lidar melhor com várias escalas e translações de objectos.

    mosaico

  • Aumento de cópia-colagem: Um método inovador de aumento de dados que copia manchas aleatórias de uma imagem e as cola noutra imagem escolhida aleatoriamente, gerando efetivamente uma nova amostra de treino.

    copiar-colar

  • Transformações afins aleatórias: Inclui rotação, escala, translação e cisalhamento aleatórios das imagens.

    afim aleatório

  • MixUp Augmentation: 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. Saiba mais sobre como usar as ampliações do Albumentations.

  • Aumento HSV: Alterações aleatórias na Tonalidade, Saturação e 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 formação.
  • AutoAnchor: Esta estratégia optimiza as caixas de ancoragem anteriores para corresponder às caraterísticas estatísticas das caixas de verdade terrestre nos seus dados personalizados.
  • Programação 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 utiliza a média dos parâmetros em etapas anteriores para estabilizar o processo de treinamento e reduzir o erro de generalização.
  • Formação deprecisão mista: Um método para efetuar operações em formato de meia-precisão, reduzindo a utilização de memória e aumentando a velocidade computacional.
  • Evolução dos hiperparâmetros: Uma estratégia para ajustar automaticamente os hiperparâmetros para obter um desempenho ótimo. Saiba mais sobre o ajuste de hiperparâmetros.

4. Caraterísticas adicionais

4.1 Calcular 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): A perda completa de IoU 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 equilíbrio

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 de grelha

No entanto, em YOLOv5, a fórmula de previsão das 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 o cálculo da caixa delimitadora prevista são as seguintes

bx por bw bh

Compare 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 conseguinte, o desvio pode facilmente ser 0 ou 1.

YOLOv5 escalonamento da grelha

Compare o rácio de escala da altura e da largura (em relação à âncora) antes e depois do ajustamento. As equações originais da caixa yolo têm uma falha grave. A Largura e a Altura são completamente ilimitadas, uma vez que são simplesmente out=exp(in), o que é perigoso, uma vez que pode levar a gradientes descontrolados, instabilidades, perdas de NaN e, em última análise, a uma perda completa do treino. Consulte esta questão para obter mais pormenores.

YOLOv5 escalonamento sem limites

4.4 Objectivos de construção

O processo de construção de objectivos 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 adequadas no mapa de saída e a sua correspondência com as caixas de ancoragem adequadas.

Este processo segue os seguintes passos:

  • Calcular 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

jogo

YOLOv5 Computação IoU

  • Se o rácio calculado estiver dentro do limiar, fazer corresponder a caixa da verdade terrestre com a âncora correspondente.

YOLOv5 sobreposição de grelha

  • Atribua 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 .

📅C riado há 1 ano ✏️ Atualizado há 11 dias

Comentários