Diario de DIA4RA: explotando los sensores del robot (cámara)

Diario DIA4RA explotando sensores robot cámara

Una vez cumplido nuestro deber con el Call for papers del Big Data Spain, volvemos a la carga con AIDA. En la entrada de la pasada semana veíamos unos conceptos básicos de ROS (como por ejemplo la noción de qué es un topic). Esta semana toca empezar a explotar la información que recibimos a partir de los distintos sensores del robot.

Tomando los modelos que ya hemos hecho

Nuestro primer objetivo era tomar un modelo que se desarrolló hace unos meses. Este se hizo para poder incorporarlo algún día al robot Pepper de nuestros compañeros de la URJC. En realidad, se trataba de dos modelos en uno:

SSD entrenado con el dataset COCO

El primero de los modelos consistía en una arquitectura single shot detector (SSD) mobilenet entrenado con el dataset COCO (Common Objects In COntext). Este estaba entrenado a su vez con 80 clases diferentes. Su objetivo era detectar personas de forma fiable en una imagen, para después trazar un bounding box a su alrededor.

diario dia4ra SSD entrenado con el dataset COCO bounding box
(ssd_mobilenet en acción detectando una persona y una silla. Los recuadros con el nombre de la clase y la confianza que el modelo atribuye a la predicción se conocen como bounding boxes)

En caso de detectar una persona, se hacía un crop de la misma en base a su bounding box. Esto es como si con unas tijeras se recortara la parte de la imagen delimitada por el bounding box con la etiqueta person. El resultado se pasaba a otra red cuyo objetivo era detectar el tipo de prenda que la persona llevaba y el color de la misma. Inicialmente estaba limitado a vaqueros, zapatos, vestidos y camisetas de color blanco, rojo o azul.

Es posible que a alguien le surja la pregunta. ¿De dónde sacamos las imágenes sobre las cuales realizamos la identificación? Para hacer pruebas tenemos una cámara ASUS Xtion PROTM. La conectamos a alguna de nuestras torres mediante un USB y la conectamos con ROS a través del paquete openni2_launch. Así nos suscribimos al topic de la cámara y los frames que se reciben se van suministrando al modelo (o más bien doble modelo) anteriormente descrito.

Así que la primera prueba de concepto consistía básicamente en quedarnos solo con la parte de la SSD mobilenet (ya que en principio nos interesará reconocer personas y otros objetos sin necesidad de fijarnos en más detalles). Una vez ajustado el código, solo quedaba cambiar el topic al que se suscribía para que fuera el de una de las cámaras del robot. Y, claro…¡ver que funcionaba!

Efectivamente, el resultado fue bueno, lo que robot “veía” le llegaba al modelo. Este era capaz de identificar en la imagen cualquiera de los 80 objetos del dataset COCO que estuviera presente en ella. Luego, trazaba alrededor de cada uno su correspondiente bounding box.

Experimentando con el sonido

Paralelamente a esto, estamos trabajando en un modelo de Speecht2Text (es decir, capaz de traducir voz a texto) en castellano. Aparte, evaluamos otras posibilidades como por ejemplo la API de Google Speech.

Esto nos permitirá tener una noción de la capacidad del micrófono del robot para captar voz. También de cuál es el estado del arte ahora mismo en este tipo de modelos. ¡Vamos a ver cómo nos desenvolvemos con el sonido!

Más entradas del diario


Alejandro Arranz, Data Engineer en datahack

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *