Páginas

miércoles, 29 de mayo de 2013

[TEORÍA DE LA INFORMACIÓN] Resumen de bioinformática

Identification of complex metabolic states in critically injured patients using bioinformatic cluster analysis

Autores: Mitchell J. Cohen, Adam D. Grossman, Diane Morabito, M. Margaret Knudson, Atul J. Butte y Geoffrey T. Manley.

Linka al artículo: http://www.biomedcentral.com/content/pdf/cc8864.pdf

1. Introducción

La unidad de cuidados intensivos (ICU) está inundada de un flujo continuo de datos multivariados producidos a partir de varios monitores, ventiladores, datos de laboratorio y documentación personal médica.

Las comunidades de cuidados intensivos han recurrido a estos monitores y los datos que producen para comprender mejor la fisiología después de la lesión y la reanimación y el tratamiento manual. A pesar de las mejoras, y en el aumento de la dependencia de la tecnología de monitoreo, estos datos multivariados todavía registran de manera intermitente en muchas unidades de cuidados intensivos, a menudo con la menor frecuencia cada hora, en una hoja de papel.

Incluso en unidades de cuidados intensivos donde la hoja de papel ha sido sustituido por un registro médico electrónico, estos sistemas no son adecuados para el seguimiento y el análisis de las relaciones multivariantes complejas. Además, este sistema anticuado, no relacional de la recolección y presentación de datos limita nuestra capacidad de comprender las complejas relaciones entre las variables e impide el análisis longitudinal de las tendencias y el desarrollo de patofisiología en el paciente.

Aquí se muestra que estas metodologías de clustering de la bioinformática son aplicables a  datos fisiológicos multivariados rapidamente cambiantes en pacientes con lesiones críticas, dando datos importantes en la fisiología y los resultados de los pacientes. Se define que en cualquier momento, el estado del paciente se compone de un patrón complejo de variables que en conjunto constituyen el medio de resucitación y del metabolismo.

2. Materiales y métodos

2.1 Colección de datos

El sistema integra información continua de los monitores de pacientes. Datos intermitentes de laboratorio, medicamentos e intervenciones de enfermería se obtuvieron a partir del sistema de documentación de enfermería electrónico e integrado con los datos continuos. Los datos se almacenan en un servidor dedicado en la ICU.

Los pacientes fueron seleccionados como una muestra secuencial pero todos resultaron heridos gravemente y requirieron ingreso en la ICU y reanimación en curso. Los pacientes fueron monitoreados hasta el alta o la muerte, y todas las complicaciones, como infecciones y disfunción de órganos, fueron documentados en la base de datos del estudio.

La puntuación ordinal MOF (falla orgánica múltiple) se convirtió en una variable de resultado binario MOF con puntaje ≥ 4 designados como falla orgánica múltiple. Otras variables de resultado fueron la mortalidad y la infección.

2.2 Clustering jerárquico

Un total de 45 variables de datos fisiológicos, clínicos, y de tratamientos se recogieron cada minuto. Para el análisis de clustering se ha utilizado sólo variables continuos para las cuales los datos fueron completados, lo que resulta en 52 000 puntos a través de 14 variables.

El algorítmo de clustering procede en dos pasos principales: Cálculos de distancias por pares y la vinculación del clúster. Para los cálculos de distancia, se utilizó la distancia euclidiana estándar entre cada punto de los datos. Con una enumeración completa de las distancias por pares entre todas las observaciones, el algoritmo de vinculación combina los dos clusters más cercanos en uno solo, en donde un grupo también puede unirse como un punto de datos.

2.3 Clasificador lineal univariado

Al utilizar las técnicas de análisis multidimensional, es importante tener en cuenta si las técnicas univariadas simples pueden producir resultados similares. Por lo tanto se ha tratado de capacitar a un clasificador lineal univariante utilizando el análisis discriminante lineal (LDA) para clasificar el resultado binario.

2.4 Análisis de correlación entre clusters

A continuación se calcularon los coeficientes de correlación de Pearson para cada par de variables dentro de los clusters con las probabilidades más altas y más bajas de la muerte.

Por último, se comparó los coeficientes de correlación correspondientes entre los dos clusters de interés.

3. Resultados

3.1 Datos demográficos

Se incluyó a 17 pacientes con lesiones graves ingresados ​​en la Unidad Quirúrgica de Cuidados Intensivos en el Hospital General de San Francisco, los pacientes recibieron heridas de gravedad con un Injury Severity Score promedio de 28 ± 10, una estancia media en la ICU de 24 días y una estancia hospitalaria promedio total de 40 día.

El seguimiento sandard se inició en la admisión a la ICU. Debido a que estos pacientes a menudo fueron sometidos a diagnóstico y reanimación significativa en el departamento de emergencia (ED), pruebas de imagen en radiología, o procedimientos quirúrgicos en el quirófano.

3.2 Agrupación jerárquica

Para analizar los datos multivariantes se utilizó un algoritmo de agrupamiento jerárquico para colocar cada uno de los 52.000 minutos de datos a 1 de 10 clusters para representar los estados de los pacientes. Se eligió el número de grupos para proporcionar un equilibrio adecuado entre la maximización de intercluster y reducir al mínimo la distancia entre clusters.

Para determinar si el método de agrupación estaba produciendo resultados fisiológicamente razonables y agrupar las variables que esperamos fisiológicamente a agruparse, lo primero que examinó el dendrograma variable y encontramos que las variables conocidas fisiológicamente relacionadas se agrupan.

3.3 La evaluación clínica de los clusters

A continuación se examinó los estados producidos a partir de la agrupación para determinar si cualquiera de los clusters representados fisiología que sería obvia para un clínico astuto.

