02- Conocimientos básicos de detección de objetivos y resumen de ideas de optimización (detección de objetivos)

Puntos principales:


Una historia de desarrollo

Las redes de clasificación son la base de la detección de objetos y deben dominarse con soltura.

1.1 Algoritmo tradicional

  • Detector VJ

    Hace 19 años, P. Viola y M. Jones propusieron un nuevo algoritmo de detección, utilizado principalmente en la detección de rostros, que se ejecutaba en una CPU Pentium con una frecuencia principal de 700 MHz, que era cientos de veces más rápido que otros algoritmos en ese momento.

  • Detector de HOG

    Se propuso en 2005 debido a su gran robustez de características y buena adaptabilidad a múltiples escalas.Antes de la aparición del aprendizaje profundo, a menudo se usaba ampliamente en la detección general de objetos.

  • DPM

    DPM es el pináculo de los algoritmos tradicionales , el ganador de la competencia de detección de objetivos VOC-07, 08, 09, y es una extensión del método HOG. Aunque el algoritmo de detección de objetivos actual es mucho más fuerte que DPM, muchas cosas propuestas por DPM todavía se usan ahora, como la minería de casos difíciles y la regresión de Bbox. Por lo tanto, su autor fue galardonado con el "Premio a la Trayectoria" de VOC.

Desarrollos tecnológicos en la detección de dos objetivos

2.1 Primeros métodos tradicionales

Antes del año 2000 , no había una filosofía de detección unificada , y los detectores generalmente se diseñaban en función de algunas características relativamente superficiales, como la composición, la forma, el límite, etc. Más tarde, se desarrollaron métodos de detección basados ​​en el aprendizaje automático durante un período de tiempo, como modelos estadísticos de apariencia, representaciones de características de ondículas y representaciones de gradientes. Los métodos anteriores no se discutirán aquí.

2.2 CNN temprano para la detección de objetivos

Ya en 1990, Yang Lechun (Y. LeCun) ya había comenzado a usar la CNN para la detección de objetivos, pero debido a que el nivel de potencia de cómputo del hardware en ese momento no era suficiente, la estructura de la CNN solo podía diseñarse de manera simple; de ​​lo contrario, no habría No sería un buen hardware Ir a Ejecutar para completar el experimento. Así que siempre pienso que el aprendizaje profundo tiene los logros de hoy, gran parte de los cuales se deben a Nvidia. En ese momento, realicé una serie de experimentos de mejora, como "red neuronal replicada de peso compartido", que es muy similar a nuestra red FCN totalmente convolucional actual.

2.3 Desarrollo tecnológico de la detección multiescala

Los dos principales obstáculos en la tecnología de detección de objetivos son los objetivos de múltiples escalas y los objetivos de tamaño pequeño Estos dos son los problemas que la tecnología de detección de objetivos ha estado resolviendo hasta ahora. La siguiente figura muestra la hoja de ruta de desarrollo técnico de la detección multiescala

La detección multiescala ha pasado por varias etapas:

  • Antes de 2014, presentaba una pirámide con ventana corrediza

    Esto no es para empezar a escribir, interesado en entender el algoritmo VJ.

  • En 2010-2015, la propuesta de objeto se usa primero y luego se detecta

    Este método generalmente divide la detección en dos partes. La primera parte es hacer primero el cuadro de selección, y la segunda parte es clasificar más de acuerdo con el cuadro de selección. El algoritmo basado en el cuadro de selección generalmente tiene las siguientes características: 1. Recordar La tasa es relativamente alta, 2, el consumo de tiempo es relativamente grande. Antes de 2015, si el algoritmo de detección tenía mayor precisión, era básicamente TwoStage.

  • En 2013-2016, la profunda regresión de OneStage directamente , yolo es el más representativo;

    Con la mejora de la potencia informática de la GPU, el tratamiento de las personas de la detección de objetivos de múltiples escalas se ha vuelto cada vez más directo y violento , porque el método de regresión profunda se utiliza para realizar la detección de múltiples escalas. Este método tiene una idea simple y utiliza directamente el aprendizaje profundo. La función para obtener las coordenadas de BBox es muy violenta, similar a la idea de la red de una sola etapa de MTCNN. Entrenamiento violento, retorno violento . Sus ventajas son obvias, la idea es simple, siempre que haya una GPU, se puede reproducir, pero también hay desventajas, es decir, la precisión de posicionamiento no es alta, especialmente para objetivos pequeños.

  • Después de 2016, es detección de multi-referencia/resolución

    Para la detección de objetivos multiescala, el método más popular es Multi-referencia.La idea principal es predefinir un conjunto de cuadros de referencia, como los cuadros de anclaje de uso frecuente, que tienen diferentes tamaños y factores de escala, y luego se basa el detector. en estas casillas. , para hacer cálculos. La pérdida de este tipo de algoritmo generalmente se compone de dos partes, la primera es la pérdida de posicionamiento , y la otra es la pérdida de clasificación , después de la suma ponderada de las dos es la pérdida de detección de objetivo final, como se muestra en la figura a continuación. La pérdida por clasificación es generalmente entropía cruzada, la pérdida por posicionamiento es generalmente L2 y la suma ponderada de las dos.

