Version 5 veröffentlicht: OpenCV bekommt bessere KI- und Python-Integration
Fast acht Jahre sind seit dem letzten Major-Release von OpenCV vergangen. Die kürzlich vorgestellte Version 5(öffnet im neuen Fenster) des Bildverarbeitungs-Frameworks bringt die größten Änderungen seit Langem. Kern der neuen Version ist eine komplett neue DNN-Engine (Deep Neural Network): Die ist nicht nur leistungsfähiger, sondern unterstützt auch sogenannte dynamische Shapes, Tensoren mit erst zur Laufzeit bestimmter Größe. Auch sollen wesentlich mehr Modelle ohne Anpassungen funktionieren.
Die bedeutendsten Änderungen betreffen die DNN-Engine. Die stellt Modelle nicht mehr in Form einzelner Ebenen, sondern als Berechnungsgraph dar. So kann der Compiler Modelle umfangreicher analysieren und Operationen fusionieren, was die Anzahl an Berechnungen reduzieren kann. Das gilt etwa für den Aufmerksamkeitsmechanismus von Transformer-Modellen, die Implementierung ist an Flash Attention angelehnt.
Die neue Engine unterstützt zudem wesentlich mehr Operatoren. So deckt OpenCV 5 80 Prozent der durch das Austauschformat ONNX definierten Operatoren ab, bei älteren Versionen sind es nur 22 Prozent. Erstmals werden auch Bedingungen und Schleifen unterstützt. Neu sind außerdem ein integrierter Tokenizer und KV-Cache.
Damit kann OpenCV 5 nativ LLMs und VLMs (Large Language und Vision Language Models) der Familien Qwen 2.5, Gemma 3, Paligemma und GPT-2/-4 ausführen. So lassen sich Sprachmodelle ohne externes Framework direkt in eine OpenCV-Anwendung einbauen.
Neue Engine vorerst nur auf CPU, neue Hardware-Abstraktion
Einen Nachteil hat die neue DNN-Engine allerdings: Sie läuft vorerst nur auf der CPU. Wer Beschleuniger wie eine GPU nutzen will, muss vorerst auf das ONNX Runtime Backend (ORT) zurückgreifen. Künftig soll die neue Engine allerdings auch für GPUs und andere Beschleuniger portiert werden. Die alte Engine bleibt aber parallel erhalten.
OpenCV nutzt sie implizit, wenn das Laden eines Modells mit der neuen Implementierung fehlschlägt. Alternativ kann die zu verwendende Engine beim Aufruf der Funktion readNetFromONNX() explizit ausgewählt werden.
OpenCV 5 bringt zudem eine transparente Hardware-Abstraktion (HAL, Hardware Abstraction Layer) mit. Sie soll die Ausführung von OpenCV-Operationen ohne Kontextwissen auf der CPU – hier sind Optimierungen für AVX und SSE, ARMs Neon, SVE und SME sowie die RISC-V-Vektorerweiterung RVV vorhanden – oder verfügbaren Beschleunigern wie GPU, NPU oder DSP ausführen.
Hersteller können hierfür Plug-ins bereitstellen, OpenCV soll automatisch das beste Backend auswählen. Langfristig soll das zusammen mit der neuen DNN-Engine die einfache Auslagerung komplexer Verarbeitungs-Pipelines mit Pre- und Post-Processing ohne kostspielige Kopieroperationen ermöglichen.
Bessere Dokumentation, 3D-Features und Python-Integration
Im Kontext von KI stehen auch einige Änderungen am Kern: So werden die 16-Bit-Gleitkommatypen FP16 und BF16 (Brain Float) nativ unterstützt. Matrizen können nun auch weniger als zwei Dimensionen haben und damit Skalare (0D) oder Vektoren (1D) abbilden. Das soll einige Operationen vereinfachen. Die Python-Anbindung unterstützt benannte Parameter, was die Zuweisung vereinfacht.
Ebenfalls überarbeitet wurde die Dokumentation, die durch Kombination von Sphinx und Doxygen leichter nutzbar sein soll. OpenCV 5 unterstützt zudem die Kalibrierung von Multi-Kamera-Setups, das alte calib3d-Modul wurde aufgeteilt und soll so übersichtlicher sein.
Daneben haben die Entwickler Aufräumarbeiten am Code angeschoben: Die C-API, die bereits OpenCV 4 abgelöst hatte, ist als veraltet (deprecated) markiert, ihre Tage sind entsprechend gezählt. Die Anforderungen an den C++-Compiler sind gestiegen, für Version 5 wird C++17 empfohlen, eine künftige Minor-Version soll auf C++20 erhöhen.
- Anzeige Hier geht es zu Künstliche Intelligenz: Wissensverarbeitung bei Amazon Wenn Sie auf diesen Link klicken und darüber einkaufen, erhält Golem eine kleine Provision. Dies ändert nichts am Preis der Artikel.