Explicación detallada de la serie YOLO (YOLO1-YOLO5)

Tabla de contenido

prefacio

Dos, YOLOv1

Por ejemplo:

3. YOLOv2

4. YOLOv3

Cinco, principio marco YOLOv4

5.4.5 Recocido simulado de coseno

5.5.2 DIoU-NMS 

Seis YOLOv5

7. YOLOv6



prefacio

一、前言
YOLO系列是one-stage且是基于深度学习的回归方法,而R-CNN、Fast-RCNN、Faster-RCNN等是two-stage且是基于深度学习的分类方法。

YOLO官网:GitHub - pjreddie/darknet: Convolutional Neural Networks

1.1 YOLO vs Faster R-CNN
1、统一网络:YOLO没有显示求取region proposal的过程。Faster R-CNN中尽管RPN与fast rcnn共享卷积层,但是在模型训练过程中,需要反复训练RPN网络和fast rcnn网络。相对于R-CNN系列的"看两眼"(候选框提取与分类),YOLO只需要Look Once.

2、YOLO统一为一个回归问题,而Faster R-CNN将检测结果分为两部分求解:物体类别(分类问题)、物体位置即bounding box(回归问题)。
 

Dos, YOLOv1


Dirección en papel: https://arxiv.org/abs/1506.02640

Código oficial: GitHub - pjreddie/darknet: Redes neuronales convolucionales

La idea central de YOLOv1:

La idea central de YOLOv1 es utilizar la imagen completa como entrada de la red y devolver directamente la posición del cuadro delimitador y la categoría a la que pertenece el cuadro delimitador en la capa de salida.
Faster RCNN también usa directamente la imagen completa como entrada, pero Faster-RCNN aún adopta la idea de propuesta + clasificador de RCNN como un todo, pero solo implementa el paso de extraer la propuesta en CNN, mientras que YOLOv1 usa el tren de pensamiento de regresión directa. .
2.1 Método de implementación
Divida una imagen en celdas de cuadrícula SxS Si el centro de un objeto cae en la cuadrícula, la cuadrícula es responsable de predecir el objeto.

Cada cuadrícula necesita predecir los cuadros delimitadores B. Además de volver a su propia posición, cada cuadro delimitador también necesita predecir un valor de confianza. Esta confianza representa la confianza del cuadro predicho que contiene el objeto y la precisión de la predicción del cuadro. Su valor se calcula de la siguiente manera:


        El significado de la expresión: si un objeto cae en una celda de cuadrícula, el primer elemento es 1, de lo contrario es 0. El segundo elemento es el valor IoU entre el cuadro delimitador predicho y la verdad básica real. 

Cada cuadro delimitador debe predecir un total de 5 valores (x, y, w, h) y confianza, y cada cuadrícula también debe predecir una información de categoría, que se registra como categoría C. Luego están las cuadrículas SxS, y cada cuadrícula debe predecir los cuadros delimitadores B y las categorías C. La salida es un tensor de S x S x (5*B+C).
       Nota: La información de clase es para cada cuadrícula y la información de confianza es para cada cuadro delimitador.

Por ejemplo:

En PASCAL VOC, la entrada de imagen es de 448x448 píxeles, S=7, B=2 y hay 20 categorías (C=20). Entonces la salida es un tensor de 7x7x(2x5+20). La estructura completa de la red se muestra en la siguiente figura:

Durante la prueba, la información de clase pronosticada por cada cuadrícula se multiplica por la información de confianza pronosticada por el cuadro delimitador para obtener la puntuación de confianza específica de la clase de cada cuadro delimitador. Después de obtener la puntuación de confianza específica de la clase de cada cuadro, establezca el umbral , filtre las casillas con puntajes bajos y realice el procesamiento NMS en las casillas reservadas para obtener el resultado de detección final.


       El significado de esta expresión: el primer elemento del lado izquierdo de la ecuación es la información de categoría predicha por cada cuadrícula, y el segundo y tercer elemento son la confianza predicha por cada cuadro delimitador. Este producto codifica la probabilidad de que el cuadro pronosticado pertenezca a una determinada categoría y también tiene información sobre la precisión del cuadro. 

Nota:
dado que la capa de salida es una capa completamente conectada, la entrada del modelo YOLOv1 solo admite la misma resolución de entrada que la imagen de entrenamiento cuando detecta.
Aunque cada cuadrícula puede predecir cuadros delimitadores B, solo el cuadro delimitador con el IOU más alto se selecciona finalmente como salida de detección de objetos, es decir, cada cuadrícula solo predice como máximo un objeto. Cuando el objeto ocupa una pequeña proporción de la pantalla, como una manada o una bandada de pájaros en la imagen, cada cuadrícula contiene varios objetos, pero solo se puede detectar uno de ellos.
Un resumen simple es:

Dada una imagen de entrada, primero divida la imagen en cuadrículas de 7*7;
para cada cuadrícula, predecimos 2 bordes (incluida la confianza de que cada borde es el objetivo y cada área de borde está en varias categorías de probabilidad);
De acuerdo con el paso anterior, Se pueden predecir 7*7*2 ventanas de destino, y luego las ventanas de destino con una probabilidad relativamente baja se eliminan de acuerdo con el umbral, y finalmente NMS puede eliminar las ventanas redundantes.
2.2 Función de pérdida
Cada cuadrícula tiene 30 dimensiones, entre las 30 dimensiones, 8 dimensiones son las coordenadas de la caja de regresión, 2 dimensiones son la confianza de la caja y 20 dimensiones son categorías. Las coordenadas x e y se normalizan a 0-1 por el desplazamiento de la cuadrícula correspondiente, y w y h se normalizan a 0-1 por el ancho y el alto de la imagen. En la implementación, lo más importante es cómo diseñar la función de pérdida para que estos tres aspectos estén bien equilibrados. El autor usa simple y groseramente la pérdida de error de suma cuadrática para hacer esto.

Este enfoque tiene los siguientes problemas:

Primero, obviamente no es razonable que el error de localización de 8 dimensiones y el error de clasificación de 20 dimensiones sean igualmente importantes;
segundo, si no hay ningún objeto en una cuadrícula (hay muchas cuadrículas de este tipo en una imagen), entonces estas cuadrículas serán La confianza de la caja en la cuadrícula se reduce a 0. En comparación con la cuadrícula con menos objetos, este enfoque es abrumador, lo que conducirá a la inestabilidad de la red o incluso a la divergencia.
Solución:

Preste más atención a la predicción de coordenadas de 8 dimensiones y dé a estas pérdidas un mayor peso de pérdida;
para la pérdida de confianza de la caja sin objeto, dé una pequeña pérdida de peso;
la pérdida de confianza de la caja con el objeto y la pérdida de peso de la categoría pérdida se toman normalmente 1.
En la predicción de YOLOv1 de cajas de diferentes tamaños, en comparación con la predicción de caja grande, la predicción de caja pequeña es definitivamente más insoportable. La pérdida de error de suma cuadrática es la misma para la misma pérdida de compensación. Para aliviar este problema, el autor usó un método engañoso, que consiste en sacar la raíz cuadrada del ancho y el alto de la caja para reemplazar el alto y el ancho originales. Esto es fácil de entender consultando la siguiente figura. El valor del eje horizontal del cuadro pequeño es pequeño. Cuando se produce un desplazamiento, la respuesta al eje Y es mayor que la del cuadro grande. (también una aproximación)

Una cuadrícula predice varios cuadros y se espera que cada predictor de cuadro sea responsable de predecir un objeto. El método específico es ver qué IoU es más grande en el cuadro predicho actualmente y en el cuadro de verdad del terreno, y cuál es el responsable. Este enfoque se denomina especialización de predictor de caja. 

En la función de pérdida de YOLOv1:

El error de clasificación sólo se penaliza cuando hay un objeto en una cuadrícula determinada.
Solo cuando un predictor de caja es responsable de una caja de verdad de tierra, el error de coordenadas de la caja será castigado, y qué caja de verdad de tierra es responsable depende de si su valor predicho y el IoU de la caja de verdad de tierra están en esa celda. El más grande de todas las cajas.
Nota:

El entrenamiento del modelo del método YOLOv1 se basa en el reconocimiento de objetos y datos de etiquetado. Por lo tanto, para formas o proporciones de objetos no convencionales, el efecto de detección de YOLOv1 no es ideal.
YOLOv1 usa múltiples capas de reducción de resolución y las características del objeto aprendidas por la red no están bien, por lo que también afectará el efecto de detección.
En la función de pérdida de YOLOv1, el error de IOU de objetos grandes y el error de IOU de objetos pequeños están cerca del valor de contribución de pérdida en el entrenamiento de red (aunque se usa el método de la raíz cuadrada, no resuelve el problema fundamentalmente). Por lo tanto, para objetos pequeños, un pequeño error de IOU también tendrá un gran impacto en el proceso de optimización de la red, lo que reducirá la precisión de localización de la detección de objetos.
Desventajas de YOLO
YOLO no es efectivo para detectar objetos que están cerca uno del otro y grupos pequeños.Esto se debe a que solo se predicen dos casillas en una cuadrícula, y solo pertenecen a una categoría;
en relaciones de aspecto comunes y otras situaciones, la generalización la capacidad es débil;
debido al problema de la función de pérdida, el error de posicionamiento es la razón principal que afecta el efecto de detección. Es necesario reforzar especialmente el procesamiento de objetos grandes y pequeños.


3. YOLOv2


Dirección en papel: https://arxiv.org/abs/1612.08242

Código oficial: YOLO: Detección de objetos en tiempo real

3.1 Introducción a YOLOv2
En comparación con la versión v1, YOLOv2 ha mejorado en tres aspectos: predicción más precisa (Mejor), mayor velocidad (Más rápido) y más objetos de reconocimiento (Más fuerte) sobre la base de continuar manteniendo la velocidad de procesamiento. Entre ellos, reconocer más objetos es expandirse para poder detectar 9000 objetos diferentes, llamados YOLO9000.