2.4 Desarrollo técnico de la regresión de cuadro delimitador

La regresión de Bbox es muy importante para mejorar la precisión de posicionamiento de la detección de objetivos. Es principalmente para corregir la posición de bbox en función de las propuestas.

Como se muestra en la figura anterior, la regresión BBOX también ha pasado por varias etapas.

  • Sin regresión BBox

    En los algoritmos de detección temprana, no se utilizó la regresión bbox, y el método de ventana deslizante se utilizó directamente para el posicionamiento.

  • Obtener BBox del mapa de características

    Dado que FastRCNN , la regresión de BBox ya no es un programa separado, sino que se puede integrar directamente en CNN para una capacitación integral, por lo que habrá un mapa de funciones para BBox. Por ejemplo, la función smooth-L1 de fastRCNN

2.5 Desarrollo técnico de NMS

nms es un medio técnico muy importante. Si hay varios fotogramas detectados en el mismo objetivo, NMS puede optimizar según la puntuación de cada fotograma y eliminar algunos fotogramas sobrantes.

NMS tiene los siguientes tres tipos:

  • Selección codiciosa

    Este es un método NMS con una larga historia, y también es el método más utilizado en la detección de objetivos. Primero ordene las cajas detectadas por el detector de acuerdo con el puntaje de confianza, luego calcule los valores de iou de todas las cajas y luego establezca un umbral. Si es más alto que el umbral establecido, mantenga la caja con alta confianza y deséchela . cajas inferiores, etc.

  • Aprendiendo a NMS

    La idea de este método es que el umbral de nms también debe ser un parámetro perteneciente al entrenamiento de la red, y no puede fijarse en un valor fijo. Por ejemplo, hay un artículo llamado NMS suave, es solo para modificar el algoritmo nms y aplicarlo en el RCNN más rápido para aumentar el punto en el conjunto de prueba. Establecer el umbral de nms para ser aprendido científicamente está más en línea con la idea de end2end desde otra perspectiva, y también es mejor en teoría.

2.6 Desarrollo técnico de la minería de muestras difíciles

¿Qué significa muestra dura? En el proceso de entrenamiento de aprendizaje profundo de detección de objetivos, la proporción de muestras positivas y negativas en realidad está desequilibrada, porque los datos etiquetados son muestras positivas y el número debe ser fijo.Para garantizar el equilibrio de muestras positivas y negativas, un cierta imagen de fondo se seleccionará como muestras negativas, pero el conjunto de muestras de la imagen de fondo es un conjunto abierto y es imposible participar en todo el entrenamiento. Por lo tanto, es necesario extraer muestras que sean difíciles de entrenar durante el proceso de entrenamiento y entrenar con una mayor pérdida para promover la capacidad de generalización del modelo.

例如SSD算法中,仅仅是将一小部分的样本做反向传播,这些小部分样本都是loss值比较高的,这就是证明不好训练的样本,多学习几次,增加模型的泛化能力。

三、目标检测的加速

一个算法从被设计出来,其目的就是为了产生价值的,并不是停留在学术界的文章中,必定是要被工业界拿来项目落地的。所以一个目标检测算法的推理时间对于工业界落地至关重要。

