Seite 1 von 1

encoding.pickle-Datensatz zusammenführen

Verfasst: Donnerstag 11. Juni 2020, 14:18
von joernius
Hallo, liebe Gemeinde,

ich bin nur ein User und kein Programmierer, aber ich möchte eine Frage loswerden, welche wohl hier am wahrscheinlichsten beantwortet werden kann.

Nach der Beschreibung https://www.pyimagesearch.com/2018/06/1 ... -learning/
habe ich die Gesichtserkennung mit OpenCV und dlib nachgebaut ... und es funktioniert :D

Bein trainieren der Gesichter wird eine Datei "encodings.pickle"generiert:

Code: Alles auswählen

python encode_faces.py --dataset dataset_bild-vorlagen --encodings encodings.pickle
Diese wird dann logischerweise bei der Erkennung herangezogen:

Code: Alles auswählen

python recognize_faces_image.py --encodings encodings.pickle --image examples_neu/cara-gross.jpg &
Ich habe eine Erkennung von über 100 Berühmtheiten auf 3.000 Bildern aus der Filmszene angeschubst, dabei kam nach 15 Stunden eine encodings.pickle in eineigen MB-Größe heraus.

Welchen Befehl muss ich absetzen, möchte ich diese Datei mit einer weiteren encodings.pickle erweitern, also 2 encodings.pickle zusammen-mergen?
Ein cat encodings1.pickle encodings2.pickle > encodings.pickle war fehlgeschlagen... :( Ist halt ein Binary.

Alternativ, kann ich 'python recognize_faces' irgendwie zweimal das Argument '- -encodings encodings.pickle' mit zwei verschiedenen Datensätzen mitgeben?
Einfach so hintereinander geht nicht, es wird nur die letzte Datei ausgewertet.

Vielen Dank im Voraus
Grüße Jörn

Re: encoding.pickle-Datensatz zusammenführen

Verfasst: Donnerstag 11. Juni 2020, 14:31
von sparrow
Ich kenne das Script nicht. Das Script selbst sorgt natürlich dafür, wie Kommdozeilenargumente ausgewertet und verwendet werden.
Und ich weiß auch nicht, wie das Script Daten speichert. Die Endung .pickle deutet darauf hin, dass Daten per "pickle" gespeichert werden. Damit lassen sich Datenstrukturen in eine persistente Form überführen. Macht man aber eigentlich selten, weil sich Strukturen im Programm nicht ändern dürfen, damit sich das wider laden lässt.
Wenn du pickle in der Python-Dokumentation suchst, erfährst du, wie du damit Daten lädst und speicherst.
Der nächste Schritt für dich wäre dann zu verstehen wie dort Daten abgelegt sind und diese ggf. um neue Daten zu erweitern.
Aber das funktioniert natürlich nur, wenn tatsächlich mit via pickle gespeichert wird. Weiß man halt ohne Code nicht.

Re: encoding.pickle-Datensatz zusammenführen

Verfasst: Donnerstag 11. Juni 2020, 15:14
von __deets__
Ich kenne den Kurs, und darum auch, was Adrian da macht. Du solltest das zusammenfuehren koennen. BZW jemand hier. Aber dazu braucht es die pickles, damit man sich mal die Struktur vor Augen fuehren kann. Dazu erstmal alles zu installieren, zu trainieren, etc ist ein bisschen viel des guten.

Re: encoding.pickle-Datensatz zusammenführen

Verfasst: Donnerstag 11. Juni 2020, 15:23
von __blackjack__
@__deets__: Ich denke der Quelltext reicht, das sieht sehr trivial aus: Ein Wörterbuch mit zwei Listen als Werte in denen ”parallel” jeweils Daten zum Gesicht und der dazugehörige Name geführt werden.

Re: encoding.pickle-Datensatz zusammenführen

Verfasst: Donnerstag 11. Juni 2020, 15:36
von __deets__
Normalerweise muss man sich immer anmelden fuer den Quelltext, und da habe ich auch gerade keine grosse Lust zu. Aber ich gebe dir recht, schwierig wird es nicht sein :)

Re: encoding.pickle-Datensatz zusammenführen

Verfasst: Donnerstag 11. Juni 2020, 16:04
von __blackjack__
@__deets__: Ich musste eine E-Mail-Adresse angeben und bekam dann die Links zum Quelltext (+Daten = 340MB) zugeschickt. 🙂

Re: encoding.pickle-Datensatz zusammenführen

Verfasst: Donnerstag 11. Juni 2020, 16:06
von __deets__
Eben. Und dann ist dem TE ja noch nicht geholfen. Wenn er uns die pickles gibt, geht’s doch schneller :)

Re: encoding.pickle-Datensatz zusammenführen

Verfasst: Dienstag 16. Juni 2020, 13:02
von joernius
Danke für Euren Einsatz. Diese Pickle-Datei liegt als Binary vor. Sicherlich geht das mittels Python zu decodieren, zu erweitern und wieder zu erstellen.
Ich hätte gedacht, es geht auch ganz simple mit einem Parameter :(

Die Datei bekommt man unkompliziert und kostenlos, nachdem man eine Mailadresse hinterlassen hat. Diese ist deshalb so groß, weil auch eine Video-Datei beiliegt.

Ich habe hier 3 verschiedene Pickles abgelegt, diese sind 7 Tage verfügbar: https://fil.email/0G5Iahwu

PS
Sry für die späte Antwort, ich hatte keine Benachrichtigung erhalten..