imagededup ist ein Python-Paket, das die Suche nach exakten und nahezu Duplikaten in einer Bildsammlung vereinfacht.
Dieses Paket bietet Funktionen zur Verwendung von Hashing-Algorithmen, die sich besonders gut zum Auffinden exakter Duplikate eignen, sowie von Faltungs-Neuronalen Netzen, die auch dazu geeignet sind, nahezu Duplikate zu finden. Außerdem wird ein Bewertungsrahmen bereitgestellt, um die Qualität der Deduplizierung für einen bestimmten Datensatz zu beurteilen.
Im Folgenden werden die vom Paket bereitgestellten Funktionen detailliert beschrieben:
Duplikate in einem Verzeichnis mithilfe eines der folgenden Algorithmen finden:
Convolutional Neural Network (CNN) – Wählen Sie aus mehreren vorgefertigten Modellen oder stellen Sie Ihr eigenes benutzerdefiniertes Modell bereit.
Wahrnehmungs-Hashing (PHash)
Differenz-Hashing (DHash)
Wavelet-Hashing (WHash)
Durchschnittliches Hashing (AHash)
Generierung von Kodierungen für Bilder mit einem der oben genannten Algorithmen.
Framework zur Bewertung der Wirksamkeit der Deduplizierung anhand einer Ground-Truth-Mapping.
Plotten von Duplikaten, die für eine bestimmte Bilddatei gefunden wurden.
Eine ausführliche Dokumentation zum Paket finden Sie unter: https://idealo.github.io/imagededup/
imagededup ist mit Python 3.8+ kompatibel und läuft unter Linux, MacOS X und Windows. Es wird unter der Apache 2.0-Lizenz vertrieben.
Installation
Schnellstart
Benchmarks
Beitragen
Zitat
Betreuer
Lizenz
Es gibt zwei Möglichkeiten, imagededup zu installieren:
Imagededup von PyPI installieren (empfohlen):
pip install imagededup
Installieren Sie imagededup von der GitHub-Quelle:
Git-Klon https://github.com/idealo/imagededup.gitcd imagededup pip install „cython>=0.29“python setup.py install
Um Duplikate in einem Bildverzeichnis mithilfe von Perceptual Hashing zu finden, kann der folgende Workflow verwendet werden:
Wahrnehmungs-Hashing-Methode importieren
aus imagededup.methods import PHashphasher = PHash()
Generieren Sie Kodierungen für alle Bilder in einem Bildverzeichnis
kodierungen = phasher.encode_images(image_dir='path/to/image/directory')
Finden Sie Duplikate mithilfe der generierten Kodierungen
Duplikate = phasher.find_duplicates(encoding_map=encodings)
Zeichnen Sie Duplikate auf, die Sie für eine bestimmte Datei erhalten haben (z. B. „ukbench00120.jpg“), indem Sie das Duplikatswörterbuch verwenden
from imagededup.utils import plot_duplicatesplot_duplicates(image_dir='path/to/image/directory',duplicate_map=duplicates,filename='ukbench00120.jpg')
Die Ausgabe sieht wie folgt aus:
Der vollständige Code für den Workflow lautet:
from imagededup.methods import PHashphasher = PHash()# Kodierungen für alle Bilder in einem Bildverzeichnis generierenencodings = phasher.encode_images(image_dir='path/to/image/directory')# Duplikate mithilfe der generierten Kodierungen suchenduplicates = phasher.find_duplicates(encoding_map =encodings)# Plot-Duplikate, die für eine bestimmte Datei mithilfe des Duplikat-Wörterbuchs von erhalten wurden imagededup.utils import plot_duplicatesplot_duplicates(image_dir='path/to/image/directory',duplicate_map=duplicates,filename='ukbench00120.jpg')
Es ist auch möglich, eigene benutzerdefinierte Modelle zum Auffinden von Duplikaten mithilfe der CNN-Methode zu verwenden.
Beispiele finden Sie in diesem Teil des Repositorys.
Eine detailliertere Nutzung der Paketfunktionalität finden Sie unter: https://idealo.github.io/imagededup/
Update : Die bereitgestellten Benchmarks sind nur bis imagededup v0.2.2
gültig. In den nächsten Versionen gibt es erhebliche Änderungen an allen Methoden, sodass die aktuellen Benchmarks möglicherweise nicht mehr halten.
Detaillierte Benchmarks zu Geschwindigkeits- und Klassifizierungsmetriken für verschiedene Methoden wurden in der Dokumentation bereitgestellt. Generell lassen sich folgende Schlussfolgerungen ziehen:
CNN eignet sich am besten für nahezu Duplikate und Datensätze, die Transformationen enthalten.
Alle Deduplizierungsmethoden eignen sich gut für Datensätze, die exakte Duplikate enthalten, aber Differenz-Hashing ist am schnellsten.
Wir freuen uns über alle Arten von Beiträgen. Weitere Einzelheiten finden Sie im Beitragsleitfaden.
Bitte zitieren Sie Imagededup in Ihren Veröffentlichungen, wenn dies für Ihre Forschung nützlich ist. Hier ist ein Beispiel-BibTeX-Eintrag:
@misc{idealods2019imagededup, title={Imagededup}, Autor={Tanuj Jain und Christopher Lennan und Zubin John und Dat Tran}, Jahr={2019}, howpublished={url{https://github.com/idealo/imagededup} }, }
Tanuj Jain, Github: Tanujjain
Christopher Lennan, Github: Clennan
Dat Tran, github: datitran
Einzelheiten finden Sie unter LIZENZ.