Informationen zur Betriebsumgebung usw. finden Sie im vorherigen Beitrag Klassifizierung von Gitarrenbildern durch maschinelles Lernen, Teil 1.
** 23.10.2017 Nachtrag: ** Der Inhalt dieses Beitrags scheint der Methode Cutout [^ 1] / Random Erasing [^ 2] ähnlich zu sein.
** 25.02.2018 Nachtrag: ** Die Induktion einer Fehlidentifikation durch Hinzufügen von Rauschen wird als feindliche Störung bezeichnet und scheint aktiv untersucht zu werden. Das Thema dieses Artikels lautet einfach "Ich bin wegen der geringen Generalisierungsleistung in Schwierigkeiten", aber bei der Untersuchung feindlicher Störungen spreche ich hauptsächlich über geschicktere Täuschung und wie man sich davor schützt (Robustheit). Es wird unter Sicherheitsgesichtspunkten diskutiert. In Bezug auf feindliche Störungen wurde Sehr gute Zusammenfassung veröffentlicht, daher werde ich sie verlinken.
Bei der Herausforderung von Letztes Mal veröffentlicht gab es ein Phänomen, dass sich das Ergebnis der Klassifizierungsvorhersage mit einem leichten Graffiti auf dem Eingabebild vollständig änderte. Dies bedeutet, dass wenn ein Teil des Identifikationsziels in etwas verborgen ist, dies zu einer unvorhersehbaren Fehlklassifizierung führt.
Die kognitiven Fähigkeiten des Menschen sind robuster und in vielen Fällen ist es möglich, ein Objekt mit einem umfassenden Urteil zu identifizieren, selbst wenn ein Teil des Objekts nicht sichtbar ist. Ist es nicht möglich, die Unterscheidungsfähigkeit des maschinellen Lernmodells robuster zu machen?
Die meisten Lerndaten, die im vorherigen Beitrag verwendet wurden, waren "schöne" Fotos wie Produktbilder auf EC-Websites. Es gibt fast keine Bilder, bei denen das Erkennungsziel teilweise durch etwas anderes verborgen ist. Unter diesen idealen Bedingungen kann die Klasse gut identifiziert werden, indem nur die lokalen Merkmale betrachtet werden (zum Beispiel nur das Layout des Aufnehmers und der Steuerung), so dass das Modell der "komplexen Erfassung der Merkmale durch Betrachten des Ganzen" lautet Ich habe keine Lust aufzuwachsen. (Überanpassungen an ideale Bedingungen und Generalisierungsleistung können nicht erzielt werden)
Lassen Sie uns dann eine Komposition erstellen, die "nur dann gut zu unterscheiden ist, wenn Sie das Ganze betrachten und die Merkmale auf komplexe Weise erfassen".
Es ist einfach und verbirgt zufällig einige der Trainingsdaten. Dies wird die Klassendiskriminierung nur mit einigen lokalen Merkmalen erschweren und zwangsläufig zum selektiven Lernen globalerer und komplexerer Merkmale führen.
Dieses Mal habe ich den Trainingsdaten mehrere Rechtecke mit dem folgenden Code hinzugefügt.
def add_dust_to_batch_images(x):
batch_size, height, width, channels = x.shape
for i in range(0, batch_size):
num_of_dust = np.random.randint(32)
dusts = zip(
(np.clip(np.random.randn(num_of_dust) / 4. + 0.5, 0., 1.) * height).astype(int), # pos x
(np.clip(np.random.randn(num_of_dust) / 4. + 0.5, 0., 1.) * width).astype(int), # pos y
np.random.randint(1, 8, num_of_dust), # width
np.random.randint(1, 8, num_of_dust), # height
np.random.randint(0, 256, num_of_dust)) # brightness
for pos_y, pos_x, half_w, half_h, b in dusts:
top = np.clip(pos_y - half_h, 0, height - 1)
bottom = np.clip(pos_y + half_h, 0, height - 1)
left = np.clip(pos_x - half_w, 0, width - 1)
right = np.clip(pos_x + half_w, 0, width - 1)
x[i, top:bottom, left:right, :] = b
return x
# ...
noised_train_flow = ((add_dust_to_batch_images(x), y) for x, y in train_flow)
Die Anzahl, Position, Größe und Helligkeit der Rechtecke sind zufällig. Ich denke, dass die Gitarre des Motivs oft in der Nähe der Mitte reflektiert wird, deshalb versuche ich, so viele Rechtecke wie möglich in der Nähe der Mitte zu verteilen.
Dies ist das tatsächlich verarbeitete Bild.
Sie können sehen, dass der Körperumriss und ein Teil der Baugruppe durch das hinzugefügte Rechteck ausgeblendet sind.
Unter dem Gesichtspunkt des Hinzufügens von Rauschen haben wir auch erwogen, Dropout unmittelbar nach der Eingabe einzufügen. Dieses Mal ist es jedoch das Ziel, "lokale Merkmale zu verbergen", wie oben erwähnt. Daher haben wir entschieden, dass Dropout, das dem Ganzen gleichmäßig Rauschen hinzufügt, ungeeignet ist. Hat.
Lassen Sie uns das Modell mit Rauschen trainieren, das dem Eingang hinzugefügt wird. Ähnlich wie bei Letztes Mal handelt es sich hierbei um Transferlernen mit ResNet-50, das bereits in ImageNet geschult wurde.
Der Übergang der Genauigkeit ist so.
Überraschenderweise gibt es aufgrund der Rauschaddition fast keine Auswirkung auf die Lerngeschwindigkeit.
Die beste Punktzahl ist der 54. Schritt mit einer Lerngenauigkeit von 99,95% und einer Überprüfungsgenauigkeit von 100%. Versuchen wir die Inferenz an dieser Stelle erneut mit dem Schnappschuss.
Jazzmaster, Les Paul und Akogi ohne Graffiti sind die gleichen guten Ergebnisse wie beim letzten Mal, daher werde ich sie weglassen.
Achtung ist das Bild von Jazzmaster mit Graffiti, das letztes Mal aus irgendeinem Grund als "Flying V" bewertet wurde. Wie wäre es mit dieser Zeit?
Es wurde erfolgreich verbessert.
Auf der anderen Seite ist hier die Änderung in der Partitur, Duo Sonic.
Das letzte Mal wurde es als "Mustang" beurteilt, aber diesmal ist es "Stratocaster". Infolge der Erfassung globaler Merkmale wurde möglicherweise die Form von Pick Guards und Brücken in Betracht gezogen.
Ich habe das Gefühl, dass ich mein Ziel irgendwie erreicht habe. (geeignet)
Ich denke, dass das, was ich diesmal versuche, eine im akademischen Bereich weit verbreitete Technik ist, aber wenn ich sie auf vertraute Fächer anwende, vertieft sie mein Verständnis und ist interessant.
Recommended Posts