El artículo propone un nuevo método de entrenamiento: algoritmo de entrenamiento conjunto, que puede mezclar estos dos conjuntos de datos. Utilice una vista jerárquica para clasificar objetos y aumente el conjunto de datos de detección con datos del enorme conjunto de datos de clasificación, mezclando así dos conjuntos de datos diferentes. La idea básica del algoritmo de entrenamiento conjunto es: entrenar simultáneamente detectores de objetos (detectores de objetos) en el conjunto de datos de detección y el conjunto de datos de clasificación, usar los datos del conjunto de datos de detección para aprender la posición exacta del objeto y usar el datos del conjunto de datos de clasificación para aumentar el volumen de la categoría de clasificación y mejorar la solidez.

YOLO9000 se entrena utilizando el algoritmo de entrenamiento conjunto. Tiene 9000 categorías de información de clasificación. Esta información de clasificación se aprende del conjunto de datos de clasificación de ImageNet, mientras que la detección de la posición del objeto se aprende del conjunto de datos de detección de COCO.

YOLOv1 tiene muchas deficiencias. El autor espera mejorar la dirección: mejorar la recuperación, mejorar la precisión del posicionamiento y mantener la precisión de la clasificación. La tendencia actual en visión por computadora es redes más grandes y profundas. Un mejor rendimiento generalmente se basa en entrenar redes más grandes o integrar múltiples modelos, pero YOLOv2 se enfoca en simplificar la red. Las mejoras específicas se muestran en la siguiente tabla:

3.2 Mejoras de YOLOv2
3.2.1 Normalización por lotes La normalización por lotes
ayuda a resolver el problema de la desaparición de gradientes y la explosión de gradientes en el proceso de retropropagación y reduce el impacto en algunos hiperparámetros (como la tasa de aprendizaje, el rango de tamaño de los parámetros de red y la función de activación). selección), y cuando cada lote se normaliza por separado, tiene un cierto efecto de regularización (YOLOv2 ya no usa abandono), por lo que se puede obtener una mejor velocidad de convergencia y efecto de convergencia.

El uso de la normalización por lotes para optimizar la red permite que la red mejore la convergencia al mismo tiempo que elimina la dependencia de otras formas de regularización. Al agregar la normalización por lotes a cada capa convolucional de YOLOv2, el mAP finalmente aumenta en un 2% y el modelo también se regulariza. El uso de Batch Normalization puede eliminar Dropout del modelo sin sobreajuste.

Para obtener más información sobre la normalización por lotes, consulte: Principio de normalización por lotes y combate real

3.2.2 Clasificador de alta resolución
Hay muchas muestras de entrenamiento para la clasificación de imágenes, pero las muestras para entrenar la detección de objetivos con bordes marcados son mucho menores, porque el costo de mano de obra para marcar los bordes es relativamente alto. Por lo tanto, el modelo de detección de objetivos generalmente usa muestras de clasificación de imágenes para entrenar la capa convolucional para extraer características de la imagen, pero esto lleva a otro problema, es decir, la resolución de las muestras de clasificación de imágenes no es muy alta. Entonces, YOLOv1 usa las muestras de clasificación de imágenes de ImageNet para usar 224 * 224 como entrada para entrenar la capa convolucional de CNN. Luego, al entrenar la detección de objetivos, las muestras de imágenes para la detección utilizan una imagen de 448 x 448 píxeles de mayor resolución como entrada, pero esa resolución de entrada inconsistente definitivamente tendrá un cierto impacto en el rendimiento del modelo.

Por lo tanto, después de que YOLOv2 use 224*224 imágenes para el entrenamiento previo del modelo de clasificación, usa 448*448 muestras de alta resolución para ajustar el modelo de clasificación (10 épocas), de modo que las características de la red se adapten gradualmente a la resolución de 448* 448. Luego use muestras de detección de 448*448 para el entrenamiento, lo que alivia el impacto del cambio repentino de resolución.Finalmente, al usar alta resolución, el mAp aumenta en un 4%.

3.2.3 Convolución con cuadros de anclaje
YOLOv1 contiene una capa totalmente conectada, que puede predecir directamente los valores de coordenadas de los cuadros delimitadores. El algoritmo Faster R-CNN solo usa la capa convolucional y la red de propuesta de región para predecir el valor de compensación y la confianza de Anchor Box en lugar de predecir directamente el valor de la coordenada. El autor de YOLOv2 descubrió que el problema se puede simplificar al predecir la compensación en lugar del valor de las coordenadas, para que las redes neuronales sean más fáciles de aprender.

Basándose en la práctica de Faster RCNN, YOLOv2 también intenta usar el marco anterior (ancla). Preestablece un conjunto de fotogramas de diferentes tamaños y relaciones de aspecto en cada cuadrícula para cubrir diferentes posiciones y múltiples escalas de toda la imagen. Estos fotogramas a priori se utilizan como áreas candidatas predefinidas en la red neuronal para detectar si hay un objeto en ellos. y ajuste la posición del borde.

Anteriormente, YOLOv1 no usaba cuadros a priori, y cada cuadrícula solo predecía dos cuadros delimitadores, es decir, solo había 98 cuadros delimitadores en toda la imagen. Si YOLOv2 usa 9 fotogramas anteriores para cada cuadrícula, hay un total de 13*13*9=1521 fotogramas anteriores. Entonces, al final, YOLOv2 eliminó la capa completamente conectada y usó Anchor Boxes para predecir Bounding Boxes. El autor elimina una capa de agrupación en la red, lo que permite que la salida de la capa convolucional tenga una resolución más alta y, al mismo tiempo, reduce la estructura de la red para que se ejecute en 416*416 en lugar de 448*448.

Dado que los objetos de la imagen tienden a aparecer en el centro de la imagen, especialmente los objetos relativamente grandes, existe una sola posición en el centro del objeto para predecir estos objetos. La capa convolucional de YOLOv2 utiliza un valor de 32 para reducir la resolución de la imagen, por lo que al seleccionar 416*416 como tamaño de entrada, finalmente se puede generar un mapa de características de 13*13. El uso de Anchor Box reducirá ligeramente la precisión, pero su uso permite que YOLOv2 prediga más de mil fotogramas, mientras que la recuperación alcanza el 88% y el mAP alcanza el 69,2%.

Antes de los clústeres de dimensión 3.2.4,
el tamaño del cuadro de anclaje se seleccionaba manualmente, por lo que todavía hay espacio para la optimización del tamaño. YOLOv2 intenta contar el marco a priori que está más en línea con el tamaño del objeto en la muestra, para que pueda reducir la dificultad de ajustar el marco a priori a la posición real de la red. El enfoque de YOLOv2 es realizar un análisis de conglomerados de K-medias en los bordes marcados en el conjunto de entrenamiento para encontrar el tamaño del borde que coincida con la muestra tanto como sea posible. Si usamos k-medias de distancia euclidiana estándar, las cajas más grandes producen más errores que las cajas más pequeñas. Porque nuestro propósito es mejorar la puntuación del IOU, que depende del tamaño de la Caja, el uso de la métrica de distancia:

Entre ellos, el centroide es el borde seleccionado como centro al agrupar, el cuadro es el otro borde y d es la "distancia" entre los dos. Cuanto mayor sea el IOU, más cerca será la "distancia". Los resultados del análisis de conglomerados proporcionados por YOLOv2 se muestran en la siguiente figura Al analizar los resultados experimentales (Figura 2), después de sopesar la complejidad del modelo y el alto recuerdo, se selecciona el número de clasificaciones de conglomerados K ​​= 5. 

 

La Tabla 1 muestra que cuando se usan K-means para seleccionar Anchor Boxes, cuando el valor de selección de IOU de clúster es 5, el valor de IOU AVG es 61, que es más alto que el 60,9 del método sin agrupamiento. Cuando el valor es 9, el AVG IOU mejora significativamente. En resumen, muestra que el método de agrupamiento es efectivo. 

 

3.2.5 La predicción de ubicación directa 
utilizando el método Anchor Box hará que el modelo sea inestable, especialmente en las primeras iteraciones. La mayor parte de la inestabilidad proviene de predecir la posición (x, y) de la Caja. Según el método YOLOv1 anterior, la red no predice el desplazamiento, sino que predice directamente las coordenadas según la posición de la unidad de cuadrícula en YOLOv1, lo que hace que el valor de Ground Truth esté entre 0 y 1. Para que los resultados de la red se encuentren dentro de este rango, la red utiliza una activación logística para limitar los resultados de predicción de la red de modo que los resultados estén entre 0 y 1. La red predice 5 cuadros delimitadores en cada unidad de cuadrícula, y cada cuadro delimitador tiene cinco valores de coordenadas tx, ty, tw, th, t0, y su relación se muestra en la siguiente figura. Suponiendo que el desplazamiento de una unidad de cuadrícula a la esquina superior izquierda de la imagen es cx, cy, y el ancho y la altura de los cuadros delimitadores anteriores son pw, ph, entonces el resultado de la predicción se muestra en la fórmula a la derecha de la figura abajo:

3.2.6 Características de grano fino 
Uno de los problemas que enfrenta la detección de objetivos es que el objetivo que se detectará en la imagen será grande o pequeño. La imagen de entrada se extrae a través de una red multicapa y el mapa de características de salida final ( por ejemplo, ingrese 416 * 416 en YOLOv2 Después de que la red convolucional se muestree a la baja, la salida final es 13 * 13), y las posibles características de los objetos más pequeños no son obvias o incluso se ignoran. Para detectar mejor algunos objetos relativamente pequeños, el mapa de características de salida final debe retener información más detallada. Entonces, YOLOv2 introdujo un método llamado capa de transferencia para retener información detallada en el mapa de características. Específicamente, antes de la última agrupación, el tamaño del mapa de características es 26*26*512, que se divide en 4 por 1, y se pasa directamente (paso) al mapa de características después de la agrupación (y después de un conjunto de circunvoluciones). o superpuestos juntos como el mapa de características de salida.

Específicamente, cómo dividir un mapa de características en cuatro mapas de características, vea la figura a continuación. El ejemplo en la figura es un 4*4 dividido en cuatro 2*2, porque la profundidad permanece sin cambios, por lo que no se dibuja.

 

