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?
fuente
Respuestas:
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:
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.
fuente
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 como
cat
. 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.
fuente
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.
fuente