Cómo abordar el problema de la clasificación multicapa utilizando el aprendizaje profundo

Yo abordaría esto de manera similar al enfoque de Conner Davis. La idea es que se trata de automóviles y esos automóviles tienen diferentes marcas y diferentes poses, por lo que viene a la mente un árbol de decisión. Pero espera un segundo, ¿un árbol de decisión? Sí, pero no es el típico árbol de decisión, sigue leyendo.

Entonces, el enfoque es utilizar un método de curso a fin utilizando una estructura similar a un árbol de decisión, el detector de automóviles es el detector de raíz que se ramifica en el detector de pose de automóviles. El detector de pose tiene salidas [math] p [/ math] que representan el número de ramas en ese nodo. Cada una de las salidas [math] p [/ math] conduce al detector de marca (cada pose de vista necesita un detector de marca separado, es decir, la vista frontal, la vista lateral y la vista posterior necesitan detectores de marca separados) que se divide en [math] b [/ math ] salidas que representan las marcas [math] b [/ math]. Eso significa que necesitará detectores de marca [math] p [/ math]. El camino a través de esta estructura de árbol le dará la respuesta que está buscando.

Una ilustración simplificada es como se muestra a continuación:

detector de coche-> detector de pose-> detector de marca

El detector de automóviles se puede implementar utilizando la red de propuesta de región (RPN) como se usa en el enfoque Faster R-CNN. Llamémosla la red de propuestas de automóviles (CPN) porque está específicamente limitada a la detección de automóviles. Este CPN tendrá que alimentarse del mapa de características de conv de alto nivel de AlexNet, por ejemplo. Básicamente comprende dos pequeñas redes neuronales completamente conectadas (NN), la red de regresión para la regresión de cuadro delimitador y el clasificador de automóvil que da la probabilidad de que un automóvil esté allí o no. Se alimenta desde una pequeña ventana deslizante muestreada (3 × 3) sobre el mapa de características de alto nivel. Por lo tanto, la salida del CPN será regresiones de cuadro delimitador [math] k [/ math] con los anclajes correspondientes que varían en términos de relación de aspecto y escala.

El CPN identificará posibles regiones de interés que tienen una alta probabilidad de contener un vehículo. Dichas regiones pueden enviarse además al detector de pose. Llamemos al estimador de pose, la red de pose (PN), si tiene poses [math] p [/ math] eso significa que las salidas [math] p [/ math] provienen de la PN.

El PN también es básicamente un NN completamente conectado que se alimenta del mismo mapa de características de conv que el CPN pero que se enfoca en las regiones muestreadas propuestas en una red pre-entrenada como AlexNet. La PN necesita una función de activación softmax porque cada automóvil solo puede estar en una de las posturas [math] p [/ math]. El softmax hará que las salidas compitan. Por lo tanto, la PN generará probabilidades relacionadas con las poses del automóvil.

Para cada pose, entrene un detector de marca de automóvil por separado. Entonces, si tiene marcas [math] b [/ math], eso significa resultados [math] b [/ math] por pose. Pongamos el nombre del detector de marca como la red de marca (BN), que básicamente es también una alimentación NN completamente conectada, también desde el mismo mapa de características de conv. Que las redes CPN y PN. Tendrá que entrenar [matemática] p [/ matemática] redes BN separadas. Al igual que el PN, el BN necesita una función de activación softmax para generar también la probabilidad de la marca.

Entonces, esta es una arquitectura compleja que requiere que cada módulo se entrene por separado.

Por ejemplo, si tiene una imagen de entrada que contiene una vista frontal del sedán. El proceso será como.

  1. El CPN encontrará la posición del automóvil, pero no tendrá idea de la pose o la marca. Solo se procesan más las regiones prometedoras, es decir, aquellas con alta probabilidad de contener un automóvil.
  2. La PN determinará la pose que es la vista frontal en este caso. Pero no tendrá idea de la marca del automóvil.
  3. La última etapa implicará solo ejecutar el detector de marca de vista frontal, mientras que la vista lateral, la vista posterior y otros detectores de marca se suprimirán.

Es por eso que esta arquitectura se basa en un árbol de decisión. El CPN tiene dos ramas, una es un callejón sin salida, lo que significa que no hay automóvil presente, mientras que la otra conduce al nodo PN que tiene p ramas que conducen a una red BN especializada para esa vista.

Dicho esto, este es un problema interesante y espero que haya sido igualmente una discusión interesante.

Espero que esto ayude.

Tienes varias opciones. Me atendré a los más fáciles de implementar para esta respuesta.

La forma más fácil

Entrene una red para clasificar el tipo de automóvil y luego use las características de la última capa o una capa anterior para entrenar un SVM para el ángulo de visión y la marca. Sin embargo, esto no funcionará demasiado bien para la marca. Consulte la sección “Cómo lo haría” para encontrar una forma de remediar esto.

