
La première préversion Alpha d’OpenCV 4.0 est sortie fin de la semaine dernière, avec quelques changements bienvenus (les premiers plans comptaient sur une sortie au mois de juillet). Au niveau des fonctionnalités, la partie apprentissage profond a été considérablement revue, puisque ces algorithmes d’apprentissage fonctionnent extrêmement bien quand il s’agit d’images. Notamment, le modèle Mask (un RCNN : un réseau neuronal profond tant récurrent que convolutif) est disponible pour traiter des vidéos. OpenCV peut désormais charger des réseaux neuronaux déjà entraînés au format ONNX, une norme partagée par bon nombre d’environnements d’apprentissage profond. Ceci inclut notamment une implémentation de l’algorithme YOLO (you only look once) pour la détection d’objets (positionner des rectangles autour de certains objets dans une scène). La bibliothèque Intel DLDT peut être utilisée pour améliorer la performance.
Au niveau de la performance, justement, des centaines de noyaux de calcul ont été réécrits pour exploiter des opérations intrinsèques universelles : le même code peut générer un exécutable utilisant divers jeux d’instructions vectoriels, comme SSE2, SSE4, AVX2 (x86), NEON (ARM) ou VSX (POWER). Ces nouvelles implémentations permettent bien souvent de gagner en performance, même par rapport aux implémentations précédentes (de l’ordre de quinze à trente pour cent). D’autres noyaux devraient voir la même transformation d’ici à la version finale. De plus, sur les processeurs x86 en 64 bits, la sélection du code à exécuter devrait être effectuée de manière dynamique, de telle sorte que les instructions les plus avancées disponibles sur le processeur courant soient utilisées.
Du côté des exemples, un détecteur de codes QR en temps réel a été ajouté ; la version finale devrait aussi comprendre un décodeur. L’algorithme Kinect Fusion, qui fusionne les différents capteurs disponibles sur la Kinect (un capteur d’images traditionnel et un capteur de profondeur — d’où l’expression RGBD : red, green, blue, depth), a été implémenté.

Pourquoi déjà OpenCV 4.0 ? En effet, il a fallu six ans entre la 2.0 et la 3.0, mais seulement trois entre la 3.0 et la 4.0. Ce changement permet de baser OpenCV sur une norme C++ plus récente, C++11 : ainsi, des classes comme cv::String et cv:

La compatibilité binaire entre versions mineures (4.0 et 4.1, par exemple) sera également abandonnée : seule sera garantie la compatibilité des sources. Ainsi, un code écrit avec OpenCV 4.0 sera garanti de continuer à fonctionner avec toutes les versions 4.x. La compatibilité binaire aurait pu être utile pour Android et Linux, mais les développeurs préfèrent souvent embarquer leur propre version d’OpenCV sur Android ; de même, les distributions Linux font rarement des mises à jour importantes sans recompilation (passer de la 3.0 à la 3.1 est souvent considéré comme un trop gros changement).
Source : liste de changements.
Vous avez lu gratuitement 622 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.