[PYTHON] Klassifizierung von Gitarrenbildern durch maschinelles Lernen Teil 2

Zusammenfassung

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.

Aufgabe

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?

Hinzufügen von Rauschen zum Eingabebild

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.

noise_demo.jpg

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.

Lernergebnis

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.

noised_trans.png

Ü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.

Lassen Sie mich dies und das schließen

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?

jm2.jpg

Es wurde erfolgreich verbessert.

Auf der anderen Seite ist hier die Änderung in der Partitur, Duo Sonic.

ds.JPG

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.

Impressionen

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

Klassifizierung von Gitarrenbildern durch maschinelles Lernen Teil 1
Klassifizierung von Gitarrenbildern durch maschinelles Lernen Teil 2
Klassifikation des maschinellen Lernens
Algorithmus für maschinelles Lernen (Implementierung einer Klassifizierung mit mehreren Klassen)
EV3 x Pyrhon Maschinelles Lernen Teil 3 Klassifizierung
Maschinelles Lernen eines jungen Ingenieurs Teil 1
Python & Machine Learning Study Memo ⑤: Klassifikation von Ayame
Analyse der gemeinsamen Raumnutzung durch maschinelles Lernen
Angemessene Preisschätzung von Mercari durch maschinelles Lernen
Vorhersage kurzlebiger Arbeiten von Weekly Shonen Jump durch maschinelles Lernen (Teil 2: Lernen und Bewertung)
Vorhersage kurzlebiger Arbeiten von Weekly Shonen Jump durch maschinelles Lernen (Teil 1: Datenanalyse)
Grundlagen des maschinellen Lernens (Denkmal)
Lernen mit dem Lehrer 1 Grundlagen des Lernens mit dem Lehrer (Klassifizierung)
Überwachtes maschinelles Lernen (Klassifikation / Regression)
4 [/] Vier Arithmetik durch maschinelles Lernen
Leistungsüberprüfung der Datenvorverarbeitung für maschinelles Lernen (numerische Daten) (Teil 2)
Vorhersage des Vorhandenseins oder Nichtvorhandenseins von Untreue durch maschinelles Lernen
Versuchen Sie, die Leistung des Modells für maschinelles Lernen / Klassifizierung zu bewerten
So erhöhen Sie die Anzahl der Datensatzbilder für maschinelles Lernen
Leistungsüberprüfung der Datenvorverarbeitung für maschinelles Lernen (numerische Daten) (Teil 1)
Ich habe versucht, die Yin- und Yang-Klassifikation hololiver Mitglieder durch maschinelles Lernen zu überprüfen
Bedeutung des maschinellen Lernens und des Mini-Batch-Lernens
Maschinelles Lernen ③ Zusammenfassung des Entscheidungsbaums
Klassifikation und Regression beim maschinellen Lernen
Lassen Sie Hisakos Gitarre durch maschinelles Lernen durch ihre eigene ersetzen.
Memorandum of Scraping & Machine Learning [Entwicklungstechnik] von Python (Kapitel 4)
Memorandum of Scraping & Machine Learning [Entwicklungstechnik] von Python (Kapitel 5)
Schritt-für-Schritt-Approximation von Bildern mit niedrigem Rang durch HOSVD
Niedrigrangige Approximation des Bildes durch Tucker-Zerlegung
Algorithmus für maschinelles Lernen (Verallgemeinerung der linearen Regression)
Vorhersage des Strombedarfs durch maschinelles Lernen Teil 2
Deep Learning 2 durch Implementierung gelernt (Bildklassifizierung)
Kontrolle eines Sandwich-Mannes durch maschinelles Lernen ver4
[Lernnotiz] Grundlagen des Unterrichts mit Python
Verstärken Sie Bilder für maschinelles Lernen mit Python
[Maschinelles Lernen] LDA-Themenklassifizierung mit Scikit-Learn
Ist es möglich, mit Aktienkursvorhersage durch maschinelles Lernen zu essen [Maschinelles Lernen Teil 1]
Gesichtserkennung durch Sammeln von Bildern von Angers.
2020 Empfohlen 20 Auswahlmöglichkeiten für einführende Bücher zum maschinellen Lernen
[Fehler] Finde Maki Horikita durch maschinelles Lernen
Vier Betriebsregeln mit maschinellem Lernen 6 [Kommerziell]
Maschinelles Lernen
Zusammenfassung der Klassifizierung und Implementierung von Algorithmen für maschinelles Lernen
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 13 Grundlagen des neuronalen Netzwerks
Bedeutet Memo, wenn versucht wird, maschinelles Lernen mit 50 Bildern durchzuführen
[Maschinelles Lernen] Liste der häufig verwendeten Pakete
Python & maschinelles Lernen Lernnotiz Machine: Maschinelles Lernen durch Rückausbreitung
Python-Lernnotiz für maschinelles Lernen von Chainer bis zum Ende von Kapitel 2
Bestimmen Sie die Authentizität von veröffentlichten Artikeln durch maschinelles Lernen (Google Prediction API).
Maschinelles Lernen: Bilderkennung von MNIST mithilfe von PCA und Gaussian Native Bayes
Kapitel 6 Überwachtes Lernen: Klassifizierung pg212 ~ [Lernen Sie, indem Sie sich mit Python bewegen! Neues Lehrbuch für maschinelles Lernen]
Ich habe versucht, das Vorhandensein oder Nichtvorhandensein von Schnee durch maschinelles Lernen vorherzusagen.
Rekonstruktion von bewegten Bildern mit dem Autoencoder unter Verwendung von 3D-CNN
Maschinelles Lernen beginnend mit Python Personal Memorandum Part2
Beginn des maschinellen Lernens (empfohlene Unterrichtsmaterialien / Informationen)
Versuchen Sie, den Strombedarf durch maschinelles Lernen vorherzusagen
Maschinelles Lernen des Sports - Analyse der J-League als Beispiel - ②
Grundlagen des Lernens mit einem Lehrer Teil 1 - Einfache Regression - (Hinweis)
Maschinelles Lernen beginnend mit Python Personal Memorandum Part1
Numerai Turnier-Fusion von traditionellen Quants und maschinellem Lernen-