3.2.7 Entrenamiento multiescala
El autor espera que YOLOv2 pueda ejecutarse de manera robusta en imágenes de diferentes tamaños, por lo que esta idea se usa en el modelo de entrenamiento. A diferencia del método anterior de completar el tamaño de la imagen, YOLOv2 cambia los parámetros de la red cada pocas iteraciones. Cada 10 lotes, la red seleccionará aleatoriamente un nuevo tamaño de imagen. Dado que el parámetro de reducción de resolución es 32, también se seleccionan diferentes tamaños como múltiplos de 32 {320, 352...608}, el mínimo es 320*320, el el tamaño máximo es 608*608, la red cambiará automáticamente el tamaño y continuará el proceso de entrenamiento. Esta política permite que la red logre un buen efecto de predicción en diferentes tamaños de entrada, y la misma red puede realizar la detección en diferentes resoluciones. Cuando el tamaño de la imagen de entrada es relativamente pequeño, se ejecuta más rápido y cuando el tamaño de la imagen de entrada es relativamente grande, la precisión es alta, por lo que puede compensar la velocidad y la precisión de YOLOv2.

 

3.3 YOLOv2 más rápido
La columna vertebral de YOLOv1 utiliza GoogleLeNet, que es más rápido que VGG-16. YOLOv1 solo necesita 8520 millones de operaciones para completar un proceso de reenvío, mientras que VGG-16 necesita 30690 millones, pero la precisión de YOLOv1 es ligeramente inferior a la de VGG-16. .

3.3.1 Draknet19
YOLOv2 se basa en un nuevo modelo de clasificación, que es algo similar a VGG. YOLOv2 usa un filtro 3*3, duplicando el número de canales después de cada agrupación. YOLOv2 utiliza la agrupación promedio global y la normalización por lotes para hacer que el entrenamiento sea más estable, acelerar la convergencia y normalizar el modelo. El modelo final, Darknet19, tiene 19 capas convolucionales y 5 capas de agrupación máxima. Solo necesita 5580 millones de operaciones para procesar una imagen y alcanza una precisión del 72,9 % entre los primeros 1 y del 91,2 % entre los 5 primeros en ImageNet.

3.3.2 Entrenamiento para la clasificación
El entrenamiento de la red se entrenó durante 160 épocas en el conjunto de datos de clasificación de clase ImageNet 1000, usando descenso de gradiente estocástico, con una tasa de aprendizaje inicial de 0,1, caída de tasa polinomial con una potencia de 4, caída de peso de 0,0005 e impulso de 0.9. Los métodos estándar de aumento de datos se utilizan durante el entrenamiento: recorte aleatorio, rotación, colores cambiantes (matiz), saturación cambiante (saturación), exposiciones cambiantes (cambios de exposición). Durante el entrenamiento, Fine Turning 10 épocas de toda la red en una resolución mayor de 448 * 448, la tasa de aprendizaje inicial se establece en 0.001, esta red logra una precisión de 76.5% top-1, 93.3% de precisión top-5.

3.3.3 La red de entrenamiento para detección
elimina la última capa convolucional y agrega tres capas convolucionales de 3*3, cada capa convolucional tiene 1024 filtros, y cada capa convolucional es seguida por un volumen laminado de 1*1. Para los datos de VOC, la red predice que cada unidad de cuadrícula predice cinco cuadros delimitadores, cada cuadro delimitador predice 5 coordenadas y 20 categorías, por lo que un total de 125 filtros, la capa Passthrough se agrega para obtener la información detallada de la capa anterior, Se entrenaron 160 épocas de la red, la tasa de aprendizaje inicial fue 0.001, el método de expansión de datos fue el mismo y las estrategias de entrenamiento para los conjuntos de datos COCO y VOC fueron las mismas.

4. YOLOv3

Dirección del artículo: https://pjreddie.com/media/files/papers/YOLOv3.pdf 

 

 

 

DBL: Darknetconv2d_BN_Leaky en el código es el componente básico de YOLOv3, que es convolución + BN + Leaky relu.
resn: n representa un número, incluidos res1, res2, ..., res8, etc., que indica cuántas unidades res están contenidas en este bloque res. Si no entiendes el resnet, pincha aquí
concat: empalme de tensor; empalme del muestreo superior de la capa intermedia de darknet y una cierta capa detrás. La operación de empalme es diferente a la de suma en la capa residual, el empalme expandirá la dimensión del tensor, mientras que la suma no cambiará la dimensión del tensor.

Backbone: darknet-53
Para lograr mejores resultados de clasificación, el autor diseñó y entrenó darknet-53. Los experimentos en el conjunto de datos de ImageNet encontraron que este darknet-53 es realmente muy fuerte. En comparación con ResNet-152 y ResNet-101, darknet- 53 53 no solo es similar en precisión de clasificación, sino que también tiene una velocidad de cálculo mucho más rápida que ResNet-152 y ResNet-101, y tiene menos capas de red que ellos.Los resultados de la prueba se muestran en la figura.

 

La estructura de red de darknet-53 se muestra en la siguiente figura. YOLOv3 usa las primeras 52 capas de darknet-53 (sin una capa completamente conectada).La red de YOLOv3 es una red completamente convolucional, que usa una gran cantidad de conexiones de salto de capa residual, y para reducir el efecto negativo de los gradientes traídos al agrupar, el autor abandona directamente la agrupación y usa el paso de conv para lograr la reducción de muestreo. En esta estructura de red, se utiliza una convolución con un tamaño de paso de 2 para la reducción de muestreo.

Con el fin de fortalecer la precisión del algoritmo para la detección de objetivos pequeños, YOLOv3 adopta un enfoque de muestreo superior y fusión similar a FPN (finalmente fusionado con 3 escalas, y los tamaños de las otras dos escalas son 26 × 26 y 52 × 52 respectivamente), en múltiples escalas Realice la detección en el mapa de características.

El autor también adopta una estructura de convolución completa en las tres ramas de predicción. El número de núcleos de convolución en la última capa de convolución es 255, que es para las 80 categorías del conjunto de datos COCO: 3*(80+4+1)= 255 , 3 indica que una celda de cuadrícula contiene 3 cuadros delimitadores, 4 indica la información de las 4 coordenadas del cuadro y 1 indica la puntuación de objetividad.

 

producción 

La llamada escala múltiple proviene de estas tres rutas de predicción. Las profundidades de y1, y2 e y3 son todas 255, y la regla de la longitud de los lados es 13:26:52. YOLOv3 establece que cada unidad de cuadrícula predice 3 casillas, por lo que cada casilla debe tener cinco parámetros básicos (x, y, w, h, confianza), y luego hay 80 categorías de probabilidades. Así que 3×(5 + 80) = 255, así es como surge este 255.

Echemos un vistazo a cómo provienen y1, y2 e y3.
En la red, el autor llevó a cabo tres detecciones, que se detectaron con una reducción de muestreo de 32 veces, una reducción de muestreo de 16 veces y una reducción de muestreo de 8 veces, de modo que la detección en el mapa de características de escala múltiple es un poco como SSD. La razón para usar up-sample (up-sampling) en la red: cuanto más profunda sea la red, mejor será el efecto de expresión de características. Por ejemplo, al realizar una detección de muestreo descendente de 16 veces, si usa directamente el cuarto muestreo descendente característica para detectar, luego use características superficiales, este efecto generalmente no es bueno. Si desea utilizar las funciones después de 32 veces la reducción de resolución, pero el tamaño de las funciones profundas es demasiado pequeño, entonces YOLOv3 utiliza una muestra ascendente (ampliación) con un tamaño de paso de 2 para duplicar el tamaño del mapa de funciones obtenido 32 veces downsampling , que se convierte en la dimensión después de 16 veces de downsampling. De la misma manera, el muestreo de 8 veces también es un muestreo ascendente con un tamaño de paso de 2 en las características del muestreo descendente de 16 veces, de modo que las características profundas se pueden usar para la detección.

El autor extrae características profundas mediante muestreo ascendente y su dimensión es la misma que la dimensión de la capa de características que se fusionará (el canal es diferente). Como se muestra en la figura a continuación, la capa 85 aumenta la muestra de las características de 13 × 13 × 256 para obtener 26 × 26 × 256 y luego la une con las características de 61 capas para obtener 26 × 26 × 768. Para obtener el canal 255, se requieren una serie de operaciones de convolución de 3×3 y 1×1, que no solo pueden mejorar el grado de no linealidad, aumentar el rendimiento de generalización y mejorar la precisión de la red, sino también reducir los parámetros y mejorar el rendimiento en tiempo real. La función 52×52×255 también es un proceso similar.

 

Cuadro delimitador

El cuadro delimitador de YOLOv3 ha sido mejorado por YOLOv2. Tanto en YOLOv2 como en YOLOv3, se utiliza el agrupamiento de k-means para los objetos de la imagen. Cada celda en el mapa de funciones predecirá 3 cuadros delimitadores (cuadro delimitador), y cada cuadro delimitador predecirá tres cosas: (1) la posición de cada cuadro (4 valores, coordenadas centrales tx y ty, altura del cuadro bh y ancho bw), (2) una predicción de objetividad, (3) N categorías, conjunto de datos de coco 80 categorías, categorías voc20.

Para tres detecciones, el campo receptivo correspondiente es diferente cada vez, y el campo receptivo de reducción de muestreo de 32 veces es el más grande, lo que es adecuado para detectar objetivos grandes. Por lo tanto, cuando la entrada es 416 × 416, las tres cajas de anclaje de cada celda son (116, 90), (156,198), (373,326). 16 veces es adecuado para objetos de tamaño general, la caja de anclaje es (30,61); (62,45); (59,119). 8 veces el campo receptivo es el más pequeño, adecuado para detectar objetivos pequeños, por lo que el cuadro de anclaje es (10,13); (16,30); (33,23). Entonces, cuando la entrada es 416 × 416, en realidad hay un total de (52 × 52 + 26 × 26 + 13 × 13) × 3 = 10647 cuadros de propuesta.

Siente el tamaño de los 9 tipos de cajas a priori La caja azul en la figura de abajo es la caja a priori obtenida por agrupamiento. El cuadro amarillo es la realidad fundamental y el cuadro rojo es la cuadrícula donde se encuentra el punto central del objeto. 

 

Tenga en cuenta aquí la diferencia entre el cuadro delimitador y el cuadro ancla:
El cuadro delimitador genera la posición del cuadro (coordenadas centrales y ancho y alto), confianza y N categorías. El cuadro de anclaje es solo una escala, es decir, solo ancho y alto.

Uno de los cambios importantes en la función LOSS
YOLOv3: no más softmaxing de las clases. YOLOv3 ahora realiza una clasificación de etiquetas múltiples en los objetos detectados en las imágenes.

La regresión logística se utiliza para realizar una puntuación de objetividad en la parte rodeada por el ancla, es decir, la probabilidad de que esta posición sea el objetivo. Este paso se realiza antes de predecir, lo que puede eliminar anclas innecesarias y reducir la cantidad de cálculo.

Si el cuadro de la plantilla no es óptimo aunque supere el umbral que establecemos, no lo predeciremos. A diferencia de Faster R-CNN, YOLOv3 solo operará en 1 previo, que es el mejor previo. La regresión logística se usa para encontrar el que tiene el puntaje de objetividad más alto (puntaje de posibilidad de existencia objetivo) de los 9 priores de anclaje. La regresión logística es usar la curva para modelar linealmente la relación de mapeo entre el puntaje anterior y el de objetividad.

	lxy, lwh, lcls, lconf = ft([0]), ft([0]), ft([0]), ft([0])
    txy, twh, tcls, indices = build_targets(model, targets)#在13 26 52维度中找到大于iou阈值最适合的anchor box 作为targets
    #txy[维度(0:2),(x,y)] twh[维度(0:2),(w,h)] indices=[0,anchor索引,gi,gj]
 
    # Define criteria
    MSE = nn.MSELoss()
    CE = nn.CrossEntropyLoss()
    BCE = nn.BCEWithLogitsLoss()
 
    # Compute losses
    h = model.hyp  # hyperparameters
    bs = p[0].shape[0]  # batch size
    k = h['k'] * bs  # loss gain
    for i, pi0 in enumerate(p):  # layer i predictions, i
        b, a, gj, gi = indices[i]  # image, anchor, gridx, gridy
        tconf = torch.zeros_like(pi0[..., 0])  # conf
 
 
        # Compute losses
        if len(b):  # number of targets
            pi = pi0[b, a, gj, gi]  # predictions closest to anchors 找到p中与targets对应的数据lxy
            tconf[b, a, gj, gi] = 1  # conf
            # pi[..., 2:4] = torch.sigmoid(pi[..., 2:4])  # wh power loss (uncomment)
 
            lxy += (k * h['xy']) * MSE(torch.sigmoid(pi[..., 0:2]),txy[i])  # xy loss
            lwh += (k * h['wh']) * MSE(pi[..., 2:4], twh[i])  # wh yolo loss
            lcls += (k * h['cls']) * CE(pi[..., 5:], tcls[i])  # class_conf loss
 
        # pos_weight = ft([gp[i] / min(gp) * 4.])
        # BCE = nn.BCEWithLogitsLoss(pos_weight=pos_weight)
        lconf += (k * h['conf']) * BCE(pi0[..., 4], tconf)  # obj_conf loss
    loss = lxy + lwh + lconf + lcls
 

Lo anterior es el código loss_function de YOLOv3 descrito por el marco pytorch. Ignorando los coeficientes constantes, me gustaría centrarme en algunos puntos a continuación:

En primer lugar, YOLOv3 necesita construir el objetivo primero, porque sabemos que la muestra positiva está compuesta por la etiqueta y el cuadro de anclaje iou mayor que 0.5, por lo que encontramos el cuadro de anclaje correspondiente de acuerdo con la etiqueta. Cómo averiguar [imagen, clase, x (normalizado), y, w (normalizado), h] almacenado en la etiqueta, podemos usar estas coordenadas para que correspondan a 13 × 13 o 26 × 26 o 52 × 52 en el mapa , calcule el iou para 9 anclas, encuentre las que cumplan con los requisitos y registre el índice y la posición. Use la posición de índice registrada para encontrar el cuadro de anclaje de la predicción.
xywh se calcula por el error cuadrático medio para calcular la pérdida. El xy predicho es sigmoide para calcular la diferencia con la etiqueta xy. La etiqueta xy es la coordenada del punto central de la celda de la cuadrícula, y su valor está entre 0 y 1 , por lo que el xy predicho debe ser sigmoide.
Entropía cruzada multicategoría para clasificación y entropía cruzada binaria para confianza. Solo las muestras positivas participan en el cálculo de pérdida de clase y xywh, y las muestras negativas solo participan en la pérdida de confianza.

五、YOLOv4
YOLOv4: velocidad y precisión óptimas de detección de objetos

Papel: https://arxiv.org/abs/2004.10934

Ejemplo: GitHub - AlexeyAB/darknet: YOLOv4 / Scaled-YOLOv4 / YOLO - Redes neuronales para la detección de objetos (versión Windows y Linux de Darknet)

YOLOv4 es en realidad un algoritmo que combina una gran cantidad de tecnologías de investigación anteriores, las combina y realiza las innovaciones apropiadas, logrando un equilibrio perfecto entre velocidad y precisión. Podría decirse que existen muchos trucos para mejorar la precisión de una red neuronal convolucional (CNN), pero algunos trucos solo son adecuados para ejecutarse en ciertos modelos, o solo en ciertos problemas, o solo en conjuntos de datos pequeños; codifiquemos un código. El autor utiliza métodos en este artículo: conexión residual ponderada (WRC), conexión parcial de etapa cruzada (CSP), normalización de lotes pequeños cruzados (CmBN), entrenamiento de auto-adversario (SAT), activación de Mish, mejora de datos de mosaico, CmBN, regularización DropBlock, CIoU Loss, etc. Después de una serie de apilamientos, finalmente se logra el mejor resultado experimental: 43,5% AP (en Tesla V100, la velocidad en tiempo real del conjunto de datos MS COCO es de aproximadamente 65FPS).

Cinco, principio marco YOLOv4


YOLOv4El diagrama esquemático general (red de origen) cargado directamente es el siguiente:

5.1.1 CSPDarknet53
Sabemos que en YOLOv3, la red de extracción de funciones usa Darknet53, y en YOLOv4, Darknet53 se ha mejorado un poco y se usa CSPNet como referencia. El nombre completo de CSPNet es Cross Stage Partial Networks, que es una combinación -etapa red local. CSPNet resuelve el problema de la duplicación de la información de gradiente para la optimización de la red en Backbone, otro gran marco de red neuronal convolucional, e integra los cambios de gradiente en el mapa de características desde el principio hasta el final, reduciendo así la cantidad de parámetros y valores de FLOPS. del modelo, que no solo garantiza la velocidad de inferencia y la precisión, y reduce el tamaño del modelo. Como se muestra abajo:

CSPNet en realidad se basa en la idea de Densnet, copiando el mapa de características de la capa base y enviando la copia a la siguiente etapa a través del bloque denso, separando así el mapa de características de la capa base. Esto puede aliviar efectivamente el problema de la desaparición del gradiente (es difícil revertir la señal perdida a través de una red muy profunda), admitir la propagación de funciones y alentar a la red a reutilizar funciones, reduciendo así la cantidad de parámetros de red. La idea de CSPNet se puede combinar con ResNet, ResNeXt y DenseNet.En la actualidad, existen principalmente dos transformaciones de la red Backbone, CSPResNext50 y CSPDarknet53.

Considere el equilibrio de varios aspectos: resolución de la red de entrada/número de capas convolucionales/número de parámetros/dimensión de salida. Un buen efecto de clasificación de un modelo no necesariamente significa un buen efecto de detección, para lograr un buen efecto de detección se requieren los siguientes puntos:

Resolución de entrada de red más grande: para detectar objetivos pequeños
Capas de red más profundas: capaz de cubrir un área más grande del campo receptivo
Más parámetros: mejor detección de objetivos de diferentes tamaños en la misma imagen
Esta estructura final de CSPDarknet53 Al igual que la imagen a continuación:

Documento de CSPNet: https://arxiv.org/pdf/1911.11929v1.pdf

Para aumentar el campo receptivo, el autor también usó SPP-block, usando PANet en lugar de FPN para que la agregación de parámetros sea adecuada para la detección de objetivos en diferentes niveles.

 5.1.2 Estructura SPP Estructura
SPP-Net También hemos aprendido antes, SPP-Net nombre completo Spatial Pyramid Pooling Networks, se usó principalmente para resolver cómo los mapas de características de diferentes tamaños ingresan a la capa totalmente conectada, vea directamente la figura a continuación, la figura a continuación Se realiza una agrupación de tamaño fijo directamente en un mapa de características de cualquier tamaño para obtener un número fijo de características.

Como se muestra en la figura anterior, tomando como ejemplo la agrupación de 3 tamaños, se realiza una agrupación de valores máximos en el mapa de características, es decir, un mapa de características debe tomar su valor máximo para obtener 1*d (d es la dimensión de el mapa de características); el mapa de características se divide en cuadrículas de 2x2, y luego se realiza la agrupación máxima en cada cuadrícula, luego se obtienen características de 4 * d; de manera similar, el mapa de características se divide en cuadrículas de 4x4, y cada cuadrícula es max-pooled para obtener características de 16*d. Luego, las características obtenidas por cada agrupación se combinan para obtener el número de características de una longitud fija (la dimensión del mapa de características es fija), y luego se puede ingresar en la capa completamente conectada para entrenar la red. Se utiliza aquí para aumentar el campo receptivo.

5.1.3 Estructura PAN
YOLOv4 utiliza PANet (Red de agregación de rutas) en lugar de FPN para que la agregación de parámetros sea adecuada para diferentes niveles de detección de objetivos. El método utilizado para la fusión en el documento PANet es Adición, y el algoritmo YOLOv4 cambia el método de fusión de además de Concatenación. Como se muestra abajo:

5.2 Estrategia de entrenamiento de BackBone
Aquí aprendemos principalmente la estrategia de entrenamiento de BackBone desde los aspectos de mejora de datos, regularización de DropBlock y suavizado de etiquetas de clase.

5.2.1 Mejora de datos
1. CutMix
YOLOv4 elige usar el método de mejora CutMix. El método de procesamiento CutMix también es relativamente simple. También opera en un par de imágenes. Simplemente hablando, genera aleatoriamente un cuadro de recorte y recorta el cuadro correspondiente. posición de la imagen A., y luego use el ROI de la posición correspondiente en la imagen B para colocarlo en el área recortada de la imagen A para formar una nueva muestra. La etiqueta de verdad del suelo se ajustará proporcionalmente de acuerdo con la área del parche, como 0.6 como un perro, 0.4 como un gato, y lo mismo se usa cuando se calcula la pérdida Resolver por sumatoria ponderada. Aquí hay algunos métodos de mejora similares a través de CutMix:

La imagen de arriba es una comparación de varios métodos de mejora realizados por los autores en el artículo de CutMix. Los resultados son obvios y los métodos de mejora de CutMix funcionan de manera óptima en los tres conjuntos de datos. Entre ellos, Mixup es la suma directa de dos imágenes Al igual que la posesión y el efecto fantasma, es difícil para el modelo aprender la distribución de respuesta precisa de los mapas de características. Cutout consiste en eliminar directamente un área de la imagen, lo que obliga al modelo a no confiarse demasiado en características específicas a la hora de clasificar. Sin embargo, parte de la imagen está llena de información inútil, lo cual es un desperdicio. En CutMix, cortar y pegar parte de una imagen en otra imagen facilita que el modelo distinga entre las heterogéneas.

Papel CutMix: https://arxiv.org/pdf/1905.04899v2.pdf

2.
La mejora de datos Mosaic de Mosaic Yolov4 se refiere a la mejora de datos CutMix, que es similar en teoría. La diferencia es que Mosaic es un método de aumento de datos que combina 4 imágenes de entrenamiento en una para entrenamiento (en lugar de 2 como en CutMix). Esto mejora la detección de objetos fuera del contexto normal, enriqueciendo el contexto de los objetos detectados. Además, cada minilote contiene una gran variación de imágenes (x4), lo que reduce el requisito de grandes minilotes al estimar la media y la varianza, lo que reduce el costo de capacitación. Como se muestra abajo:

5.2.2 Regularización de DropBlock
Las técnicas de regularización ayudan a evitar el problema más común al que se enfrentan los profesionales de la ciencia de datos, a saber, el sobreajuste. Para la regularización, se han propuesto varios métodos, como la regularización L1 y L2, el abandono, la interrupción temprana y el aumento de datos. Aquí YOLOv4 usa el método de regularización DropBlock.

El método DropBlock se introdujo para superar la principal desventaja de descartar características aleatoriamente de Dropout, lo que demostró ser una estrategia eficaz para redes totalmente conectadas, pero no funciona bien en capas convolucionales correlacionadas con el espacio de características. La técnica DropBlock suelta entidades en regiones relacionadas adyacentes denominadas bloques. De esta forma, se puede lograr el propósito de generar un modelo más simple, y se puede introducir el concepto de aprender algunos pesos de red en cada iteración de entrenamiento para compensar la matriz de peso, reduciendo así el sobreajuste. Como se muestra abajo:

En el artículo de ropBlock, el autor finalmente usó la estructura Resnet-50 en la tarea de clasificación de ImageNet para aumentar la precisión en 1,6 % puntos, y en la tarea de detección de COCO, la precisión aumentó en 1,6 % puntos.

Papel DropBlock: https://arxiv.org/pdf/1810.12890.pdf

5.2.3 Regularización de DropBlock
Para problemas de clasificación, especialmente problemas de clasificación múltiple, los vectores a menudo se convierten en vectores one-hot, y los problemas causados ​​por one-hot: Para la función de pérdida, necesitamos usar la probabilidad predicha para ajustar el probabilidad real, y ajustar la función de probabilidad real de one-hot traerá dos problemas:

No se puede garantizar la capacidad de generalización del modelo, y es fácil causar sobreajuste;
la probabilidad total y la probabilidad cero fomentan que la brecha entre la categoría y otras categorías sea lo más grande posible, y se puede ver en el gradiente acotado que Es difícil adaptarse a esta situación. Hará que el modelo tenga demasiada confianza en la categoría predicha.
Tener un 100 % de confianza en la predicción puede indicar que el modelo está memorizando los datos en lugar de aprender. El objetivo de las predicciones de ajuste de suavizado de etiquetas está limitado a un valor bajo, por ejemplo, 0,9. Utilizará este valor en lugar de 1,0 para calcular la pérdida. Este concepto alivia el sobreajuste. Para decirlo sin rodeos, este suavizado es para reducir la brecha entre el mínimo y el máximo en la etiqueta hasta cierto punto, y el suavizado de etiquetas puede reducir el sobreajuste. Por lo tanto, ajustar la etiqueta adecuadamente para que los valores extremos en ambos extremos se muevan hacia el medio puede aumentar el rendimiento de generalización.

5.3 Estrategia de razonamiento troncal
5.3.1 Función de activación de Mish
La investigación sobre las funciones de activación nunca se ha detenido. ReLU aún domina la función de activación del aprendizaje profundo. Sin embargo, Mish puede cambiar esta situación. Mish es otra función de activación que es muy similar a ReLU y Swish. Como afirma el documento, Mish puede superarlos en muchas redes profundas en diferentes conjuntos de datos. La fórmula es la siguiente:

                                                                                                    

Mish es una curva suave, y una función de activación suave permite que una mejor información penetre profundamente en la red neuronal, lo que resulta en una mayor precisión y generalización; no se trunca por completo cuando es negativa, lo que permite que fluyan gradientes negativos relativamente pequeños. En el experimento, a medida que aumenta la profundidad de la capa, la precisión de la función de activación ReLU disminuye rápidamente, mientras que la función de activación Mish tiene un rendimiento excelente en términos de estabilidad de entrenamiento, precisión promedio (1%-2,8%) y precisión máxima ( 1,2%-3,6%) Hay una mejora general. Como se muestra abajo:

Documento de Mish: https://arxiv.org/pdf/1908.08681.pdf

5.3.2 Estrategia MiWRC
MiWRC es la abreviatura de Conexiones residuales ponderadas de múltiples entradas En BiFPN, se propone usar MiWRC para realizar una reponderación a nivel de escala y agregar mapas de características de diferentes escalas. Hemos discutido FPN y PAN como ejemplos. La figura (d) a continuación muestra otro diseño de cuello conocido como BiFPN, que según el documento de BiFPN tiene una mejor compensación de precisión y eficiencia.

En la figura anterior (a) FPN introduce una ruta de arriba hacia abajo para fusionar entidades multiescala del nivel 3 al nivel 7 (P3-P7); (b) PANET agrega una ruta de abajo hacia arriba adicional sobre FPN (c) NAS-FPN utiliza la búsqueda de redes neuronales para encontrar una red de topología de características irregulares y luego aplica repetidamente la misma topología de bloque; (d) es BiFPN aquí, con una mejor compensación de precisión y eficiencia. Coloque el cuello en la conexión de toda la red como se muestra en la siguiente figura:

La figura anterior utiliza EfficientNet como red troncal, BiFPN como red característica y comparte la red de predicción de clase/caja. Tanto la capa BiFPN como la capa class/boxnet se repiten varias veces en función de las diferentes limitaciones de recursos.

Documento BiFPN: https://arxiv.org/pdf/1911.09070.pdf

5.4 Estrategia de entrenamiento del cabezal de detección
5.4.1 Pérdida de CIoU

La función de pérdida indica cómo ajustar los pesos para reducir la pérdida. Entonces, en los casos en que hacemos una predicción incorrecta, esperamos que nos muestre el camino a seguir. Pero si se usa IoU, considerando que ninguna predicción se superpone con la verdad básica, entonces la función de pérdida de IoU no puede decir cuál es mejor o cuál está más cerca de la verdad básica. Aquí, por cierto, mire varias formas de pérdida de uso común, de la siguiente manera:

1. Pérdida clásica de IoU:

El algoritmo IoU es el algoritmo más utilizado y la mayoría de los algoritmos de detección utilizan este algoritmo.

 Se puede ver que la pérdida de IOU es en realidad muy simple, principalmente intersección/unión , pero en realidad hay dos problemas. 

 

 

Pregunta 1: Es decir, en el caso del estado 1, cuando el marco de predicción y el marco de destino son disjuntos, IOU=0, que no puede reflejar la distancia entre los dos marcos. En este momento, la función de pérdida no es derivable, y IOU_Loss no puede optimizar el caso en el que los dos marcos son disjuntos.

Pregunta 2: En el caso del estado 2 y el estado 3, cuando los dos marcos de predicción tienen el mismo tamaño y los dos IOU son iguales, IOU_Loss no puede distinguir la diferencia entre las dos intersecciones.

Por lo tanto, GIOU_Loss apareció en 2019 para mejorar.

2、GIoU:IoU generalizado

GIoU considera que la pérdida de IoU es la misma cuando el marco de detección y el marco real no se superponen, por lo que GIoU agrega el marco de detección C (el marco de detección C es el marco rectangular más pequeño que contiene el marco de detección y el marco real), por lo que puede resolver el problema de que el marco de detección y el marco real no se superponen. Entre ellos, C se refiere al cuadro más pequeño que puede contener el cuadro de predicción y el cuadro de Ground Truth.

 

 

Pregunta: Los estados 1, 2 y 3 son casos en los que el marco de predicción está dentro del marco de destino y el tamaño del marco de predicción es el mismo. En este momento, la diferencia entre el marco de predicción y el marco de destino es la misma. por lo tanto, los valores de GIOU de estos tres estados también son los mismos. De manera similar, en este momento, GIOU degenera en IOU y no se puede distinguir la relación de posición relativa.
En base a este problema, la AAAI 2020 volvió a proponer DIOU_Loss.

3, DIoU:Distancia IoU

