In diesem Artikel untersucht der Autor, der dem tiefen Lernen misstraut, die Klassifizierungsfähigkeit des tiefen Lernens. Es gibt Orte, an denen Bilder von Websites und Youtube nach Überprüfung zitiert werden (Quellenbeschreibung). Obwohl es für akademische Zwecke ist, werden wir es löschen, wenn es ein Problem gibt. ** Sammeln Sie die Bilder auch selbst, wenn Sie das Programm verwenden. ** ** **
Warum hast du entschieden, dass es Vakuum ist ...
Figure 0.Neuronales Netz von Bildern von Männern, die R2D2 manipulieren(VGG16)Das Ergebnis der Klassifizierung nach. In der folgenden Grafik sind die Vorhersageklassen in absteigender Reihenfolge der Sicherheit von links angeordnet. |
Figure 1.7 große Werkzeugmaschinenhersteller (Bestellungen eingegangen im Februar 2020) Wenn Sie am Inhalt dieses Artikels interessiert sind, lesen Sie bitte die aktuelle Webseite. https://www.nikkan.co.jp/articles/view/00551108 |
――Es hat nichts mit dem Inhalt des Artikels zu tun (Verkäufe jedes Unternehmens), aber ich habe mich gefragt, ob die Produkte dieser 7 Unternehmen durch tiefes Lernen klassifiziert werden können, also habe ich es versucht. ――Da die Werkzeugmaschine ein Produkt ist, werden anscheinend Daten gesammelt, und ich dachte, es wäre einfach, sie mathematisch zu modellieren. Deshalb wollte ich sehen, wie sie klassifiziert wurden. ――Diese Problemeinstellung ist nicht praktikabel, aber ich denke, Sie können dieses Klassifizierungsframework verwenden.
Schließlich werden die Kriterien für die Bildklassifizierung durch Grad-CAM angezeigt, die jedoch nicht im veröffentlichten Programm enthalten sind. Ich kann es irgendwann in der Zukunft posten. Ob anhand des Logos beurteilt werden soll, ohne explizit festgelegt zu haben, mit dem Logo zu lernen, oder anhand seltsamer Punkte. Nun, nicht alle Produkte haben ein Logo, daher ist es möglicherweise ein Beispiel für die Kraft des tiefen Lernens.
Das Wort Sommelier ist ein Wort, das nur für Wein verwendet wird, aber in letzter Zeit scheint es, dass es auch für andere als Wein in Form von "Sommelier" verwendet wird.
Figure 2-a | Figure 2-b |
Deep Learning ist eine Methode des maschinellen Lernens. Maschinelles Lernen ist eine Methode, um Beispieldaten, in den Daten verborgene Lernmuster und die Beziehung zwischen Eingabe und Ausgabe zu ermitteln. Unter diesen ist das neuronale Netzwerk ein Modell, das versucht, Lernen durch Nachahmung eines menschlichen neuronalen Schaltkreises zu realisieren. Was als Ursprung des neuronalen Netzwerks bezeichnet werden kann, ist das 1958 vorgeschlagene einfache Perzeptron. Deep Learning ist eine tiefere Schicht des neuronalen Netzwerks, und die Grundlage dafür ist das neuronale Netzwerk vom Forward Propagation-Typ (Abbildung 3-b.). Ein einfaches Perzeptron multipliziert $ n $ Eingabeknoten mit $ n $ Gewichten $ w $ und addiert sie alle durch die Funktion $ f_ {(x)} $, wie in Abbildung 3-a gezeigt. Durch Hinzufügen von w_ {n + 1} $ wird 1 ausgegeben, wenn die Ausgabe über einem bestimmten Wert liegt, und 0 wird ausgegeben, wenn sie unter einem bestimmten Wert liegt.
Figure 3-a.Konzeptdiagramm des einfachen Perzeptrons | Figure 3-b.Konzeptdiagramm des neuronalen Netzwerks mit Vorwärtsausbreitung |
Darüber hinaus wird das neuronale Netzwerk vom Vorwärtsausbreitungstyp bei der Bilderkennung häufig als Faltungs-Neuronales Netzwerk verwendet.
Ein Faltungs-Neuronales Netzwerk (CNN) ist ein neuronales Vorwärtsausbreitungsnetzwerk, in dem Einheiten auf der Seite der Ausgangsschicht mit bestimmten Einheiten auf der Seite der benachbarten Eingangsschicht verbunden sind. CNN hat eine spezielle Schicht, die als Faltungsschicht und Pooling-Schicht bezeichnet wird. In der Faltungsschicht wird eine Merkmalskarte erhalten, indem ein Filter (Kernel) auf die Eingabedaten angewendet wird. Obwohl in diesem Artikel weggelassen, ist CNN ein sehr wichtiger Prozess bei der Bilderkennung. Abbildung 4 zeigt ein Beispiel für die CNN-Verarbeitung.
Figure 4.Beispiel für eine CNN-Verarbeitung |
Ich denke, es gibt hauptsächlich vier Arten im Bereich der Bilderkennung. Einige Anwendungen haben eine komplexere Ausgabe, aber dieses Mal werden wir sie weglassen.
** ・ Klassifizierung Bildklassifizierung ** Erraten Sie, welcher Klasse die Eingabe entspricht (jede Ausgabe die Wahrscheinlichkeit) (Abbildung 5-a)
Figure 5-a.Klassifizierungsbeispiel. Die Klassifizierung mit VGG16 (einem unten beschriebenen Netzwerktyp), die mit ImageNet (später beschrieben) trainiert wurde, schlägt aufgrund dieses Beispiels fehl (am Ende erläutert). |
** ・ Erkennung Objekterkennung ** Erraten Sie, welche Objektklasse in welchem Koordinatenbereich für die Eingabe mit einem Rechteck vorhanden ist (Abbildung 5-b).
Figure 5-b.Erkennungsbeispiel. Die Erkennung durch Yolo (eine Art Lernarchitektur), die in Pascal VOC2012 (später beschrieben) trainiert wurde, kann in diesem Beispiel Personen gut erkennen, aber den Roboter"parking meter"Wird falsch erkannt. |
** ・ Semantische Segmentierung des semantischen Segmentierungsbereichs ** Klassifizieren Sie jedes Eingangspixel (Abbildung 5-c).
Figure 5-c.Ein Beispiel für semantische Segmentierung. Deeplab V3 lernte bei Pascal VOC 2018+Die semantische Segmentierung durch errät in diesem Beispiel den menschlichen Bereich korrekt. Der Roboter wird als Hintergrund erkannt. |
** · Instanzsegmentierung ** = Erkennung + Segmentierung (Abbildung 5-d)
Abbildung 5-d. Beispiel für eine Instanzsegmentierung. Die von Microsoft COCO (später beschrieben) trainierte Instanzsegmentierung nach Maske R-CNN kann in diesem Beispiel auf die menschliche Domäne schließen, ist jedoch grob. Der Roboter wird als Hintergrund erkannt. |
Dieses Mal wenden wir Softmax am Ende des Netzwerks an und führen eine "** Klassifizierung **" durch, um zu erraten, welcher Klasse die Eingabe entspricht.
Backbone Backbone ist ein Feature-Extraktionsnetzwerk. Dies ist der Teil, in dem die Ebene des Eingabeteils und des Ausgabeteils (Kopf) entfernt wird. Dieses Mal werden wir ResNet50 und Mobilenet (später beschrieben) verwenden. Beide werden von Keras bereitgestellt, sodass Sie kein eigenes Netzwerk aufbauen müssen. Sie können es wie folgt importieren.
from keras.applications.resnet50 import ResNet50
base_model = ResNet50(
include_top = False,
weights = "imagenet",
input_shape = INPUT_SHAPE
)
Da Backbone ein neuronales Netzwerk ist, bestimmt das Training in einem bestimmten Datensatz einige Gewichte (Gewichte im obigen Programm).
Head (Top) Dies ist der Teil in der Nähe des Ausgangs des neuronalen Netzwerks. Sie können die Ausgabe ändern, indem Sie include_top = False setzen, wenn Sie ein vorhandenes Backbone laden. Es ist möglich, je nach Zweck zu ändern, z. B. die Anzahl der Ebenen zu erhöhen und die Genauigkeit zu verbessern oder die Anzahl der Klassifizierungsklassen zu ändern (ich denke, dass die Anzahl der Klassen mit dem Argument geändert werden kann ...). Dieses Mal wurde das Kopfteil wie folgt konstruiert.
top_model.add(Flatten(input_shape=base_model.output_shape[1:]))
top_model.add(Dropout(0.5))
top_model.add(Dense(nb_classes, activation='softmax'))
# Concatenate base_model(backbone) with top model
model = Model(input=base_model.input, output=top_model(base_model.output))
Grad-CAM Das Grad-CAM-Papier finden Sie weiter unten. Bitte lesen Sie für Details. Ramprasaath R. Selvaraju · Michael Cogswell · Abhishek Das · Ramakrishna Vedantam · Devi Parikh · Dhruv Batra, Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization, arXiv:1610.02391v4 [cs.CV] 3 Dec 2019 (https://arxiv.org/abs/1610.02391) Dieses Papier wird im Folgenden als Grad-CAM-Papier bezeichnet. Einige der Abstracts des Grad-CAM-Papiers sind:
We propose a technique for producing ‘visual explanations’ for decisions from a large class of Convolutional Neural Network (CNN)-based models, making them more transparent and explainable. Our approach–Gradient-weighted Class Activation Mapping (Grad-CAM), uses the gradients of any target concept (say ‘dog’ in a classification network or a sequence of words in captioning network) flowing into the final convolutional layer to produce a coarse localization map highlighting the important regions in the image for predicting the concept.
→ Die vorgeschlagene Methode erklärt visuell die Entscheidungen, die aus der großen Klasse von CNN-basierten Modellen getroffen wurden, wodurch die Transparenz und Interpretierbarkeit des Modells verbessert wird. Grad-CAM verwendet einen Gradienten des interessierenden Konzepts (z. B. ein hundeartiges Etikett), der in die letzte Ebene eingeht, um eine grobe Feature-Map zu erstellen und wichtige Positionen auf dem Bild hervorzuheben, wenn Vorhersagen getroffen werden. ..
Figure 6. Grad-Abb. Im CAM-Papier.2 Bilder |
Das Ergebnis der "Hervorhebung wichtiger Positionen auf dem Bild bei der Vorhersage" ist die Farbkarte (a in Abbildung 6) mit der Bezeichnung Grad-CAM im obigen Bild. Dieses Mal werden wir diese Farbkarte generieren und prüfen, wo im Eingabebild wir uns bei der Vorhersage der Klasse konzentriert haben.
** Fasste den Verarbeitungsablauf von Grad-CAM zusammen ** (Es tut mir leid, wenn ich einen Fehler gemacht habe). ** 1. Eingabe und Vorhersage in CNN **: In der Deep-Learning-Architektur wird eine Feature-Map ausgegeben, wenn das Eingabebild das CNN durchläuft, und basierend darauf ein Array von Wahrscheinlichkeiten, welcher Klasse die Eingabe entspricht. Wird ausgegeben als (b in Abbildung 6.).
plobs_pred = model.predict(input_tests)
cls_idx = np.argmax(model.predict(x))
cls_output = model.output[:, cls_idx]
conv_output = model.get_layer(layer_name).output
** 2. Berechnung des Gradienten $ \ frac {\ partiell y ^ {c}} {\ partiell A_ {ij} ^ {k}} $ **: Backpropagation mit 1 für die Zielklasse und 0 für die anderen Ich werde das machen. Da es ausreicht, den Gradienten mit der letzten Schicht zu nehmen, berechnen Sie wie folgt. In diesem Fall lautet die Variable Layername Activation_49 für ResNet50 und conv_pw_13_relu für Mobilenet. $ A_ {i j} ^ {k} $ im Grad-CAM-Papier wurde durch die folgende fmap_activation gefunden. $ \ frac {\ partiell y ^ {c}} {\ partiell A_ {ij} ^ {k}} $ ist die Punktzahl $ y ^ {c} der Klasse $ c $ für $ A_ {ij} ^ {k} $ Es ist ein Gradient von $, und fmap_activation wird nicht zur Berechnung des Gradienten verwendet. Ich denke, es ist eine Frage der Bedeutung.
grads = keras.backend.gradients(cls_output, conv_output)[0]
gradient_function = keras.backend.function([model.input], [conv_output, grads])
fmap_activation, grads_val = gradient_function([x])
fmap_activation, grads_val = output[0], grads_val[0]
** Achtung ** Die obige Eingabe x muss mit img_to_array usw. vorverarbeitet werden.
** 3. Berechnung des Gewichts $ \ alpha_ {k} ^ {c} $ **: Nehmen Sie den Durchschnitt der Verläufe für jeden Kanal und verwenden Sie ihn als Gewicht. Dies ist die Verarbeitung des Teils, der Gleichung (1) des folgenden Grad-CAM-Papiers entspricht. Vor Grad-CAM musste Class Activation Mapping (CAM) eine globale durchschnittliche Pooling-Schicht (GAP) hinzufügen (CAM wird als Produkt aus der Feature-Map und dem Gewicht der letzten Layer berechnet, und die Feature-Map wird mit GAP gewichtet. Erhalten). Mit Grad-CAM kann der GAP-Teil jedoch durch eine Berechnung des Backpropagation-Gradienten ersetzt werden, und die Visualisierung ist möglich, ohne das Modell zu ändern.
alpha = np.mean(grads_val, axis=(0, 1))
** 4. Lokale Karte zur Klassenidentifikation (Grad-CAM) $ L_ {\ text {Grad} - \ mathrm {C} A \ mathrm {M}} ^ {c} $ Berechnung **: Grad-CAM Die Berechnung von Gleichung (2) wird wie folgt durchgeführt. Der Sigma-Teil wird durch das innere Produkt von Numpy berechnet, und ReLU hat null Negativ, wie in Abbildung 7 gezeigt. Daher können wir sehen, dass das Maximum von Numpy verwendet werden sollte.
Figure 7.ReLU-Diagramm |
l_gradcam = np.dot(fmap_activation, alpha)#Sigma Teil
l_gradcam = cv2.resize(l_gradcam, (img_h, img_w), cv2.INTER_LINEAR)
l_gradcam = np.maximum(l_gradcam, 0) #Entspricht der ReLU-Berechnung
l_gradcam = l_gradcam / l_gradcam.max()
Danach ist die JET-Konvertierung mit cv2.applyColorMap usw. zum Erstellen einer Farbkarte abgeschlossen.
Eine als Dropout bezeichnete Technik wird angewendet, um ein Übertraining des Netzwerks zu verhindern (ein Phänomen, bei dem Validierungsdaten nur aufgrund einer Überanpassung an Trainingsdaten ungenau sind). Wiederholen Sie das Lernen, indem Sie einige Knoten im Netzwerk deaktivieren, um die Generalisierungsleistung zu verbessern.
Ich habe es letztes Mal kurz erklärt (Weinklassifizierung durch Keras), also werde ich es weglassen. Da es sich bei dieser Zeit auch um eine Mehrklassenklassifikation handelt, wird ** category_crossentropy ** verwendet. Weinklassifizierung nach Keras: https://qiita.com/moriitkys/items/2ac240437a31131108c7
Ich habe es letztes Mal kurz erklärt (Weinklassifizierung durch Keras), also werde ich es weglassen. Aufgrund verschiedener Versuche war ** SGD ** diesmal am besten zu lernen, daher werde ich es übernehmen.
Die obige Verlustfunktion und Optimierungsfunktion befinden sich in dem Teil, der das Modell in Zelle 2 des auf github hochgeladenen Codes kompiliert.
model.compile(
optimizer = SGD(lr=0.001),
loss = 'categorical_crossentropy',
metrics = ["accuracy"]
)
Tkinter Da es sich um eine Standardbibliothek (Widget-Toolkit) zum Erstellen und Betreiben einer GUI aus Python handelt, kann diese Bibliothek verwendet werden, wenn Python installiert wird, ohne etwas zu tun. Das GUI-Fenster, das diesmal mit dem auf github veröffentlichten Notebook funktioniert, sieht wie folgt aus.
Das Programm ist unten. Ich denke, es wird funktionieren, auch wenn Sie es so kopieren und einfügen, wie es ist. Es gibt drei Arten von Schaltflächen, und die Funktion click_flag_train wird beim Drücken rot und der Flag-Wert ändert sich. Drücken Sie zunächst im Inferenzmodus auf Zugmodus, drücken Sie auf Inferenzmodus und so weiter. Das Etikett ändert sich ebenfalls. Ein Optionsfeld ist ebenfalls installiert, und Sie können auswählen, welches Backbone mit tkinter.Radiobutton verwendet werden soll. Drücken Sie abschließend die Start-Taste unten, um das Fenster zu schließen und mit dem Programm darunter fortzufahren.
Figure 8.Betriebszustand von Tkinter |
import os
import numpy as np
flag_train = False
type_backbone = "ResNet50"
layer_name_gradcam = "activation_49"
# --- Setting buttons ---
import tkinter
tki = tkinter.Tk()
tki.geometry('300x400')
tki.title('Settings')
radio_value_aug = tkinter.IntVar()
radio_value_split = tkinter.IntVar()
radio_value = tkinter.IntVar()
label = tkinter.Label(tki, text='Mode: Inference')
label.place(x=50, y=60)
def callback(event):
if event.widget["bg"] == "SystemButtonFace":
event.widget["bg"] = "red"
else:
event.widget["bg"] = "SystemButtonFace"
def click_flag_train():
global flag_train
if flag_train == True:
label['text'] = 'Mode: Inference'
flag_train = False
else:
label['text'] = 'Mode: Train'
flag_train = True
def click_start():
tki.destroy()
# Create buttons
btn_flag_train = tkinter.Button(tki, text='Train', command = click_flag_train)
btn_start = tkinter.Button(tki, text='Start', command = click_start)
label1 = tkinter.Label(tki,text="1. Select Train or Inference")
label1.place(x=50, y=30)
btn_flag_train.place(x=50, y=100)
label2 = tkinter.Label(tki,text="2. Select ResNet50 or Mobilenet")
label2.place(x=50, y=150)
rdio_one = tkinter.Radiobutton(tki, text='ResNet',
variable=radio_value, value=1)
rdio_two = tkinter.Radiobutton(tki, text='Mobilenet',
variable=radio_value, value=2)
rdio_one.place(x=50, y=180)
rdio_two.place(x=150, y=180)
label3 = tkinter.Label(tki,text="3. Start")
label3.place(x=50, y=250)
btn_start.place(x=50, y=280)
# Display the button window
btn_flag_train.bind("<1>",callback)
btn_start.bind("<1>",callback)
tki.mainloop()
if radio_value.get() == 1:
type_backbone = "ResNet50"
layer_name_gradcam = "activation_49"
elif radio_value.get() == 2 :
type_backbone = "Mobilenet"
layer_name_gradcam = "conv_pw_13_relu"
print(flag_train)
print(type_backbone)
Es ist nicht das Hauptthema dieser Zeit, aber Tkinter ist lang geworden.
** Ende des Glossars **
ResNet50 VS Mobilenet V1
Grob gesagt besteht der Unterschied zwischen beiden darin, dass ResNet schwer und sehr genau ist und Mobilenet leicht und leicht ungenau ist. Unten finden Sie einen detaillierten Vergleich.
ResNet
Figure 9-a.ResNet-Modellstruktur | Figure 9-b.Reststruktur |
Figure 10-a.Anzahl der ResNet-Parameter | Figure 10-b.ResNet lernen |
Die Reststruktur hat eine Struktur, in der die Identitätsfunktion so wie sie ist zur Ausgabe hinzugefügt wird, wie in 9-b gezeigt, und es ist weniger wahrscheinlich, dass der Gradient verschwindet, wenn die Schicht vertieft wird. Daher hat ResNet eine komplexere Ausdruckskraft gewonnen.
Mobilenet V1
Figure 11-a.Mobilenet V1 Struktur | Figure 11-b. Depthwise Separable Convolution |
Figure 12-a.Anzahl der Parameter von Mobilenet V1 | Figure 12-b.Mobilenet V1 lernen |
Wie in Abbildung 11-b gezeigt, führt die Struktur der durch die Tiefe trennbaren Faltung den Faltungsprozess in zwei Schritten aus: Faltung in räumlicher Richtung (vertikal und horizontal) und dann Faltung in Kanalrichtung. Normalerweise machst du das alles auf einmal. Das Prinzip, warum das Gewicht in zwei Schritten reduziert wird, wird im Artikel ausführlich durch Lesen des Papiers oder im Qiita-Artikel einer anderen Person erläutert, daher werde ich es dieses Mal weglassen (vielleicht werde ich es in Zukunft schreiben).
・ Es gibt 7 Arten von Klassen: Kategorien = ["Makino", "Okuma", "OKK", "Toshiba", "JTEKT", "Tsugami", "Mitsubishi"] -Die Anzahl der Datensätze ist in der folgenden Tabelle 1 aufgeführt. Die Erweiterung führt Helligkeitsänderungen, Pfefferrauschen, Ausschnitte und Transformationen durch. ・ Datensatzteilungszug: Validierung = 6: 4 -Die vertikale und horizontale Größe des Bildes beträgt 197x197 für ResNet50 und 192x192 für Mobilenet. ・ Ausfall, Verlustfunktion, Optimierungsfunktion wurden bereits erläutert. ・ Alle Ebenen sind Lernziele -Ratch batch_size = 32, 30 Epochen Training auf ResNet50 bzw. Mobilenet V1
Tabelle 1. Aufschlüsselung des Datensatzes
Klasse | Anzahl der Blätter vor der Expansion | Anzahl der Blätter nach der Expansion |
---|---|---|
1 Makino | 105 | 2088 |
2 Okuma | 72 | 1368 |
3 OKK | 75 | 1800 |
4 Toshiba | 7 | 504 |
5 JTEKT | 60 | 2160 |
6 Tsugami | 45 | 1620 |
7 Mitsubishi | 24 | 1152 |
Ich denke, dass das Lernen durch den Übergang von Verlust und Genauigkeit konvergiert hat. (Obwohl es störend ist, dass die Bewertung 1,0 ist) Erstens ist der Übergang von Verlust und Genauigkeit beim Lernen mit ResNet 50 30 Epochen wie folgt. Je kleiner der Verlust und je größer die Genauigkeit, desto besser das Lernen. Blau ist die Genauigkeit der Zugdaten und Orange ist die Genauigkeit der Valodationsdaten. Sie können auch die Auswirkung des Aussetzers sehen (weniger genau in Zugdaten).
Figure 13-a.Verlust für jede Epoche in ResNet 50 | Figure 13-b.Genauigkeit für jede Epoche von ResNet 50 |
Als nächstes ist der Übergang von Verlust und Genauigkeit beim Lernen von 30 Epochen mit Mobilenet V1 wie folgt. Blau ist die Genauigkeit der Zugdaten und Orange ist die Genauigkeit der Valodationsdaten.
Figure 14-a.Verlust für jede Epoche auf Mobilenet | Figure 14-b.Genauigkeit für jede Epoche von Mobilenet |
Unter Verwendung dieses 30 Epochen trainierten Gewichts werden 28 unbekannte Bilder gesammelt und geschätzt, die nicht für das Training oder die Bewertung verwendet werden, und die Ergebnisse sind in der folgenden Tabelle 2 zusammengefasst.
Tabelle 2. Vermutungsergebnisse für jedes Testbild jedes Modells
Gesamtzahl der Testbilder | ResNet50 Gesamtzahl der richtigen Antworten | Mobilenet Gesamtzahl der richtigen Antworten |
---|---|---|
28 | 26 | 23 |
Richtige Antwortrate | 0.929 | 0.821 |
Aus diesem Grund war ResNet etwa 10% genauer.
Darüber hinaus visualisiert Grad-CAM den interessierenden Bereich, aber es scheint, dass wir auf den leicht logoähnlichen Teil (insbesondere ResNet) achten.
Figure 15-1.Erraten Sie die Ergebnisse und visualisieren Sie Makinos Testbild https://www.youtube.com/watch?v=mMgyLnV7l6M |
Figure 15-2.Erraten der Ergebnisse und Visualisierung von Okumas Testbild https://www.youtube.com/watch?v=f_qI1sxj9fU |
Figure 15-3.Erraten der Ergebnisse und Visualisierung von Tsugamis Testbild https://www.youtube.com/watch?v=rSTW2hEfSns |
Es kann nicht so sein ...
Figure 15-4.Ergebnisse und Visualisierung der JTEKT-Testbildschätzung https://www.youtube.com/watch?v=SVtN08ASIrI |
Viele Visualisierungen erweckten den Eindruck, dass ResNet sich stark auf Logos, Farben und unterschiedliche Formen (Kanten usw.) konzentrierte, Mobilenet jedoch im Allgemeinen verschwommen war und die Funktionen nicht vollständig erfassen konnte. Es sieht auch so aus.
Es scheint, dass OKKs Typ sich durch Farbe auszeichnet.
Figure 15-5.Erraten des Ergebnisses und Visualisierung des OKK-Testbilds https://www.youtube.com/watch?v=Xfk3wXWleUs&t=21s |
Ich mache mir jedoch Sorgen, dass Person nicht in den Top 10 enthalten ist. Als ich dann das Bild eines Menschen erriet, der nach vorne blickte, gab es viele Vermutungen über Kleidung wie Hemden, Krawatten und Anzüge. Aus diesem Grund denke ich, dass das Tragen einer Maske die Genauigkeit menschlicher Vermutungen mit ImageNet verringert.
――Makino Millings Website war der beste Weg, um Datensätze zu sammeln. Dies liegt daran, dass einige Produkte aus unterschiedlichen Winkeln aufgenommen wurden und es viele Bilder gibt, die ähnlich aussehen. OKK hat bis auf einige auch eine charakteristische Farbe, daher kann es für NN geschätzt werden. ―― Da es sich um Transferlernen handelt, könnte ich, wenn es sich um ein ähnliches Bild handelt, bis zu einem gewissen Grad lernen, selbst wenn es weniger als 100 beträgt. Dieses Beispiel ist jedoch zu speziell und möglicherweise nicht sehr hilfreich. Insbesondere der Übergang von Verlust und Genauigkeit ist so schön, dass ich den Datensatz und die Parametereinstellung nicht für angemessen halte. ――Was mir am meisten klar ist, dass ** Datensätze sehr wichtig sind **, aber unter dem Gesichtspunkt der Ergebnisse und der Genauigkeit dieser Visualisierung stellt sich heraus, dass das Netzwerk auch einen gewissen Einfluss hat. Ich tat. ――Für die Visualisierung hatte ich gehofft, Funktionen zu entdecken, die nicht sofort erkennbar sind, anstatt Funktionen wie Logos und Farben, aber ich habe noch nicht alle gesehen. Selbst wenn ich es schaffen kann, finde ich es nicht gut, hier viele Bilder zu veröffentlichen ... ――In dieser Überprüfung ist die Problemeinstellung selbst nicht praktikabel, aber ich denke, dass es sich um ein benutzerfreundliches Notizbuch handelt, wenn Sie die Lernergebnisse schnell sehen möchten. ――Artikel und Programme haben noch einige grobe Teile, die Sie jedoch trennen müssen. Wenn Sie Korrekturen oder Kommentare haben, kontaktieren Sie uns bitte.
https://www.ling.upenn.edu/courses/cogs501/Rosenblatt1958.pdf https://keras.io/ja/models/sequential/ https://keras.io/ja/applications/ https://www.bigdata-navi.com/aidrops/2611/ https://qiita.com/simonritchie/items/f6d6196b1b0c41ca163c https://qiita.com/kinziro/items/69f996065b4a658c42e8 http://www.image-net.org/ https://cocodataset.org/#home http://host.robots.ox.ac.uk/pascal/VOC/ https://arxiv.org/pdf/1409.1556.pdf https://pjreddie.com/darknet/yolo/ https://github.com/tensorflow/models/tree/master/research/deeplab https://arxiv.org/abs/1703.06870
https://docs.python.org/ja/3/library/tkinter.html https://qiita.com/simonritchie/items/da54ff0879ad8155f441
https://www.makino.co.jp/ja-jp/ https://www.okuma.co.jp/mold-industry/index.html https://www.okk.co.jp/product/index.html https://www.shibaura-machine.co.jp/jp/product/machinetool/ https://www.jtekt.co.jp/ https://www.tsugami.co.jp/ https://www.mhi-machinetool.com/
https://qiita.com/moriitkys/private/2ac240437a31131108c7
Recommended Posts