Detección de personas desde arriba

16

Estoy tratando de encontrar algún método para detectar personas usando solo una cámara a 3 metros del suelo. Este es un cuadro devuelto por la cámara:

ingrese la descripción de la imagen aquí

ACTUALIZACIÓN: Prueba de video -> http://dl.dropbox.com/u/5576334/top_head_shadow.avi

Para hacer eso, primero entiendo que tengo que realizar una segmentación de fondo y primer plano. Esa es la parte fácil.

Con la máscara de primer plano, puedo realizar operaciones simples como Hough transform para encontrar círculos, pero de esta manera solo se detecta el 60% de las cabezas, incluidos muchos falsos positivos.

Podría usar algunas otras técnicas simples como la segmentación del color, pero descubrí que las cabezas de las personas son muy diferentes desde arriba debido a su peinado, color, cantidad de cabello, ...

Otra opción que tengo al respecto es la posibilidad de utilizar descriptores HOG, o características similares a Haar, pero necesitaría una extensa base de datos de personas vistas desde arriba para entrenar a los modelos. No he encontrado nada de eso.

Pensé que este sería un problema muy recurrente, pero no puedo encontrar mucho al respecto en la literatura o en Internet. Cualquier ayuda para resolver esta tarea será apreciada :-)

ACTUALIZACIÓN: para obtener más información, el objetivo es implementar algún método genérico para realizar el seguimiento del flujo de peatones. El primer prototipo será probado en un centro comercial.

emepetres
fuente
1
Si puede publicar algunos videos, existe la posibilidad de que alguien escriba un prototipo. ¿Puedes publicar por favor?
Andrey Rubshtein
@Andrey, subí una prueba de video que muestra el problema.
emepetres el
@emepetres Si tiene recursos para probar este problema, ¿quizás también tenga recursos para encontrar una cámara secundaria? Combinando vistas de dos cámaras (una vista superior y una frontal o desde un ángulo) y utilizando información de ambos sonidos interesantes y como un enfoque plausible para el seguimiento del flujo de peatones (dependiendo de la precisión que necesite)
penelope
44
Esta tarea se llama "conteo de personas" en la literatura.
mrgloom
¿Puedes proporcionar un enlace para este video? Ya no está disponible en el enlace proporcionado
Garvita Tiwari

Respuestas:

11

¿Hay otros objetos que puedan moverse al lado de las personas? Si no lo hay, puede encontrar los blobs (componentes conectados) en su máscara de primer plano, y esta es su gente.

También pueden "colisionar" uno con otro, creando un blob en lugar de dos. En este caso, puede hacer un seguimiento de movimiento y resolver la ambigüedad utilizando el hecho de que la trayectoria y la velocidad son suaves.

Si hay otros objetos (como perros, automóviles), debe crear un clasificador que obtenga parámetros de blob como:

  • Estadísticas de blob (tamaño, solidez, etc.)
  • Color
  • Información de borde
  • Velocidad (en caso de seguimiento)

Y devuelve la clase correcta (Humano / No Humano).

Andrey Rubshtein
fuente
1
Estoy buscando un método robusto que pueda distinguir entre humano / no humano también. De esa manera, después de pensar en su respuesta, creo que usar los parámetros de blob como sugirió, combinado con algunas características de seguimiento y cierta información estadística del blob, debería ser lo suficientemente robusto.
emepetres el
8

He estado en la posición "para usar métodos bien probados, necesitaría una extensa base de datos de ejemplos que no tengo" en una empresa muy pequeña que "no podía permitírselo". Lamento mucho no haber hecho simplemente lo necesario para obtener la mayor cantidad de datos posible. Creo que al final habría hecho un mundo de diferencia para ellos.

Cualquier tipo de detección de visión del mundo real tiene un millón de cosas en las que no pensó hasta que lo probó y falló. Es un viejo problema mucho, muchas veces más difícil de lo que parece. Recomendaría seguir el método de los newtons de "pararse sobre los hombros de gigantes" (o, casi tan bien, encima de una gran pila de enanos). Es decir, utilice un método que ya sabe que funciona y es robusto. Todo lo que suena como que será "lo suficientemente bueno" en su lugar fallará miserablemente.

Lo último en detección de peatones que conocí fue HOG, que se probó originalmente exactamente en ese entorno. Desea realizar un seguimiento, por lo que deberá jugar un poco en Google Scholar para encontrarlo. Compre mi punto principal es que he estado en una posición similar y desde allí recomendaría que obtenga su base de datos, lo que sea que tenga que hacer, y use algo que sepa que funciona, que ya se ha probado con una tasa de falla conocida, no algo que solo suena bien La marcha de la muerte de 40 años de los algoritmos de visión por computadora que "suenan como si funcionasen" no es algo de lo que quieras ser parte.

