Sensibilidad de escala de red neuronal convolucional


11

Por ejemplo, supongamos que estamos construyendo un estimador de edad, basado en la imagen de una persona. A continuación tenemos dos personas en trajes, pero la primera es claramente más joven que la segunda.


(fuente: tinytux.com )

Hay muchas características que implican esto, por ejemplo, la estructura de la cara. Sin embargo, la característica más reveladora es la relación entre el tamaño de la cabeza y el tamaño del cuerpo :


(fuente: wikimedia.org )

Supongamos que hemos entrenado una regresión de CNN para predecir la edad de la persona. En muchos de los predictores de edad que he probado, la imagen anterior del niño parece engañar a las predicciones para que piensen que es mayor, debido al traje y probablemente porque se basan principalmente en la cara:

Me pregunto qué tan bien puede una arquitectura CNN de vainilla inferir la proporción de cabeza a torso.

En comparación con un RCNN regional, que es capaz de obtener cuadros delimitadores en el cuerpo y la cabeza, ¿el CNN de vainilla siempre funcionará peor?

Justo antes del aplanamiento global en la CNN de vainilla (es decir, justo después de todas las convoluciones), cada salida tiene un campo receptivo correspondiente, que debería tener un sentido de escala. Sé que RCNN más rápido explota esto haciendo propuestas de cuadro delimitador exactamente en esta etapa, de modo que todos los filtros convolucionales anteriores entrenan automáticamente a todas las escalas.

Entonces, ¿creo que la CNN de vainilla debería ser capaz de inferir la proporción del tamaño de la cabeza al torso? ¿Es esto correcto? Si es así, ¿es el único beneficio de usar un marco RCNN más rápido para explotar el hecho de que puede haber sido pre-entrenado para detectar personas?


1
¿Sabes dónde falla exactamente tu edad? ¿Por qué crees que es la proporción del tamaño de la cabeza? ¿Viste la salida de las capas intermedias?
Aksakal

@ Aksakal No creo que haya experimentado entrenando una CNN. Por lo que he entendido, ha estado haciendo pruebas con los servicios web existentes: "En muchos de los predictores de edad que he probado [..]".
DeltaIV

Respuestas:


8

En primer lugar, gracias por publicar una pregunta muy interesante.

Para responder a la brevedad, un servicio de comunicación de vainilla entrenado de extremo a extremo para predecir la edad de una foto será generalmente propenso a clasificar erróneamente imágenes como la que publicó . En segundo lugar, tenga en cuenta que estimar con precisión la edad de una persona es una tarea casi imposible 1 .

La principal diferencia con su enfoque propuesto al usar algunos detectores de objetos (ya sea RCNN, Faster RCNN, YOLO o SSD) es que está utilizando información diferente para entrenar los modelos. La CNN está capacitada solo en imágenes y necesita descubrir todas las características necesarias. Lo más probable es que encuentre varias características faciales, pero también dependerá de la ropa y quizás de las características de la escena (los niños a menudo aparecen en la imagen con algunos juguetes, los adultos serán más propensos en entornos de oficina, etc.). Estas características no serán sólidas para su contraejemplo.

Por otro lado, si entrena a la red para detectar explícitamente objetos como "torso" y "cabeza", está proporcionando información adicional de que estos objetos son importantes para la tarea y, por lo tanto, simplifica el problema 2 .

Si bien el enfoque de detectar la cabeza y el torso y luego evaluar la relación de tamaño de los cuadros delimitadores suena interesante, puedo ver varios obstáculos:

  1. Obtención de datos: no estoy al tanto de la disponibilidad de grandes conjuntos de datos donde estén presentes tanto la edad como los cuadros delimitadores.
  2. FOV imperfecto: en la mayoría de las imágenes (por ejemplo, en ambos ejemplos), las personas no se muestran completas. Tendría que lidiar con el hecho de que los cuadros delimitadores del torso no siempre serían perfectos simplemente porque una parte de la persona no está en la imagen y la red tendría que adivinar qué gran parte falta (y los cuadros delimitadores de verdad) probablemente no capture esta información). Además, los detectores de objetos mencionados no siempre manejan correctamente las predicciones de objetos parciales. Esto podría introducir demasiado ruido en el modelo.
  3. Varias poses: la relación torso-cabeza sería muy diferente para las personas que se ven de frente y de lado.
  4. Adultos: Parece que la proporción funciona bien para predecir edades entre 0-21, pero no veo cómo ayudaría a predecir las edades de los adultos (supongo que la proporción no cambia en la edad más alta).

Todos estos problemas sugieren que el enfoque de la relación cabeza-torso tampoco funcionará perfectamente, aunque podría ser más robusto para su contraejemplo particular.

Supongo que la mejor manera de realizar esta tarea sería 1) detectar la cara, 2) predecir la edad solo del cultivo facial (elimina la información potencialmente engañosa). Tenga en cuenta que algunas arquitecturas similares a R-CNN que usan la agrupación de ROI podrían capacitarse para hacer esto de extremo a extremo.


1 Incluso utilizando métodos médicos muy sofisticados (que posiblemente sean mucho más informativos que una foto de la persona), esto no es posible hacer con precisión. Vea este hilo de Quora para más información .

