OpenCV 5 est arrivé - La plus grande mise à jour depuis 2018 (Nous l'avons testée)
BBetter Stack
컴퓨터/소프트웨어사진/예술AI/미래기술
스크립트
00:00:00Nous connaissons tous OpenCV, n'est-ce pas ? C'est la bibliothèque de vision par ordinateur ultime que tout le monde utilise pour
00:00:07redimensionner des images, détecter des objets et effectuer toutes sortes de tâches de vision par ordinateur. Et elle vient juste
00:00:13de bénéficier de sa première mise à jour majeure depuis 2018. Et c'est une mise à jour importante. OpenCV 5 dispose d'un tout nouveau
00:00:21moteur de deep learning capable d'exécuter YOLO. Il peut également effectuer de l'inpainting de style stable diffusion et
00:00:27même exécuter un modèle de langage visuel complet de manière native, sans PyTorch, sans runtime ONNX, et sans rien d'autre
00:00:35ajouté par-dessus. Donc, dans la vidéo d'aujourd'hui, nous allons décortiquer ce qui est vraiment nouveau dans OpenCV 5, puis nous allons tester
00:00:41nous-mêmes les nouvelles fonctionnalités avec quelques démos sympas tournant localement sur ma propre machine. Ça va être
00:00:47très amusant, alors plongeons dans le vif du sujet. Tout d'abord, voici pourquoi cette mise à jour est importante.
00:00:57OpenCV est partout. Il compte plus de 86 000 étoiles sur GitHub, plus d'un million d'installations par jour, et
00:01:05depuis deux décennies, c'est la base de la robotique, de la RA, de l'ingénierie médicale, de l'inspection industrielle,
00:01:11bref, de tout logiciel intégrant un aspect de vision par ordinateur. Et pour les
00:01:17huit dernières années, tout le monde a construit sur la même gamme de versions 4. Donc, un changement de version majeure ici est
00:01:24véritablement une grosse affaire. Et la fonctionnalité phare de cette nouvelle version est une réécriture complète du module DNN,
00:01:32qui est la partie d'OpenCV qui exécute les réseaux de neurones. Voici le chiffre le plus important à retenir.
00:01:38Dans OpenCV 4, le moteur DNN ne prenait en charge qu'environ 22 % des opérateurs ONNX. ONNX est le format standard
00:01:47vers lequel vous exportez un modèle lorsque vous souhaitez l'exécuter ailleurs que dans le framework avec lequel vous l'avez entraîné.
00:01:53Et une couverture de 22 % signifiait que, le plus souvent, vous preniez un modèle moderne, essayiez de le charger, et
00:02:01vous vous heurtiez immédiatement à un mur. Un opérateur n'était pas pris en charge, donc vous étiez bloqué. Mais OpenCV 5 porte cette couverture
00:02:08à 80 %. Ainsi, cette bibliothèque exécute maintenant la plupart de ces modèles dès le départ. Et la raison pour laquelle ce bond est si
00:02:15important est la façon dont ils l'ont reconstruit. L'ancien moteur traitait les réseaux couche par couche. Le nouveau est
00:02:22construit autour d'un graphe d'opérations typées. Il examine donc tout le réseau comme un graphe d'abord, puis effectue
00:02:29une inférence de forme appropriée, un repliement de constantes et une fusion d'opérateurs avant d'exécuter quoi que ce soit. En clair,
00:02:36il comprend le modèle entier avant de l'exécuter, il peut donc gérer des formes dynamiques et
00:02:42des architectures de transformateurs modernes que l'ancien moteur ne pouvait tout simplement pas gérer. Et voici la partie impressionnante.
00:02:48Avec ces changements, non seulement il est plus compatible, mais il est aussi très rapide. OpenCV a comparé son nouveau
00:02:56moteur avec le moteur ONNX de Microsoft. Et sur un CPU, OpenCV 5 l'a égalé, voire battu sur des modèles réels. Donc il
00:03:04était 11,5 % plus rapide que YOLO version 8, presque 37 % plus rapide que OWL version 2, et 30 % plus rapide que Xfeet.
00:03:15Ce sont les chiffres auto-rapportés par OpenCV. Prenez-les donc avec les pincettes habituelles et testez
00:03:22vos propres charges de travail. Mais s'ils sont vrais, c'est assez impressionnant. Et il y a d'autres choses sympas dans
00:03:27cette nouvelle version, comme les types de données natifs FP16 et BF16, une véritable prise en charge des tableaux n-dimensionnels dans CVMAT,
00:03:36un noyau orienté Python, et l'ancienne API C a disparu, remplacée par C++17 comme ligne de base.
00:03:44Et une précision importante à connaître dès le départ : le nouveau moteur est uniquement CPU pour le moment.
00:03:51La prise en charge GPU arrivera plus tard dans le cycle de la version 5. Donc si vous avez besoin d'une inférence GPU aujourd'hui,
00:03:58vous devrez revenir à l'ancien moteur, qui prend toujours en charge CUDA et OpenVINO.
00:04:03Donc tout ce que je m'apprête à vous montrer sur cette nouvelle version 5 tourne sur un CPU. La plus grande fonctionnalité de cette nouvelle
00:04:10version est le nouveau moteur DNN. Nous allons donc tester quelques exemples et voir ses performances.
00:04:16Très bien, commençons par un exemple amusant. OpenCV propose un exemple de colorisation où vous pouvez prendre
00:04:22une image en noir et blanc et en prédire la couleur. Et au passage, j'ai regardé Spider Noir
00:04:28ces derniers temps, et c'est une série plutôt cool. Elle est aussi en noir et blanc, alors je me suis dit que ce serait sympa
00:04:34de coloriser un plan de cette série pour voir ce que ça donne. Je vais donc prendre cette image et exécuter l'exemple de
00:04:39colorisation, qui utilise le nouveau moteur DNN et boum, le voilà. Regardez la rapidité de l'opération.
00:04:47Quant au résultat, ce n'est pas parfait. On voit toujours qu'il a assez bien réussi le ciel,
00:04:53mais il n'a pas réussi à coloriser certaines autres parties de l'image. Et gardez à l'esprit qu'il s'agit d'un ancien
00:04:59modèle de colorisation, qui joue la sécurité avec des tons atténués. Mais l'important ici n'est pas le modèle,
00:05:05c'est le moteur. Ce que je voulais vous montrer, c'est que cette image a été produite en utilisant le
00:05:11réseau de neurones OpenCV natif sans dépendances supplémentaires, ce qui est assez cool. Essayons maintenant leur exemple
00:05:17de détection d'objets. Et encore une fois, comme nous sommes dans le thème Spider Noir, je vais utiliser un extrait de la série
00:05:24et le faire passer dans le pipeline pour voir ses performances. Et quand j'ai lancé le script, regardez
00:05:29ça. Il fait de la détection d'objets en temps réel, sur le CPU via le nouveau moteur DNN. Et
00:05:36rappelez-vous le benchmark précédent. C'est le type de modèle où OpenCV est en fait plus rapide que le
00:05:43runtime ONNX. Vous ne sacrifiez donc pas la performance pour la commodité, vous obtenez les deux dans ce
00:05:49scénario particulier. Et vous n'avez pas besoin d'installer PyTorch ou un runtime séparé. Et aucun GPU n'est requis.
00:05:56Tout cela fonctionne dans un OpenCV standard. Très bien, essayons maintenant leur exemple d'inpainting LDM.
00:06:03LDM signifie Latent Diffusion, et OpenCV 5 propose un exemple d'inpainting par diffusion latente ici.
00:06:11Voyons comment cela fonctionne. Chargeons la même image de Spider Noir que nous avons utilisée plus tôt.
00:06:16Et maintenant, je peux peindre sur quelque chose que je veux supprimer de l'image. Ça peut être une personne, un objet,
00:06:23peu importe. Et le modèle de diffusion remplit l'espace vide. C'est un peu plus lent à exécuter car l'inpainting
00:06:31classique d'OpenCV utilise un passage vers l'avant unique, ce qui est instantané, mais le LDM utilise la diffusion,
00:06:39qui est itérative. Il part donc du bruit, puis le débruite étape par étape. Il exécute donc ce modèle
00:06:45plusieurs étapes de suite. Et comme nous faisons cela sur un CPU, c'est encore plus lent car la diffusion
00:06:51est une tâche plus adaptée à un GPU. Mais néanmoins, voici le résultat que j'ai obtenu en l'exécutant sur seulement quelques
00:06:58étapes. Et je dirais que le travail est plutôt correct. Ce n'est pas parfait. On peut encore clairement voir certains artefacts
00:07:05de diffusion. Mais cela peut être résolu en augmentant le nombre d'étapes ou en utilisant un modèle de diffusion différent.
00:07:11Enfin, je veux vous montrer l'exemple d'inférence VLM, qui montre comment vous pouvez utiliser des modèles
00:07:17de langage visuel ou des LLM nativement dans OpenCV pour faire des choses comme du sous-titrage d'images ou d'autres types
00:07:25de choses. Dans cette démo particulière, nous utilisons le modèle PaliGemma pour sous-titrer cette image de Spider Noir.
00:07:32Et comme vous pouvez le voir, c'est extrêmement lent. Et le résultat final n'a rien de spectaculaire. Donc je
00:07:39n'utiliserais certainement pas OpenCV pour cela. Il existe de bien meilleures options pour le sous-titrage d'images. Par exemple,
00:07:45vous pouvez exécuter un modèle 12B Gemma 4 localement sur OMLX et obtenir une sortie cent fois plus rapide que celle-ci.
00:07:53J'ai montré cet exemple particulier dans l'une de mes précédentes vidéos sur le modèle 12B Gemma 4.
00:07:58Alors allez voir ça si ça vous intéresse. Mais le but de cette démo est de montrer qu'OpenCV possède maintenant
00:08:04tous les éléments nécessaires pour exécuter des LLM. Le tokenizer, les couches d'attention et le KV cache,
00:08:11tout est intégré. Et le fait que cela fonctionne du tout sur un runtime séparé signale véritablement
00:08:18la direction prise par cette bibliothèque. Elle intégrera vision et langage au même endroit. Et
00:08:24une fois qu'ils auront sorti la mise à jour GPU, ce sera encore mieux et encore plus rapide. Voilà,
00:08:29les amis. C'est la nouvelle version 5 d'OpenCV en un mot. Une bibliothèque fonctionnant sur le CPU sans dépendances
00:08:37supplémentaires. Et nous l'avons utilisée pour la colorisation, la détection d'objets en temps réel, l'inpainting par diffusion
00:08:43et le sous-titrage d'images. Maintenant, vous devrez toujours entraîner vos modèles sur quelque chose comme PyTorch.
00:08:50Ce n'est pas ce pour quoi OpenCV est conçu. Mais quand il s'agit d'exécuter réellement ces modèles
00:08:56à l'intérieur du pipeline de vision, OpenCV 5 est un excellent choix et un bond en avant massif par rapport à
00:09:03là où il était il y a à peine un mois avec son nouveau moteur DNN. Alors, que pensez-vous de ce nouvel OpenCV 5 ?
00:09:09Allez-vous l'utiliser dans vos projets ? Faites-le nous savoir dans la section des commentaires ci-dessous. Et les amis, si vous aimez ces
00:09:14types d'analyses techniques, faites-le moi savoir en explosant ce bouton “J'aime” sous la vidéo.
00:09:19Et n'oubliez pas non plus de vous abonner à notre chaîne. C'était Andrus de BetterStack,
00:09:24et je vous verrai dans les prochaines vidéos.