Una buena función de regresión de cuadro objetivo debe considerar tres factores geométricos importantes: área superpuesta, distancia del punto central y relación de aspecto. Para los problemas de IOU y GIOU, el autor considera desde dos aspectos

(1): ¿Cómo minimizar la distancia normalizada entre el cuadro de predicción y el cuadro de destino?

(2): ¿Cómo hacer que la regresión sea más precisa cuando el marco de predicción y el marco objetivo se superponen?

Para la primera pregunta, se propone DIOU_Loss (Distance_IOU_Loss)

DIOU_Loss considera el área superpuesta y la distancia del punto central . Cuando el marco de destino envuelve el marco de predicción, mide directamente la distancia entre los dos marcos, por lo que DIOU_Loss converge más rápido.

Pero como decía la anterior función de regresión de la caja de objetos buenos, la relación de aspecto no se tiene en cuenta.

 

Por ejemplo, en los tres casos anteriores, el marco de destino envuelve el marco de predicción y DIOU_Loss puede funcionar. Pero la posición del punto central del cuadro de predicción es la misma, por lo que según la fórmula de cálculo de DIOU_Loss, los valores de los tres son los mismos.

En respuesta a este problema, se propuso nuevamente CIOU_Loss No, no, ¡la ciencia siempre está resolviendo problemas y progresando continuamente! !

4、CIOU_Loss

Las fórmulas frente a CIOU_Loss y DIOU_Loss son las mismas, pero se agrega un factor de impacto sobre esta base, teniendo en cuenta la relación de aspecto del cuadro de predicción y el cuadro de destino.

 

 Donde v es un parámetro para medir la consistencia de la relación de aspecto, también podemos definirlo como:

 

De esta forma, CIOU_Loss tiene en cuenta tres factores geométricos importantes en la función de regresión del cuadro de destino: área superpuesta, distancia del punto central y relación de aspecto.

Echemos un vistazo completo a las diferencias entre las diversas funciones de pérdida:

IOU_Loss: Considere principalmente el área superpuesta del marco de detección y el marco de destino.

GIOU_Loss: Sobre la base de IOU, resuelve el problema cuando los cuadros delimitadores no coinciden.

DIOU_Loss: Sobre la base de IOU y GIOU, considere la información de la distancia desde el punto central del cuadro delimitador.

CIOU_Loss: Sobre la base de DIOU, considere la información de escala de la relación de aspecto del cuadro delimitador.

El método de regresión CIOU_Loss se adopta en YOLOv4, lo que hace que la regresión del cuadro de predicción sea más rápida y precisa.

5.4.2 La estrategia de CmBN
BN utiliza la información de tiempo de iteración actual para realizar la norma, mientras que CBN considerará las estadísticas de tiempo k anteriores al calcular las estadísticas de tiempo actual, para realizar la operación de expandir el tamaño del lote. Al mismo tiempo, el autor señaló que la operación CBN no introducirá una sobrecarga de memoria relativamente grande, y la velocidad de entrenamiento no se verá muy afectada, pero el entrenamiento será más lento, más lento que GN.

CmBN es una versión mejorada de CBN, que considera los cuatro mini lotes dentro del lote grande como un todo y los aísla del exterior. En el tiempo t, CBN también considerará las estadísticas de los tres primeros momentos para la confluencia, mientras que la operación CmBN ya no deslizará la cruz, solo realiza la operación de confluencia dentro del mini lote y mantiene BN en un lote para actualizar los parámetros entrenables. una vez.

 

BN: no importa en cuántos mini lotes se divida cada lote, su algoritmo es contar los datos BN actuales (es decir, la expectativa y la varianza de cada neurona) después de cada mini lote de propagación directa y realizar normalización, datos BN y otros. los datos del mini lote son irrelevantes. CBN: los datos de BN en cada iteración son la suma de las n veces anteriores de datos y los datos actuales (los datos estadísticos del lote no actual se compensan antes de participar en el cálculo), y el valor acumulado se utiliza para normalizar el lote actual . La ventaja es que cada lote se puede configurar en un tamaño más pequeño. CmBN: El método de usar CBN solo dentro de cada lote. Personalmente, si cada lote se divide en un mini lote, su efecto es el mismo que el de BN; si se divide en múltiples mini lotes, es similar a CBN, pero el mini lote Calculado como un lote, la diferencia es que el punto de tiempo de actualización del peso es diferente y los parámetros de peso en el mismo lote son los mismos, por lo que no es necesario compensar el cálculo.

5.4.3 Entrenamiento de Auto-Adversarial (SAT)
SAT es un nuevo método de mejora de datos. En la primera etapa, la red neuronal altera la imagen original en lugar de los pesos de la red. De esta forma, la red neuronal realiza un ataque contradictorio contra sí misma, cambiando la imagen original para crear la ilusión de que no hay ningún objeto en la imagen. En la segunda etapa, la red neuronal se entrena para realizar la detección normal de objetos en la imagen modificada.

Self-Adversarial Training es una tecnología de mejora de datos que resiste los ataques adversarios hasta cierto punto. CNN calcula la pérdida y luego cambia la información de la imagen a través de la retropropagación para formar la ilusión de que no hay un objetivo en la imagen y luego realiza una detección normal del objetivo en la imagen modificada. Cabe señalar que en el proceso de retropropagación de SAT, no es necesario cambiar los pesos de la red. El uso de la generación contradictoria puede mejorar los eslabones débiles en el límite de decisión aprendido y mejorar la solidez del modelo. Por lo tanto, este método de mejora de datos es utilizado por más y más marcos de detección de objetos.

5.4.4 Eliminación de la sensibilidad de la red
Para el caso de y necesitamos valores negativos y positivos grandes, respectivamente. Pero podemos lograr esto más fácilmente multiplicando por un factor de escala (>1.0)

5.4.5 Recocido simulado de coseno

La programación de coseno ajusta la tasa de aprendizaje de acuerdo con una función de coseno. Primero, las tasas de aprendizaje más grandes disminuyen a un ritmo más lento. Luego, a la mitad, la tasa de aprendizaje disminuye más rápido y, finalmente, la tasa de aprendizaje vuelve a disminuir muy lentamente.

Este gráfico muestra cómo decae la tasa de aprendizaje (el calentamiento de la tasa de aprendizaje también se aplica en la imagen a continuación) y su mAPefecto en . Como puede no parecer obvio, este nuevo enfoque de programación hace un progreso más constante en lugar de progresar después de un período de estancamiento.

 

Papel de recocido simulado de coseno: https://arxiv.org/pdf/1608.03983.pdf 

5.5 Estrategia de razonamiento del cabezal de detección
5.5.1 Módulo SAM
El mecanismo de atención se adopta ampliamente en el diseño de DL. En SAM, la agrupación máxima y la agrupación promedio se utilizan para ingresar mapas de características respectivamente, creando dos conjuntos de mapas de características. El resultado se introduce en una capa convolucional seguida de una función sigmoidea para crear atención espacial.

Aplica una máscara de atención espacial a las entidades de entrada, generando un mapa de características refinado. 

 En YOLOv4, el modificado se usa SAMsin aplicar la agrupación máxima y la agrupación promedio. 

En YOLOv4, FPNlos conceptos se implementan/reemplazan gradualmente con SPP, PANy modificados PAN.

5.5.2 DIoU-NMS 

NMSFiltre otros cuadros delimitadores que predicen el mismo objeto y mantenga el cuadro delimitador con la máxima confianza.

DIoU (discutido anteriormente) se usa como un factor para la supresión no máxima (NMS). Este método emplea el IoU y la distancia entre los puntos centrales de dos cuadros delimitadores mientras suprime los cuadros redundantes. Esto lo hace más robusto contra las oclusiones.

6. YOLOv5
Poco después de que apareciera YOLOv4, nació YOLOv5. YOLOv5 ha realizado más mejoras sobre la base del algoritmo YOLOv4, y el rendimiento de detección se ha mejorado aún más. Aunque el algoritmo YOLOv5 no se ha comparado ni analizado con el algoritmo YOLOv4, el efecto de prueba de YOLOv5 en el conjunto de datos COCO es bastante bueno. Todos son escépticos sobre la innovación del algoritmo YOLOv5, algunas personas tienen una actitud positiva hacia él y otras tienen una actitud negativa hacia él. En mi opinión, todavía hay muchos lugares para aprender en el algoritmo de detección de YOLOv5. Aunque estas ideas de mejora parecen relativamente simples o falta de innovación, definitivamente pueden mejorar el rendimiento del algoritmo de detección. De hecho, la industria a menudo prefiere usar estos métodos en lugar de utilizar un algoritmo supercomplejo para obtener una alta precisión de detección.

Seis YOLOv5


YOLOv5 es un algoritmo de detección de objetivos de una sola etapa. El algoritmo agrega algunas nuevas ideas de mejora basadas en YOLOv4, lo que mejora en gran medida su velocidad y precisión. Las principales ideas de mejora son las siguientes:

Entrada final: en la fase de entrenamiento del modelo, se proponen algunas ideas de mejora, que incluyen principalmente la mejora de datos de mosaico, el cálculo del cuadro de anclaje adaptativo y la escala de imagen adaptativa; red de referencia: integración de algunas ideas nuevas
en otros algoritmos de detección, que incluyen principalmente: estructura de enfoque y CSP estructura;
Red de cuello: la red de detección de objetivos a menudo inserta algunas capas entre BackBone y la capa de salida final de Head, y la estructura FPN+PAN se agrega en Yolov5; Capa de salida de Head: El mecanismo de cuadro de anclaje
de la capa de salida es el mismo que YOLOv4, la mejora principal ¿Cuál es la función de pérdida GIOU_Loss durante el entrenamiento y DIOU_nms para la detección de cuadros de predicción?
6.2 Explicación detallada del algoritmo YOLOv5
6.2.1 Arquitectura de red YOLOv5