2 Consulte el artículo Asuntos de conocimiento: importancia de la información previa para la optimización para ver un ejemplo de cómo proporcionar un conocimiento intermedio sobre la tarea puede simplificar enormemente el aprendizaje.


8

Las CNN son una clase de modelos demasiado grande para responder a esta pregunta. LeNet, AlexNet, ZFNet y VGG16 se comportarán de manera muy diferente a GoogLeNet, que fue construido específicamente para hacer la mayor parte de lo que R-CNN hace, con una arquitectura CNN (es posible que conozca GoogLeNet con el nombre de Inception, aunque estrictamente hablando Inception es solo la unidad básica (subred) sobre la cual se construye GoogLeNet). Finalmente, ResNets se comportará de manera diferente. Y todas estas arquitecturas no se construyeron para clasificar las clases de edad, sino las 1000 clases de ImageNet, que no contienen clases de edad para humanos. Uno podría usar el aprendizaje de transferencia(si tiene suficientes imágenes de entrenamiento) para entrenar uno de los modelos entrenados ampliamente disponibles arriba y ver cómo funcionan. En general, sin embargo, especialmente las arquitecturas más antiguas (digamos hasta VGG16) tienen dificultades para aprender "características globales" que requieren aprender sobre "cabeza" (ya una característica compleja), "torso" (otra característica compleja) y sus relación (que también requiere que las dos características estén en una cierta relación espacial). Este tipo de cosas es lo que Capsule Networks debería haber podido hacer.

Los Convnets nacieron para hacer exactamente lo contrario: ser sensibles a las características locales y relativamente insensibles a su posición / escala relativa. Un buen Convnet debería reconocer al "gato blanco", ya sea que la imagen sea un primer plano o una foto estadounidense. La combinación de capas convolucionales (que son sensibles a las características locales) con capas de agrupación (que eliminan parte de la sensibilidad a la variación en la escala o la traducción de la imagen) le brinda una arquitectura que en su forma más básica no es excelente para aprender el tipo de espacio relaciones entre objetos que estás buscando. Hubo un ejemplo en alguna parte (pero ya no puedo encontrarlo) donde, después de dividir una imagen de gato en varios mosaicos rectangulares no superpuestos y ponerlos juntos en un orden aleatorio, la CNN seguiría identificando la imagen comocat. Esto indica que las CNN son más sensibles a las características locales (texturas o algo así) que a la relación espacial entre las características de alto nivel. Vea también el documento de Redes de cápsulas para una discusión de esto. Hinton también mostró un ejemplo de esto en un video sobre los límites de las convnets .

Mi conjetura es que una de las arquitecturas recientes sería perfectamente capaz (con suficientes datos) de distinguir a los hombres de los niños, pero no debido a un "umbral" en una relación métrica entre características de alto nivel como "cabeza" y "torso" . Aprendería cierta regularidad estadística, tal vez completamente imperceptible para los humanos, que separa las imágenes de adultos de las imágenes de niños en el conjunto de entrenamiento.


Agradezco su respuesta, pero tengo problemas para estar de acuerdo. Las arquitecturas RCNN tienen esencialmente la misma estructura de filtros que las redes de objetos, por ejemplo, VGG y Resnet. Y dado que RCNN puede detectar la escala y la posición relativa, se deduce que VGG y Resnet también deberían poder detectar la escala. Sin embargo, las arquitecturas RCNN se basan en propuestas de cajas, de las cuales hacen miles por imagen, después de lo cual se evalúa cada propuesta de caja. Entonces parece que si incorporo al menos algunas de estas propuestas de caja, una CNN de vainilla debería detectar mejor la escala. No estoy seguro de si es necesario hacerlo.
Alex R.

RCNN no son CNN. No solo se pierde la búsqueda selectiva de los cuadros delimitadores, sino que también se pierde el SVM lineal y las etapas del regresor del cuadro delimitador. Además, existe una gran diferencia entre la capacidad de detectar la escala de AlexNet (que es la CNN utilizada en el documento original de RCNN), o VGG, y la capacidad de GoogLeNet o ResNet: GoogLeNet fue desarrollado precisamente para hacer lo que RCNN hace. Creo que tanto GoogLeNet como ResNet podrían clasificar la edad, pero no hay forma de saber si lo harían utilizando una función que tenga sentido para nosotros (relación cabeza a torso) o encontrando alguna estadística 1 /
DeltaIV

2 / regularidades que un humano nunca notaría. Te sugiero que experimentes e intentes, pero desafortunadamente solo construir la base de datos de imágenes sería un proyecto de investigación en sí mismo (a menos que trabajes en una empresa de moda).
DeltaIV

1
Mis disculpas por la confusión. Sé que hay como 20 arquitecturas RCNN diferentes, cada una afirmando que las otras son obsoletas.
Alex R.

1
blog.piekniewski.info/2016/12/29/can-a-deep-net-see-a-cat También, un problema diferente, pero aún relacionado con la coincidencia de texturas, y de investigadores más respetados, arxiv.org/pdf/ 1703.06857
DeltaIV

0

Bueno, todo depende de cómo se construya su conjunto de datos. Desde mi experiencia, las redes neuronales tienden a buscar explicaciones más simples. E inferir la edad del atuendo es en realidad más simple que usar la relación cabeza-cuerpo. Si puede expandir su conjunto de datos teniendo esto en cuenta, su CNN debería funcionar como se esperaba.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.