• No results found

Technological Artefacts plus Practices: the Communications System

4. From Communication Technologies to the Communications System

4.2. Technological Artefacts plus Practices: the Communications System

OpenCV ofrece un algoritmo HOG, para usarlo correctamente hay que entender sus requerimientos y como se carga la maquina SVM junto con los parámetros óptimos para trabajar en el entorno deseado.

Captura del Fotograma Inicio

Inicio de dispositivo de captura

Muestra del video por fotogramas

Análisis de fotograma en busca de peatones. Según algoritmo implementado

Análisis de coordenadas de detección

Conteo de personas

El diagrama de la Figura 12 del detector HOG muestra las etapas del algoritmo donde se agregó una etapa de filtrado a la imagen por reducción de resolución, la cual tiene por objetivo reducir el ruido en la imagen a través de la interpolación Inter Área para que mediante una imagen más pequeña se lograra reducir el tiempo de detección y procesamiento final para la imagen.

4.4.1 Inicio del descriptor HOG

Matriz final de coordenadas de detección por peatón encontrado

FIN

Filtro por reducción de resolución en la imagen Calculo de gradientes orientados HOG

Matriz inicial de coordenadas de detección por peatón encontrado

Algoritmo Non Máxima Supresión para eliminación de detecciones superpuestas

Seguimiento de coordenadas objeto ¿excede límite?

¿Fin de archivo de video? Peatones = Peatones +1 No Si No Si

En primer lugar, sobre Python se debe programar un objeto que llevara la función, para ello se ejecuta:

Hog_des =cv2.HOGDescriptor () # Se carga en el objeto Hog_des las características de la función

Una vez listo el objeto se cargar la maquina SVM, la ventaja de OpenCV es que ofrece una maquina ya entrenada la cual se parametrizó a partir de la base de imágenes positivas de peatones del MIT [19], y la base de imágenes positivas y negativas del INRIA [20]. Para cargarla sobre el objeto creado se digita:

Hog_des.setSVMDetector (cv2.HOGDescriptor_getDefaultPeopleDetector ())

Parámetros del descriptor HOG

Como se había revisado en el marco teórico el algoritmo HOG descriptor se basa en una ventana de barrido sobre la imagen, en este apartado se describen y analizan los parámetros del algoritmo y cómo influyen en la detección final.

hog.detectMultiScale(image, winStride, padding, scale, UseMeanshiftGrouping)

4.4.2 Image: La imagen a analizar no importa si es BGR o GrayScale, pues cuando es B, G, R, se hace un cálculo por cada una de las matrices y se toman los vectores de mayor valor, para efectos de programación esta particularidad es transparente, es decir que el algoritmo se encarga de la conversión de forma automática.

4.4.3 WinStride: El parámetro Winstride indica cada cuantos pixeles se mueve la ventana de análisis en X & Y, si el valor es muy pequeño la detección es muy detallada y el tiempo de procesamiento se extiende demasiado, es conveniente hacer un pre-análisis para buscar el valor óptimo y definir la zona de detección. Se elaboró una imagen de prueba con un par de peatones que se deseaba detectar; esta se aprecia en la Figura 13. Se hizo un programa que realiza una variación exclusiva del parámetro Winstride. Los resultados de detección se aprecian en la Figura 14, y el análisis de tiempo en la Figura 15.

Fig. 13. Imagen de prueba para calibrar el Detector HOG

Fig. 14. Resultado de detecciones a partir de la variación del Winstride.

En la Figura 14 se aprecian los múltiples cuadros de detección conforme va aumentando el valor del Winstride, se ve de color rojo oscuro para un valor bajo, hasta un color rojo claro las detecciones con un Winstride alto, los parámetros de evaluación del valor optimo se basan como se aprecia en la Figura 15 en la velocidad de procesamiento y la precisión de detección donde se buscaba el parámetro que coincida con dos detecciones, esto ocurre para los valores 2, 4, 5 y 7. De este análisis es pertinente indicar que un mal manejo del Winstride implica fallas en la detección.

Fig. 15. Análisis de desempeño por variación de Winstride. Arriba tiempo de detección del algoritmo, abajo: número de personas detectadas.

4.4.4 Padding: es el parámetro que indica la dimensión de un borde alrededor de la ventana de detección para contribuir a especificar el área de cálculo del gradiente de orientación en la ROI (Región of Image) analizada; su valor se da en pixeles en X & Y. Para el análisis del parámetro se varia el Padding de 1-18 los resultados de detección se aprecian en la Figura 16, y los respectivos tiempos de detección aparecen en la Figura 17, se concluye que este parámetro siempre que esté por debajo de 18 pixeles no afecta considerablemente la detección. Un buen valor de Padding está entre 2-5 pixeles.

Fig. 16 Resultado de detecciones por variación del Padding.

Fig. 17 Velocidad de detección por variación del Pading, arriba variación de Padding y abajo las detecciones por la variación.

4.4.5 Scale: indica el nivel de escalamiento piramidal para este análisis de imágenes el algoritmo considera números tal que el escalamiento sea un numero flotante desde 1 hasta 2 para apreciar cambios significativos, donde un número cercano a uno implica pirámides sucesivas pequeñas tal