La figura anterior muestra el diagrama de bloques general del algoritmo de detección de objetivos YOLOv5. Para un algoritmo de detección de objetivos, generalmente podemos dividirlo en 4 módulos generales, que incluyen: terminal de entrada, red de referencia, red de cuello y terminal de salida de cabeza, correspondientes a los 4 módulos rojos en la figura anterior. El algoritmo YOLOv5 tiene cuatro versiones, que incluyen: YOLOv5s, YOLOv5m, YOLOv5l y YOLOv5x. Este artículo se centra en YOLOv5s, y otras versiones profundizan y amplían la red sobre la base de esta versión.

Entrada: la entrada representa la imagen de entrada. El tamaño de la imagen de entrada de la red es 608*608, y esta etapa generalmente incluye una etapa de preprocesamiento de imágenes, que consiste en escalar la imagen de entrada al tamaño de entrada de la red y realizar operaciones como la normalización. En la fase de entrenamiento de la red, YOLOv5 utiliza operaciones de mejora de datos de Mosaic para mejorar la velocidad de entrenamiento del modelo y la precisión de la red, y propone un método de cálculo de marco de anclaje adaptativo y escalamiento de imagen adaptativo.
Red de referencia: la red de referencia suele ser una red de clasificadores con un rendimiento excelente, y este módulo se utiliza para extraer algunas representaciones de características generales. No solo se utiliza la estructura CSPDarknet53 en YOLOv5, sino que también se utiliza la estructura Focus como red de referencia.
Red de cuello: la red de cuello generalmente se ubica en el medio de la red de referencia y la red principal, y puede mejorar aún más la diversidad y la solidez de las características. Aunque YOLOv5 también usa el módulo SPP y el módulo FPN+PAN, los detalles de implementación son algo diferentes.
Terminal de salida del cabezal: el cabezal se utiliza para completar la salida de los resultados de detección de objetivos. Para diferentes algoritmos de detección, el número de ramas en el extremo de salida es diferente, y generalmente incluye una rama de clasificación y una rama de regresión. YOLOv4 usa GIOU_Loss para reemplazar la función Smooth L1 Loss, mejorando así aún más la precisión de detección del algoritmo.
6.2.2 Componentes básicos de YOLOv5
El módulo CBL-CBL consta de la función de activación Conv+BN+Leaky_relu, como se muestra en el módulo 1 de la figura anterior.
Unidad res: aproveche la estructura residual en la red ResNet para construir una red profunda. CBM es un submódulo en el módulo residual, como se muestra en el módulo 2 en la figura anterior.
CSP1_X: en referencia a la estructura de la red CSPNet, este módulo está compuesto por el módulo CBL, el módulo Res unint, la capa de convolución y Concate, como se muestra en el módulo 3 de la figura anterior.
CSP2_X-Refiriéndose a la estructura de la red CSPNet, este módulo está compuesto por una capa convolucional y un módulo X Res unint Concate, como se muestra en el módulo 4 de la figura anterior.
Focus: como se muestra en el módulo 5 de la figura anterior, la estructura Focus primero combina los resultados de varios cortes y luego los envía al módulo CBL.
SPP: utiliza métodos de agrupación máximos de 1 × 1, 5 × 5, 9 × 9 y 13 × 13 para la fusión de características de múltiples escalas, como se muestra en el módulo 6 en la figura anterior.
6.2.3 Explicación detallada de los detalles de entrada
Mejora de datos de mosaico: YOLOv5 todavía usa el método de mejora de datos de mosaico en la etapa del modelo de entrenamiento, que se mejora sobre la base del método de mejora de datos de CutMix. CutMix solo usa dos imágenes para el empalme, mientras que el método de mejora de datos Mosaic usa cuatro imágenes, que se empalman de acuerdo con la escala aleatoria, el recorte aleatorio y la disposición aleatoria. El efecto específico se muestra en la figura a continuación. Este método de mejora puede combinar varias imágenes en una, lo que no solo enriquece el conjunto de datos, sino que también mejora en gran medida la velocidad de entrenamiento de la red y reduce los requisitos de memoria del modelo.

Cálculo del cuadro de anclaje adaptativo: en la serie de algoritmos YOLOv5, para diferentes conjuntos de datos, es necesario establecer cuadros de anclaje de longitud y ancho específicos. En la fase de entrenamiento de la red, el modelo genera el marco de predicción correspondiente basado en el marco de anclaje inicial, calcula la brecha entre este y el marco GT y realiza una operación de actualización inversa para actualizar los parámetros de toda la red, por lo que el punto de anclaje inicial se establece El marco es también una parte crucial. En los algoritmos de detección YOLOv3 y YOLOv4, cuando se entrenan diferentes conjuntos de datos, el cuadro de anclaje inicial se obtiene ejecutando un programa separado. YOLOv5 incorpora esta función en el código y calcula el mejor cuadro de anclaje de forma adaptativa según el nombre del conjunto de datos durante cada entrenamiento. Los usuarios pueden desactivar o activar la función según sus propias necesidades. El comando específico es parser. add_argument( '–noautoanchor', action='store_ true', help='disable autoanchor check'), si necesita abrirlo, solo necesita agregar la opción –noautoanchor o al entrenar el código.
Escalado adaptativo de imágenes: para diferentes algoritmos de detección de objetivos, generalmente necesitamos realizar operaciones de escalado de imágenes, es decir, escalar la imagen de entrada original a un tamaño fijo y luego enviarla a la red de detección. Los tamaños comúnmente utilizados en los algoritmos de la serie YOLO incluyen 416*416, 608*608 y otros tamaños. Hay algunos problemas en el método de escalado original. Debido a que muchas imágenes en uso real tienen diferentes relaciones de aspecto, después de escalar y rellenar, el tamaño de los bordes negros en ambos extremos es diferente. Sin embargo, si hay demasiado relleno, habrá una gran cantidad de redundancia de información, lo que afecta la velocidad de razonamiento de todo el algoritmo. Para mejorar aún más la velocidad de razonamiento del algoritmo YOLOv5, el algoritmo propone un método que puede agregar de forma adaptativa el borde menos negro a la imagen ampliada.
6.2.4 Detalles de la red de referencia
Estructura de enfoque: la idea principal de esta estructura es recortar la imagen de entrada a través de la operación de corte. Como se muestra en la figura a continuación, el tamaño de la imagen de entrada original es 608*608*3, después de las operaciones Slice y Concat, se genera un mapa de características de 304*304*12; luego, una capa Conv con 32 canales (el número de canales es solo Para la estructura YOLOv5s, otras estructuras cambiarán en consecuencia), genera un mapa de características de tamaño 304*304*32.

 

En la estructura de red CSP estructura-YOLOv4, se toma prestada la idea de diseño de CSPNet, y solo la estructura CSP está diseñada en la red troncal. En YOLOv5 se diseñan dos estructuras CSP, tomando como ejemplo la red YOLOv5s, la estructura CSP1_X se aplica a la red troncal Backbone, y la otra estructura CSP2_X se aplica a la red Neck. Los detalles de implementación de los módulos CSP1_X y CSP2_X se muestran en 3.1.
6.2.5 Explicación detallada de los detalles de la red Neck
FPN+PAN-YOLOv5 La red Neck todavía usa la estructura FPN+PAN, pero se han hecho algunas mejoras en base a ella. En la estructura Neck de YOLOv4, se usan operaciones de convolución ordinarias. En la red Neck de YOLOv5, se adopta la estructura CSP2 diseñada con referencia a CSPnet para fortalecer la capacidad de fusión de características de la red. La siguiente figura muestra los detalles específicos de la red Neck de YOLOv4 y YOLOv5. En comparación, podemos encontrar: (1) El área gris indica la primera diferencia. YOLOv5 no solo usa la estructura CSP2_\1 para reemplazar parte del módulo CBL , pero también elimina el Módulo CBL inferior; (2) El área verde indica la segunda diferencia. YOLOv5 no solo reemplaza el módulo CBL después de la operación Concat con el módulo CSP2_1, sino que también reemplaza la posición de otro módulo CBL; (3) El el área azul indica la tercera diferencia. , el módulo CBL original se reemplaza con el módulo CSP2_1 en YOLOv5.

7. YOLOv6


YOLOv6 es un marco de detección de objetivos desarrollado por el Departamento de Inteligencia Visual de Meituan, dedicado a aplicaciones industriales. Este marco se enfoca en la precisión de detección y la eficiencia de inferencia al mismo tiempo. Entre los modelos de tamaño comúnmente utilizados en la industria: YOLOv6-nano tiene una precisión de 35.0% AP en COCO y una velocidad de inferencia de 1242 FPS en T4; YOLOv6-s en COCO La precisión puede alcanzar el 43,1% AP y la velocidad de inferencia puede alcanzar los 520 FPS en T4. En términos de implementación, YOLOv6 admite la implementación de diferentes plataformas como GPU (TensorRT), CPU (OPENVINO), ARM (MNN, TNN, NCNN), lo que simplifica enormemente el trabajo de adaptación durante la implementación del proyecto.

La precisión y la velocidad superan con creces el nuevo marco de YOLOv5 y YOLOX

Como tecnología básica en el campo de la visión por computadora, la detección de objetivos ha sido ampliamente utilizada en la industria, entre ellos, la serie de algoritmos YOLO se ha convertido gradualmente en el marco preferido para la mayoría de las aplicaciones industriales debido a su mejor rendimiento integral. Hasta ahora, la industria ha derivado muchos marcos de detección de YOLO, entre los cuales YOLOv5, YOLOX y PP-YOLOE son los más representativos, pero en el uso real, encontramos que los marcos anteriores todavía tienen mucho margen de mejora en términos de velocidad y exactitud. En base a esto, hemos desarrollado un nuevo marco de detección de objetivos: YOLOv6 mediante la investigación y el aprovechamiento de las tecnologías avanzadas existentes en la industria. El marco admite los requisitos de aplicaciones industriales de toda la cadena, como el entrenamiento de modelos, el razonamiento y la implementación multiplataforma, y ​​ha realizado muchas mejoras y optimizaciones a nivel de algoritmo, como la estructura de red y la estrategia de entrenamiento. tiene precisión y velocidad Superando otros algoritmos con el mismo volumen, los resultados relevantes se muestran en la figura a continuación:

YOLOv6 ha realizado muchas mejoras en la columna vertebral, el cuello, la cabeza y las estrategias de entrenamiento:

Diseño unificado de Backbone y Neck más eficientes: Inspirados en la idea de diseño de una red neuronal consciente del hardware, una red backbone reparable y más eficiente EfficientRep Backbone y Rep-PAN Neck están diseñados en base al estilo RepVGG.

Se optimizó el diseño de un cabezal desacoplado eficiente más conciso y efectivo, lo que reduce aún más la sobrecarga de demora adicional causada por los cabezales desacoplados generales mientras se mantiene la precisión.

En la estrategia de entrenamiento, adoptamos el paradigma Anchor-free, complementado con la estrategia de asignación de etiquetas SimOTA y la pérdida de regresión del cuadro delimitador SIoU para mejorar aún más la precisión de detección.

7.1 Diseño de red troncal amigable con el hardware
La columna vertebral y el cuello utilizados por YOLOv5/YOLOX se basan en CSPNet[5] y adoptan una estructura residual y de múltiples ramas. Para hardware como GPU, esta estructura aumentará la demora hasta cierto punto, mientras reduce la tasa de utilización del ancho de banda de la memoria. La siguiente figura es una introducción al modelo de línea de techo en el campo de la arquitectura informática, que muestra la relación entre la potencia informática y el ancho de banda de la memoria en el hardware.

Por lo tanto, rediseñamos y optimizamos Backbone and Neck basándonos en la idea del diseño de redes neuronales conscientes del hardware. Esta idea se basa en las características del hardware, las características del marco de razonamiento/marco de compilación, y toma como principio de diseño el hardware y la estructura compatible con el compilador. Al construir la red, considere exhaustivamente la potencia informática del hardware, el ancho de banda de la memoria, características de optimización de compilación, capacidades de representación de red, etc., y luego Obtenga una estructura de red rápida y buena. Para los dos componentes de detección rediseñados mencionados anteriormente, los llamamos EfficientRep Backbone y Rep-PAN Neck respectivamente en YOLOv6, y sus principales contribuciones son:

Se introduce la estructura de estilo RepVGG[4].
Backbone y Neck se rediseñan en base a la idea de la percepción del hardware.
La estructura RepVGG Style es una estructura reparametrizable que tiene una topología de múltiples ramas durante el entrenamiento y se puede fusionar de manera equivalente en una sola convolución de 3x3 durante el despliegue real (el proceso de fusión se muestra en la figura a continuación). A través de la estructura convolucional 3x3 fusionada, puede utilizar de manera eficaz la potencia informática del hardware (como GPU) y también puede obtener la ayuda del marco de compilación NVIDIA cuDNN e Intel MKL altamente optimizado en GPU/CPU.

Los experimentos muestran que a través de la estrategia anterior, YOLOv6 reduce la demora en el hardware y mejora significativamente la precisión del algoritmo, lo que hace que la red de detección sea más rápida y más fuerte. Tomando el modelo de tamaño nano como ejemplo, en comparación con la estructura de red adoptada por YOLOv5-nano, este método aumenta la velocidad en un 21 % y la precisión aumenta en un 3,6 % AP.

Backbone EfficientRep: En términos de diseño de Backbone, diseñamos un Backbone eficiente basado en el operador Rep anterior. En comparación con el CSP-Backbone utilizado por YOLOv5, el Backbone puede utilizar de manera eficiente la potencia informática del hardware (como GPU) y tiene una gran capacidad de representación.

La siguiente figura es el diagrama de estructura de diseño específico de EfficientRep Backbone.Reemplazamos la capa Conv ordinaria con stride=2 en Backbone con la capa RepConv con stride=2. Al mismo tiempo, el CSP-Block original se rediseña como RepBlock, en el que el primer RepConv de RepBlock hará la transformación y alineación de la dimensión del canal. Además, optimizamos el SPPF original en un SimSPPF más eficiente.

Rep-PAN: En términos de diseño de cuello, para hacer que su razonamiento sobre el hardware sea más eficiente y lograr un mejor equilibrio entre precisión y velocidad, diseñamos una red de fusión de funciones más efectiva para YOLOv6 basada en la idea de diseño de hardware- estructura de red neuronal consciente.

Rep-PAN se basa en la topología PAN, reemplazando el CSP-Block utilizado en YOLOv5 con RepBlock y, al mismo tiempo, ajustando los operadores en el cuello general, el propósito es lograr un razonamiento eficiente en el hardware mientras se mantiene una mejor escala múltiple. cuenta con capacidad Fusion (el diagrama de estructura Rep-PAN se muestra en la siguiente figura).

7.2 Cabezal desacoplado más conciso y eficiente
En YOLOv6, adoptamos la estructura del cabezal desacoplado y simplificamos su diseño. El cabezal de detección del YOLOv5 original se realiza mediante la fusión y el intercambio de ramas de clasificación y regresión, mientras que el cabezal de detección de YOLOX desacopla las ramas de clasificación y regresión, y agrega dos capas convolucionales adicionales de 3x3, aunque se mejora la precisión de detección, pero el el retraso de la red aumenta hasta cierto punto.

Por lo tanto, simplificamos el diseño del cabezal de desacoplamiento, teniendo en cuenta el equilibrio entre las capacidades de representación de los operadores relacionados y la sobrecarga informática en el hardware, y rediseñamos una estructura de cabezal de desacoplamiento más eficiente mediante el uso de la estrategia de canales híbridos. al mismo tiempo, y se alivia la sobrecarga de retardo adicional causada por la convolución 3x3 en el cabezal de desacoplamiento. A través del experimento de ablación en el modelo de tamaño nano, en comparación con la estructura del cabezal de desacoplamiento con el mismo número de canales, la precisión aumenta en un 0,2 % AP y la velocidad aumenta en un 6,8 %.

7.3 Estrategia de capacitación más efectiva
Para mejorar aún más la precisión de la detección, hemos absorbido el progreso de la investigación avanzada de otros marcos de detección en la academia y la industria: Paradigma sin anclaje, estrategia de asignación de etiquetas SimOTA y pérdida de regresión del cuadro delimitador SIoU.

7.3.1 Sin anclaje Paradigma sin anclaje
YOLOv6 adopta un método de detección sin anclaje más conciso. Dado que el detector basado en Anchor necesita realizar un análisis de conglomerados antes del entrenamiento para determinar el conjunto de Anchor óptimo, esto aumentará la complejidad del detector hasta cierto punto; al mismo tiempo, en algunas aplicaciones de extremo, es necesario llevar una gran cantidad de resultados de detección entre hardware Los pasos también traerán retrasos adicionales. El paradigma Anchor-free se ha utilizado ampliamente en los últimos años debido a su gran capacidad de generalización y su lógica de decodificación más sencilla. Después de una investigación experimental sobre Anchor-free, descubrimos que, en comparación con el retraso adicional causado por la complejidad de los detectores basados ​​en Anchor, los detectores Anchor-free tienen un aumento de velocidad del 51 %.

7.3.2 Estrategia de asignación de etiquetas SimOTA
Para obtener más muestras positivas de alta calidad, YOLOv6 presenta el algoritmo SimOTA [4] para asignar dinámicamente muestras positivas para mejorar aún más la precisión de detección. La estrategia de asignación de etiquetas de YOLOv5 se basa en la coincidencia de formas, y el número de muestras positivas aumenta a través de la estrategia de coincidencia de cuadrícula cruzada, de modo que la red pueda converger rápidamente. Sin embargo, este método es un método de asignación estático y no se ajustará durante el proceso de formación de la red.

En los últimos años, han surgido muchos métodos basados ​​en la asignación dinámica de etiquetas. Dichos métodos asignarán muestras positivas de acuerdo con la salida de la red durante el entrenamiento, para generar más muestras positivas de alta calidad y luego promover la optimización positiva de la red. Por ejemplo, OTA obtiene la estrategia óptima de coincidencia de muestras con información global al modelar la coincidencia de muestras como un problema de transmisión óptimo para mejorar la precisión, pero OTA usa el algoritmo Sinkhorn-Knopp para aumentar el tiempo de entrenamiento, mientras que el algoritmo SimOTA[4]. -La estrategia de aproximación K para obtener la mejor coincidencia de la muestra acelera enormemente el entrenamiento. Por lo tanto, YOLOv6 adopta la estrategia de asignación dinámica SimOTA, combinada con el paradigma sin anclaje, la precisión de detección promedio en el modelo de tamaño nano aumenta en un 1,3% AP.

7.3.3 Pérdida de regresión del cuadro delimitador SIoU
Para mejorar aún más la precisión de la regresión, YOLOv6 utiliza la función de pérdida de regresión del cuadro delimitador SIoU para supervisar el aprendizaje de la red. El entrenamiento de la red de detección de objetivos generalmente necesita definir al menos dos funciones de pérdida: pérdida de clasificación y pérdida de regresión del cuadro delimitador, y la definición de la función de pérdida a menudo tiene un gran impacto en la precisión de detección y la velocidad de entrenamiento.

En los últimos años, las pérdidas de regresión de cuadro delimitador comúnmente utilizadas incluyen pérdida IoU, GIoU, CIoU, DIoU, etc. Estas funciones de pérdida miden la relación entre el marco predicho y el marco objetivo al considerar factores como el grado de superposición entre el marco el cuadro objetivo, la distancia entre el punto central y la relación de aspecto. Con el fin de guiar a la red para minimizar la pérdida para mejorar la precisión de la regresión, pero estos métodos no tienen en cuenta la coincidencia de la dirección entre el cuadro de predicción y el cuadro de destino. La función de pérdida SIoU redefine la pérdida de distancia al introducir el ángulo del vector entre las regresiones requeridas, lo que reduce efectivamente el grado de libertad de la regresión, acelera la convergencia de la red y mejora aún más la precisión de la regresión. Al usar la pérdida SIoU en YOLOv6s para experimentos, en comparación con la pérdida CIoU, la precisión de detección promedio aumenta en un 0,3% AP.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Supongo que te gusta

Origin blog.csdn.net/weixin_45303602/article/details/129175854
Recomendado
Clasificación