Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    août 2008
    Messages
    23 582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2008
    Messages : 23 582
    Points : 146 195
    Points
    146 195

    Par défaut Sortie d’OpenCV 4.0 Alpha

    OpenCV est une bibliothèque de référence quand il s’agit de traitement des images et des vidéos, plus particulièrement de vision par ordinateur. Elle implémente une pléthore d’algorithmes dans le domaine, ce qui facilite le développement de nouvelles applications. De plus, les implémentations sont très optimisées, y compris en fonction de chaque plateforme (de bureau comme mobiles) ; d’ailleurs, bon nombre d’algorithmes sont aussi implémentés sur processeur graphique (avec CUDA et/ou OpenCL) pour une efficacité maximale.

    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::Ptr n’ont plus vraiment de raison d’être (elles ont été remplacées respectivement par std::string et std::shared_ptr). Pour Linux, std::thread est utilisé au lieu d’une bibliothèque externe, pthread. Cependant, ce changement de norme implique forcément une cassure au niveau de la compatibilité binaire, ce qui nécessite un changement de version majeure.

    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 souhaitez participer aux rubriques Qt ou PyQt (tutoriels, FAQ, traductions), HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  2. #2
    Membre éclairé
    Avatar de Garvelienn
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    septembre 2016
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : septembre 2016
    Messages : 161
    Points : 658
    Points
    658

    Par défaut

    J'ai hâte de pouvoir faire joujou avec. Surtout avec les nouveaux algorithmes de reconnaissance. Cela pourrait améliorer grandement certaines de mes applications.

    Citation Envoyé par dourouc05 Voir le message
    d’ailleurs, bon nombre d’algorithmes sont aussi implémentés sur processeur graphique (avec CUDA et/ou OpenCL) pour une efficacité maximale.
    Quid des traitements GPU pour MacOS et iOS depuis qu'Apple a supprimé le support d'OpenCL/GL (en mode roi tout puissant osef) ? Car actuellement, j'ai été obligé à refaire certains algos avec leur <avis subjectif>immonde</avis subjectif> Metal.

    Citation Envoyé par dourouc05 Voir le message
    Ce changement permet de baser OpenCV sur une norme C++ plus récente, C++11 : ainsi, des classes comme cv::String et cv:tr n’ont plus vraiment de raison d’être (elles ont été remplacées respectivement par std::string et std::shared_ptr). Pour Linux, std::thread est utilisé au lieu d’une bibliothèque externe, pthread.
    Changement bienvenu ! Le code n'en sera que plus propre (et efficace ?).

    Citation Envoyé par dourouc05 Voir le message
    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
    En même temps, c'est soit on embarque les binaires dans l'application, soit on oblige l'utilisateur à installer l'application OpenCV Manager. Ce dernier choix étant une hérésie au niveau expérience utilisateur.

    D'ailleurs, savons-nous si ils vont enfin proposer sur leur site les binaires pour les architectures mobiles Android ? Car actuellement, j'ai toujours été obligé de les recompiler (ou de les prendre chez quelqu'un d'autre).



    Si quelqu'un a des réponses à mes questions, si je suis preneur
    «Le management, tel qu’on l’apprend dans les écoles et tel qu’on l’applique ensuite, sous prétexte de «motivation du personnel», organise exactement le contraire, à savoir la démotivation organisée.» - Bernard Stiegler

Discussions similaires

  1. Sortie de Qt 5.1 alpha
    Par LittleWhite dans le forum Qt
    Réponses: 1
    Dernier message: 13/05/2013, 17h50
  2. Réponses: 0
    Dernier message: 30/07/2009, 19h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo