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.

핵심 요약

OpenCV 5 introduit un moteur DNN réécrit qui permet d'exécuter nativement la majorité des modèles modernes sur CPU sans dépendances externes comme PyTorch ou ONNX runtime.

하이라이트

  • OpenCV 5 marque la première mise à jour majeure de la bibliothèque depuis 2018.

  • La couverture des opérateurs ONNX dans le module DNN passe de 22 % dans OpenCV 4 à 80 % dans OpenCV 5.

  • Le nouveau moteur DNN analyse le réseau entier comme un graphe d'opérations avant exécution, permettant la gestion de formes dynamiques.

  • OpenCV 5 surpasse ou égale le moteur ONNX de Microsoft sur CPU, avec des gains de vitesse de 11,5 % sur YOLOv8 et 37 % sur OWLv2.

  • La mise à jour introduit la prise en charge native des types de données FP16 et BF16 ainsi que le passage au standard C++17.

  • L'inférence GPU n'est pas encore disponible dans cette version 5, nécessitant l'usage de l'ancien moteur pour CUDA ou OpenVINO.

타임라인

Mise à jour majeure et moteur DNN

  • La bibliothèque OpenCV 5 abandonne l'ancien traitement couche par couche pour un moteur basé sur des graphes d'opérations.
  • Le nouveau moteur DNN assure une compatibilité étendue avec 80 % des opérateurs ONNX.
  • La mise à jour impose C++17 comme ligne de base et supprime l'ancienne API C.
  • Les fonctionnalités GPU ne sont pas incluses dans cette version initiale centrée sur le CPU.

Cette version constitue un tournant technologique pour OpenCV en optimisant l'exécution des réseaux de neurones. En analysant le modèle globalement via un graphe avant l'exécution, le moteur réalise automatiquement des fusions d'opérateurs et un repliement de constantes. Ces optimisations permettent une compatibilité accrue avec les architectures de transformateurs et les formes dynamiques, tout en améliorant les performances brutes sur CPU par rapport aux runtimes standards.

Tests de performances et démonstrations

  • L'exécution de modèles de colorisation et de détection d'objets en temps réel est possible sans bibliothèques externes.
  • L'inpainting par diffusion latente (LDM) fonctionne nativement mais reste limité par la nature itérative de la diffusion sur CPU.
  • OpenCV 5 intègre désormais les composants nécessaires à l'exécution de modèles de langage visuel (VLM) tels que PaliGemma.
  • OpenCV 5 s'impose comme une solution efficace pour intégrer l'inférence dans un pipeline de vision plutôt que pour l'entraînement des modèles.

Les démonstrations pratiques illustrent la polyvalence du nouveau moteur. La détection d'objets en temps réel s'exécute avec fluidité sur CPU, démontrant une performance compétitive. Bien que l'inpainting et le sous-titrage VLM soient opérationnels, leur lenteur sur CPU souligne la nécessité d'une future mise à jour incluant l'accélération GPU pour des tâches complexes et itératives.

커뮤니티 글

모든 글 보기