Software

El software de escritura de gráficos se hace mucho más fácil

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado
 

Un nuevo lenguaje de programación para algoritmos de proceso de imágenes ofrece código mucho más corto y más claro - pero también más rápido.

El software de proceso de imágenes es una tendencia: basta con mirar a Instagram, una compañía construida alrededor del proceso de imágenes que Facebook está tratando de comprar por 1000 millones de dólares.

El proceso de imágenes también va al móvil, a medida que más y más personas están enviando fotos de teléfonos móviles directamente a la Web, sin transferirlas primero a un ordenador.

Al mismo tiempo, los archivos de fotos digitales se están haciendo tan grandes que, sin un montón de ingeniería de software inteligente, procesarlas tomaría un tiempo terriblemente largo en un ordenador personal, y mucho menos en un teléfono móvil. Por desgracia, los trucos que utilizan los ingenieros para acelerar sus algoritmos de proceso de imágenes hacen su código casi ilegible, y raramente reutilizable. Añadir una nueva función a un programa de proceso de imágenes, o modificarlo para que se ejecute en un dispositivo diferente, a menudo requiere estudiarlo de nuevo y revisarlo de arriba a abajo.

Los investigadores del MIT's Computer Science and Artificial Intelligence Laboratory (CSAIL) ayudan a cambiar esto, con un nuevo lenguaje de programación llamado Halide. No sólo los programas Halide son más fácil de leer, escribir y revisar que los programas de proceso de imágenes escritos en un lenguaje convencional, sino porque Halide automatiza los procedimientos de optimización de código que normalmente necesitarían horas para realizarse a mano, y también son significativamente más rápidos.

En las pruebas, los investigadores del MIT utilizan Halide para reescribir varios algoritmos comunes en el proceso de imágenes, cuyo rendimiento había sido optimizados ya por programadores experimentados. Las versiones de Halide eran por lo general más de un tercio del largo pero ofrece importantes mejoras de rendimiento - dos, tres o incluso seis veces más rápido. En un caso, el programa Halide era realmente más largo que el original - pero el aumento de velocidad era de 70 veces mayor.

Jonathan Ragan-Kelley, un estudiante graduado en el Departamento de Ingeniería Eléctrica y Ciencias de la Computación (EECS), y Andrew Adams, un posdoctorado CSAIL, dirigió el desarrollo de Halide, y han lanzado el código online. En el Siggraph, la primera conferencia sobre gráficos, se ha presentador una ponencia sobre Halide, que él co-escribió con los profesores de ciencia informática del MIT Saman Amarasinghe y Fredo Durand y con colegas de Adobe y de la Universidad de Stanford.

Canalización paralela
Una razón por la que el proceso de la imagen es tan computacionalmente intensiva es que generalmente requiere una sucesión de operaciones discretas. Después de que la luz incide en el sensor de la cámara de un teléfono móvil, el teléfono "peina" los datos de la imagen para encontrar valores que indican mal píxeles de sensor en mal funcionamiento y los corrige. A continuación se correlaciona las lecturas de píxeles sensibles a diferentes colores para deducir los colores reales de las áreas de imagen. Luego se hace un poco de corrección de color, y algo más de ajuste de contraste, para hacer que los colores correspondan mejor a lo que el ojo humano ve. En este punto, el teléfono ha hecho un  proceso tan elevada que se necesita otro paso para limpiar los datos.

Y eso es sólo para mostrar la imagen en la pantalla del teléfono. El software que hace algo más complicado, como la eliminación de ojos rojos, o suavizado de  las sombras, o aumentar la saturación de color, o hacer que la imagen se vea como una vieja foto Polaroid, introduce aún más capas de proceso. Además, las modificaciones de mayor nivel, requieren de software para ir a etapas anteriores, y volver a calcular en el canal.

En los chips de varios núcleos de hoy en día, la distribución de diferentes segmentos de la imagen a los núcleos trabajando en paralelo, puede hacer más eficiente el proceso de imágenes. Sin embargo, la forma normal en que se produce el proceso en paralelo, tras cada paso en el canal de proceso de imágenes, los núcleos podrían enviar los resultados de sus cálculos de nuevo a la memoria principal. Debido a que la transferencia de datos es mucho más lenta que el cálculo, esto puede anular todas las mejoras de rendimiento que ofrece la paralelización.

Así que los ingenieros de software tratan de mantener todos los núcleos individuales ocupados durante el mayor tiempo posible antes de tener que enviar sus resultados a la memoria. Esto significa que los núcleos tienen que ejecutar varios pasos en el canal de proceso en sus porciones de datos separadas, sin agregar sus resultados. Hacer un seguimiento de todas las dependencias entre los píxeles que se están procesando en núcleos separados es lo que hace tan complicado el código para proceso eficiente de imágenes. Además, los trade-offs entre el número de núcleos, la potencia de proceso de los núcleos, la cantidad de memoria local disponible para cada núcleo, y el tiempo que se necesita para mover los datos fuera del núcleo, varía de una máquina a otra, por lo que un programa optimizado para un dispositivo puede no ofrecer ventajas de velocidad en uno diferente.

Divide y vencerás
Halide no le ahorra al programador de pensar en cómo paralelizar eficientemente en algunas máquinas, sino que divide el problema fuera de la descripción de los algoritmos de proceso de imágenes. Un programa Halide tiene dos secciones: una para los algoritmos, y una para el "calendario" de proceso. El calendario puede especificar el tamaño y la forma de las porciones de imagen que cada núcleo necesita para procesar en cada parte del canal de proceso, y se puede especificar dependencias de datos - por ejemplo, que los pasos que se ejecutan en núcleos particulares deberán tener acceso a los resultados de los pasos anteriores en distintos núcleos. Una vez que el calendario está elaborado, sin embargo, Halide maneja toda la "contabilidad" de forma automática.

Un programador que quiere exportar un programa a otro equipo sólo cambia el calendario, no la descripción del algoritmo. Un programador que desea agregar una nueva fase de transformación al canal de proceso, sólo se conecta en una descripción del nuevo procedimiento, sin tener que modificar los ya existentes. (Un nuevo paso en el canal, requerirá una especificación correspondiente en el calendario).

"Cuando se tiene la idea de que es posible que desee poner en paralelo algo de cierta manera o etapas de utilización de cierta manera, cuando se escribe esto de forma manual, es muy difícil expresar la idea correcta", dice Ragan-Kelley. "Si tienes una nueva idea de optimización que quieres aplicar, lo más probable es que pases tres días depurandolo porque lo hayas roto en el proceso. Con esto, cambias una línea que expresa esa idea, y se sintetiza lo correcto. "

Aunque los programas de Halide son más fáciles de escribir y de leer que los programas normales de proceso de imágenes, ya que la programación se maneja automáticamente, frecuentemente ofrecen mejoras de rendimiento incluso sobre el código más cuidadosamente diseñado de forma manual. Por otra parte, el código Halide es tan fácil de modificar que los programadores simplemente podría experimentar con ideas mal concebidas para ver si mejoran el rendimiento.

"Usted puede simplemente trastear alrededor y probar cosas diferentes al azar, y encontrará a menudo algo muy bueno", dice Adams. "Sólo mucho más tarde, cuando lo haya pensado mucho, averiguará por qué es bueno".

# # #

Escrito por Larry Hardesty, MIT News Office

 

Más información

Articulos Electrónica Relacionados

Redes Sociales

Edicion Revista Impresa

1ww   

Para recibir la edición impresa o en PDF durante 1 año (10 ediciones)

Suscripción papel: 180,00.- €  (IVA inc.)

Suscripción PDF: 60,00.- € (IVA inc)

Noticias Populares Electrónica

NECTO Studio 6.1 de MIKROE incluye los compiladores MPLAB XC de Microchip y acelera la depuración a través de Wi-Fi

MIKROE ha anunciado que la última versión de su IDE multiarquitectura, NECTO Studio 6.1, incluye ahora los compiladores MPLAB XC de Microchip para...

Microchip ECC608 TrustMANAGER con keySTREAM de Kudelski IoT

El mundo confía en los sistemas IoT interconectados para todo, desde dispositivos domésticos como termostatos inteligentes, asistentes virtuales y...

Software de Toshiba para el desarrollo de controladores de motores

Toshiba Electronics Europe ("Toshiba") ha actualizado y ampliado su marco de diseño para controladores de motor CC sin escobillas (BLDC) y motores...

Entorno de simulación previo al silicio de Arm Cortex-A720AE para vehículos definidos por software

Siemens Digital Industries Software ha anunciado hoy que añade el desarrollo acelerado previo al silicio en la nube a su oferta de productos de...

Noticias Electrónica Profesional

Noticias Fuentes de Alimentación

AADvance Workbench 2.0 de Rockwell Automation ayuda a los fa

Rockwell Automation ha lanzado AADvance Workbench 2.0 para ayudar a los fabricantes a optimizar...

Actualización v.3.0 del software de sistema en el luxometro

El sistema LX-GPS de AFEISA, formado por hasta tres sondas luxométricas con captación de posición...

Advantech SUSIAccess 2.0: ahora compatible con las plataform

Advantech, proveedor de plataformas embebidas y servicios de integración, anuncia el lanzamiento...

Actualidad Electrónica Profesionales

AADvance Workbench 2.0 de Rockwell Automation ayuda a los fa

Rockwell Automation ha lanzado AADvance Workbench 2.0 para ayudar a los fabricantes a optimizar...

Actualización v.3.0 del software de sistema en el luxometro

El sistema LX-GPS de AFEISA, formado por hasta tres sondas luxométricas con captación de posición...

Advantech SUSIAccess 2.0: ahora compatible con las plataform

Advantech, proveedor de plataformas embebidas y servicios de integración, anuncia el lanzamiento...

Convertronic

Revista © Convertronic Electrónica Profesional Española.Todos los derechos reservados GM2 Publicaciones Técnicas, S.L.
Tel.: +34 91 706 56 69
Poema Sinfónico, 27. Esc B. Planta 1 Pta 5
28054 (Madrid - SPAIN)
e-mail: gm2@gm2publicacionestecnicas.com ó consultas@convertronic.net

Suscríbete a nuestro boletín de noticias

Revista Española de electrónica. Impresa desde hace más de 25 años.

España - Madrid - Todos los derechos reservados Revista © Convertronic Electrónica Profesional Española
TIC FREAK COMPANY OnServices Sistemas

Search