Optical Flow – Casos de uso típicos
Optical Flow beneficia a casos de uso como
- Seguimiento de objetos para análisis de vídeo inteligente
- Interpolación de cuadros de vídeo, y extrapolación
- Estimación de la profundidad estéreo
- Reconocimiento de acciones en vídeo
Seguimiento de objetos para la analítica de vídeo inteligente
Hasta hace unos años, la analítica de vídeos inteligentes (IVA) requería el visionado físico y el análisis manual de los vídeos capturados. Con los rápidos desarrollos de la visión por ordenador y las técnicas de aprendizaje profundo, la mayor parte de estos análisis están ahora automatizados. La identificación de los objetos/personas/vehículos de interés a partir de las grabaciones de las cámaras de seguridad y su seguimiento a través de los fotogramas de vídeo pueden lograrse utilizando algoritmos de visión por ordenador. Las GPU son una plataforma natural para ejecutar estas aplicaciones debido a la alta complejidad computacional y los requisitos de paralelismo. El método más habitual consiste en detectar e identificar los objetos/personas/vehículos de interés en cada fotograma de vídeo y ejecutar un algoritmo para correlacionar los objetos en fotogramas sucesivos y seguir su movimiento. Este método, aunque preciso, adolece de unos requisitos de complejidad computacional extremadamente altos, ya que la detección/identificación de objetos es una operación computacionalmente intensiva (que suele utilizar la inferencia de redes neuronales).
El motor de flujo óptico por hardware alivia significativamente los requisitos de complejidad computacional al ayudar al seguimiento de los objetos. Por ejemplo, una vez que un objeto es detectado/identificado por el detector, puede ser rastreado en sucesivos fotogramas de vídeo por un algoritmo basado en el flujo óptico de hardware de la GPU. Esto elimina la necesidad de ejecutar el algoritmo de detección en cada fotograma, lo que supone una enorme reducción de la complejidad computacional. El detector puede ejecutarse ahora cada Kº fotograma sin comprometer la precisión (K > 1, normalmente K = 4). Esto deja los núcleos CUDA de la GPU libres para ejecutar la inferencia en canales adicionales u otras tareas de alta carga computacional.
El SDK 2.0 de flujo óptico incluye una librería de rastreo de objetos basada en el flujo óptico, junto con el código fuente y una API lista para usar. En nuestros experimentos, el rastreador de objetos basado en el flujo óptico ha demostrado reducir la utilización de la GPU hasta en un 80%, en comparación con algunos de los algoritmos más populares, sin comprometer la precisión del seguimiento.
Interpolación y extrapolación de fotogramas de vídeo
El flujo óptico también puede utilizarse de forma muy eficaz para interpolar o extrapolar los fotogramas de vídeo en tiempo real. Esto puede ser útil para mejorar la suavidad de la reproducción de vídeo, generar vídeos a cámara lenta o reducir la latencia aparente en la experiencia de RV, como utiliza Oculus (detalles)
La funcionalidad de flujo óptico en las GPUs Turing y Ampere acelera estos casos de uso descargando el cálculo intensivo del vector de flujo a un motor de hardware dedicado en el silicio de la GPU, liberando así ciclos de la GPU y la CPU para otras tareas. Esta funcionalidad en el hardware es independiente de los núcleos CUDA.
FAQ
R: Después de descargar el SDK, consulte el archivo «ReadMe.txt» que enumera la versión mínima requerida del controlador de pantalla. Es necesario instalar los controladores correctos o de lo contrario el SDK no se iniciará y esto es lo primero que debe comprobar en caso de que haya un fallo de inicialización.
R: La aplicación cliente debe consultar las capacidades utilizando la API de capacidades antes de activar cualquier característica.
R: Recomendamos encarecidamente a todos los desarrolladores de aplicaciones que revisen las guías de programación en detalle antes de escribir cualquier aplicación. En particular, para obtener algunos consejos sobre esta cuestión, consulte la siguiente sección de la documentación:
- «Directrices para el uso eficiente de la API de NVOF» en la Guía de programación de la API de NVOF
R: El SDK de Optical Flow proporciona muestras diseñadas específicamente para ofrecer un rendimiento óptimo. Puede medir el rendimiento utilizando cualquiera de las muestras.
R: La API de NVOF expone APIs que permiten a los usuarios consultar las versiones máximas de API soportadas por el controlador subyacente. Dependiendo de la versión máxima de API soportada por el controlador, la aplicación puede lanzar código en tiempo de ejecución compilado con la API apropiada.
R: Por favor, consulte la nota de aplicación de NVOFA incluida en la documentación del SDK para tener una idea sobre el rendimiento. El rendimiento depende de muchos factores, algunos de los cuales son La GPU en uso y su velocidad de reloj, los ajustes utilizados (por ejemplo, el preajuste, el tamaño de la cuadrícula y características como el ROI), el ancho de banda de la memoria disponible, el diseño de la aplicación.
Soporte
Nuestra comunidad del foro es donde los desarrolladores pueden hacer preguntas, compartir experiencias y participar en discusiones con NVIDIA y otros expertos en el campo.
Consulta los foros aquí.
Recursos adicionales
- SDK de códecs de vídeo de NVIDIA
- SDK de DeepStream para análisis de vídeo inteligente
- Software de aprendizaje profundo
- GitHub – Flujo óptico de NVIDIA en OpenCV
- Sesión GTC 2020 – Tecnologías de vídeo de NVIDIA: Codec de vídeo y SDK de flujo óptico
- Sesión GTC 2020 – Uso eficaz del SDK de códec de vídeo y del SDK de flujo óptico en las GPUs NVIDIA
- NVIDIA DevBlog – 5 de diciembre de 2019 – Acelerar OpenCV: Algoritmos de flujo óptico con las GPU Turing de NVIDIA
- Noticias para desarrolladores de NVIDIA – 23 de agosto de 2019 – Los investigadores de VideoGorillas utilizan la IA para remasterizar contenido archivado a resolución 4K y superior
- Blog para desarrolladores de Oculus – 23 de mayo, 2019 – ASW y Passthrough+ con NVIDIA Optical Flow
- NVIDIA DevBlog – 13 de febrero de 2019 – Introducción al SDK de NVIDIA Optical Flow