La evaluación de los datos clínicos en estos estados por cuatro médicos con experiencia se tradujo en la imposibilidad de definir clínicamente cualquiera de los estados, enfermo o sano, resucitado o no resucitado, y así sucesivamente, poniendo de relieve la dificultad de obtener una predicción clínica tradicional o el significado de estos patrones.

A continuación se trató de probar la capacidad de predicción del método de agrupamiento mediante el cálculo de la distribución de los pacientes con resultados particulares a través de los clusters.

Para probar si las variables individuales fueron predictores estadísticamente significativos de los resultados se realizó un análisis discriminante lineal (LDA). LDA muestra que hay una variable individual que era capaz de predecir correctamente el resultado del paciente significativamente mejor que el nivel de probabilidad de 10,8%. De hecho, todos menos dos variables que fallaron para clasificar correctamente un único punto de datos como pertenecientes a un paciente que murió.

3.4 Representación de las nuevos relaciones fisiológicas

Habiendo determinado que: 1) el análisis univariado no proporcionó factores predictivos adecuados y 2) que la agrupación jerárquica proporciona predicción superior de los resultados, el próximo objetivo era determinar por qué esto era así. La hipótesis de que los clusters contenían nuevas relaciones fisiológicas y que las correlaciones entre pares de variables serían diferentes según el estado del paciente. Además, secreía que estas correlaciones cambiantes probablemente reflejen cambios en las relaciones fisiológicas en función de la lesión o cambiar el estado de reanimación de un paciente.

El examen de estos resultados fue muy revelador y proporciona pruebas tanto de la discriminación de la técnica de agrupación y la capacidad de esta técnica para identificar las relaciones fisiológicas que de otro modo sería imposible de discernir.

Aunque estos resultados proporcionan pruebas convincentes de que el proceso de agrupación es fisiológicamente significativa, el próximo buscó la correlación que eran dispares entre clusters.

4. Resultados y discución

Se ha demostrado aquí la utilidad de la agrupación jerárquica como un esquema de clasificación no lineal sin supervisión en la predicción de los resultados en los pacientes de trauma con lesiones graves.

Estos grupos no sólo estaban dominados por unos pocos pacientes específicos con un resultado particular.

Por último, la información pronóstica incorporada en los resultados de la agrupación no era obtenible por el análisis estadístico tradicional y persiste en la cara de análisis univariado que no podrían predecir cualquiera de estos resultados.

Si bien estos monitores son excelentes como alarmas instantáneas sobre los parámetros críticos, no hacen nada para ayudar a predecir los resultados a largo plazo. Las mejoras en el diagnóstico y la atención han resultado tradicionalmente, tanto mejor perspicacia clínica y avances científicos, sobre todo en datos circundantes del examen científico de un solo o un pequeño grupo de adjuntos.

El uso de aprendizaje no supervisado con grandes datos multivariantes establece compuesto por los datos continuos representa una combinación poco frecuente de las técnicas para predecir y mejorar los resultados del paciente.

Existen varias limitaciones a este estudio preliminar. En primer lugar, el análisis aquí se basa en un número limitado de pacientes (17) y puntos de datos (52.000) . Los estudios futuros deben incorporar a más pacientes (y más datos) que representa los resultados primarios.

5. Conclusión

5.1 Conclusión de los autores

En resumen, se ha demostrado la aplicabilidad de la agrupación jerárquica de los datos fisiológicos a un grado muy alto. Profundizando en los resultados de la agrupación nos permitió aprender más sobre los cambios en la fisiología que son más representativos de los pacientes que mueren o viven de lo que podría determinarse utilizando todos los datos, de forma agregada, de los pacientes individuales que vivieron o murieron. Comparando los coeficientes de correlación de pares coincidentes de las variables entre los grupos revelaron diferencias predictivos de la vida y la muerte y las relaciones fisiológicas dispares dependiendo de la lesión y el estado de reanimación.

5.2 Conclusión personal

Creo que es algo complicado estudiar la fisiología humana pues todos los seres vivos funcionamos de manera diferente, algunos más parecidos a otros pero no de manera similar. Utilizar métodos de agrupación para determinar o predecir si un paciente vivirá o morirá parece una buena solución pero siempre pueden existir cambios que generen datos nuevos que no son tomados en cuenta por estos métodos. Por ejemplo, las medicinas cambiarán el comportamiento del ser y or lo tanto los resultados.

Las pruebas fueron hechas solo con pacientes que recibieron heridas de gravedad, pienso que se debió tomar en cuenta pacientes con heridas y enfermedades variadas para tener un análisis completo.

Referencias:

[1] Mitchell J. Cohen, Adam D. Grossman, Diane Morabito, M. Margaret Knudson, Atul J. Butte, Geoffrey T. Manley, "Identification of complex metabolic states in critically injured patients using bioinformatic cluster analysis", Critical Care 2010, 14:R10

domingo, 26 de mayo de 2013

[REDES DE TELECOMINUCACIONES] Resumen de redes sensoras

Mobile Robot Navigation using a Sensor Network

Autores: Maxim A. Batalin y Gaurav S. Sukhatme

1. Introducción

La navegación es un problema fundamental en la robótica móvil. La navegación local tiene un principal problema y es evitar obstáculos. La navegación global tiene otro problema, el robot no puede ver el estado de su objetivo debido a la gran escala del terreno.

Un número de soluciones han sido propuestas entre las cuales se encuentran: pre-especificación de mapa, construcción de mapa en vuelo, topología basada en señalamientos, etc. El problema con estas soluciones es que no son del todo exactas, pues los sensores envían ruido.

Un tipo de navegación basado en el filtrado de Kalman es preciso métricamente, sin embargo en situaciones de pérdida no se puede recuperar, pues es una solución unimodal.

