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)
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.
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.
Neueste Kommentare