imagededup est un package python qui simplifie la tâche de recherche de doublons exacts et proches dans une collection d'images.
Ce package fournit des fonctionnalités permettant d'utiliser des algorithmes de hachage particulièrement efficaces pour trouver des doublons exacts, ainsi que des réseaux de neurones convolutifs qui sont également aptes à trouver des doublons proches. Un cadre d'évaluation est également fourni pour juger de la qualité de la déduplication pour un ensemble de données donné.
Voici les détails des fonctionnalités fournies par le package :
Recherche de doublons dans un répertoire à l'aide de l'un des algorithmes suivants :
Réseau neuronal convolutif (CNN) – Choisissez parmi plusieurs modèles préemballés ou fournissez votre propre modèle personnalisé.
Hachage perceptuel (PHash)
Hachage de différence (DHash)
Hachage d'ondelettes (WHash)
Hachage moyen (AHash)
Génération d'encodages pour les images en utilisant l'un des algorithmes indiqués ci-dessus.
Cadre permettant d'évaluer l'efficacité de la déduplication à partir d'une cartographie de la vérité terrain.
Tracer les doublons trouvés pour un fichier image donné.
Une documentation détaillée du package est disponible sur : https://idealo.github.io/imagededup/
imagededup est compatible avec Python 3.8+ et fonctionne sous Linux, MacOS X et Windows. Il est distribué sous licence Apache 2.0.
Installation
Démarrage rapide
Repères
Contribuer
Citation
Mainteneurs
Licence
Il existe deux manières d'installer imagededup :
Installez imagededup depuis PyPI (recommandé) :
pip install imagededup
Installez imagededup à partir de la source GitHub :
clone git https://github.com/idealo/imagededup.gitcd imagededup pip install "cython>=0.29" installation python setup.py
Afin de rechercher des doublons dans un répertoire d'images à l'aide du hachage perceptuel, le workflow suivant peut être utilisé :
Importer la méthode de hachage perceptuel
à partir de imagededup.methods import PHashphasher = PHash()
Générer des encodages pour toutes les images d'un répertoire d'images
encodages = phasher.encode_images(image_dir='path/to/image/directory')
Rechercher des doublons à l'aide des encodages générés
doublons = phasher.find_duplicates(encoding_map=encodings)
Tracer les doublons obtenus pour un fichier donné (ex : 'ukbench00120.jpg') à l'aide du dictionnaire des doublons
depuis imagededup.utils import plot_duplicatesplot_duplicates(image_dir='path/to/image/directory',duplicate_map=duplicates,filename='ukbench00120.jpg')
Le résultat ressemble à ci-dessous :
Le code complet du workflow est :
from imagededup.methods import PHashphasher = PHash()# Générer des encodages pour toutes les images dans un répertoire d'imagesencodings = phasher.encode_images(image_dir='path/to/image/directory')# Rechercher des doublons à l'aide des encodingsduplicates générés = phasher.find_duplicates(encoding_map =encodages)# tracer les doublons obtenus pour un fichier donné à l'aide du dictionnaire des doublons de imagededup.utils import plot_duplicatesplot_duplicates(image_dir='path/to/image/directory',duplicate_map=duplicates,filename='ukbench00120.jpg')
Il est également possible d'utiliser vos propres modèles personnalisés pour rechercher des doublons à l'aide de la méthode CNN.
Pour des exemples, reportez-vous à cette partie du référentiel.
Pour une utilisation plus détaillée des fonctionnalités du package, reportez-vous à : https://idealo.github.io/imagededup/
Mise à jour : les benchmarks fournis ne sont valables que jusqu'à imagededup v0.2.2
. Les prochaines versions comportent des changements importants dans toutes les méthodes, de sorte que les références actuelles pourraient ne pas tenir.
Des références détaillées sur les mesures de vitesse et de classification pour différentes méthodes ont été fournies dans la documentation. De manière générale, les conclusions suivantes peuvent être tirées :
CNN fonctionne mieux pour les quasi-doublons et les ensembles de données contenant des transformations.
Toutes les méthodes de déduplication fonctionnent bien sur les ensembles de données contenant des doublons exacts, mais le hachage par différence est la plus rapide.
Nous acceptons toutes sortes de contributions. Consultez le guide des contributions pour plus de détails.
Merci de citer Imagededup dans vos publications si cela est utile pour votre recherche. Voici un exemple d'entrée BibTeX :
@misc{idealods2019imagededup, title={Imagededup}, author={Tanuj Jain et Christopher Lennan et Zubin John et Dat Tran}, année={2019}, howpublished={url{https://github.com/idealo/imagededup} }, }
Tanuj Jain, github : tanujjain
Christopher Lennan, github : clennan
Dat Tran, github : datitran
Voir LICENCE pour plus de détails.