Algunas soluciones desarrolladas en los últimos basadas en la localización de Markov prueban ser multimodales y exactas. para representar distribuciones probabilisticas de distintos tipos, pero requieren mayor poder de procesamiento, y por lo tanto son imprácticas.

Otro tipo de solución es el uso de técnicas basada en muestras. En lugar de guardar y procesar distribuciones en el momento, se toman con anterioridad y se procesan, las muestras se guardan. Mediante algoritmos de localización de Markov se procesa parcialmente para no dejar todo del lado de los datos almacenados previamente.

Estas soluciones tienen distintas ventajas y desventajas, e incluso en algunos casos pueden fallar. La solución propuesta en el artículo utiliza redes sensoras para monitorear el entorno.

Algunas propiedades de esta solución se sumarizan como sigue:
  1. La red sensora está previamente implementada en el entorno.
  2. En adición a implementar los nodos de la red, el algoritmo calcula las distribuciones de portabilidad de transición P(s'|s,a) de un nodo s a s', cuando el robot ejecuta una acción a.
  3. Los nodos están sincronizados en tiempo (no es necesario gran precisión).
  4. El robot no tiene un mapa precargado o acceso a GPS, IMU o brújula.
  5. No es necesario que el entorno sea estático.
  6. El robot no realiza mapéos o localizaciones.
  7. El robot no es sofisticado, los cálculos primarios se realizan distribuidamente en al red, solo se requiere que sepa evitar obstáculos.
2. Navegación probabilística

Para que el robot sea capaz de navegar por el entorno de un punto A a un punto B, debe ser capaz de seleccionar una acción que maximice las oportunidades de llegar a su destino, para poder medir el progreso y reconocer que ha llegado al punto B. La solución propuesta depende de una red sensora que determina las probabilidades de transición y consiste en dos etapas:

2.1 Planeando

Cuando el objetivo de navegación es especificado, el nodo más cercano al objetivo inicia una comunicación con el resto de nodos para determinar probabilísticamente cuál es el camino más óptimo.

1) Marco teórico - Valor de iteración: Considerando la red sensora como un grafo, donde los nodos son vértices. Se asume un número finito conjuntos de vértices S en la red y un número finito conjuntos de acciones A que el robot puede tomar. Dado un subconjunto de secciones A(s) ⊆ A, para cada dos vértices s,s' ∈ S en el grafo de la red y la acción a ∈ A(s) las probabilidades de transmisión P(s'|s,a) son determinadas para todos los vértices. Se muestra un ejemplo de distribución para un vértice por acción:

Para calular la mejor acción dado un vértice se utiliza un algoritmo de valor de iteración para el conjunto de vértices S - sg donde sg es el objetivo. La idea general es calcular las utilidades para cada estado y después tomar las acciones que determinen un camino hacia el objetivo con la máxima utilidad esperada. La utilidad se calcula incrementalmente:

donde C(s,a) es el costo asociado con el movimiento hacia el siguiente vértice. Usualmente el costo es escogido para ser un número negativo que es menor a -1/k donde k es el número de vértices. Racionalmente el robot debe "pagar" para tomar una acción, pero el costo no debe ser muy grande, de otra manera el robot optará por quedarse en su sitio. Dadas las utilidades, se calcula una política de acción para cada estado s como sigue:

El robot mantiene un modelo de transición probabilística para el grafo y puede calcular la política de acción para cada nodo para cualquier punto de destino.

2) Computación distribuida y procesamiento en red: Una solución más atractiva es calcular la política de acción distribuidamente en la red. La idea es que cada nodo en la red actualice su utilidad y calcule la acción óptima. Cuando el objetivo de acción es determinado, el nodo más cercano al objetivo inicia el cálculo inyectando un paquete "inicio de cálculo" en la red. Cada nodo redirecciona el paquete a sus vecinos usando llenado. Los nodos que reciben el paquete inician la utilidades y el valor del costo si el nodo particular es especificado como objetivo o no.

Esta técnica permite al robot navegar a través el entorno entre dos nodos en la red.

2.2 Navegación

La red sensora discretiza el entorno, en la imagen anterior, en el camino desde el nodo 1 al objetivo 5, el robot podría navegar del nodo 1 al 2, del 2 al 3 y así. Por lo tanto la navegación es acertada. Un nodo cuya dirección sugerida es seguida por el robot es llamado nodo actual. Inicialmente el nodo actual es el más cercano al robot.

El problema con esta solución es que los valores de intensidad de señal no son constantes o proporcionales de un radio a otro, de una topología a otra. Los resultados experimentales muestran que esta solución no es segura. Para predecir de forma segura donde se encuentra el robot, se desarrolló un algoritmo llamado Adaptative Delta Percent, basado en el procesamiento de los valores de intensidad de señal.

Considerar que el nodo actuales t. El nodo sugiere al robot en que dirección moverse. Asumiendo que antes de llegar al siguiente nodo el robot recibirá n muestras de valores de intensidad de señal para cada k nodos en los cuales el robot puede cambiar de acción. Después por cada uno de los k nodos:
  1. Se calcula un promedio del máximo inicial Aim - un promedio de las primeras i muestras donde i << n.
  2. Se calcula unpromedio corrido AR que es un promedio de j muestras consecutivas donde j << i.
  3. Si R = AR/Aim < M, donde M es el valor umbral, entonces se regresa del algoritmo. Se pone R a la lisa LR.
  4. Si y elementos consecutivos de LR están en orden no decreciente, se regresa del algoritmo, si no se repite del 2 a 4.
En caso de varios nodos regresen del algoritmo, se toma un nodo con el radio más pequeño.

3. Experimentos y discusión

