Ya está aquí OpenCV 5: la mayor actualización desde 2018 (lo hemos probado)

BBetter Stack
컴퓨터/소프트웨어사진/예술AI/미래기술

스크립트

00:00:00Todos conocemos OpenCV, ¿verdad? Es la biblioteca definitiva de visión artificial que todo el mundo ha estado usando para
00:00:07cambiar el tamaño de imágenes, detectar objetos y realizar todo tipo de tareas de visión artificial. Y acaba
00:00:13de recibir la primera actualización importante desde 2018. Y esta es grande. OpenCV5 tiene un nuevo
00:00:21motor de aprendizaje profundo que puede ejecutar YOLO. También puede hacer “in-painting” al estilo de stable diffusion e
00:00:27incluso ejecutar un modelo completo de lenguaje visual de forma nativa, sin PyTorch, sin ONNX runtime y nada más
00:00:35añadido. Así que en el video de hoy, analizaremos qué es lo nuevo en OpenCV5 y luego probaremos
00:00:41las nuevas funciones nosotros mismos con algunas demostraciones geniales ejecutándose localmente en mi propia máquina. Va a ser
00:00:47muy divertido, así que vamos a ello. Primero, aquí es por qué esta actualización es un gran problema.
00:00:57OpenCV está en todas partes. Tiene más de 86,000 estrellas en GitHub, más de un millón de instalaciones al día, y
00:01:05durante dos décadas, ha sido la base para la robótica, la RA y la ingeniería médica, la inspección
00:01:11industrial, básicamente cualquier software que tenga algún aspecto de visión artificial adjunto. Y durante los
00:01:17últimos ocho años, todos han construido sobre la misma línea de la versión 4. Así que un cambio de versión importante aquí es
00:01:24realmente un gran problema. Y la función principal de esta nueva versión es una reescritura completa del módulo DNN,
00:01:32y esa es la parte de OpenCV que ejecuta redes neuronales. Así que aquí está el número más importante al que prestar
00:01:38atención. En OpenCV4, el motor DNN solo admitía alrededor del 22% de los operadores ONNX. ONNX es el estándar
00:01:47formato al que exportas un modelo cuando quieres ejecutarlo en otro lugar que no sea el marco donde lo entrenaste.
00:01:53Y esa cobertura del 22% significaba que, la mayoría de las veces, tomabas un modelo moderno, intentabas cargarlo y
00:02:01te topabas inmediatamente con un muro. Algún operador no era compatible, así que estabas estancado. Pero OpenCV5 aumenta esa cobertura
00:02:08hasta el 80%. Así que ahora esta biblioteca ejecuta la mayoría de estos modelos directamente. Y la razón por la que saltó tanto
00:02:15es por cómo lo reconstruyeron. El viejo motor procesaba las redes capa por capa. El nuevo está
00:02:22construido alrededor de un gráfico de operaciones tipado. Así que mira toda la red como un gráfico primero, y luego hace
00:02:29una inferencia de forma adecuada, plegado de constantes y fusión de operadores antes de ejecutar nada. Así que en términos simples,
00:02:36entiende todo el modelo antes de ejecutarlo, por lo que puede manejar formas dinámicas y
00:02:42arquitecturas de transformadores modernas que el antiguo motor simplemente no podía manejar. Y aquí está la parte impresionante.
00:02:48Con estos nuevos cambios, no solo es más compatible, sino que también es muy rápido. OpenCV comparó su nuevo
00:02:56motor contra el motor ONNX de Microsoft. Y en una CPU, OpenCV5 lo igualó o incluso lo superó en modelos reales. Así que
00:03:04fue un 11.5% más rápido que YOLO versión 8, casi un 37% más rápido que OWL versión 2 y un 30% más rápido que Xfeet.
00:03:15Esos son los números reportados por la propia OpenCV. Así que tómalos con pinzas y prueba
00:03:22tu propia carga de trabajo. Pero si son ciertos, es bastante impresionante. Y hay más cosas geniales en
00:03:27este nuevo lanzamiento como tipos de datos nativos FP16 y BF16, soporte real para arrays n-dimensionales en CVMAT,
00:03:36un núcleo que prioriza Python, y la API C heredada desapareció siendo reemplazada por C++17 como línea base.
00:03:44Y una advertencia importante que debes conocer de antemano: el nuevo motor es solo para CPU en este momento.
00:03:51El soporte para GPU vendrá más adelante en el ciclo de la versión 5. Así que si necesitas inferencia en GPU hoy,
00:03:58recurrirás al motor clásico, que todavía tiene soporte para CUDA y OpenVINO.
00:04:03Así que todo lo que estoy a punto de mostrarte en esta nueva versión 5 se ejecuta en una CPU. Entonces, la mayor característica de esta nueva
00:04:10versión es el nuevo motor DNN. Así que probaremos algunos de los ejemplos y veremos cómo funciona.
00:04:16Bien, comencemos con un ejemplo divertido. OpenCV incluye un ejemplo de colorización donde puedes tomar
00:04:22una imagen en blanco y negro y predice el color. Y como nota al margen, he estado viendo Spider Noir
00:04:28últimamente, y es un programa bastante genial. Y también está en blanco y negro, así que pensé que podría ser divertido
00:04:34colorear una toma de este programa y ver cómo se ve. Así que voy a tomar esta imagen y ejecutar el
00:04:39ejemplo de colorización, que usa el nuevo motor DNN y, bum, aquí está. Mira qué rápido fue eso.
00:04:47En cuanto al resultado, no es perfecto. Todavía vemos que logró que el cielo fuera algo correcto,
00:04:53pero no pudo colorear algunas otras partes de la imagen. Y ten en cuenta que esto usa un modelo
00:04:59de colorización más antiguo, que juega a lo seguro con los tonos apagados. Pero el punto aquí no es el modelo,
00:05:05es el motor. Así que lo que quería mostrarte aquí es que esta imagen se produjo usando la red neuronal nativa
00:05:11de OpenCV con cero dependencias adicionales, lo cual es bastante genial. Ahora probemos su ejemplo de detección
00:05:17de objetos. Y de nuevo, ya que estamos en el tema de Spider Noir, usaré un clip del programa
00:05:24y lo ejecutaré a través del pipeline y veré cómo funciona. Y cuando lancé el script, mira
00:05:29eso. Está haciendo detección de objetos en tiempo real, ejecutándose en la CPU a través del nuevo motor DNN. Y
00:05:36recuerdas ese benchmark de antes? Este es el tipo de modelo donde OpenCV es realmente más rápido que el
00:05:43runtime de ONNX. Así que no estás cambiando rendimiento por conveniencia, estás obteniendo ambos en este escenario
00:05:49en particular. Y no necesitas instalar PyTorch para esto o un runtime separado. Y no se requiere GPU.
00:05:56Esto se ejecuta todo en OpenCV básico. Bien, ahora probemos su ejemplo de in-painting LDM.
00:06:03LDM significa difusión latente y OpenCV 5 trae un ejemplo de in-painting de difusión latente aquí.
00:06:11Así que veamos cómo funciona. Carguemos la misma imagen de Spider Noir que usamos antes.
00:06:16Y ahora puedo pintar sobre algo que quiero que sea eliminado de la imagen. Puede ser una persona, un objeto,
00:06:23lo que sea. Y el modelo de difusión llena el espacio en blanco. Y esto es un poco más lento porque el in-painting
00:06:31clásico de OpenCV usa una sola pasada hacia adelante, que es instantánea, pero la LDM usa difusión,
00:06:39que es iterativa. Así que comienza desde el ruido y luego lo elimina paso a paso. Por lo tanto, ejecuta este modelo
00:06:45varios pasos seguidos. Y como estamos haciendo esto en una CPU, es aún más lento porque la difusión
00:06:51es una tarea más adecuada para una GPU. Pero, no obstante, aquí está el resultado que obtuve al ejecutarlo en solo unos pocos
00:06:58pasos. Y diría que hizo un trabajo bastante decente. No es perfecto. Todavía podemos ver claramente algunos artefactos
00:07:05de difusión. Pero esto se puede resolver aumentando el número de pasos o usando un modelo de difusión diferente.
00:07:11Y, por último, quiero mostrarles el ejemplo de inferencia VLM, que muestra cómo pueden usar modelos de lenguaje
00:07:17visual o LLMs de forma nativa dentro de OpenCV para hacer cosas como subtitulado de imágenes u otros tipos de
00:07:25tareas. Ahora, en esta demostración en particular, estamos usando el modelo Pali Gemma para subtitular esta imagen de Spider Noir.
00:07:32Y como pueden ver, es dolorosamente lento. Y el resultado final tampoco es nada espectacular. Así que definitivamente
00:07:39no usaría OpenCV para esto. Hay opciones mucho mejores para el subtitulado de imágenes. Por ejemplo,
00:07:45puedes ejecutar un modelo Gemma 4 de 12 mil millones localmente en ONNX y obtener un resultado cien veces más rápido que esto.
00:07:53Mostré ese ejemplo en particular en uno de mis videos anteriores sobre el modelo Gemma 4 de 12 mil millones.
00:07:58Así que échenle un vistazo si están interesados. Pero el punto de esta demostración es mostrar que OpenCV ahora tiene
00:08:04todas las piezas que necesitas para ejecutar LLMs. El tokenizador, las capas de atención y el caché KV,
00:08:11todo integrado. Y el hecho de que funcione en absoluto en un runtime separado es una señal genuina
00:08:18de hacia dónde se dirige esta biblioteca. Tendrá visión y lenguaje agrupados todo en un solo lugar. Y
00:08:24una vez que lancen la actualización para GPU, será aún mejor y aún más rápido. Así que ahí lo tienen,
00:08:29amigos. Esa es la nueva versión 5 de OpenCV en pocas palabras. Una biblioteca ejecutándose en la CPU sin dependencias
00:08:37adicionales. Y la usamos para colorización, detección de objetos en tiempo real, in-painting de difusión,
00:08:43y subtitulado de imágenes. Ahora, todavía tendrás que entrenar tus modelos en algo como PyTorch.
00:08:50Eso no es algo para lo que OpenCV esté diseñado. Pero cuando se trata de ejecutar esos modelos
00:08:56dentro del pipeline de visión, OpenCV 5 es una gran elección y un salto masivo desde donde estaba hace solo
00:09:03un mes con su nuevo motor DNN. Entonces, ¿qué piensan de la nueva OpenCV 5? ¿La van a usar
00:09:09en sus proyectos? Háganoslo saber en la sección de comentarios a continuación. Y amigos, si les gustan estos
00:09:14tipos de análisis técnicos, por favor háganmelo saber aplastando ese botón de me gusta debajo del video.
00:09:19Y también no olviden suscribirse a nuestro canal. Ha sido Andrus de BetterStack,
00:09:24y los veré en los próximos videos.

핵심 요약

OpenCV 5 introduce un motor DNN reescrito que permite ejecutar modelos modernos de visión artificial y lenguaje directamente en CPU con mayor compatibilidad de operadores y rendimiento mejorado.

하이라이트

  • OpenCV 5 incrementa la cobertura de operadores ONNX del 22% al 80% respecto a la versión 4.

  • El nuevo motor DNN ejecuta modelos como YOLOv8, OWLv2 y Xfeet en CPU con una velocidad entre 11.5% y 37% superior al motor de Microsoft.

  • La arquitectura del nuevo motor DNN utiliza un gráfico de operaciones tipado para realizar inferencia de forma, plegado de constantes y fusión de operadores.

  • OpenCV 5 elimina la API C heredada, estableciendo C++17 como la línea base del sistema.

  • El nuevo motor DNN admite tipos de datos nativos FP16 y BF16, además de arrays n-dimensionales en CVMAT.

  • Las funcionalidades de OpenCV 5, incluyendo difusión latente y modelos de lenguaje visual como Pali Gemma, operan de forma nativa sin dependencias externas como PyTorch o ONNX runtime.

타임라인

Avances en el motor DNN de OpenCV 5

  • La arquitectura del motor DNN cambió de un procesamiento capa por capa a un gráfico de operaciones tipado.
  • La cobertura de operadores ONNX aumentó de un 22% en la versión 4 a un 80% en la versión 5.
  • El nuevo motor supera al motor ONNX de Microsoft en modelos como YOLOv8, OWLv2 y Xfeet durante la ejecución en CPU.
  • La versión 5 requiere C++17 y prioriza Python en su núcleo, eliminando la API C heredada.

El cambio de versión más significativo desde 2018 radica en la reescritura del módulo DNN. Al analizar el modelo como un gráfico completo antes de la ejecución, el sistema logra manejar formas dinámicas y arquitecturas de transformadores anteriormente incompatibles. Aunque el soporte actual es exclusivo para CPU, los resultados muestran una mejora sustancial en velocidad y compatibilidad nativa sin necesidad de entornos de ejecución externos.

Demostraciones prácticas y limitaciones

  • La colorización de imágenes y la detección de objetos en tiempo real se ejecutan eficientemente en CPU sin dependencias adicionales.
  • El ejemplo de in-painting mediante difusión latente demuestra capacidad de inferencia iterativa en CPU, aunque con menor velocidad que en GPU.
  • La integración nativa de modelos de lenguaje visual como Pali Gemma confirma la capacidad de OpenCV para gestionar tokenizadores y capas de atención.
  • El soporte para inferencia en GPU se añadirá en etapas posteriores del ciclo de vida de la versión 5.

Las pruebas realizadas confirman que las capacidades de visión artificial se integran en un pipeline único. Mientras que tareas como la detección de objetos aprovechan la eficiencia del nuevo motor, otras como el subtitulado de imágenes (VLM) son más lentas en CPU, indicando que existen alternativas más rápidas para tareas intensivas. OpenCV 5 se posiciona como una herramienta central para integrar visión y lenguaje nativo, manteniendo la necesidad de plataformas externas para el entrenamiento de modelos.

커뮤니티 글

모든 글 보기