算法的加速,归根结底就是计算机的运算次数变少,但是精度不能丢。常用的几种加速方法如下

  • 特征图共享计算

    在目标检测算法中,特征提取阶段往往耗时往往最多。在特征图共享计算里面分为两种,第一种是空间计算冗余加速,第二种是尺度计算冗余加速。这里不展开讲。

  • 分类器加速

    早期目标检测中,是提取特征加上分类器这样一个套路来进行目标检测的,分类器一般是线性分类器,但是线性分类器没有非线性分类器效果好,例如svm就是非线性的,所以加速分类器的运行也是提升检测算法速度的一个方法。

  • 级联检测器

    级联检测器可以很好的将计算耗时固定在一个比较小的范围,采用多个简单的检测,然后将其级联,从粗到细的过滤,例如cascade haar,MTCNN都是级联结构的

  • 网络剪枝和量化

    网络剪枝和量化是目前模型压缩中非常常用的两种方法,也是做加速非常热门的方向。

    • 剪枝的意思就是在原来网络结构的基础上,对于一些网络结构进行修剪,在尽量不影响精度的前提下降低网络的计算量,例如减少通道数,合并网络层参数等等。
    • 网络量化的常用操作就是将原来浮点型的计算量化为定点运算,甚至于变为与或运算,这样大大降低网络的运算量,并且可以非常方便地部署到嵌入式设备上。
    • La destilación de red significa destilar el "conocimiento" aprendido de una red relativamente compleja y "enseñar" a una red relativamente pequeña a aprender , de modo que la precisión de la red pequeña sea relativamente alta y el tiempo de cálculo sea relativamente pequeño . El entendimiento popular es que la "red de maestros" guía la capacitación de la "red de estudiantes" y finalmente utiliza la "red de estudiantes" para implementar aplicaciones.
  • Diseño de red ligero

    El diseño de red liviano es actualmente el método de aceleración más popular, y nuestro diseño común de mobileNet es un representante típico de este diseño de red liviano. Aquí también hay varios métodos de uso común.

    • Descomponga la convolución y descomponga el núcleo de convolución grande en varios núcleos de convolución pequeños, de modo que se reduzca la cantidad de parámetros operativos. Por ejemplo, un núcleo de convolución 7x7 se puede descomponer en tres núcleos de convolución 3x3. Sus campos receptivos son los mismos y la cantidad de cálculo es menor. Por ejemplo, un núcleo de convolución kxk se puede descomponer en un volumen kx1 y 1xk. El producto kernel tiene el mismo tamaño de salida, pero la cantidad de cálculo es diferente
    • Convolución de grupo , en el caso de memoria de hardware insuficiente en los primeros días, la convolución de grupo a menudo se usa para reducir la cantidad de cálculo, dividir los canales de características en diferentes n grupos y luego calcularlos por separado
    • La convolución separable en profundidad, la convolución separable en profundidad , se propuso por primera vez en mobileNet, lo que reduce en gran medida la cantidad de cálculo en el proceso de convolución. Separe la información de profundidad de la convolución ordinaria y luego use la convolución 1x1 para restaurar la dimensión, lo que reduce la cantidad de cálculo y reorganiza el canal del mapa de características hasta cierto punto, y el efecto de aceleración es muy bueno.
    • El diseño de cuello de botella se utiliza a menudo en el diseño de redes ligeras. Por ejemplo, mobileNetV2 utiliza una capa anti-cuello de botella para diseñar la red.
    • Neural Architecture Search , o NAS para abreviar, ha sido muy popular desde la llegada de AutoML en 2018. Esta pequeña estructura de red se crea automáticamente mediante capacitación. Limite un espacio de búsqueda para la máquina y deje que la máquina aprenda a construir una red universitaria por sí misma.De los resultados actuales, la estructura buscada por NAS es más eficiente que la red construida manualmente. Por ejemplo , mobileNetV3, eficienteNet .

4. Los últimos avances en detección de objetivos

4.1 Usar un mejor motor

Una parte muy importante del detector es la red troncal para la extracción de características Si el rendimiento de la red troncal es excelente, el efecto del detector también será bueno. Por ejemplo, las redes troncales de FasterRCNN, SSD y RFCN son VGG o resnet . Si existe un requisito de tiempo de inferencia, generalmente se selecciona una red liviana como red troncal. Por ejemplo, mobileNet-ssd es un algoritmo de detección SSD con mobileNet como red troncal. Por lo tanto, la red troncal tiene una gran influencia en la precisión del tiempo.

  • VGG , propuesto en 2014, tiene dos estructuras, 16 capas y 19 capas, llamadas VGG16 y VGG19 respectivamente. La convolución 3x3 se usa en la red VGG en lugar de 5x5 y 7x7 .
  • GoogleNet , como su nombre indica, esta red fue propuesta por Google, que aumentó la cantidad de capas de red a 22 capas y agregó una capa BN a la red para facilitar la convergencia de la capacitación.
  • Resnet , la estructura de red residual , se propuso en 2015. Su estructura es altamente personalizada y se puede construir desde 10 capas hasta 152 capas. Resuelve principalmente el problema de la degradación del entrenamiento de la red. Después de agregar la estructura residual, la red no seguirá como el número de capas aumenta, se produce un sitio degradado .
  • DenseNet se modifica sobre la base de la red residual. El residual tiene un enlace de atajo , y el bloque denseNet es que todas las capas anteriores están vinculadas a la última capa, por lo que es un enlace denso .

4.2 Uso de mejores funciones

La calidad de la expresión de características también juega un papel clave en la detección de objetivos.Actualmente, algunos artículos están buscando una mejor manera de expresar las características de la imagen. Tales como funciones de fusión, funciones de alta resolución .

La equivarianza y la invariancia son dos indicadores importantes de la expresión de las características de la imagen. La equivarianza es muy importante cuando se aprende la representación de información semántica, pero la invariancia se vuelve muy importante cuando se orienta, por lo que a menudo se requiere realizar la fusión de características.

En una CNN profunda que contiene una serie de convoluciones y agrupaciones , las características profundas a menudo tienen una fuerte invariancia y falta de homogeneidad. Aunque esto puede lograr un buen efecto de clasificación, se perderá la precisión de posicionamiento. Es fácil entender que, aunque las características superficiales aprenden poca información semántica, pueden ayudar al posicionamiento porque contienen mucha información sobre límites y contornos , por lo que es necesario fusionar las características superficiales y profundas.

En general, existen dos métodos para la fusión de funciones , el primero es el flujo de procesamiento y el segundo es la operación por elementos.

  • El flujo de procesamiento , similar a la arquitectura de SSD, fusiona mapas de características en diferentes niveles para adaptarse a la detección de objetivos de diferentes tamaños, utiliza enlaces de salto para dibujar y luego fusiona características
  • Operación por elementos , este método es muy simple, es simplemente agregar y multiplicar cada elemento en el mapa de características y fusionarlo violentamente

Hay otro mejor método de expresión de características, que consiste en aumentar la resolución del mapa de características , lo que significa que el mapa de características tiene un campo receptivo más grande en la imagen original, lo que también mejora en gran medida la capacidad de detección.

4.3 Más que ventanas correderas

Muchos métodos se basan en propuestas o métodos de anclaje para la detección de objetivos, pero el ancla libre es muy popular recientemente , es decir, la detección de objetivos se considera un problema de detección de puntos clave, porque un objetivo se puede expresar como las coordenadas de la esquina superior izquierda y la esquina inferior derecha Rodeado por un marco rectangular, por lo que este tipo de problema se puede convertir en un problema de posicionamiento que no depende del ancla

4.4 Mejora de la capacidad de posicionamiento del objetivo

En general, hay dos formas de mejorar las capacidades de posicionamiento :

  • Vuelva a corregir bbox , el refinamiento de bbox se usa a menudo para agregar una nueva rama en cnn para reubicar la posición de Bbox.
  • Rediseñe la función de pérdida , porque la mayor parte del diseño actual de la función de pérdida es obtener la pérdida de posicionamiento mediante el cálculo de IoU , por lo que la idea de end2end aún está un poco lejos. Si se puede rediseñar una función de pérdida para representar mejor el error de posicionamiento , De esta manera, el proceso de formación será mejor.

4.5 Aprendizaje de señales con supervisión semántica

Durante el proceso de entrenamiento, todo lo que marcamos son cuadros rectangulares , y alguna información de fondo está más o menos marcada en los cuadros rectangulares.Si no hay información semántica, entonces este tipo de entrenamiento en realidad no es perfecto. Incluso algunos objetos tienen formas extrañas, como un gato y un tren muy largo.Si se calcula IoU, el resultado del cálculo no puede representar bien el error de posicionamiento. Si entrena con información semántica , use una función de pérdida de tareas múltiples , que puede ayudar a la red a aprender bien.

4.6 Entrenamiento desde cero

Antes del entrenamiento actual de la red de aprendizaje profundo, la red troncal se entrena previamente en imageNet , porque el conjunto de datos de ImageNet es lo suficientemente grande y, después del entrenamiento previo, se ajusta con precisión en el conjunto de datos de detección de objetivos, que convergerá fácilmente. Pero ImageNet es una tarea de clasificación y puede que no se adapte tan bien a la detección de objetivos. Recientemente, hay artículos sobre cómo comenzar a entrenar desde cero y mejorar la precisión, por ejemplo, DSOD es un muy buen ejemplo.

4.7 Entrenamiento adversario

La aplicación de la idea de GAN a la detección de objetivos puede mejorar especialmente la tasa de detección de objetivos pequeños y objetivos superpuestos.Al reducir el rango de expresión entre objetivos pequeños y objetivos grandes, la red de confrontación genera una máscara de objetos abarrotados , que se reduce directamente en el capa de características El hacinamiento puede causar ataques adversarios y mejorar las capacidades de aprendizaje de la red.

4.8 Aprendizaje poco supervisado

La recopilación de conjuntos de datos de detección de objetivos requiere mucha mano de obra para etiquetar. El entrenamiento de la detección de objetivos a través del aprendizaje supervisado débil solo necesita etiquetarse a nivel de imagen, y un detector de objetivos se puede entrenar sin etiquetar en la capa bbox.

Supongo que te gusta

Origin blog.csdn.net/March_A/article/details/130542302
Recomendado
Clasificación