Se realizaron experimentos  con un robot Pioneer 2DX con un rango laser de 180º para detectar y evitar obstáculos. La red de 9 nodos fue implementada dentro de un ambiente de cubículos y corredores largos. El escenario experimental de control de alarmas. Una alarma ocurre cuando un nodo  detecta un evento.

Puesto que el robot no tiene ningún dispositivo para posicionase, la dirección en la que el robot inicia es manualmente configurada. El robot mantiene la noción de dirección virtual mientras cambia de direcciones.

Los experimentos fueron los siguentes:

En todos los casos el robot pudo navegar a su destino.

4. Conclusión

4.1 Conclusión de los autores

Los autores concluyen que es factible utilizar robots que naveguen sin el uso de GPS o cualquier otro instrumento para posicionamiento. Lo que tratan de hacer es una red sensora que comunique al robot los eventos que suceden y mediante fuerza de señal, posicionar al robot creando una noción de posicionamiento virtual.

4.2 Conclusión personal

Aunque los experimentos muestran que el robot es capaz de moverse en la dirección señalada y al lugar correcto, las pruebas son hechas en un ambiente cerrado y con obstaculos sencillos, pues el área es una oficina llena de cubículos. Pienso que en un ambiente libre y con una distribución de nodos irregular podría fallar debido a que las intensidades de señal serían variables ademas de que habría ruido de por medio.

Posiblemente la red tendría que estar distribuida con distancias entre nodos muy pequeñas para generar intensidades de señal más altas.

Referecncias:
[1] Maxim A. Batalin, Gaurav S. Sukhatme, "Mobile Robot Navigation using a Sensor Network" (presentado en IEEE International Conference on Robotics and Automation, páginas 636 a 642, Abril 26 a Mayo 1, 2004)

martes, 21 de mayo de 2013

[REDES DE TELECOMINUCACIONES] Simulación de red ad hoc

Para esta entrada se pidió realizar una simulación de redes ad hoc en python o ns-2/3. En este caso inenté hacer lo más parecido a una red ad hoc con python.

Lo que hago basicamente es poner un monton de nodos a caminar en forma aleatoria y al dar click en una zona, el nodo hijo más cercano comunica a su nodo padre, y el nodo padre comunica a los demas nodos padres, estos comunican a sus hijos.

Los nodos pueden enviar un numero limitado de pila,  al agotarse mueren y dejan de moverse, ademas de que dejan de ser parte de la red.

Algunas capturas de como funciona:

Se generan 5 nodos padre y por cada uno se genera 3 nodos hijos. Se conectan entre si.
En terminal se imprime cada nodo:
Al dar clic en la ventana se envia el evento por medio del nodo más cercano. Estos van perdiendo batería hasta morir. Los nodos muertos estan estáticos en la ventana.
La información de los mensajes se imprime en terminal:
Código:

[CÓMPUTO UBICUO] Sugerencias de nuestro proyecto

Se tenía planeado una serie de cosas en un principio pero conforme pasó el semestre, modificamos algunas de ellas.

Para el garage inteligente se tenía contemplado lo siguiente:

  • Una puerta que se abriera mediante una aplicación móvil que se comunica via Bluetooth.
  • Una cámara que detecta la presencia de vehículos y que notifica al usuario de esto.
  • Lector de codigos QR mediante la misma cámara para permitir el paso a otras personas.
  • Una web qu el usuario puede acceder para ver el estado del sistema.

Además de pequeñas cosas que surgieron como ideas durante el semestre.

Para el proyecto se realizó una simulación del garage pues no contabamos con alguien que tuviera un garage con las condiciones para realizar el proyecto. Se realizó una simulación en un proto con leds de colores que notifican el estado del garage.

Lo que se logró fué lo siguiente:

  • Implementación de la web, donde el usuario puede acceder al sistema e inclusive abrir el garage desde este mismo. La web tambien permite al usuario generar un codigo QR y compartirlo con un amigo. Ademas de ver el historial de lo que ha sucedido.
  • Creación de una app móvil para acceder al garage utilizando comunicación Bluetooth. Se agrega una contraseña y se configura el dispositivo para comunicarse con el garage.
  • Implementación de códigos QR para abrir la puerta del garage con uno de estos. Mediante la cámara se detecta el QR. El QR tiene una caducidad, y el sistema no permite el paso a quienes tengan uno vencido.
  • Se implementó un sistema de notificaciones por e-mail. Si un usuario con un QR intenta acceder, se notifica al dueño via e-mail para notificar quien entró, si alguien con un QR vencido intentó entrar o si hay un vehiculo obstruyendo el paso.

Qué realicé:

Para el proyecto me enfoqué sobre la aplicación Android, mi meta era crear una app que se comunicara vía Bluetooth con el garage, comunicar al sistema de la posición actual y recibir las notificaciones directamente en el celular.

Por falta de tiempo solo se alcanzó la primera parte, la comunicación Bluetooth con el garage. Todo esto lo realicé "a ciegas" debido a que no tenía a la mano el dispositivo que utilizariamos como garage. Por lo que me vi en la necesidad de agregar una lista de dispositivos Bluetooth aunque no fueran del mismo tipo (mi idea era registrar una serie de direcciones MAC en el web service para solo leer la correcta). Como resultado, el usuario debe conectarse manualmente al dispositivo. La solución que dí fue que la app automaticamente detectara si hay o no dispositivos sincronizados, si no los hay, se abre la ventana de configuración de dispositivos, si si los hay, se muestra una lista de los dispositivos sincronizados (dando por hecho que el usuario sincronizó el celular con el garage). Por ultimo dando dos opciones para abrir y cerrar, y dos botones de configuración de dispositivo y contraseña.

Qué me faltó:

Sincronización GPS, no es difícil pero necesita de comunicación 3G (no tengo), por lo que las pruebas serían difíciles. Utilizar solo la red WiFi para esto no es buena práctica, pues no da un resultado exacto ni aproximado, sino que calcula la posición de otras antenas. Lo recomendado es utilizar una combinación o solo 3G para funcionar correctamente.

Las notificaciones al celular no se implementaron pues esto requiere de una cuenta en Google API y varias cosas que requieren servicios web que no se tenían planeados. Solo nos quedamos con las notificaciones vía email.

Qué faltó en general:

El servicio web quedó completo para lo que teniamos como entregable, pero para lo planeado quedó parcial, pues tenía planeado utilizarlo para la app móvil.

El proyecto iva por buen camino, pero se esperaba implementarlo en un garage real. No hubo coordinación por nuestra parte y  el desarrollo lo hicimos cada quien por separado por lo que no hubo mucha retroalimentación.

Por mi parte creo que necesitabamos contar con más participación en cuanto a reuniones y buscar a alguen dispuesto a prestarnos su garage.

[CÓMPUTO UBICUO] Sugerencias de proyectos finales.


Para esta entrada se mencionan algunas sugerencias para los proyectos finales que se vieron durante la clase.

SeguriLap:

Propósito: Una computadora inteligente capaz de detectar el rostro del usuario y realizar tareas de forma más inteligente.

Que faltó: Por lo que veo no lograron implementar al 100% el sistema de autentificación, pues el reconocimiento facial no es algo sencillo. Por lo que veo implementaron el metodo al que llaman mapeo (line edge maps), es un buen método pero se necesita de un mejor entrenamiento pues el mapeo solo detecta zonas de interés que podrían detectar cosas que no son ojos o boca o nariz. Deben alimentar a la red neuronal con zonas de interés aparte (ojos, boca, nariz por separado). Recomendaría utilizar un sistema que detecte todas las zonas de interés y después descarte lo que es ruido mediante esa red neuronal, pues veo que su cámara detecta cosas que no son de interés, aún así es preciso e hicieron una buena implementación. Por último, lo de reproducción de video no me quedó muy claro como funciona, pero me imagino como, y puede ser una oportunidad de implementar su sistema no solo en login o reproducción de video, sino en distintas aplicaciones.

CarNXP:

Propósito: Un automóvil que se abre con NFC y mediante esto se accede a una serie de funciones.

Qué faltó: La verdad es que su proyecto está muy completo, a pesar de las faltas. Eso si, la integración es una parte crucial pues mediante ella se tendría un mejor control de lo que sucede con el producto. Lo de la lista de reproducción no estoy seguro si sea necesario, aunque los usuarios buscan algo de distracción, pues no lo veía relacionado con su objetivo, pero está bien. Lo de medición de gasto de gasolina no creo que sea una buena forma obtener los datos del gasto propuesto por alguien más, creo que se podría hacer algo más para saber el gasto real mediante el uso de algunos dispositivos, pues un auto nunca consume lo mismo a lo largo de su vida útil.

Despertador inteligente:

Propósito: Un despertador incrustado en una cama que detecta si el usuario está levantado para asegurar que no se le haga tarde, si no, seguirá la alarma.

Qué faltó: Por lo que veo dedicaron mucho a este proyecto, veo que lograron la mayoría de sus objetivos principales, pensaron en varias soluciones. Aunque no lograron comunicar el dispositivo móvil con el Arduino vía Bluetooth, fue una buena idea crear un servicio web, eso si, yo veo su proyecto como un producto de uso local, es decir, las comunicaciones por Internet no son necesarias. La comunicación Bluetooth no es difícil de un Android a un Arduino, solo que se debe tener un control sobre lo que se envía (muchos o pocos bits) y la sincronización, generalmente con uno o dos bits hay buena comunicación.

Galería inteligente:

Propósito: Dar seguridad a obras de alguna galería e iluminarse automaticamente con la proximidad.

Qué faltó: Veo muchas áreas de oportunidad para su idea, pero la dejaron en un punto intermedio entre lo que pudieron lograr y lo que demostraron. Lo de reproducir sonidos mediante el Arduino, podrían pensar en utilizar una computadora central como lo hacen en la mayoría de los productos y simplemente llamar el sonido correcto. Lo de login y las gráficas puede ser un servicio interno y podrían utilizar tales gráficas para crear un servicio web que muestre un ranking de las obras. Veo que el audio es largo, pero no alcancé a notar si se corta cuando no hay nadie, este es el comportamiento que al menos yo esperaría.

Casa segura:

Propósito: Brindar al usuario seguridad en su hogar mediante dispositivos y mecanismos inteligentes.

Qué faltó: Pues faltó mas que nada organización como ustedes lo dijeron, pues su proyecto era muy bueno, estoy seguro que mucha gente desearía tener algo como lo propusieron. Si les faltó algún dispositivo, pudieron pedirlo prestado. Lo de conversión de niveles lógicos, no es algo realmente difícil, y no es necesario tener todo conectado a una misma fuente, pues la comunicación se puede realizar con éxito.

Alarma de automóvil inteligente:

Propósito: Brindar seguridad al automóvil de forma inteligente mediante una alarma.

Qué faltó: Veo que hicieron un intento por crear una alarma que se comunica con un móvil, debo decir que utilizar GPS no es difícil por lo que creo que se pudo realizar con éxito, los servicios web pudieron implementarlos localmente, no me queda claro cual es el intermediario entre las comunicaciones que se realizan. Las notificaciones debieron implementarse mediante ese servicio web, es decir, Bluetooth no es confiable a más de 10 metros de distancia, suponiendo que no hay obstrucciones.

Localizador inteligente:

Propósito: Mantener una serie de objetos localizados en un área determinada.

