Imagededup Ähnliche Bilder Extrahieren Erkennen Python

Ähnliche Bilder mit Imagededup extrahieren und erkennen (Python)

Dies ist eine Anleitung zum Erkennen ähnlicher Bilder und Fotos mit imagededup, einer Python Machine Learning, Deep Learning und KI-Bibliothek. Sie kann zum Beispiel Ähnlichkeiten finden, die einfache Hash-Algorithmen nicht erkennen können, wie Bilder mit gleichem Inhalt aber unterschiedlicher Qualität oder Auflösung, leicht unterschiedlichen Winkeln oder Beschneidungen.

Shou Arisaka
3 Min. Lesezeit
17. Okt. 2025

Dies ist eine Anleitung zum Erkennen ähnlicher Bilder und Fotos mit imagededup, einer Python Machine Learning, Deep Learning und KI-Bibliothek. Sie kann zum Beispiel Ähnlichkeiten finden, die einfache Hash-Algorithmen nicht erkennen können, wie Bilder mit gleichem Inhalt aber unterschiedlicher Qualität oder Auflösung, leicht unterschiedlichen Winkeln oder Beschneidungen. Es scheint Standard zu sein, sie als Bildfilter für Machine Learning zu verwenden, aber sie kann auch für allgemeine Zwecke verwendet werden.

Erstellen Sie eine virtuelle Umgebung mit virtualenv.

virtualenv imagededup_dev
. .\imagededup_dev\Scripts\activate

Installieren Sie das imagededup-Paket.

pip install imagededup

Falls virtualenv nicht installiert ist, installieren Sie es.

pip install virtualenv

Falls Python und pip nicht installiert sind, installieren Sie sie. Wenn Sie unter Windows mit choco installiert haben, starten Sie die Konsole neu. Stellen Sie außerdem sicher, dass der Pfad gesetzt ist.

(Linux)

sudo apt update
sudo apt install python3-pip python3-dev

(Windows)

choco install python3 --version=3.7.6.20200110

(PowerShell, Pfad überprüfen)

Start C:\Windows\system32\rundll32.exe sysdm.cpl, EditEnvironmentVariables

Falls Choco unter Windows nicht installiert ist, installieren Sie es.

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
refreshenv

TensorFlow ist erforderlich, um Imagededup auszuführen. Falls es nicht installiert ist, installieren Sie es.

Unten ist Beispielcode. Dies speichert ein Objekt mit Zuordnungen erkannter duplizierter Bilddateien in der duplicates-Variable.

if __name__ == '__main__':
  from imagededup.methods import PHash
  phasher = PHash()
  encodings = phasher.encode_images(image_dir='C:/images/anime')
  duplicates = phasher.find_duplicates(encoding_map=encodings)

Unten ist Kommandozeilen-Software, die ich für imagededup geschrieben habe. Es ist keine Lizenz angegeben, also bitte unterlassen Sie unbefugtes Posten in Blogs, GitHub oder anderen Online-Plattformen.

if __name__ == '__main__':

    from imagededup.methods import PHash
    import json
    from pathlib import Path
    from imagededup.utils import plot_duplicates
    import fire

    def main (type = "get_json", path = "C:\pg\ml\_images\hent") :

        if ( type == "get_json" ) :
            phasher = PHash()
            encodings = phasher.encode_images(image_dir=path)
            duplicates = phasher.find_duplicates(encoding_map=encodings)

            Path('./tmp.json').write_text(json.dumps(duplicates))

        if ( type == "test" ) :
            duplicates = json.loads(Path('./tmp.json').read_text())
            for key, value in duplicates.items() :
                if ( value ) :
                    plot_duplicates(image_dir=path,
                                    duplicate_map=duplicates,
                                    filename=key)

        if ( type == "get_txt" ) :

            duplicates = json.loads(Path('./tmp.json').read_text())
            content = ""
            delete_values = []
            for key, value in duplicates.items() :
                if ( value and not key in delete_values ) :
                    for v in value:
                        content = content + v + "\n"
                        delete_values.append(v)

            Path('./duplicates.txt').write_text(content)

    print(fire.Fire(main))

Das obige Programm verwendet die folgenden Pakete. Installieren Sie mit folgendem Befehl.

pip install fire

Unten sind Verwendungsbeispiele für das obige Programm. Bitte führen Sie die folgenden Befehle der Reihe nach aus. Geben Sie --path als Pfad zu Ihrem Bildordner an.

python imagededup_dev.py --type get_json --path "B:\_images\animeimages" generiert eine JSON-Datei.

python imagededup_dev.py --type test --path "B:\_images\animeimages" führt einen Test basierend auf der JSON-Datei durch. Dies zeigt duplizierte Bilder an. Wenn es keine duplizierten Bilder gibt, wird nichts angezeigt.

python imagededup_dev.py --type get_txt --path "B:\_images\animeimages" erstellt eine Textdatei duplicates.txt, die Pfade zu duplizierten Dateien basierend auf der JSON-Datei auflistet.

Sie können Bilddateien basierend auf der erstellten Textdatei manuell löschen, aber Sie können sie auch als Batch mit Linux-Befehlen wie folgt löschen. (Hinweis: Der folgende Befehl löscht Dateien im aktuellen Verzeichnis/Ordner. Bitte recherchieren Sie die Verwendung sorgfältig vor der Nutzung.)

rm $( cat "/path/to/duplicates.txt" )

Wie man Linux unter Windows verwendet, finden Sie in unserem Blog. Suchen Sie in unserem Blog nach “wsl” oder “bash on windows”, um Anleitungen zu finden.

Diesen Artikel teilen

Shou Arisaka 17. Okt. 2025

🔗 Links kopieren