.

Otros

Imagen procesada

1

Un nuevo lenguaje de programación para los algoritmos de procesado de imágenes produce un código más claro y rápido.

  • por Larry Hardesty | traducido por Lía Moya (Opinno)
  • 01 Noviembre, 2012

El software de procesado de imágenes es un producto muy deseado. Pero los archivos de fotos digitales ya son tan grandes que, sin un poco de ingeniería inteligente, procesarlos es dolorosamente largo. Sin embargo, los trucos que usan los ingenieros para acelerar sus algoritmos de procesado de imágenes hacen que su código sea casi ilegible y, con mucha frecuencia, imposible de ejecutar en más de un tipo de máquina.

Investigadores del Instituto Tecnológico de Massachusetts (EE.UU.) quieren hacer que eso cambie gracias a un nuevo lenguaje de programación llamado Halide. Los programas Halide son más fáciles de leer, escribir y revisar que los programas escritos en un lenguaje convencional. Y como Halide ayuda a automatizar los procedimientos de optimización de código que normalmente llevaría horas hacer a mano, también son significativamente más rápidos.

Los investigadores usaron Halide para reescribir varios algoritmos comunes de procesado de imágenes cuyo rendimiento ya se había optimizado manualmente. Las versiones Halide eran, de media, un tercio más largas, pero ofrecían mejoras de rendimiento significativas, multiplicando la velocidad por un factor de dos, tres y hasta seis veces.

Normalmente el procesado de imágenes requiere una sucesión de operaciones diferenciadas: procedimientos por defecto, como corrección del color, mejora del contraste y corrección de errores, y pasos especificados por el usuario, como corrección de ojos rojos o suavizado de sombras. 

Al distribuir trozos de una imagen a distintos núcleos en un chip con varios de ellos se puede mejorar la eficacia del procesado, pero el tiempo que lleva reunir los datos después de cada paso puede anular esas ganancias. Así que los ingenieros de software intentan mantener a cada núcleo individual ocupado durante el mayor tiempo posible antes de reunir los resultados. La necesidad de hacer un seguimiento de las dependencias entre las operaciones que se llevan a cabo en distintos núcleos, hace que el código para procesadores de imágenes sea muy complicado.

Halide no ahorra al programador la labor de pensar cómo distribuir las tareas entre los núcleos, pero sí separa ese problema de la descripción de dichas tareas. Un programa Halide tiene dos secciones: una para algoritmos y otra para la 'agenda' de procesado. La agenda puede especificar, entre otras cosas, las relaciones entre pasos que se ejecutan en distintos núcleos.

Un programador que quiera añadir un nuevo paso de procesado solo tiene que insertar una descripción del mismo en la sección de algoritmos. “Cuando tienes la idea de que quieres hacer cosas en paralelo de determinada manera o usar las fases de determinada manera, es muy difícil expresar la idea correctamente al escribirlo a mano”, afirma Jonathan Ragan-Kelley, el estudiante que ha dirigido el diseño de Halide junto con Andrew Adams, estudiante de doctorado en el Laboratorio de Ciencia Informática e Inteligencia Artifical del Instituto Tecnológico de Massachusetts. “Si tienes una nueva idea de optimización que quieres aplicar, lo más probable es que te pases tres días quitándole errores porque lo has roto en el proceso. Con esto, cambias una línea que expresa esa idea, y sintetiza lo que tiene que sintetizar”, concluye Ragan-Kelley.

Otros

  1. De la llegada a la Luna al desarrollo de la IA: el papel de las universidades en la innovación

    Capacitar a las universidades para que se mantengan a la vanguardia de la investigación en IA será clave para hacer realidad el potencial de este campo a largo plazo.

    Cuatro columnas y un frontón griego sobre torres de servidores mientras un investigador mira un portátil en un carro de servidores.
  2. Es hora de jubilar el término "usuario"

    La proliferación de la IA significa que necesitamos una nueva palabra.

    Chica con un móvil en la mano vista a través de un cristal roto
  3. Elevar tu casa o abandonarla: el dilema del cambio climático en Luisiana

    La costa suroeste de Luisiana se enfrenta a algunas de las predicciones climáticas más severas de Estados Unidos. ¿Puede un proyecto gubernamental levantar la zona y sacarla de la crisis?

    Una casa de estilo A-frame en Luisiana, elevada sobre pilares de cemento, preparada para inundaciones. Con dos pisos, su fachada roja contrasta con el cielo parcialmente nublado. Al fondo, se ve el bayou.