URL: https://linuxfr.org/users/funix/journaux/digikam-gestion-evoluee-de-photos Title: DIGIKAM gestion évoluée de photos Authors: Funix Date: 2021年10月08日T12:51:50+02:00 License: CC By-SA Tags: digikam, photographie, opencv, reconnaissance_faciale et mageia Score: 71 'lut 'nal, L’autre jour j’étais avec un pote, Apple addicted, qui me disait qu’il gérait ses photos avec **Photos iCloud** et qu’avec cet outil il bénéficiait de la reconnaissance faciale et d’une manière générale de certaines fonctions avancées qui lui permettent facilement d'indexer, de classer et de retrouver ses photos. Alors bien sûr j’ai été piqué au vif, comment était-il possible que sous Linux il ne soit possible de faire la même chose ! Touché dans mon orgueil, ni une, ni deux, je me suis mis à chercher un équivalent sous linux. Après une recherche rapide, j'ai identifié que **digikam** offre ce genre de fonctionnalités. Jusqu’à présent je me contentais de gérer ma photos sous forme d’arborescence par année avec un système de nommage du style année-mois-jour-libellé facilitant le tri. Je trouvais les outils comme **digikam** usine à gaz et je me satisfaisais amplement d’un outil basique comme **geeqie**, la capacité de recherche étant très limitée. L'installation et la configuration ================================== J’ai installé **digikam** en utilisant le package standard de ma Mageia 8, mais malheureusement quand on lance la détection de visages, ça plante avec une sombre erreur de symbole indéfinie. Je ne m’attarde pas, je supprime illico le package et je pars dans la compilation de la dernière version 7.3.0 que je retrouve sur le site de **digikam**. Je vous passe le détail de la compilation et de la configuration, pour cette dernière on retiendra qu'il faut indiquer le ou les répertoires où se trouvent les photos, et un répertoire où on placera la base de données de **digikam**, pour le reste j’ai activé l'option d'accélération matérielle avec **OpenCL** et laissé tous les autres paramètres par défaut. Les fonctionnalités =================== La reconnaissance faciale ------------------------- Une fois que la collection de photos est alimentée, on peut passer à la détection des visages, pour cela il existe un onglet vertical nommé **Personnes**. On sélectionne **Détecter les visages** et on clique sur le bouton **Analyser une collection** pour chercher des visages. J’ai une collection de près de 9000 photos, en gros deux décennies de photos numériques, donc autant dire que ça prend un certain temps, ça a tourné à peu près toute la nuit et un peu plus encore. Vous vous retrouvez ensuite avec une collection de visages dans la catégorie **Inconnus**, la détection marche remarquablement bien avec quelques rares faux positifs comme des statues (ci-dessous) ou des visages issus de tableaux. ![Titre de l'image](https://olivier.hoarau.org/wp-content/uploads/digikam-face.jpg) Comment ça marche ? **Digikam** utiliser un modèle d'apprentissage de deep learning basé sur des fonctionnalités de réseau de neurones de la bibliothèque **OpenCV** avec un modèle préalimenté de données qui permet de détecter des visages nommé Yolo (You only look once). De fait la phase d'apprentissage est réduite au minimum et l'algorithme peut détecter un visage dans différentes orientations, positions, expositions et aspects (soleil, ombre, de profil, de face, yeux rouges, flou) même s'il est partiellement masqué avec des objets comme des lunettes de soleil. Il est même capable de détecter la bobine de nos amis les bêtes. Commence alors une manip assez longue, il faut identifier les personnes et les nommer (tag), on va créer ainsi toutes nos personnes connues qui apparaitront dans l’espace à gauche sous **Inconnus**. Pour chaque personne, en théorie une seule photo suffit, mais il est préférable pour un meilleur résultat de taguer plusieurs occurrences différentes de la même personne dans des configurations différentes. C'est d'autant plus vrai si la personne a changé, c'est notamment le cas de mes enfants qui sont passés du stade bébé à adulte. On retiendra que plus il y a d’occurrences meilleurs sont les résultats, car ce faisant on entraîne le réseau de neurones. ![Titre de l'image](https://olivier.hoarau.org/wp-content/uploads/digikam-face2.jpg) De fil en aiguille, on arrive avec une liste de personnes, avec un certain nombre d’occurrences du visage pour chaque personne sélectionnées manuellement. ![Titre de l'image](https://olivier.hoarau.org/wp-content/uploads/digikam-face7.jpg) C’est là que ça va devenir intéressant, à partir de cette base de visage connu et identifié, **digikam** va la compléter automatiquement. Pour cela il suffit de sélectionner **Reconnaitre les visages** puis **Analyser une collection** pour chercher des visages. Le réseau de neurones va scruter alors tous les visages inconnus et les comparer avec ceux connus. C’est beaucoup plus rapide que pour la détection des visages, ça prend à peine quelques minutes pour ma collection de quelques milliers de photos. Dans le cas ci-dessous les nombres des nouvelles occurrences des visages détectés apparaissent en gras. Ça marche plutôt bien avec très peu de déchets, c’est vraiment bluffant ! ![Titre de l'image](https://olivier.hoarau.org/wp-content/uploads/digikam-face5-1024x553.jpg) Pour chaque personne les visages restent néanmoins à confirmer, ils sont entourés de vert. Si c'est la bonne personne, on valide, sinon on peut indiquer le bon nom (éventuellement en créant une personne) ou les ignorer purement et simplement. On retrouvera les personnes ignorées dans la catégorie **Ignoré** et ne seront plus utilisées par l'algorithme pour les recherches futures. Le système est itératif, on peut relancer autant de fois que désiré la reconnaissance de visage, on pourrait penser que le réseau de neurones apprend et devient de plus en plus performant mais j'ai pu constater que ce n'était pas forcément le cas, en revanche quand on relance une détection de visages sur la même collection, il va trouver des nouveaux visages qu'il n'avait pas trouver au premier passage. La recherche de photos similaires --------------------------------- Autre fonctionnalité que j'ai découverte, la recherche de similarité, elle consiste comme son nom l'indique à rechercher des images similaires. Ça marche comment ? En fait, **digikam** va balayer toute la collection et prendre une empreinte numérique de chaque photos, il va comparer ensuite ces empreintes pour évaluer les similarités. Dans la pratique on va cliquer sur l'onglet vertical **Similarité**, il faudra d'abord lancer une recherche d'empreinte en cliquant sur le bouton **Mettre à jour les empreintes** de l'onglet horizontal **Doublons**. Pour ma collection de presque 9000 photos, ça a pris quelques heures. On se balade ensuite dans la collection et avec le menu contextuel on lance la recherche de similarités. On peut jouer sur l'échelle de similarité, en mettant une fourchette entre 90% et 100% les empreintes devront être très proches, donc autant dire que les photos seront quasi identiques. Avec une fourchette plus grande ça donnera davantage de photos, pas totalement identiques mais assez proches. Si la fourchette est trop grande, ça donnera des résultats plutôt surprenants avec des photos qui n'ont strictement rien à voir à première vue. ![Titre de l'image](https://olivier.hoarau.org/wp-content/uploads/digikam-similaire.jpg) Cerise sur le gâteau grâce à cette prise d'empreinte, il sera possible également d'identifier les photos doublons, qui sont donc identiques. La géolocalisation ------------------ Pour ceux qui disposent d'un APN doté d'un GPS intégré (et pour les autres aussi), l'onglet vertical **Carte** permet de visualiser les photos en fonction de l'endroit où elles ont été prises sur la planète. Vous avez également la possibilité pour les photos non géoréférencées d'indiquer après coup leur localisation. ![Titre de l'image](https://olivier.hoarau.org/wp-content/uploads/digikam-carte3.jpg) Autres fonctionnalités ---------------------- **Digikam** ne se limite pas aux fonctionnalités citées plus haut, il en possède d'autres plus classiques, comme l'édition avancée d'images, la table lumineuse pour comparer des photos côte à côte, le traitement de photos en mode batch, le gestionnaire d'étiquettes ou des fonctions d'import/export vers des services web que j'ai choisies de ne pas détailler dans ce journal. En synthèse =========== **Digikam** finalement l'essayer c'est l'adopter, je n'avais jamais réellement compris l'intérêt d'un tel outil jusqu'à présent, j'ai totalement redécouvert ma collection de photos sous un autre jour. Pour terminer une dernière précision, certes **digikam** a été développé initialement pour l'univers KDE, mais il marche très bien sur n'importe quel environnement ! Des liens utiles pour aller plus loin ===================================== - le site officiel de **digikam** (en anglais) [https://www.digikam.org](https://www.digikam.org) - la documentation officielle (en anglais) de **digikam** [https://docs.kde.org/trunk5/en/digikam-doc/digikam/index.html](https://docs.kde.org/trunk5/en/digikam-doc/digikam/index.html) - l'annonce (en anglais) de la sortie de la 7.0.0 qui a implémenté ce nouveau modèle de réseau de neurones de reconnaissance faciale [https://www.digikam.org/news/2020-07-19-7.0.0_release_announcement/](https://www.digikam.org/news/2020-07-19-7.0.0_release_announcement/) - une présentation vidéo (en anglais) en 2019 de Thanh Trung Dinh, l'étudiant à l'origine de l'implémentation de ce modèle [http://www-ftp.lip6.fr/pub/X11/kde-applicationdata/akademy/2019/127-AI_Face_Recognition_with_OpenCV_in_digiKam.mp4](http://www-ftp.lip6.fr/pub/X11/kde-applicationdata/akademy/2019/127-AI_Face_Recognition_with_OpenCV_in_digiKam.mp4 ) - l'annonce de la sortie de la 7.2.0 qui apporte encore des améliorations du modèle de réseau de neurones[ https://www.digikam.org/news/2021-03-22-7.2.0_release_announcement/]( https://www.digikam.org/news/2021-03-22-7.2.0_release_announcement/) - les améliorations viennent en partie des travaux d'un autre étudiant Minh Nghia Duong, on retrouvera le détail du projet (en anglais) [https://community.kde.org/GSoC/2020/Ideas#Project:_DNN_based_Faces_Recognition_Improvements](https://community.kde.org/GSoC/2020/Ideas#Project:_DNN_based_Faces_Recognition_Improvements) - des tutorials (en anglais) sur le site d'**OpenCV** sur l'utilisation du Deep Neural Network (DNN) [https://docs.opencv.org/4.5.3/d2/d58/tutorial_table_of_content_dnn.html](https://docs.opencv.org/4.5.3/d2/d58/tutorial_table_of_content_dnn.html) - un guide (en anglais) sur le module DNN d'**OpenCV** [https://learnopencv.com/deep-learning-with-opencvs-dnn-module-a-definitive-guide/](https://learnopencv.com/deep-learning-with-opencvs-dnn-module-a-definitive-guide/) je suis désolé pour les sites en anglais, mais je n'ai pas trouvé de site en français pertinent sur le sujet, mais je vous laisse volontiers compléter cette liste dans les commentaires.

AltStyle によって変換されたページ (->オリジナル) /