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.