Qué faltó: No me queda muy claro como localizan los dispositivos, me imagino que mediante Bluetooth. Me esperaba que localizara cualquier objeto con algún RFID tag o equivalente. Por lo que veo solo es una alarma que alerta al usuario que un dispositivo está fuera del rango. Hay que pensar en que pasaría si el dispositivo se apaga, pues no se puede tener el Bluetooth encendido por siempre.

Oficina inteligente:

Propósito: Ingresar a la oficina mediante una sola llave además de que esto brindará servicios.

Qué faltó: Aunque su demo demuestra un funcionamiento básico, es cierto que pueden utilizar todo esto para varias funciones, en este caso solo simularon mediante software, pero esto se puede extender fácilmente a implementar el sistema en un ambiente real. Faltó un servicio local o web que controle lo que está ocurriendo. También mencionan la unificación del sistema en lugar de usar módulos separados, yo creo que no es mucho problema pero si es importante mantener todo el sistema comunicado, pueden utilizar comunicación inalámbrica pues me imagino que los sensores estarán dispersos y separados.

lunes, 20 de mayo de 2013

[REDES DE TELECOMINUCACIONES] Lab 11: Aplicación de redes ad hoc

Introducción

El costo de los servicios de salud incrementa conforme pasa el tiempo, ésto crea retos para proveedores de servicio de salud, hospitales, compañías farmacéuticas y desde luego a los pacientes.

Uno de los retos es cómo brindar mejores servicios de salud a un público que incrementa y que depende de recursos limitados. Una solución de interés es la tele-medicina inalámbrica que incluye el monitoreo de pacientes, usando una infraestructura inalámbrica ubicua.

Esto reduciría el costo total de cuidados médicos, para una mejor utilización de los recursos limitados y permitiría incrementar la esperanza de vida de individuos mayores.

Algunas condiciones físicas y psicológicas necesitan ser monitoreadas: presión sanguínea, temperatura, pulso, saturación de oxígeno, heridas en la piel, trastornos de equilibrio, actividad y agitación motora, localización actual, si está o no fumando y cantidad de humedad en la ropa.


Requerimientos y mejoras de confiabilidad

Los requerimientos para el monitoreo de pacientes son diversos y complejos. Los siguientes son algunos requerimientos generales:
  • Monitoreo y transmisión de signos vitales: Incluye temperatura, presión sanguínea, ritmo cardiaco, saturación de oxigeno, agitación y actividad motora, etc. Estos involucran un monitoreo periodico para algunos signos vitales.
  • Confiabilidad de entrega de datos: Debido a situaciones de riesgo, el envio y recepción de datos es crucial. Algunos factores son alcance de señal del dispositivo, batería, velocidad de datos, protocolo de ruteo, y comportamientos no cooperativos  de otros dispositivos.
  • Entrega de datos en tiempo razonable: La red debe entregar datos de los signos vitales en un cierto tiempo determinado por el nivel de emergencia. Los retrasos aumentan conforme el número de pacientes monitoreados aumenta.
  • Conservación de energía: El reto es conservar la energía del dispositivo mientras se satisfacen los requerimientos de monitoreo. Los factores influyentes son la potencia necesaria para transmitir datos, número de mensajes que deben ser ruteados, esquema de ruteo.
  • Cobertura para pacientes móviles y estáticos: La cobertura de pacientes debe incluir tanto pacientes dentro como fuera de casa, lo que hace difícil el monitoreo para pacientes fuera de casa es la distribución de pacientes que resulta en un esquema de comunicación poco confiable.
  • Soporte para diversos dispositivos de batería: Estos dispositivos deben ser utilizados en términos de poder y procesamiento, y el tipo de dispositivo depende de las condiciones físicas de los pacientes.
  • Escalabilidad: Los factores influynetes para este epunto son la velocidad de datos, frecuencia de monitoreo y transmisión, y el total de información por paciente. En una red ad hoc la velocidad de datos efectiva decrementa conforme la distancia entre dispositivos debido a:
    • Un requerimiento de poder incrementado que excede el disponible.
    • Transmisión de errores frecuente, los errores requieren retransmisión.
    • Área incrementada donde no hay dispositivos que puedan transmitir hasta que la transmisión actual sea completada.
  • Carga cognitiva manejable para los profesionales: Los datos obtenidos por el sistema no deben ser abrumadores para los médicos y profesionales en la salud, es decir, no se deben de llenar de mensajes repetitivos o con información variada. Los dispositivos deben ser capaces de hacer decisiones inteligentes en la selección de datos en cuanto al estado del paciente, y alertar a los médicos cuando haya algo anormal en los datos.
  • Privacidad y confidencialidad: Debido a que la información de salud es transmitida por redes inalámbricas, deben existir esfuerzos para mantener esta información confidencial. Se espera que sea un requerimiento crítico para administradores y reguladores de ley.

Protocolos de fiabilidad y conservación de energía

En redes ad hoc, la fiabiidad de la entrega de datos y conservación de energía son puntos conflictivos. Para que haya fiabilidad de entrega sin fallos se necesita incrementar el poder del dispositivo, con la finalidad de encontrar otro nodo y continuar transmitiendo. Este tipo de fiabilidad se puede mejorar utilizando multiples retransmiciones, ruteo, multiples redes ad hoc y un numero incrementela de dispositivos cooperativos.

El nivel de poder detransmición influencía la habilidad del dispositivo para localizar un dispositivo cooperativo y la habilidad de estos dispositivos cooperativos para localizar saltos dentro de la red y continuar ruteando. Consecuentemente la conectividad de la red ad hoc depende del poder de transmisión.

Algunos protocolos para el manejo de energía son:

