Eigene Dataset für Deep Learning Projekte erstellen

In den letzten Tagen habe ich einen Dataset für ein zukünftiger Forschungsartikel erstellt. Heute Morgen bin ich fertig mit der „preprocessing“, alle Bilder sehen gut aus und sind bereit für das Training. Die Art, wie ich es gemacht habe, erforderte 2 Ansätze:

1. Ich habe mir eine Liste mit allem Namen von Tieren und Vögel gemacht, die ich für mein Projekt brauche. Da ich viele Bilder brauchte, habe ich mir ein paar Bilder aus Google „gecrawlt“. Dafür habe ich einen Script benutzt um alle Bilder im entsprechenden Ordner speichern zu können. Einfach eine Python (.py) Datei mit folgenden Inhalt erstellen (z.B. script.py):

from icrawler.builtin import GoogleImageCrawler
import itertools, os

for keyword in [‚pigs‘, ‚pig‘, ’schweine‘, ’schwein‘, ‚porci‘, ‚porc‘, ‚Cow‘, ‚Cows‘, ‚Vaca‘, ‚vaci‘, ‚Kuh‘, ‚Kuehe‘, ‚Horses‘, ‚Horse‘, ‚Pferde‘, ‚Pferd‘, ‚Cal‘, ‚Cai‘, ‚Donkeys‘, ‚Donkey‘, ‚Esel‘, ‚Eseln‘, ‚Magar‘, ‚Magari‘, ‚Goats‘, ‚Goat‘, ‚Ziegen‘, ‚Ziege‘, ‚Capra‘, ‚capre‘, ‚Sheeps‘, ‚Sheep‘, ‚Schaf‘, ‚Schafe‘, ‚oaie‘, ‚oi‘, ‚Rabbits‘, ‚Rabbit‘, ‚Kaninchen‘, ‚iepure‘, ‚iepuri‘, ‚Mice‘, ‚Mouse‘, ‚Maus‘, ‚Soarec‘, ‚Soareci‘, ‚Rats‘, ‚Rat‘, ‚Ratte‘, ‚Sobolan‘, ‚Sobolani‘, ‚Snakes‘, ‚Snake‘, ‚Schlange‘, ‚Schlangen‘, ‚Sarpe‘, ‚Serpi‘, ‚Frogs‘, ‚Frog‘, ‚Frosch‘, ‚Froesche‘, ‚Broasca‘, ‚Broaste‘, ‚Lizard‘, ‚Lizards‘, ‚Lacertids‘, ‚Eidechsen‘, ‚Soparla‘, ‚Soparle‘, ‚Hamsters‘, ‚Hamster‘, ‚hamsteri‘, ‚Hedgehogs‘, ‚Hedgehog‘, ‚Igel‘, ‚Arici‘, ‚Cats‘, ‚Cat‘, ‚Katze‘, ‚Katzen‘, ‚Pisica‘, ‚Pisici‘, ‚Dogs‘, ‚Dog‘, ‚Hund‘, ‚Hunde‘, ‚caine‘, ‚caini‘, ‚Foxes‘, ‚Fox‘, ‚Fuchs‘, ‚Fuechse‘, ‚Vulpi‘, ‚Vulpe‘, ‚Bears‘, ‚Bear‘, ‚Baer‘, ‚Baeren‘, ‚Urs‘, ‚Ursi‘, ‚Deers‘, ‚Deer‘, ‚Hirsch‘, ‚Caprioara‘, ‚Caprioare‘, ‚Cerb‘, ‚Cerbi‘, ‚Bats‘, ‚Bat‘, ‚Fledermaus‘, ‚Fledermaeuse‘, ‚Lilieci‘, ‚Liliac‘, ‚Chicken‘, ‚Chickens‘, ‚Henne‘, ‚Huehner‘, ‚Gaina‘, ‚Gaini‘, ‚Rooster‘, ‚Hahn‘, ‚Cocosi‘, ‚Turkeys‘,
‚Turkey‘, ‚Truthahn‘, ‚Truthaehne‘, ‚curcan‘, ‚curcani‘, ‚Ducks‘, ‚Duck‘, ‚Enten‘, ‚Ente‘, ‚Rata‘, ‚Rate‘, ‚Gooses‘, ‚Goose‘, ‚Gans‘, ‚Gaense‘, ‚Gaste‘, ‚Gasca‘, ‚Pigeons‘, ‚Pigeon‘, ‚Taube‘, ‚Tauben‘, ‚Porumbei‘, ‚Porumbel‘, ’stork‘, ’storks‘, ‚Storch‘, ‚Stoerche‘, ‚barza‘, ‚moles‘, ‚mole‘, ‚cartita‘, ‚Maulwurf‘, Maulwuerfe‘, ‚European mole‘ ‚Crows‘, ‚Crow‘, ‚Kraehe‘, ‚cioara‘, ‚ciori‘, ‚Parrot‘, ‚Parrots‘, ‚Papagei‘, ‚Papageien‘, ‚Papagali‘, ‚Papagal‘, ‚Sparrows‘, ‚Sparrow‘, ‚Spatzen‘, ‚Spatz‘, ‚Vrabie‘, ‚Vrabii‘, ‚Owls‘, ‚Owl‘, ‚Eule‘, ‚Eulen‘, ‚Bufnita‘, ‚Bufnite‘]:
google_crawler = GoogleImageCrawler(
parser_threads=2,
downloader_threads=4,
storage={‚root_dir‘: ‚Animals_and_Birds/{}‘.format(keyword)}
)
google_crawler.crawl(
keyword=keyword, max_num=10000)