PD: No estoy tratando de criticar la visión por computadora. Es una de mis áreas favoritas. Pero su historia sugiere que hay miles de pasos equivocados que tomar y no muchos pasos correctos. Es mejor seguir a alguien que ya encontró algunos de esos pasos correctos.

John Robertson
fuente
Tal vez tengas razón, y debería pasar algún tiempo haciendo una buena base de datos para entrenar y probar un descriptor HOG. De esa manera, ¿sabe qué tamaño mínimo tendría esta base de datos para realizar la capacitación correctamente?
emepetres
1
No lo sé. Una variedad lo más amplia posible. Además, HOG es un detector, devuelve una respuesta "sí, hay una persona" o "no hay persona" para una imagen y nada más. No dice nada sobre dónde está la persona (ubicación) o qué píxeles son la persona (segmentación) o si hay varias personas versus una persona. Creo que se han hecho algunas adaptaciones a HOG (algunas patentadas), pero el punto es que lo que quieres es el seguimiento de personas y HOG tal como está, se trata solo de detección , ni siquiera de ubicación. Nunca lo he hecho, pero el seguimiento de personas es un tema de larga data. Echa un vistazo a los documentos sobre el seguimiento de personas.
John Robertson el
1
@John Robertson HOG no es un detector, es solo un descriptor y se usa con algún clasificador (SVM + HOG, por ejemplo) y puede devolver la ubicación del objeto.
mrgloom
1
@mrgloom Tienes razón. Devuelve la ubicación haciendo una búsqueda en ventana. Sin embargo, eso solo es rápido utilizando un método patentado por una gran corporación. No tenía la intención de usar el detector de palabras en el sentido técnico aquí, solo en el simple sentido de inglés que es algo que detecta. Solo proporciona la ubicación en un sentido suelto de que dentro de esa ventana hay alguien en aproximadamente el 80-90% de la escala de la ventana, pero sin ninguna identificación de qué partes de la ventana podrían pertenecer a la persona. Estoy familiarizado con la distinción técnica descriptor / detector.
John Robertson
3

Creo que podría comenzar combinando algunas respuestas desde aquí.

Hay dos enfoques diferentes mencionados en esta respuesta, con la gran diferencia de que es imposible para usted hacer la detección de rostros ya que no ve rostros. Pero el otro enfoque sigue siendo aplicable: decidir si algo es peatonal o no según sus acciones (movimientos) .

Esto, como predijo, sugeriría usar algún tipo de segmentación de primer plano y fondo. Un google muy rápido encontró este artículo reciente que parecía bastante prometedor, pero como nunca lo hice personalmente, usted u otra persona podrían tener mejores sugerencias para un algoritmo específico para usar en este paso.

Ahora, la primera respuesta que vinculé solo da una idea de enfoque muy general. Sin embargo, esta respuesta podría darle una idea sobre sus próximos pasos: seguir los objetos e intentar distinguirlos según la velocidad o la dirección del movimiento .

Finalmente, nunca abordé el problema que tenía, por lo que probablemente no le sea de mucha ayuda, pero tal vez las respuestas que vinculé pueden darle una idea general de por dónde empezar. También me sorprendió que no pude encontrar trabajos y artículos anteriores al buscar una respuesta a su problema, pero entonces, tal vez solo necesite que alguien le diga las palabras clave correctas para describir este problema .

penelope
fuente
Gracias por su respuesta. El artículo sobre segmentación en primer plano parece muy interesante. Como usted y @Andrey sugirieron, seguiré el enfoque del análisis de manchas para determinar la cantidad de humanos en cada gota.
emepetres 01 de
@emepetres Sería bueno si usted nos deja saber acerca de sus resultados, y el éxito fue el enfoque una vez que lo pruebe y probarlo
Penélope
1

Tengo algún tipo de tarea como se describe aquí, contar personas. Pero mi requisito es que la cámara debe mirar a las personas desde el lado izquierdo / derecho, no sobre la cabeza.

Dicho esto, al explorar una posible solución para mi caso, me encuentro con un método interesante para su caso (detección de gastos generales). Esas soluciones usan una cámara estéreo para que pueda manejar blobs (personas que se mueven demasiado juntas) al ver la profundidad (por ejemplo, solo ver blobs en el nivel de la cabeza de las personas promedio).

Este producto puede darle una mejor explicación: digiop . Consulte el folleto para obtener más explicaciones técnicas.

PD: no estoy representando a la empresa, solo estoy señalando una solución bien documentada

bonchenko
fuente
Gracias por compartir, parece ser una forma interesante de resolver el problema.
emepetres