Saltar al contenido

Ultralytics YOLOv5 Arquitectura

YOLOv5 (v6.0/6.1) es un potente algoritmo de detección de objetos desarrollado por Ultralytics. Este artículo profundiza en la arquitectura de YOLOv5 , las estrategias de aumento de datos, las metodologías de entrenamiento y las técnicas de cálculo de pérdidas. Este conocimiento exhaustivo te ayudará a mejorar la aplicación práctica de la detección de objetos en diversos campos, como la vigilancia, los vehículos autónomos y el reconocimiento de imágenes.

1. Estructura del modelo

YOLOv5consta de tres partes principales:

  • Red troncal: Es el cuerpo principal de la red. Para YOLOv5, la red troncal se dise√Īa utilizando el m√©todo New CSP-Darknet53 una modificaci√≥n de la arquitectura Darknet utilizada en versiones anteriores.
  • Cuello: Esta parte conecta la columna vertebral y la cabeza. En YOLOv5, SPPF y New CSP-PAN se utilizan estructuras.
  • Cabeza: Esta parte se encarga de generar el resultado final. YOLOv5 utiliza la funci√≥n YOLOv3 Head para este fin.

La estructura del modelo se representa en la imagen siguiente. Los detalles de la estructura del modelo se encuentran en yolov5l.yaml.

yolov5

YOLOv5 introduce algunos cambios menores respecto a sus predecesores:

  1. En Focus que se encontraba en versiones anteriores, se sustituye por una estructura 6x6 Conv2d estructura. Este cambio aumenta la eficacia #4825.
  2. En SPP se sustituye por SPPF. Esta alteración duplica con creces la velocidad de procesamiento.

Para comprobar la velocidad de SPP y SPPFse puede utilizar el siguiente código:

Ejemplo de perfil de velocidad SPP vs SPPF (haz clic 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; expects input tensor x of any shape."""
        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 datos

YOLOv5 emplea varias técnicas de aumento de datos para mejorar la capacidad de generalización del modelo y reducir el sobreajuste. Estas técnicas incluyen:

  • Aumento en mosaico: T√©cnica de procesamiento de im√°genes que combina cuatro im√°genes de entrenamiento en una sola, de forma que los modelos de detecci√≥n de objetos puedan manejar mejor las distintas escalas y traslaciones de los objetos.

mosaico

  • Aumento Copia-Pega: Un innovador m√©todo de aumento de datos que copia parches aleatorios de una imagen y los pega en otra imagen elegida al azar, generando as√≠ una nueva muestra de entrenamiento.

copiar-pegar

  • Transformaciones Afines Aleatorias: Esto incluye rotaci√≥n, escalado, traslaci√≥n y cizallamiento aleatorios de las im√°genes.

aleatorio-afín

  • Aumento MixUp: M√©todo que crea im√°genes compuestas tomando una combinaci√≥n lineal de dos im√°genes y sus etiquetas asociadas.

confusión

  • Albumentaciones: Una potente biblioteca para aumentar im√°genes que admite una gran variedad de t√©cnicas de aumento.

  • Aumento HSV: Cambios aleatorios en el Tono, la Saturaci√≥n y el Valor de las im√°genes.

hsv

  • Volteo Horizontal Aleatorio: Un m√©todo de aumento que voltea aleatoriamente las im√°genes horizontalmente.

horizontal-flip

3. Estrategias de formación

YOLOv5 aplica varias estrategias de entrenamiento sofisticadas para mejorar el rendimiento del modelo. Entre ellas se incluyen:

  • Entrenamiento multiescala: Las im√°genes de entrada se reescalan aleatoriamente dentro de un rango de 0,5 a 1,5 veces su tama√Īo original durante el proceso de entrenamiento.
  • Anclaje autom√°tico: Esta estrategia optimiza las casillas de anclaje previo para que coincidan con las caracter√≠sticas estad√≠sticas de las casillas de verdad b√°sica de tus datos personalizados.
  • Calentamiento y Programador LR Coseno: Un m√©todo para ajustar la tasa de aprendizaje para mejorar el rendimiento del modelo.
  • Media m√≥vil exponencial (EMA): Estrategia que utiliza la media de los par√°metros sobre los pasos anteriores para estabilizar el proceso de entrenamiento y reducir el error de generalizaci√≥n.
  • Entrenamiento de Precisi√≥n Mixta: Un m√©todo para realizar operaciones en formato de media precisi√≥n, reduciendo el uso de memoria y mejorando la velocidad de c√°lculo.
  • Evoluci√≥n de los hiperpar√°metros: Una estrategia para ajustar autom√°ticamente los hiperpar√°metros para conseguir un rendimiento √≥ptimo.

4. Características adicionales

4.1 Calcula las pérdidas

La pérdida en YOLOv5 se calcula como una combinación de tres componentes de pérdida individuales:

  • P√©rdida de Clases (P√©rdida BCE): P√©rdida de entrop√≠a cruzada binaria, mide el error de la tarea de clasificaci√≥n.
  • P√©rdida de Objectidad (P√©rdida BCE): Otra p√©rdida de Entrop√≠a Cruzada Binaria, calcula el error al detectar si un objeto est√° presente o no en una determinada celda de la cuadr√≠cula.
  • P√©rdida de Localizaci√≥n (P√©rdida CIoU): P√©rdida de IoU completa, mide el error en la localizaci√≥n del objeto dentro de la celda de la cuadr√≠cula.

La función de pérdida global se representa mediante:

pérdida

4.2 Pérdidas de saldo

Las pérdidas de objetividad de las tres capas de predicción (P3, P4, P5) se ponderan de forma diferente. Los pesos de equilibrio son [4.0, 1.0, 0.4] respectivamente. Este enfoque garantiza que las predicciones a diferentes escalas contribuyan adecuadamente a la pérdida total.

obj_pérdida

4.3 Eliminar la sensibilidad de la red

La arquitectura YOLOv5 introduce algunos cambios importantes en la estrategia de predicci√≥n de cajas en comparaci√≥n con versiones anteriores de YOLO. En YOLOv2 y YOLOv3, las coordenadas de las cajas se predec√≠an directamente utilizando la activaci√≥n de la √ļltima capa.

b_x b_y b_w b_h

YOLOv5 cálculo de cuadrícula

Sin embargo, en YOLOv5, la fórmula para predecir las coordenadas de la caja se ha actualizado para reducir la sensibilidad de la cuadrícula y evitar que el modelo prediga dimensiones de caja sin límites.

Las fórmulas revisadas para calcular el cuadro delimitador previsto son las siguientes:

bx por bw bh

Compara el desplazamiento del punto central antes y después del escalado. El rango de desplazamiento del punto central se ajusta de (0, 1) a (-0,5, 1,5). Por tanto, el desplazamiento puede ser fácilmente 0 ó 1.

YOLOv5 escala de cuadrícula

Compara la relaci√≥n de escala de altura y anchura (relativa al ancla) antes y despu√©s del ajuste. Las ecuaciones originales de la caja yolo/darknet tienen un grave defecto. La anchura y la altura son completamente ilimitadas, ya que son simplemente out=exp(in), lo que es peligroso, ya que puede provocar gradientes desbocados, inestabilidades, p√©rdidas NaN y, en √ļltima instancia, una p√©rdida completa del entrenamiento. consulta este tema

YOLOv5 escala ilimitada

4.4 Objetivos de construcción

El proceso de construcción del objetivo en YOLOv5 es fundamental para la eficacia del entrenamiento y la precisión del modelo. Implica asignar casillas de verdad sobre el terreno a las celdas de cuadrícula adecuadas del mapa de salida y hacerlas coincidir con las casillas de anclaje apropiadas.

Este proceso sigue estos pasos:

  • Calcula la relaci√≥n entre las dimensiones de la caja de la verdad sobre el terreno y las dimensiones de cada plantilla de anclaje.

rw

rh

rwmax

rhmax

rmax

coincide

YOLOv5 C√°lculo del IoU

  • Si la proporci√≥n calculada est√° dentro del umbral, haz coincidir la casilla de la verdad sobre el terreno con el ancla correspondiente.

YOLOv5 solapamiento de rejilla

  • Asigna el ancla emparejada a las casillas apropiadas, teniendo en cuenta que, debido al desplazamiento revisado del punto central, una casilla de la verdad sobre el terreno puede asignarse a m√°s de un ancla. Debido a que el rango de desplazamiento del punto central se ajusta de (0, 1) a (-0,5, 1,5). La caja GT puede asignarse a m√°s anclas.

YOLOv5 selección del ancla

De este modo, el proceso de construcción de objetivos garantiza que cada objeto de la verdad sobre el terreno se asigne y empareje correctamente durante el proceso de entrenamiento, lo que permite a YOLOv5 aprender la tarea de detección de objetos con mayor eficacia.

Conclusión

En conclusión, YOLOv5 representa un importante paso adelante en el desarrollo de modelos de detección de objetos en tiempo real. Al incorporar varias funciones nuevas, mejoras y estrategias de entrenamiento, supera en rendimiento y eficacia a las versiones anteriores de la familia YOLO .

Las principales mejoras de YOLOv5 incluyen el uso de una arquitectura dinámica, una amplia gama de técnicas de aumento de datos, estrategias de entrenamiento innovadoras, así como importantes ajustes en las pérdidas de computación y en el proceso de construcción de objetivos. Todas estas innovaciones mejoran significativamente la precisión y la eficacia de la detección de objetos, conservando al mismo tiempo un alto grado de velocidad, que es la marca distintiva de los modelos YOLO .



Creado 2023-11-12, Actualizado 2024-05-18
Autores: glenn-jocher (7), sergiuwaxmann (1)

Comentarios