Dieser Artikel beschreibt die Methoden zum Sammeln von Bilddaten in einem Musikprojekt mit einer Diashow. Es gab Einschränkungen, die uns dazu zwangen, die vorhandene Bilddatenbank anstelle der von Flickr aufgenommenen Bilder zu verwenden. In diesem Artikel werden jedoch beide Ansätze erläutert, damit der Leser lernen kann, wie Daten mithilfe der Flickr-API extrahiert werden.
Da die Qualität eines erheblichen Teils der mit Flickr gesammelten Bilder gering war, wurde beschlossen, Bilder aus vorhandenen Bilddatenbanken zu verwenden. Insbesondere wurden Bilder aus drei Datenbanken für die psychologische Forschung gesammelt.
Denken Sie daran, dass anfangs die folgenden Datensätze für dieses Projekt ausgewählt wurden:
- Ein Trainingsdatensatz mit 7000 emotional gefärbten Bildern von Flickr für einen Algorithmus zur Emotionsextraktion.
- Ein Trainingsdatensatz mit Bachs Werken für den Melodieabschlussalgorithmus.
- Eine Reihe von Melodien, die als Vorlagen für die Modulation von Emotionen dienen.
Jetzt müssen Sie die Datensätze sammeln. Wie im Artikel gezeigt wird, variiert der dafür erforderliche Arbeitsaufwand je nach ausgewähltem Datensatz erheblich.
Bilderfassung
Dieses Projekt erforderte eine Reihe von Bildern, die sieben verschiedene Emotionen hervorriefen: Glück, Traurigkeit, Angst, Angst, Ehrfurcht, Entschlossenheit, Wut. Für die Sammlung von Bildern wurde aufgrund der Größe und Lizenzierung von Creative Commons * entschieden, Flickr, eine beliebte Website zum Teilen von Fotos, zu verwenden.
Das manuelle Durchsuchen von Flickr nach 7000 Bildern ist eine entmutigende Aufgabe. Glücklicherweise verfügt Flickr über eine
API , die eine Reihe von Methoden bereitstellt, die den Datenaustausch mit Flickr in einer Programmiersprache vereinfachen. Bevor Sie jedoch die API zum Sammeln von Bildern verwenden, ist es wichtig zu wissen, wonach Sie suchen müssen, um relevante Emotionen hervorzurufen. Um die Liste der Suchbegriffe zu ermitteln, wurde eine Aufgabe auf der
Amazon Mechanical Turk * -Plattform verwendet.
Flickr API
Um die von der Flickr-API angebotenen Methoden verwenden zu können, müssen Sie ein Flickr-Konto erstellen und einen API-Schlüssel anfordern. Dazu benötigen Sie ein Flickr- oder Yahoo! * -Konto. Als nächstes müssen Sie
diesem Link folgen und den Schlüssel erhalten.
Screenshot von www.flickr.com/services/apps/create/applyDie Bearbeitung eines Antrags für einen nichtkommerziellen Schlüssel ist recht einfach. Es enthält eine Beschreibung des Verwendungszwecks und die Annahme der Nutzungsbedingungen. Der API-Schlüssel ist eine Sicherheitsmaßnahme und wird verwendet, um einen Missbrauch der API zu verhindern. In den von der API bereitgestellten Methoden ist dies ein erforderlicher Parameter.
Nach Erhalt des API-Schlüssels können Sie das API-Toolkit für eine der Programmiersprachen von
The App Garden herunterladen und installieren. Dieses Projekt verwendet
die PythonI-Flickr-API von Beej , die mit der Sprache Python 3 verwendet werden kann. Sie müssen
dem Installationshandbuch für die Flickr-API folgen.
Der zum Herunterladen der Bilder verwendete Code wird unten angezeigt. Grundsätzlich wird hier die API-Walk-Funktion verwendet, die nach einem Bild nach Tag sucht. Tags werden in einer TXT-Datei gespeichert und pro Zeile aufgelistet. Wenn ein Bild gefunden wird, wird seine URL aus der Vorlage in
farm {farm-id} .staticflickr.com / {server-id} / {id} _ {secret} .jpg erstellt , wobei der Inhalt der geschweiften Klammern durch
Bildattribute ersetzt wird. Anschließend werden die 30 besten Bilder für jedes Tag (sortiert nach Relevanz) extrahiert und je nach Emotion und Suchbedingungen in Ordnern organisiert.
import flickrapi import urllib.request import os project_path = '/path/to/your/project' photos_per_tag = 30 filenames = ['Awe.txt', 'Happiness.txt', 'Fear.txt', 'Determination.txt', 'Anxiety.txt', 'Tranquility.txt', 'Sadness.txt'] def download_files(flickr, t, category, num_photos):
Um diesen Code zu verwenden, müssen Sie das Repository über den Link von
GitHub klonen. Folgen Sie danach den Anweisungen in der README-Datei. Sie müssen die Parameter api_key und api_secret durch die auf Flickr empfangenen API-Schlüssel ersetzen. Wie oben erwähnt, funktioniert dieses Skript nur unter Python 3.
Nachdem das Programm ausgeführt wurde, sieht der Ordner folgendermaßen aus:

Eine Reihe von Daten aus Suchergebnissen auf Flickr.Insgesamt wurden rund 8800 Bilder gesammelt. Es wurden mehr Bilder empfangen als erforderlich, da wir einige der Bilder mit geringer Qualität verwerfen wollten, die nicht verwendet werden können. Der nächste Schritt war die Suche nach diesen Bildern.
Bildauswahl
Die Qualität der gesammelten Bilder war unterschiedlich. Einige Suchbedingungen, z. B. Blumen (in der Abbildung dargestellt), lieferten brauchbare Bilder in hoher Qualität. Weniger spezifische Suchbedingungen ergaben jedoch häufig völlig unbrauchbare Bilder. Zum Beispiel wurde ein Bild eines Kuchens mit einer Wunderfrau * aus dem Wunderetikett erhalten (aufgrund von Ehrfurchtgefühlen), und ein Bild von Kohl von Ambitious Farms wurde aus dem ehrgeizigen Etikett gefunden (aufgrund von Gefühl der Entschlossenheit).
Ungeeignete Bilder.Jeder, der die Flickr-API zur Suche nach Bildern verwenden möchte, wird aufgefordert, bestimmte Substantive als Suchbegriffe zu verwenden. Von ihnen gefundene Bilder sind viel besser als die Verwendung von Adjektiven oder abstrakten Substantiven. Wenn Sie beispielsweise nach Bildern der Ehrfurcht suchen, sollten Sie Suchbegriffe wie den Ozean oder den Grand Canyon anstelle von Ehrfurcht oder Wunder verwenden.
Nach dem Betrachten der Bilder kam das Team zu dem Schluss, dass mehr als 40 Prozent der Bilder unbrauchbar waren. Infolgedessen wurde der Ansatz zur Auswahl eines Datensatzes überarbeitet. Nach der Erörterung einer Reihe von Möglichkeiten, z. B. der Beschränkung des Bildsatzes auf Gesichter mit relevanten Emotionen, wurde beschlossen, Bilder aus vorhandenen Datenbanken zu verwenden, die üblicherweise in der psychologischen Forschung verwendet werden (Geneva Affective PicturE Database (
GAPED ), Open Affective Standardized Image Set (
OASIS ) und Image) Stimuli zur Emotionserregung (
ISEE )).
Trotz der Tatsache, dass die Bilder in vorhandenen Datenbanken weniger vielfältig sind als im neuen Datensatz, wurde aufgrund der höheren Bildqualität und der Verfügbarkeit von Informationen zu den Parametern die Entscheidung zugunsten vorhandener Datenbanken getroffen. Informationen über die Parameter zu haben, ist ein großer Vorteil, da keine Anmerkungen mit Amazon Mechanical Turk erforderlich sind, wodurch die Kosten erheblich gesenkt werden.
Datenquelle
Der Datenerfassungsprozess für den neuen Datensatz war viel einfacher. Insbesondere mit Amazon Mechanical Turk und der Flickr-API waren keine Schritte mehr erforderlich. GAPED- und OASIS-Datensätze (einschließlich Parameter-Markup) können im Internet heruntergeladen werden. Der ISEE-Datensatz wurde nach einer E-Mail an den Autor verfügbar, in der er um Zugriff gebeten wurde. Wenn die Anweisungen zum Herunterladen der Datensätze nicht gut verstanden werden, hilft Ihnen eine Google-Suche * höchstwahrscheinlich dabei, Kontakte von Autoren zu finden, die direkt den Zugriff auf die Datensätze anfordern können.
Für dieses Projekt wurden zwei Datensätze erstellt. Der erste verwendete die Flickr-API zum Laden von Bildern mithilfe von Emotions-Tags, der zweite war eine Zusammenstellung vorhandener Datenbanken, die in der psychologischen Forschung verwendet wurden. Jeder dieser Datensätze hat seine Vor- und Nachteile. Der zweite wurde jedoch für das Projekt ausgewählt - aufgrund von Vorteilen wie Bildqualität, Vorhandensein markierter Parameter und Kosten.
Die Methode zur direkten Datenerfassung hängt davon ab, welche Daten benötigt werden. Die in diesem Artikel beschriebenen Prozesse und Methoden sind jedoch wahrscheinlich für viele Projekte nützlich.
Nachdem die Datensätze erstellt wurden, kann das Projekt die folgenden Schritte ausführen: Recherche und vorläufige Datenverarbeitung.
Erkundung von Bilddaten
Da die Qualität eines erheblichen Teils der mit Flickr gesammelten Bilder gering war, wurde beschlossen, Bilder aus vorhandenen Bilddatenbanken zu verwenden. Insbesondere wurden Bilder aus drei Datenbanken für die psychologische Forschung gesammelt. Jedes Bild enthält Bewertungsinformationen für (Un) Angenehmheit und Intensität, die von mehreren Künstlern gesammelt wurden. 1986 wurden Bilder aus diesen Datenbanken in 4 Kategorien unterteilt. Diese Kategorien deckten 87% der Bilder ab und umfassten 34% der Tiere, 28% der Menschen, 13% der Szenen und 12% der Objekte. Die restlichen 13% wurden als verschieden eingestuft.
Tiere
Beispiele für Bilder aus der Kategorie "Tiere"Etwa ein Drittel der Bilder enthält Tiere - entweder isoliert oder zusammen mit anderen Tieren, wie oben gezeigt. In diesen Beispielen erhöht sich die Bewertung der Angenehmheit, wenn man sich von links nach rechts bewegt. Unangenehme Bilder von Hyänen, die ihre Beute und Kakerlaken fressen, können eine Reaktion in Form von Emotionen wie Angst, Traurigkeit und Ekel hervorrufen.
Die Bilder rechts - eine schlafende Katze, ein lächelnder Hund - können im Gegenteil Sympathie und Glück hervorrufen.
Leute
Beispielbilder aus der Kategorie PersonenDie Bildkategorie Personen umfasst Bilder von Einzelpersonen und Personengruppen, während Bilder von Personengruppen häufig mehr Kontextinformationen enthalten. Zum Beispiel scheint das Bild der Blaskapelle vor dem Hintergrund eines mit Fans gefüllten Stadions aufgenommen worden zu sein, was darauf hindeutet, dass das Bild bei einer Aufführung während des Sports aufgenommen wurde. Das Bild einer wütenden Frau wird im Gegenteil des Kontextes beraubt - der Betrachter hat nicht die Möglichkeit, den Grund für ihre Wut herauszufinden oder zu erraten. Es ist zu beachten, dass nicht alle Bilder mit vielen Personen oder Gruppen zusätzliche Informationen enthalten.
Zum Beispiel gibt das Bild von Männern, die in einer Linie auf dem Boden liegen, mit sichtbaren Wunden und in blutigen Kleidern, keine Vorstellung davon, was passiert. Trotzdem verursachen Bilder mit Menschen trotz eines solchen Informationsmangels verschiedene emotionale Reaktionen.
Szenen
Die Kategorie „Szenen“ einer Reihe von Bildern umfasst eine Vielzahl von Szenen - von künstlichen Strukturen und Objekten bis hin zu Szenen der Natur und sogar des Raums.
Beispielbilder aus der Kategorie SzenenDie Objekte
Beispielbilder aus der Kategorie ObjekteDie Kategorie „Objekte“ des Bildsatzes umfasst Bilder, die auf ein Objekt fokussiert sind, wie in den obigen Beispielen gezeigt. In diesen Bildern gibt es keinen situativen Kontext, insbesondere im Vergleich zu anderen Kategorien im Bildsatz.
Verschiedenes
Beispiele für Bilder aus der Kategorie VerschiedenesSchließlich blieb eine Teilmenge von Bildern in der Menge, die keiner der vier Kategorien zugeordnet werden konnte. Wie in den Beispielen gezeigt, handelte es sich bei diesen Bildern häufig um Szenen mit mehreren Objekten, jedoch ohne den für Bilder der Kategorie Szenen typischen Kontext. Diese Art von Bild enthielt in der Regel eine neutrale Bewertung - sie waren weder angenehm noch unangenehm.
Emotionskategorien für die Bilddatenbank
Um die Kategorien von Emotionen für die Bilddatenbank zu identifizieren, stützten wir uns auf normative subjektive Signifikanzbewertungen, die jedem Bild in der Geneva Affective PicturE Database (GAPED) und dem Open Affective Standardized Image Set (OASIS) beiliegen. Da GAPED die Likert-Skala von 0 bis 100 und OASIS die Likert-Skala von 1 bis 7 verwendete, wurde eine lineare Transformation angewendet, die alle Bewertungen auf eine kontinuierliche Skala von 0 bis 100 brachte. Anschließend wurden zwei mögliche Regeln für die Kategorisierung von Emotionen untersucht.
Zunächst ist es intuitiv wünschenswert, die Bilder nach dem Grad der Angenehmheit zu sortieren und anschließend gemäß der Bewertungsskala in drei Teile zu unterteilen, sodass Bilder mit den Bewertungen 0–33,33 die negative Kategorie mit den Bewertungen 33,33–66,67 neutral darstellen mit Bewertungen 66,67–100 - eine positive Kategorie. Um diese Regel der Unterteilung in drei Kategorien zu implementieren, wurde Python-Code verwendet:
import os import shutil import csv def organizeFolderGAPED(original, pos, neg, neut):
Dieser Ansatz ermöglichte es uns, die Datenbank in Kategorien zu unterteilen: 417 negative Bilder, 774 neutrale und 442 positive. Bei diesem Ansatz wurde die Einteilung in drei Kategorien zu gleichen Anteilen unangenehmer Bilder, deren Bewertung den Schwellenwert nicht erreichte, als neutral eingestuft. Beispielsweise wurden Bilder einer Leiche, eines weinenden Kindes und Friedhöfe als neutral eingestuft. Obwohl diese Bilder weniger unangenehm waren als andere in der negativen Kategorie, gab es Zweifel an ihrer Neutralität.
Daher wurde beschlossen, eine optimierte Kategorisierungsregel basierend auf der Normalverteilung der Daten anzuwenden und die Trennung der Parameter in emotionale Kategorien zu verbessern. Die Werte 0–39 wurden der negativen Kategorie, 40–60 der neutralen Kategorie und 61–100 der positiven Kategorie zugeordnet. Um diese Regel zu implementieren, wurde Python-Code verwendet:
import os import shutil import csv def organizeFolderGAPED(original, pos, neg, neut):
Mit dieser Kategorisierungsregel wurden 40–60–40 567 positive Bilder als angenehmer als 502 neutrale und 564 negative Bilder als weniger angenehm als neutral bewertet. Somit wurde der Zielwert der emotionalen Kategorien beibehalten und die Verteilung der Bilder nach Kategorien verbessert. Die folgende Abbildung zeigt den Grad der Angenehmheit, der mit jeder der Kategorien verbunden ist. Die unterschiedlichen Längen der Whisker im Dispersionsdiagramm zeigen an, in welcher emotionalen Kategorie (positiv oder negativ) im Vergleich zur neutralen Kategorie ein größerer Bewertungsbereich besteht.
Durchschnittliche Bewertung der Angenehmheit für jede der emotionalen KategorienWir schließen daraus, dass diese Kategorisierungsregel ausreicht, um Bilder anhand von Emotionen zu klassifizieren. In Bezug auf die Kategorien von Bilddatenbankparametern sind die Bildtypen, die jede der emotionalen Kategorien darstellen, unten gezeigt. Es ist zu beachten, dass jede Kategorie von Parametern (Tiere, Menschen, Szenen, Objekte, Sonstiges) in jeder der emotionalen Kategorien vertreten ist.
Emotionale Kategorie 1: NegativEmotionale Kategorie 2: NeutralEmotionale Kategorie 3: PositivZusammenfassend. Wir haben die Bilddatenbank in neutrale, negative und positive emotionale Kategorien unterteilt, wobei normative Signifikanzbewertungen im Bereich von 0 bis 100 verwendet wurden, wobei 0–39 negativ, 40–60 neutral und 61–100 positiv zugeordnet wurden. Die Bilder wurden angemessen in diese emotionalen Kategorien eingeteilt. Schließlich enthielt jede emotionale Kategorie Bilder von Tieren, Menschen, Szenen, Objekten und mehr.