Seite 1 von 1
Doppelte Bilder finden
Verfasst: Freitag 11. März 2022, 22:39
von SAOJulius
Hallo zusammen,
ich arbeite seit längerem an meinem eigenen machine learning Datensatz aus Bildern. Jetzt habe ich schon relativ viele Bilder(50.000 Bilder). Nun sind in dem Datensatz viele doppelte Bilder vorhanden die ich aussortieren will. Gibt es da eine Lösung die schnell auszusortieren die nicht sehr grafikintensive ist, denn ich habe nur einen alten Laptop.
VG
Julius
Re: Doppelte Bilder finden
Verfasst: Freitag 11. März 2022, 23:10
von __deets__
Mit einem alten Laptop wird das dann aber eher nix, ML braucht eine Menge Power. Zur Frage: datei de-duplizierer gibt es doch wie Sand am Meer. Einfach mal suchen.
Re: Doppelte Bilder finden
Verfasst: Samstag 12. März 2022, 02:48
von LukeNukem
SAOJulius hat geschrieben: Freitag 11. März 2022, 22:39
ich arbeite seit längerem an meinem eigenen machine learning Datensatz aus Bildern. Jetzt habe ich schon relativ viele Bilder(50.000 Bilder). Nun sind in dem Datensatz viele doppelte Bilder vorhanden die ich aussortieren will. Gibt es da eine Lösung die schnell auszusortieren die nicht sehr grafikintensive ist, denn ich habe nur einen alten Laptop.
Das ist...
hüstel so eine Sache. Einfache Duplikate von Dateien finden, kann schon ziemlich... tricky sein, denn so eine Datei kann ja viele Attribute haben.
Attribute, die mir spontan einfallen, könnten der Dateiname (wenn sie in verschiedenen Verzeichnissen liegen), das Erstellungsdatum und die Dateigröße sein. Trotzdem könnten Dateien denselben Namen, dasselbe Datum, und dieselbe Dateigröße haben... genau. Und trotzdem könnten es trotz Unterschieden dieselben Dateien sein... genau: oder auch nicht.
Man muß da einfach die Realitäten sehen: sogar dann, wenn Du dasselbe Bild mit denselben Algorithmen oder Bibliotheken -- oder sogar denselben Bibliotheken in unterschiedlichen Versionen -- komprimierst, kommen verschiedene Dateien heraus. Veränderst Du ein einziges Pixel in dem Bild, sind es (womöglich, sicher ist das nicht) verschiedene Dateien -- sogar dann, wenn die Dateien byteweise Unterschiede haben, können alle vorher genannten Attribute dieselben sein. Trotzdem wären es verschiedene Dateien...
Wenn Du wirklich auf 1:1-Duplikate gehen willst, da gibt es eine Reihe von Möglichkeiten, die mit einem alten Laptop aber... keinen Spaß machen. Aber Ansätze mit Machine Learning, die auch Ausschnitte von Bildern oder Ähnliches erkennen können, bei 50k Bildern... das würde nicht einmal auf meinem relativ dicken Desktop Spaß machen. Für sowas gibt es Compute Cluster, und auch dann ist das nichts, was man mal nebenbei macht.
Re: Doppelte Bilder finden
Verfasst: Samstag 12. März 2022, 09:10
von SAOJulius
Okay vielen Dank für die schnelle Antwort. Dann weiß ich dass das sehr schwierig ist. Falls ich doch noch was finden sollte schreibe ich es rein.
VG
Julius
Re: Doppelte Bilder finden
Verfasst: Samstag 12. März 2022, 09:24
von ThomasL
Diese Thematik kann einfach oder auch komplex gelöst werden.
Deine "doppelten" Bilder, sind die denn Byteidentisch, d.h. die Dateien wurden kopiert?
Dann kannst du mit einem De-Duplizierer, ich empfehle hier die Freeware AllDup
https://alldup.info/index.php , diese Dateien finden.
Das Programm bietet mittlerweile auch eine Suche nach ähnlichen Bildern an.
Die komplexe Lösung erschließt sich dir, wenn du mal diese Google Suche hier verwendest:
https://www.google.de/search?q=finding+ ... p+learning
Da gibt es so viele Lösungsansätze, da fehlt mir die Zeit, die alle hier aufzulisten.
Re: Doppelte Bilder finden
Verfasst: Samstag 12. März 2022, 09:58
von imonbln
SAOJulius hat geschrieben: Freitag 11. März 2022, 22:39
Nun sind in dem Datensatz viele doppelte Bilder vorhanden die ich aussortieren will.
Definiere doppelt, wie schon geschrieben, wenn die bearbeitet wurden, ist es schwer, aber wenn es wirklich einfach nur Kopien sind, hast du eine Chance.
Ich sage mal, Stumpf ist Trumpf, einfach einen schnellen Hash wert über jedes Bild berechnen und den Hash mit den Dateinamen speichern, jetzt nur noch die gleichen Hash werte finden und du hast einen ersten verdacht welche Bilder gleich sein könnten. Wenn du nun in einem zweiten Schritt über die Doppelten Hashvalues nochmal einen anderen Hash Algorithmus laufen lasst und der kommt auch zum Ergebnis ist gleich, dann hast du die 1:1 Kopien gefunden.
Wichtig der erste Hash Algorithmus sollte schnell gehen, dafür kannst du gerne Hash Kollisionen in Kauf nehmen. Der zweite, Durchgang berechnet nur noch ein Bruchteil der Bilder. Hier solltest du einen Algorithmus vorziehen, der möglichst kollisionsfrei ist, aber dafür darf er aufwändiger rechnen.
Re: Doppelte Bilder finden
Verfasst: Samstag 12. März 2022, 17:13
von narpfel
Es gibt auch Hashfunktionen wie
`pHash`, die speziell auf Bilder ausgelegt sind und „visuell“ hashen, sodass kleine Unterschiede (unterschiedliche Metadaten, unterschiedliche Kompressionsstufen bei JPEG, Bildrauschen) nicht dazu führen, dass man komplett unterschiedliche Hashes bekommt.
Re: Doppelte Bilder finden
Verfasst: Samstag 12. März 2022, 21:18
von SAOJulius
Die Bilder habe ich durch eine Web scraper aus dem Internet heruntergeladen ich weiß also nicht welche Bilder ich doppelt heruntergeladen habe und welche Bilder gleich sind mit einer anderen Auflösung. Würde es vielleicht etwas bringen wenn ich mir einfach einen PC mit einer gescheiten GPU zu lege? Habe das ganze schon mit 20 bis 30 Bildern mit der difpy library geschafft aber sobald ich mehr Bilder nehme (ungefähr 500)dauert das viel zu lange.
Re: Doppelte Bilder finden
Verfasst: Samstag 12. März 2022, 21:21
von SAOJulius
Ich werde es auch nochmal mir alldup versuchen
Re: Doppelte Bilder finden
Verfasst: Sonntag 13. März 2022, 10:15
von tonikae
Was sind bei dir "Viele Doubletten"?
Wegen ein paar Doubletten im Dataset braucht man sich keinen Kopf
zu machen.Das ist bei großen Datasets eher der Normalfall und spielt
für das Training nicht wirklich eine Rolle.Wenn man den Eindruck hat
es gibt zuviele Doubletten bei den Rohdaten, geht man mit den bereits
erwähnten Hashwerten kurz drüber und mistet den gröbsten Kram aus.
Mehr ist da eigentlich nicht notwendig.d.h. wenn da ein paar Doubletten
übrigbleiben....geschenkt.
Hat man trotzdem das Gefühl die Vielfalt des Datasets ist wegen der
Doubletten zu gering, der Algorithmus "lernt" damit zu wenig und man
sollte unbedingt etwas für die Verbesserung der Trainingsqualität tun,
dafür gibt es andere Wege. z.B. Dropout
https://de.wikipedia.org/wiki/Dropout_( ... ales_Netz)
Dropout ist ja speziell dafür gedacht, aus möglichst wenig Trainingsdaten
eine größtmögliche Trainingsvielfalt und bestmögliche Trainingsqualität
herauszukitzeln.....und das funktioniert sogar recht gut.
d.h.
Man muß da auch nicht unbedingt irgendwelche Monsterdatasets trainieren
wollen.Weniger kann da durchaus mehr sein.
Re: Doppelte Bilder finden
Verfasst: Sonntag 13. März 2022, 16:00
von SAOJulius
Danke für alle Antworten AllDup hat für mich funktioniert dropout werde ich mir auch nochmal anschauen.
VG
SAOJulius