Articulo de referencia

PhyCV

PhyCV es la primera biblioteca de visión artificial que utiliza algoritmos derivados directamente de las ecuaciones físicas que rigen los fenómenos físicos. Los algoritmos que a...

PhyCV es la primera biblioteca de visión artificial que utiliza algoritmos derivados directamente de las ecuaciones físicas que rigen los fenómenos físicos. Los algoritmos que aparecen en la primera versión emulan la propagación de la luz a través de un medio físico con propiedades difractivas naturales y artificiales, seguidas de una detección coherente. A diferencia de los algoritmos tradicionales, que son una secuencia de reglas empíricas elaboradas manualmente, los algoritmos inspirados en la física aprovechan las leyes físicas de la naturaleza como planos. Además, estos algoritmos pueden, en principio, implementarse en dispositivos físicos reales para una computación rápida y eficiente en forma de computación analógica. [ 1 ] Actualmente, PhyCV tiene tres algoritmos: Phase-Stretch Transform (PST) , Phase-Stretch Adaptive Gradient-Field Extractor (PAGE) y Vision Enhancement via Virtual diffraction and coherent Detection (VEViD). Todos los algoritmos tienen versiones para CPU y GPU. PhyCV ya está disponible en GitHub y se puede instalar desde pip .

Historia

Los algoritmos en PhyCV están inspirados en la física del estiramiento temporal fotónico [ 2 ] [ 3 ] (una técnica de hardware para la adquisición de datos ultrarrápida y de una sola toma ). PST es un algoritmo de detección de bordes que se publicó como código abierto en 2016 y tiene más de 800 estrellas y más de 200 bifurcaciones en GitHub . PAGE es un algoritmo de detección de bordes direccional que se publicó como código abierto en febrero de 2022. PhyCV fue desarrollado originalmente y publicado como código abierto por Jalali-Lab @ UCLA en mayo de 2022. En la versión inicial de PhyCV, el código original de código abierto de PST y PAGE se refactorizó y mejoró significativamente para ser modular, más eficiente, acelerado por GPU y orientado a objetos. VEViD es un algoritmo de mejora de color y baja luminosidad que se agregó a PhyCV en noviembre de 2022.

Fondo

Transformación de estiramiento de fase (PST)

La transformada de estiramiento de fase (PST) es un algoritmo de detección de bordes y texturas computacionalmente eficiente con un rendimiento excepcional en imágenes con discapacidad visual. [ 4 ] [ 5 ] [ 6 ] El algoritmo transforma la imagen emulando la propagación de la luz a través de un dispositivo con una propiedad difractiva diseñada, seguida de una detección coherente. Se ha aplicado para mejorar la resolución de imágenes de resonancia magnética , [ 7 ] extraer vasos sanguíneos en imágenes de retina, [ 8 ] identificación de delfines, [ 9 ] y tratamiento de aguas residuales, [ 10 ] imágenes biológicas de moléculas individuales, [ 11 ] y clasificación de UAV mediante imágenes micro Doppler. [ 12 ]

Extractor de campo de gradiente adaptativo de estiramiento de fase (PAGE)

El extractor de campo de gradiente adaptativo de estiramiento de fase (PAGE) es un algoritmo inspirado en la física para detectar bordes y sus orientaciones en imágenes digitales a diversas escalas. [ 13 ] [ 14 ] El algoritmo se basa en las ecuaciones de difracción de la óptica. Metafóricamente hablando, PAGE emula la física de la propagación difractiva birrefringente (dependiente de la orientación) a través de un dispositivo físico con una estructura difractiva específica. La propagación convierte una imagen de valor real en una función compleja. La información relacionada está contenida en las componentes real e imaginaria de la salida. La salida representa la fase de la función compleja.

Mejora de la visión mediante difracción virtual y detección coherente (VEViD)

Vision Enhancement via Virtual diffraction and coherent Detection (VEViD) es un algoritmo de mejora de color y baja luminosidad eficiente e interpretable que reimagina una imagen digital como un campo de luz metafórico espacialmente variable y luego somete el campo a procesos físicos similares a la difracción y la detección coherente. [ 15 ] El término "virtual" captura la desviación del mundo físico. El campo de luz está pixelado y la propagación imparte una fase con una dependencia arbitraria de la frecuencia que puede ser diferente del comportamiento cuadrático de la difracción física. VEViD se puede acelerar aún más mediante aproximaciones matemáticas que reducen el tiempo de cálculo sin un sacrificio apreciable en la calidad de la imagen. Una aproximación de forma cerrada para VEViD que llamamos VEViD-lite puede lograr hasta 200 FPS para la mejora de video 4K.

PhyCV en el borde

Gracias a su baja dimensionalidad y alta eficiencia, PhyCV es ideal para aplicaciones de computación perimetral . En esta sección, demostramos la ejecución de PhyCV en tiempo real en una NVIDIA Jetson Nano.

Kit de desarrollo NVIDIA Jetson Nano

El kit de desarrollo NVIDIA Jetson Nano es una plataforma compacta y de bajo consumo para aplicaciones de computación perimetral. Está equipado con una GPU con arquitectura NVIDIA Maxwell de 128 núcleos CUDA , una CPU ARM Cortex-A57 de cuatro núcleos, 4 GB de RAM LPDDR4 de 64 bits y admite codificación y decodificación de vídeo hasta resolución 4K . Jetson Nano también ofrece diversas interfaces para conectividad y expansión, lo que lo hace ideal para una amplia gama de aplicaciones de IA e IoT. En nuestra configuración, conectamos una cámara USB a Jetson Nano para capturar vídeos y demostramos cómo usar PhyCV para procesarlos en tiempo real.

PhyCV en tiempo real en Jetson Nano

Usamos la Jetson Nano (4 GB) con NVIDIA JetPack SDK versión 4.6.1, que viene con Python 3.6, CUDA 10.2 y OpenCV 4.1.1 preinstalados. Además, instalamos PyTorch 1.10 para habilitar PhyCV acelerado por GPU. Mostramos los resultados y las métricas de PhyCV ejecutándose en Jetson Nano en tiempo real para tareas de detección de bordes y mejora de baja iluminación. Para videos de 480p , ambas operaciones alcanzan más de 38 FPS, lo cual es suficiente para la mayoría de las cámaras que capturan videos a 30 FPS. Para videos de 720p, la mejora de baja iluminación de PhyCV puede operar a 24 FPS y la detección de bordes de PhyCV puede operar a 17 FPS.

Reflejos

Arquitectura de código modular

Arquitectura de código modular de los algoritmos de PhyCV.

El código de PhyCV presenta un diseño modular que reproduce fielmente el proceso físico del que se originó el algoritmo. Los módulos PST y PAGE de la biblioteca PhyCV emulan la propagación de la señal de entrada (imagen digital original) a través de un dispositivo con propiedades difractivas específicas, seguida de la detección coherente (de fase). La propagación dispersiva aplica un núcleo de fase al dominio de la frecuencia de la imagen original. Este proceso consta generalmente de tres pasos: cargar la imagen, inicializar el núcleo y aplicarlo. En la implementación de PhyCV, cada algoritmo se representa como una clase en Python , y cada clase contiene métodos que simulan los pasos descritos. La arquitectura modular del código se basa en la física subyacente al algoritmo. Para más detalles, consulte el código fuente en GitHub.

Aceleración por GPU

PhyCV admite la aceleración por GPU. Las versiones para GPU de PST y PAGE están basadas en PyTorch y aceleradas por el kit de herramientas CUDA . Esta aceleración resulta beneficiosa para la aplicación de los algoritmos en el procesamiento de vídeo e imágenes en tiempo real, así como en otras tareas de aprendizaje profundo . A continuación, se muestra el tiempo de ejecución por fotograma de los algoritmos de PhyCV en CPU (Intel i9-9900K) y GPU (NVIDIA TITAN RTX) para vídeos con diferentes resoluciones. Cabe destacar que la mejora de baja luminosidad de PhyCV opera en el espacio de color HSV, por lo que el tiempo de ejecución también incluye la conversión de RGB a HSV. Sin embargo, para todos los tiempos de ejecución con GPU, se ignora el tiempo de transferencia de datos de la CPU a la GPU y solo se contabiliza el tiempo de ejecución del algoritmo.

Instalación y ejemplos

Para obtener documentación técnica detallada, consulte el archivo README de GitHub .

Limitaciones actuales

Cuello de botella de E/S (Entrada/Salida) para el procesamiento de vídeo en tiempo real

Al procesar transmisiones de video en tiempo real desde cámaras, los fotogramas se capturan y almacenan en la CPU, y deben transferirse a la GPU para ejecutar los algoritmos PhyCV acelerados por GPU. Este proceso consume mucho tiempo y suele ser un cuello de botella para los algoritmos de procesamiento de video en tiempo real.

Falta de adaptabilidad de parámetros para diferentes imágenes

Actualmente, los parámetros de los algoritmos PhyCV deben ajustarse manualmente para cada imagen. Si bien un conjunto de parámetros preseleccionados funciona relativamente bien para una amplia gama de imágenes, la falta de adaptabilidad de los parámetros a diferentes imágenes sigue siendo una limitación por el momento.

Véase también

Referencias

  1. Ingeniería de características basada en la física. Jalali et al. Óptica, fotónica y tecnología láser, 2019
  2. Conversión analógica-digital con tiempo de retardo extendido. Bhushan et al. Técnicas de Electronic Letters, 1998.
  3. Estiramiento temporal y sus aplicaciones. Mahjoubfar et al. Nature Photonics, 2017
  4. Detección de bordes de imagen inspirada en la física. Asghari et al. Simposio Global de Procesamiento de Señales e Información del IEEE, 2014
  5. Detección de bordes en imágenes digitales mediante estiramiento de fase dispersiva. Asghari et al. International Journal of Biomedical Imaging, 2015
  6. Mejora de características en imágenes de personas con discapacidad visual. Suthar et al. IEEE Access, 2018
  7. Superresolución rápida en imágenes de resonancia magnética mediante la transformada de estiramiento de fase, regresión de punto anclado y aprendizaje sin datos. He et al. Conferencia Internacional IEEE sobre Procesamiento de Imágenes, 2019.
  8. Transformación de estiramiento de fase de flujo local para la detección robusta de vasos retinianos. Challoob et al. En Conferencia Internacional sobre Conceptos Avanzados para Sistemas de Visión Inteligente, 2020
  9. Método de identificación de delfines basado en PST mejorado. Wang et al. En 2021 IEEE/ACIS 6th International Conference on Big Data, Cloud Computing, and Data Science (BCD), 2021
  10. Segmentación de imágenes de contraste de fase de lodos activados mediante transformada de estiramiento de fase. Ang et al. Microscopy, 2019
  11. Transformación de estiramiento de fase para microscopía de localización de superresolución. Ilovitsh et al. En Biomedical Optics Express, 2016
  12. Clasificación de drones mediante imágenes micro-Doppler con mejora de bordes basadas en CNN. Singh et al. Traitement du Signal, 2021
  13. Extractor de campo de gradiente adaptativo de estiramiento de fase (página). Suthar et al. Coding Theory, 2020
  14. Extractor de campo de gradiente adaptativo de estiramiento de fase (PAGE). MacPhee et al. Preimpresión de arXiv arXiv:2202.03570, 2022
  15. VEViD: Mejora de la visión mediante difracción virtual y detección coherente. Jalali et al. eLight , 2022