Protocolo
Fiabilidad
Eficiencia
Saltos
Requerimientos de procesamiento
Adecuado para
MP-MDC
(Maximum Power from Patient’s Device and Cooperating Devices)
La más alta (utiliza mucho poder de transmición)Baja (la batería no durará mientras se utilize el máximo poder)Los menosposibles (utilizan mucho poder para mejor fiabilidad)Ninguno (todos los dispositivos transmiten al máximo poder)Transmisión de signos vitales de emergencia
OP-OCD
(Optimal Power from Both Patient and Cooperating Devices)
Alta (especialmente para poca movilidad de dispositivos)La más altaLos máximos posibles (utilizan poco poder de transmisión)Muy altos (para determinar los niveles óptimos de poder)Transmisión de signos vitales rutinarios
MP-OCD
(Maximum from Patient and Optimum from Cooperating Devices)
Muy alta (el máximo poder de los dispositivos incrementa la probabilidad de encontrar un salto.)La máxima conservación de poder posibleMás que OP-OCD y menos que MP-MDCAltos (para determinar los niveles óptimos de poder para algunos dispositivos)Transmisión de signos vitales de poca emergencia
RP-RCD
(Random Power from Patient’s Device and Cooperating Devices)
Imprevisible (basada en el poder individual de saltos individuales)Imprevisible (basada en la suma de todos los niveles de poder)Imprevisible (basada en el poder individual de saltos individuales)Bajos (los dispositivos seleccionan un poder de transmisión aleatorio)No aplica

Mantenimiento asistido de poder y estrategia de sueño

El propósito de los protocolos de conservación de poder puede se combinado con una estrategia de sueño. esto involucra el ahorro de energía en la capa física, y utilizar información de la capa de red y aplicación para crear un balance entre fiabilidad y conservación de energía.

Bajo el ciclo de sueño, los dispositivos pueden despertar periodicamente para verificar cualquier mensaje en espera o acciones por realiazar.

Los siguientes factores de múltiples capas pueden influir en la estrategia de sueño: nivel de conectividad, imparcialidad de las horas de sueño para los dispositivos, conservación de energía, niveles generales de la estrategia del sueño, y movilidad de los pacientes.

El impacto del mantenimiento asistido de poder y estrategia de sueño en la fiabilidad de la red, debe ser cuidadosamente evaluado. A pesar de que estas mejoras aumentan el ahorro de energía de los dispositivos y así mejorar la fiabilidad de las futuras transmisiones a nivel de dispositivo, una mala aplicación podría dar lugar a dificultades de ruteo de mensajes de emergencia debido a un número insuficiente de dispositivos disponibles para el ruteo.

Modelado y evaluación de rendimiento

Para poder evaluar al fiabilidad y los protocolos, se desarrolló un modelo analítico. Este modelo puede estimar la fiabilidad y el poder necesario para cada protocolo. Se extiende para derivar evaluación de rendimiento multimétrica para mensajes normales y de emergencia asistidos y de mantenimiento de poder automático y para varias estrategias de sueño.

Para medir la fiabilidad bajo varias densidaddes y saltos de ruteo, se variaron los saltos de 2 a 10, cambiando la distancia de cobertura por salto. para un número dado de saltos, los dispositivos involucrados transmitieron a un mismo nivel de poder, equivalente a la raíz de la distancia del siguiente salto. Los dispositivos fueron ordenados uniformemente. Al reducir el número de saltos, el poder de transmisión es incrementado en proporción a la raíz de la distancia de cada salto. El incremento resultante tiende a una alta probabilidad de encontrar uno o varios dispositivos cooperativos, por lo tanto mejora la fiabilidad.

Conclusiones

Existen varios retos, como el de soportar un monitoreo fiable utilizando redes ad hoc y como manejar la energía y poder de transmición desde los dispositivos de los pacientes.

Se discutió el diseño de los protocolos para lograr esta fiabilidad presentando el mantenimiento asistido de energía.

Los resultados muestran que los protocolos OP-OCD y MP-MCD son los más destacables, el primero porque logra un mantenimiento de energía, y el segundo por su alta fiabilidad con densidades de dispositivos bajas.

Es importante notar que la estrategia de sueño no es la mejor, pues le afecta en gran medida la cantidad de dispositivos en la red. Si existen muchos dispositivos en red, los tiempos de sueño son reducidos, haciendo que haya poca conservación de energía. Mientras que con pocos dispositivos, los tiempos de sueño son largos y tienden a perder mensajes. La solución propuesta es utilizar estrategias de sueño distintas para cada protocolo de mantenimiento de energía. lo que implica que los dispositivos en una red pueden estar tanto en uno como en otro protocolo en dado momento.

Los dispositivos deben de tomar decisiones inteligentes para el análisis de datos y enviar información relevante dependiendo del estado del paciente, lo que implica que el dispositivo es capaz de entender la situación actual del paciente, por lo tanto el sistema debe tener implementados en sus protocolos, un sistema de prioridad de mensajes, tal que si es una emergencia, el sistema enviará el mensaje con un poder de transmisión mayor al de un mensaje normal.

Referencias:

[1] Upkar Varshney, Sweta Sneha, "Patient Monitoring Using Ad Hoc Wireless Networks: Reliability and Power Management"(articulo en "Quality Assurance and Devices in Telemedicine", IEEE Communications Magazine, Abril 2006)

jueves, 16 de mayo de 2013

[VISIÓN COMPUTACIONAL] Reporte de Proyecto: Detección de rostros de gatos

Propósito

Se pretende escribir una librería capaz de detectar rostros de gatos (ningún motivo en especial), utilizando técnicas de filtrados y mapeos de zonas de interés, eso quiere decir que se pretende mapear características especiales que nos indican que se trata de un rostro.

Justificación

En la actualidad existen tecnologías capaces de detectar rostros y clasificarlos, la mayoría son productos que vienen con esas características. Lo que se busca con este proyecto es proporcionar una librería dedicada a esto.

