스크립트
00:00:00Todos conhecemos o OpenCV, certo? É a biblioteca definitiva de visão computacional que todos vêm usando para
00:00:07redimensionar imagens, detectar objetos e realizar todo tipo de tarefa de visão computacional. E ela acabou
00:00:13de ter sua primeira grande atualização de versão desde 2018. E essa é muito importante. O OpenCV 5 traz um novo
00:00:21mecanismo de aprendizado profundo que pode executar o YOLO. Ele também pode fazer inpainting no estilo stable diffusion e
00:00:27até executar um modelo completo de visão e linguagem nativamente, sem PyTorch, sem runtime ONNX e nada mais
00:00:35acoplado. Então, no vídeo de hoje, vamos detalhar o que há de novo no OpenCV 5, e depois vamos testar
00:00:41as novas funcionalidades nós mesmos com algumas demonstrações legais rodando localmente na minha máquina. Vai ser
00:00:47muito divertido, então vamos mergulhar nisso. Primeiramente, eis por que esta atualização é um grande negócio.
00:00:57O OpenCV está em toda parte. Tem mais de 86.000 estrelas no GitHub, mais de um milhão de instalações por dia, e
00:01:05por duas décadas, tem sido a base para robótica, RA e engenharia médica, inspeção industrial,
00:01:11basicamente qualquer software que tenha algum aspecto de visão computacional ligado a ele. E nos
00:01:17últimos oito anos, todos têm construído sobre a mesma linha da versão 4. Então, uma mudança de versão principal aqui é
00:01:24genuinamente um grande negócio. E a funcionalidade principal desta nova versão é uma reescrita completa do módulo DNN,
00:01:32e essa é a parte do OpenCV que executa redes neurais. Então, aqui está o número mais importante para se prestar
00:01:38atenção. No OpenCV 4, o mecanismo DNN suportava apenas cerca de 22% dos operadores ONNX. ONNX é o formato padrão
00:01:47para o qual você exporta um modelo quando quer executá-lo em outro lugar que não a estrutura na qual você o treinou.
00:01:53E 22% de cobertura significava que, na maioria das vezes, você pegava um modelo moderno, tentava carregá-lo e
00:02:01imediatamente encontrava um obstáculo. Algum operador não era suportado, então você ficava travado. Mas o OpenCV 5 eleva essa cobertura
00:02:08para 80%. Então agora esta biblioteca executa a maioria desses modelos prontamente. E a razão pela qual ela saltou
00:02:15tanto é por causa de como a reconstruíram. O mecanismo antigo processava redes camada por camada. O novo é
00:02:22construído em torno de um grafo de operações tipadas. Então, ele analisa toda a rede como um grafo primeiro, e depois faz
00:02:29uma inferência de forma adequada, dobramento de constantes e fusão de operadores antes de realmente executar qualquer coisa. Então, em termos
00:02:36simples, ele entende o modelo inteiro antes de executá-lo, para que possa lidar com formas dinâmicas e
00:02:42arquiteturas de transformadores modernas que o antigo mecanismo simplesmente não conseguia lidar. E aqui está a parte impressionante.
00:02:48Com essas novas mudanças, não apenas é mais compatível, mas também é muito rápido. O OpenCV comparou seu novo
00:02:56mecanismo com o mecanismo ONNX da Microsoft. E em uma CPU, o OpenCV 5 igualou ou até superou em modelos reais. Então
00:03:04ele foi 11,5% mais rápido que o YOLO versão 8, quase 37% mais rápido que o OWL versão 2 e 30% mais rápido que o Xfeet.
00:03:15Agora, esses são números autorreportados pelo próprio OpenCV. Então, leve-os com a habitual reserva e faça o seu próprio
00:03:22benchmarking da sua carga de trabalho. Mas se forem verdadeiros, isso é bastante impressionante. E há mais coisas legais nesta
00:03:27nova versão, como tipos de dados nativos FP16 e BF16, suporte real a arrays n-dimensionais em CVMAT,
00:03:36um núcleo focado em Python, e a API C legada desapareceu, substituída pelo C++17 sendo a linha de base.
00:03:44E uma ressalva importante que você precisa saber de antemão: o novo mecanismo é apenas para CPU no momento.
00:03:51O suporte a GPU virá mais tarde no ciclo da versão 5. Então, se você precisar de inferência em GPU hoje,
00:03:58você recorrerá ao mecanismo clássico, que ainda tem suporte a CUDA e OpenVINO.
00:04:03Então tudo o que estou prestes a mostrar a você nesta nova versão 5 roda em uma CPU. Então a maior funcionalidade desta nova
00:04:10versão é o novo mecanismo DNN. Então vamos testar alguns dos exemplos e ver como ele se comporta.
00:04:16Tudo bem, vamos começar com um exemplo divertido. O OpenCV envia um exemplo de colorização onde você pode pegar
00:04:22uma imagem em preto e branco e ele prevê a cor. E, observação à parte, tenho assistido a Spider Noir
00:04:28ultimamente, e é um programa bem legal. E também é em preto e branco, então pensei que poderia ser divertido
00:04:34colorir uma cena desta série e ver como fica. Então, vou pegar esta imagem e executar o
00:04:39exemplo de colorização, que está usando o novo mecanismo DNN e pronto, aqui está. Veja como foi rápido.
00:04:47Quanto ao resultado, não é perfeito. Ainda vemos que ele acertou um pouco o céu,
00:04:53mas falhou ao colorir algumas outras partes da imagem. E lembre-se de que isto está usando um modelo de
00:04:59colorização mais antigo, que joga seguro com os tons suaves. Mas o ponto aqui não é o modelo,
00:05:05é o mecanismo. Então, o que eu queria mostrar a vocês aqui é que esta imagem foi produzida usando a rede neural
00:05:11nativa do OpenCV com zero dependências extras, o que é bem legal. Agora vamos testar seu exemplo de detecção
00:05:17de objetos. E novamente, como estamos no tema Spider Noir, vou usar um clipe da série
00:05:24e executá-lo através do pipeline e ver como ele se comporta. E quando iniciei o script, olhe
00:05:29só. Ele está fazendo detecção de objetos em tempo real, rodando na CPU através do novo mecanismo DNN. E
00:05:36lembre-se daquele benchmark de antes? Este é o tipo de modelo em que o OpenCV é realmente mais rápido que o
00:05:43runtime ONNX. Então você não está trocando desempenho por conveniência, você está recebendo ambos neste cenário
00:05:49específico. E você não precisa instalar o PyTorch para isso ou um runtime separado. E não é necessária GPU.
00:05:56Isso tudo está rodando em OpenCV puro. Tudo bem, agora vamos testar o exemplo de inpainting LDM.
00:06:03Então, LDM significa difusão latente e o OpenCV 5 traz um exemplo de inpainting de difusão latente aqui.
00:06:11Então vamos ver como funciona. Vamos carregar a mesma imagem de Spider Noir que usamos antes.
00:06:16E agora posso pintar sobre algo que quero que seja removido da imagem. Pode ser uma pessoa, um objeto,
00:06:23qualquer coisa. E o modelo de difusão preenche o espaço em branco. E isso é um pouco mais lento para rodar porque o
00:06:31inpainting clássico do OpenCV usa uma única passagem direta, que é instantânea, mas o LDM usa difusão,
00:06:39que é iterativa. Então ele começa do ruído e depois o remove passo a passo. Então ele está rodando este modelo
00:06:45várias vezes seguidas. E porque estamos fazendo isso em uma CPU, é ainda mais lento, pois a difusão
00:06:51é uma tarefa mais adequada para uma GPU. Mas, não obstante, aqui está o resultado que obtive ao executá-lo em apenas alguns
00:06:58passos. E eu diria que fez um trabalho bastante decente. Não é perfeito. Ainda podemos ver claramente alguns artefatos de
00:07:05difusão. Mas isso pode ser resolvido aumentando a contagem de passos ou usando um modelo de difusão diferente.
00:07:11E, por fim, quero mostrar o exemplo de inferência VLM, que mostra como você pode usar modelos de visão
00:07:17e linguagem ou LLMs nativamente dentro do OpenCV para fazer coisas como legendagem de imagens ou outros tipos de
00:07:25coisas. Agora, nesta demonstração em particular, estamos usando o modelo Pali Gemma para legendar esta imagem de Spider Noir.
00:07:32E como você pode ver, é penosamente lento. E o resultado final também não é nada espetacular. Então eu
00:07:39definitivamente não usaria o OpenCV para isso. Existem opções muito melhores para legendagem de imagens. Por exemplo,
00:07:45você pode rodar um modelo Gemma 4 de 12 bilhões localmente no ONNX e obter um resultado cem vezes mais rápido que este.
00:07:53Mostrei esse exemplo em particular em um dos meus vídeos anteriores sobre o modelo Gemma 4 de 12 bilhões.
00:07:58Então, dê uma olhada se estiver interessado. Mas o objetivo desta demonstração é mostrar que o OpenCV agora tem
00:08:04todas as peças que você precisa para rodar LLMs. O tokenizador, as camadas de atenção e o KV cache,
00:08:11todos integrados. E o fato de funcionar de qualquer maneira em um runtime separado é genuinamente um sinal
00:08:18de para onde esta biblioteca está indo. Ela terá visão e linguagem agrupadas em um só lugar. E
00:08:24assim que eles lançarem a atualização de GPU, vai ser ainda melhor e ainda mais rápido. Então aqui está,
00:08:29pessoal. Esse é o novo OpenCV versão 5 em resumo. Uma biblioteca rodando na CPU sem dependências
00:08:37extras. E nós a usamos para colorização, detecção de objetos em tempo real, inpainting de difusão,
00:08:43e legendagem de imagens. Agora, você ainda terá que treinar seus modelos em algo como PyTorch.
00:08:50Isso não é algo que o OpenCV foi projetado para fazer. Mas quando se trata de realmente executar esses modelos
00:08:56dentro do pipeline de visão, o OpenCV 5 é uma ótima escolha e um salto gigantesco de onde estava apenas
00:09:03um mês atrás com seu novo mecanismo DNN. Então, o que você acha do novo OpenCV 5? Você vai
00:09:09usá-lo em seus projetos? Deixe-nos saber na seção de comentários abaixo. E pessoal, se vocês gostam desses
00:09:14tipos de detalhamentos técnicos, por favor, me avisem esmagando esse botão de curtir embaixo do vídeo.
00:09:19E também não se esqueçam de se inscrever no nosso canal. Este foi Andrus da BetterStack,
00:09:24e vejo vocês nos próximos vídeos.