TIP: Um mehrere Bilder zu finden, versuchen Sie mit verschiedene Fremdsprachen für dasselbe Wort (z.B. ich habe nicht nur nach „Sparrow“ gesucht, sondern auch nach rumänischer Version „Vrabie“ sowie deutscher Version „Spatz“)

Das Problem mit diesem Google Image Crawler ist, dass die Bilder manuell danach „gereinigt“ sein sollen. Der Grund warum das nötig wird, ist, weil nicht alle Bilder genau einen z.B. „Spatz“ zeigen.

Diese erste Option war OK für mich, aber… Option Nr. 2 hat mich sehr viel weitergebracht und zwar:

2. Ich habe gefunden, dass Open Images v4 Dataset fast alle Kategorien von Tieren und Vögel hat, die ich brauchte! Die Frage war nur: Ich habe nur einen 2TB SDD und kann nicht das ganze (18TB) Open Images v4 Dataset herunterladen oder dafür bezahlen.

Open Images v4 ist ein Datensatz von ~ 9 Millionen Bildern, die mit Beschriftungen auf Bild-Ebene und Begrenzungsrahmen versehen wurden, die Tausende von Klassen (über 6000 Kategorien) umfassen.

Was habe ich dann gemacht? Ich habe OIDv4_ToolKit benutzt! Damit konnte ich einzelne oder mehrere Klassen aus dem großen Open Images v4 Dataset herunterladen und visualisieren.

Das beste ist, ich konnte alle Bilder in Train, Validation und Test herunterladen.

Installation:

Python3 ist erforderlich.

Klonen Sie dieses Repository:

git clone https://github.com/EscVM/OIDv4_ToolKit.git

Installieren Sie die erforderlichen Pakete:

pip3 install -r requirements.txt

Starten Sie das ToolKit, um die verfügbaren Optionen zu überprüfen:

python3 main.py -h

Laden Sie verschiedene Klassen in getrennten Ordnern herunter:

python3 main.py downloader --classes Dog Cat --type_csv train

Hier habe ich auch python3 main.py downloader --classes Dog Cat --type_csv validation sowie python3 main.py downloader --classes Dog Cat --type_csv test benutzt. Das wird für euch bestimmt auch sehr hilfreich sein!

Für diejenige von euch die die Klassen in einem gemeinsamen Ordner herunterladen wollen, benutzen Sie:

 python3 main.py downloader --classes Dog Cat --type_csv validation --multiclasses 1

Warum das wichtig ist? In diesem Video wird das Konzept der verschiedenen Datensätze erklärt, die für das Training und Testen eines künstlichen neuronalen Netzwerks verwendet wird, einschließlich des Trainingssatzes, des Testsatzes und des Validierungssatzes. Die zeigen auch, wie diese Datensätze im Code mit Keras erstellt und spezifiziert werden können.

Fazit: Ich habe beide Optionen benutzt, um erfolgreich alle Klassen zu haben, die ich brauchte. Dafür musste ich die extra 2 Klassen (z.B. Donkey, Pigeons) manuell sauber machen. Um die duplizierte Bilder zu finden und löschen, ich habe Jörg Rosenthal’s Anti-Twin Software benutzt.

PS. Die Klassen „Rats“ und „Crows“ habe ich nicht mehr benutzt, da ich schon „Mouse“ und „Raven“ von Open Images v4 Dataset habe.

Leave a Comment

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahren Sie mehr darüber, wie Ihre Kommentardaten verarbeitet werden .