La forma “bastante fácil y general, pero también extraña”:

Trate cada salida como una clasificación binaria para determinar si se aplica o no una etiqueta. La red aprenderá naturalmente la correlación entre las etiquetas, pero aún así obtendrá algunas imágenes clasificadas como Toyota y Honda.

Más difícil pero probablemente mejor:

Si sus etiquetas caen en diferentes categorías de la manera en que lo hacen en su ejemplo (tipo de automóvil, marca, ángulo de visión), entonces podría usar 3 activaciones de softmax separadas para elegir la etiqueta adecuada en cada categoría. Eso significa una función de pérdida híbrida que puede ser difícil de pesar adecuadamente. Una función de pérdida híbrida es solo la suma ponderada de múltiples funciones de pérdida. Si hay otras etiquetas que no están en ninguna categoría, podría incluir una regresión logística para ellas, pero comenzará a complicarse.

Cómo lo haría:

Estoy haciendo algunas suposiciones acerca de su conjunto de datos que pueden no ser ciertas, pero que probablemente den sus ejemplos.

La marca generalmente será fácil. Todas las marcas tienen sus propios logotipos que serán visibles en la mayoría de las imágenes, ciertamente en fotos hechas profesionalmente como su ejemplo. Usaría características analíticas (en este caso, probablemente Histograma de color e Histograma de gradientes orientados) para encontrar el logotipo, luego recortaría esa región y clasificaría el logotipo (las características analíticas también funcionarán aquí, pero también lo hará un simple convenet).

Luego usaría la marca como entrada complementaria a la CNN principal que determina el tipo de automóvil utilizando una pérdida softmax. Finalmente, determinaría la vista entrenando a un SVM sobre características extraídas de la CNN.

Hay varias buenas respuestas aquí. Me gustaría compartir algunos de mis pensamientos sobre este tema.

Si está trabajando con imágenes, es difícil superar el rendimiento de las CNN (redes neuronales convolucionales). Ya se ha realizado un trabajo significativo en la clasificación de etiquetas individuales utilizando CNN. Usted mencionó ajustar AlexNet; Ese podría ser un buen punto de partida.

Una manera fácil de aprovechar este trabajo existente en su caso es capacitar a varios clasificadores, un clasificador para cada etiqueta. Este es un truco fácil para dar resultados razonables. Sin embargo, un problema importante con este enfoque es que los clasificadores funcionarán independientemente unos de otros . Es decir, su red no aprovechará las interdependencias de las etiquetas entre sí.

Esto no necesariamente tiene que ser algo malo. Por ejemplo, si su conjunto de datos tiene imágenes desproporcionadamente altas de hatchbacks de Honda, su red puede saber que si un automóvil es un Honda, hay muchas posibilidades de que sea un hatchback, y viceversa. Por lo tanto, predecirá una correlación entre la marca Honda y el tipo de automóvil hatchback debido a su conjunto de datos sesgado, aunque tal correlación puede no existir.

Para resolver esto, deberá asegurarse de tener un conjunto de datos relativamente equilibrado con respecto a todas las combinaciones de las categorías en todas las etiquetas. Esto puede ser dificil. Esto generalmente significará reunir más datos en su caso, ya que generar datos falsos no es tan simple (si tiene hatchbacks de Honda, no puede generar imágenes de sedanes Honda a partir de eso).

Sin embargo, si desea echar un vistazo a un enfoque que aprovecha las interdependencias entre las etiquetas que utilizan redes neuronales, le sugiero que eche un vistazo a este documento de Min-Ling Zhang que propone el BP-MLL (Backpropagation for Multi-Label Aprendizaje) algoritmo.

Esto no es realmente lo que se entiende por clasificación de múltiples etiquetas. Lo que tienes es una clasificación de salida múltiple.

Una posible tarea de clasificación de etiquetas múltiples sería tener imágenes que contengan varios vehículos diferentes, y debe devolver una lista de todos los vehículos en esa imagen.

En la clasificación de salida múltiple, tiene varias dimensiones de salida que necesita predecir. Esto es exactamente lo que tienes aquí.

¿No puedes modelarlo como 3 clasificadores diferentes? Primero, entrene para el sedán / hatchback, etc. … utilizando la capa final softmax (que puede manejar salidas de clase múltiple). Luego, entrene otro modelo en toyota / honda, etc. y nuevamente use la capa de salida softmax y así sucesivamente. En tiempo de ejecución, invoque los 3 clasificadores en una entrada dada, obtenga la salida deseada y úselas …

Puede codificar etiquetas binarias para sus datos. Por ejemplo, hay un total de 3 marcas de automóviles y en una imagen aparecen 2 de ellas, entonces puede codificar su etiqueta como 101. La última capa de su modelo debe ser múltiples sigmoides en lugar de un softmax. Para afinar, simplemente elimine la última capa y use la que mencioné anteriormente.