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:
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.
fuente
Respuestas:
¿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:
Y devuelve la clase correcta (Humano / No Humano).
fuente
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.
fuente
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 .
fuente
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
fuente