Ir 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 le 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 estructuras.
  • Cabeza: Esta parte se encarga de generar el resultado final. YOLOv5 utiliza el YOLOv3 Head para este fin.

La estructura del modelo se muestra en la siguiente imagen. Los detalles de la estructura del modelo pueden consultarse 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 (haga 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."""
        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 favorece que los modelos de detección de objetos manejen mejor varias escalas y traslaciones de objetos.

    mosaico

  • Aumento por copia y pegado: 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 Affine aleatorias: Esto incluye rotación, escalado, traslación y cizallamiento aleatorios de las imágenes.

    random-affine

  • 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 el aumento de imágenes que admite una amplia 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 figuran:

  • 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.
  • AutoAnchor: Esta estrategia optimiza las casillas de anclaje previas para que coincidan con las características estadísticas de las casillas de verdad terrestre de sus datos personalizados.
  • Calentamiento y Coseno LR Scheduler: 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.
  • Formación deprecisió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 hiperparámetros: Una estrategia para ajustar automáticamente los hiperparámetros con el fin de lograr un rendimiento óptimo.

4. Características adicionales

4.1 Calcular 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): La pérdida de entropía cruzada binaria mide el error en la tarea de clasificación.
  • Pérdida de Objectness (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 celda de cuadrícula concreta.
  • 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 Balance de pérdidas

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ículas

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

Compare 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 lo tanto, el desplazamiento puede obtener fácilmente 0 o 1.

YOLOv5 escala de cuadrícula

Compare la relación de escala de altura y anchura (relativa al ancla) antes y después del ajuste. Las ecuaciones originales de yolo/darknet box tienen un grave defecto. Anchura y Altura son completamente sin límites, ya que son simplemente out = exp (in), lo cual es peligroso, ya que puede conducir a gradientes fuera de control, inestabilidades, pérdidas NaN y en última instancia, una pérdida completa de la formación. referirse a 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. Consiste en asignar casillas de verdad sobre el terreno a las celdas de cuadrícula apropiadas en el mapa de salida y emparejarlas con las casillas de anclaje apropiadas.

Este proceso sigue los siguientes pasos:

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

match

YOLOv5 Cálculo del IoU

  • Si el cociente calculado está dentro del umbral, haga coincidir la casilla de la verdad sobre el terreno con el ancla correspondiente.

YOLOv5 superposición de cuadrículas

  • Asigne el ancla correspondiente a las celdas apropiadas, teniendo en cuenta que, debido al desplazamiento revisado del punto central, una casilla de 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). GT Box se puede asignar a más anclas.

YOLOv5 selección de anclajes

De este modo, el proceso de construcción de objetivos garantiza que cada objeto de la verdad terrestre 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 computacionales 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, al tiempo que conservan un alto grado de velocidad, que es la marca distintiva de los modelos YOLO .

Creado hace 1 año ✏️ Actualizado hace 2 meses

Comentarios