que aumenta el tiempo de procesamiento tanto como sub- imágenes estén muestreadas, y un número superior a 2 son escalados tan grandes que se pierden los objetos, este parámetro se varia considerando el tamaño de los objetos que para un escenario controlado se estima a partir de su dimensión, la Figura 18 muestra las detecciones que ocurren en la imagen cuando el parámetro es cercano a 1 tenemos imágenes que en la figura se representan con un color verde oscuro llegando a detectar falsos positivos. Sucesivamente conforme el parámetro aumenta la ventana de detección toma un tono verde más claro y su tiempo de detección va disminuyendo porque son menos las sub- imágenes analizadas.

Fig. 18. Resultado de detecciones por variación de Escalado.

Gracias a la Figura 19 que representa el valor de escalado y la detección de elementos fijados se establece los valores óptimos de escalado para esta calibración están entre 1,2 y 1,3 para hacer barridos rápidos pero sin perder detalles de los objetos analizados como pasa por encima de 1,4 donde pueden ocurrir problemas de detección donde se omiten detecciones positivas a cambio de que no se mejora mucho el tiempo de detección. Se da el caso que al calcular escalamiento sobre la imagen genera en ocasiones una múltiple detección del mismo peatón a las diferentes escalas.

Fig. 19. Velocidad de detección por Variación de Escalado. Arriba tiempo de procesamiento, abajo detecciones por variación de Scale en pasos de 0,1.

4.4.6 UseMeanshiftGrouping es un parámetro que va relacionado con el escalamiento, manejar el escalamiento sobre la imagen puede ocasionar que se detecte el mismo objeto a diferentes dimensiones o que aparezcan falsos positivos como se evidencia en la Figura 20. Siempre programando para la detección de objetos en imágenes puede suceder este fenómeno, pero no es tan preocupante porque indica que el detector funciona bien simplemente debe ajustarse; para ello la librería nos ofrece el MeanShift Grouping cuyo propósito es eliminar las detecciones repetidas, la forma en que funciona es mediante el cálculo de la distancia euclidiana de los centroides de los marcos de detección, tal que si la distancia es menor que determinado valor implica que es el mismo objeto y se debe eliminar el marco de detección más grande. Pero a la hora de calibrar este parámetro se aprecia que funciona cuando el escalamiento piramidal es alto. En la Figura 20 hay un proceso en el que ambas imágenes se escalaron a razón de 1.01 a la izquierda no se aplica Meanshift Grouping por lo tanto múltiples cuadros de detección incluso falsos positivos.

Fig. 20. Múltiple detección y falsos positivos a la izquierda, a la derecha uso del Meanshift para eliminar objetos no deseados

En la Figura 20 a la derecha el descriptor HOG tiene configurado un Meanshift Grouping desde 10 hasta 50 mostrando siempre el mismo resultado respecto a los cuadros eliminados que corresponden a falsos positivos con un tiempo de detección no menor a 2.4 segundos debido a un escalamiento del orden de 1.01. En este punto evidentemente la falencia del uso del Meanshift Grouping está en la cantidad de tiempo de ejecución que toma para analizar cada imagen el cual para la imagen sin Meanshif Grouping es de 1,6 segundos y para la imagen con Meanshift Grouping es de 2.1 segundos en este punto se evidencia claramente que tiempos de ejecución tan altos hacen que un procesamiento de imágenes en tiempo real sea pésimo, debido a la cantidad de escalamiento que se debe hacer. Por lo anterior se decidió bajar la tasa de escalamiento a un nivel donde el Meanshift Grouping ya no funciona pero donde se logra obtener los mismos resultados de detección con una rapidez de hasta 10 veces. Por lo tanto se descarta el uso el Meanshift Grouping para detección en imágenes con resolución menor a 640x480 se recomienda controlar cuidadosamente el factor de escalamiento, para mejorar los tiempos de ejecución, cuando exista la múltiple detección, para eliminarla se sugiere el uso de una técnica denominada Non-Maxima Supresion.

Consideraciones para la detección de Peatones mediante HOG descriptor.

Lo primero a tener en cuenta cuando se realiza la detección de peatones en imágenes es el entrenamiento que se le hace a los clasificadores, en este caso estamos usando la maquina SVM de OpenCV la cual ha sido entrenada con el paquete de imágenes del MIT [19] para el detector en la versión 2.4 pero para la 3.1 se tomó como base de entrenamiento la Base de INRIA [20]. La Figura 21 muestra algunas de las muestras que se usaron en los entrenamientos en donde se concluye que la detección mediante HOG descriptor es fiable siempre que las personas estén lo más de frente a la perspectiva de la cámara.

Fig. 21. Imágenes de entrenamiento para la maquina SVM. Arriba imágenes del MIT [19], y abajo imágenes del INRIA [20].

Conociendo la base de entrenamiento se ve algo en particular en ambas metodologías y es que explorando en detalle las dos bases de datos se encuentra que los peatones siempre están de frente o de espalda. Solo en la base INRIA se aprecian peatones de perfil pero en una proporción de menos del 5% de los datos, esto implica que La metodología HOG para detección de peatones exige que la cámara este lo más perfilada de frente respecto al peatón de esta manera fue que se tomó el video de análisis.

Es importante en resumen realizar a partir de una imagen de muestra la calibración de los parámetros, de escalado, Padding y Winstride, tal que se garantice un número

mínimo de 15FPS para trabajar en tiempo real, además la captura de imágenes se debe hacer lo mas de frente posible a la perspectiva de la cámara cuando se toman gradientes desde una cámara alta no se tiene una certeza del objeto y crece la incertidumbre de detección al igual que si se tomara la captura de perfil.

4.5 Implementación de sustractor de fondo y