Sus aplicaciones son variadas, de las más interesantes está la de utilizar tecnologías de reconocimiento facial para buscar personas extraviadas. Otra posible aplicación interesante sería la de buscar delincuentes, pues es lo mismo que la anterior pero enfocada a otro tema.

Ya que el tema es utilizarla en gatos (u otros animales), una aplicación interesante sería el de puertas automáticas que detectan un gato y se abren o cierran.

También una idea sería utilizar un sistema como ese para rellenar los platos de las mascotas dependiendo del rostro del animal, si hay larga o corta exposición en la cámara, el sistema decidiría que hacer.

Diseño del software

El programa trabaja de forma sencilla, pues lo único que debe hacer es buscar zonas de interes en una imagen. El procedimiento es el siguiente:

  • Entrada de datos: Una imagen con algún gato de entrada para iniciar con el proceso, se inicia con un filtro mediano para eliminar ruido.
  • Filtrado: Desde que se obtiene una versión de la imagen con filtro mediano, se empieza a obtener los datos necesarios. Se continua con el proceso de normalización para obtener un mapa de puntos.
  • Mapeo: Una vez que se tiene el mapa de puntos, se puede notar que en la imagen se encuentran resaltadas algunas zonas de interés (ojos, nariz, orejas, etc.). Se adelgazan los puntos para separar las zonas de interés del ruido.
  • Detección: Con las zonas de interés mapeadas, sabemos lo que buscamos en las imágenes y de esta manera podremos detectar lo que estemos buscando, en este caso un rostro.
Primero se introduce una imagen:

Después se inicia el proceso de filtrado:

Una vez aplicado el filtro mediano, se procede a normalizar, lo que ocurriría en una imagen normal es que daría una imagen con bordes destacados, en este caso no son bordes sino puntos:

Se procede a eliminar ruido de la imagen, los puntos sobresalientes sobrevivirán:

Ahora solo quedan zonas de interés, se toma el centro de las más notables, en este caso los ojos y la mancha frontal son elementos comunes en los gatos, puesto que es una imagen chica solo se alcanzó a detectar esas zonas, pero será suficiente:
Ahora estos puntos ya son del rostro detectado, solo falta encerrar la zona en un rectángulo para identificar el rostro del gato:

Simplemente encerramos la zona en la imagen original y listo.

Descripción textual

Lo que hace el software internamente en realidad es filtrar y buscar puntos de interés, pero ¿cómo se que una mancha no es un punto de interés? Pues la mayoría de los puntos de interés son simétricos y de gran tamaño. La mayor parte de las manchas se pierden cuando se filtra la imagen, el resto hace interferencia pero no es la gran cosa.



Librerías

Solamente utilicé la librería PIL, en un principio utilizaría OpenCV, pues en el puedo hacer la mayoría de los filtrados en menor tiempo, pero decidí utilizar el 100% de mi librería.

Los filtros y funciones que utilicé fueron los siguientes:
  • Filtro mediano: utilizado para remover ruido y para destacar los puntos de mapeo, junto con la normalización.
  • Filtro promedio: al igual que el filtro mediano, sirve para remover el ruido de las imágenes, además de que con el pude puntear la imagen en conjunto con filtro mediano.
  • Normalización: En general fue el encargado de mantener en funcionamiento las dos anteriores, entre iteraciones, paraba las imágenes a blanco y negro para evitar la generación de ruido.
  • BFS: utilizado para localizar zonas de interés y obtener su centro.
  • Dilatación: Sirve para adelgazar los pixeles negros mediante la dilatación de los blancos, útil para separar puntos.

Desempeño

Para las medidas de desempeño, puesto que solo utilicé imagenes estáticas, utilicé 8 resoluciones para una misma imagen y medí el tiempo de procesamiento.
  • Para imagenes grandes el tiempo de procesamiento es mayor pero tiene mejores resultados.
  • Para imagenes pequeñas, el procesamiento es rápido pero poco efectivo.

En total fueron 4 imágenes a 8 resoluciones cada una. Las resoluciones aproximadas fueron:
  • 800x850
  • 750x800
  • 700x750
  • 600x650
  • 550x600
  • 500x550
  • 350x400
  • 250x300
Dependiendo de la imagen, existía una pequeña varianza entre los tamaños, pero siempre tratando de ser proporcionales.

En el ejemplo siguiente se muestra el mejor y el peor caso:
Esta es la versión original y de mayor resolución, como se puede ver, hay detección en una zona aceptable.Esta versión es de tamaño reducido, el tiempo de procesamiento es de pocos segundos pero no da buenos resultados.

Demo

  

Futuro del proyecto

Para el futuro quizá deje a un lado Python y empieze a trabajar con un lenguaje más eficiente en cuanto a rendimiento. Esto ayudará implementar filtros en tiempos pequeños, y será mejor en cuestión de paralelización, pues muchos procesos facilmente se pueden paralelizar.

También tengo pensado en utilizar procesamiento de video y webcams en tiempo real, pues eso es más factible que usar imagenes estáticas.

Con los datos de salida de la librería se puede alimentar una red neuronal para que aprenda a detectar las zonas de interes basadas en haar cascades como OpenCV.

Liga al proyecto: https://github.com/victoralex911/vision-computacional/tree/master/cats

Presentación:

Referencias:
[1] Yongsheng Gao, Maylor K.H. Leung, "Face Recognition Using a Line Edge Map" (IEEE Pattern Analysis and Machine Intelligence 2002)

[2] Kevin Bonsor, Ryan Johnson, "How Facial Recognition Systems Work", "HowStuffWorks", http://electronics.howstuffworks.com/gadgets/high-tech-gadgets/facial-recognition.htm