In dieser Zeit können Sie durch Online-Kurse neue Fähigkeiten erlernen. Ich habe kürzlich die Deep Learning-Spezialisierung abgeschlossen, die von Andrew Ng an der Coursera unterrichtet wurde. Dies war eine großartige Lernerfahrung. Es gibt viele Erklärungen der Mathematik, und das erste Modell ist vollständig mit Python / Numpy erstellt. Während Sie die Lektion fortsetzen, können Sie auch Tensorflow und Keras verwenden. Es wird ein Lernstil sein, die Grundlagen der Theorie fest zu studieren und zu nutzen.
Fast.ai, das seit mehreren Jahren ein heißes Thema ist, ist jedoch genau das Gegenteil. Dies ist ein "Lass es uns zuerst tun" -Ansatz. Es ist aufregend zu sehen, wie einfach es ist, mit der grundlegenden fast.ai-Bibliothek ein Modell für künstliche Intelligenz zu erstellen.
Basierend auf den Akkorden aus Lektion 1 von fast.ai habe ich ein Modell erstellt, das die Gitarre identifizieren kann. Entschuldigung für diejenigen, die nicht viel über Gitarren wissen, aber dieses Beispiel ist wahrscheinlich von geringem Nutzen!
Vor der Vorbereitung des Modells haben wir zunächst Bilddaten von vier Gitarrentypen gesammelt.
Der Grund für die Wahl dieser vier Typen ist, dass die Gitarren eine unterschiedliche Körperform und Kopfform haben. Da es sich um sehr beliebte Gitarren handelt, war es auch einfach, Bilder zu sammeln. Vielen Dank für Ihre Google-Suche. Ich habe Ordner für jeden Gitarrentyp erstellt und Hunderte davon gesammelt.
Importieren Sie zunächst fastai.vision. Legen Sie den Pfad fest, in dem Sie die Daten gespeichert haben, und definieren Sie die Klasse. Der Klassenname stimmt mit dem Ordnernamen überein.
from fastai.vision import *
path = Path('data/guitars')
classes = ['gibson_les_paul', 'fender_telecaster', 'fender_stratocaster', 'explorer']
fast.ai bietet eine Methode zur einfachen Vorbereitung der Daten. Mit einer Methode können Sie die Änderungen festlegen, die im Bild widergespiegelt werden sollen (z. B. Drehung zur Datenerweiterung), die Größe ändern und das Verhältnis von Trainings- und Validierungsdatensätzen festlegen. Weitere Informationen finden Sie auf der API-Detailseite.
data = ImageDataBunch.from_folder(path, train=".", valid_pct=0.2,
ds_tfms=get_transforms(), size=224, num_workers=4, bs=16).normalize(imagenet_stats)
Es ist auch möglich, Beispieldaten anzuzeigen!
data.show_batch(rows=3, figsize=(7,8))
Das Lernen selbst ist sehr einfach. Es kann basierend auf dem CNN-Modell trainiert werden, das in zwei Codezeilen trainiert wird.
learn = cnn_learner(data, models.resnet34, metrics=error_rate)
learn.fit_one_cycle(4)
Das Ergebnis des Lernens ist wie folgt. 90% System! Ist es nicht der Stand der Technik der Gitarrenidentifikations-Engine? Es kann das einzige Modell sein.
Sie können auch Schulungsprobleme und die Ergebnisse von Validierungsdatensätzen anzeigen.
interp = ClassificationInterpretation.from_learner(learn)
interp.plot_confusion_matrix()
Das ist Verwirrungsmatrix! Telecaster und Stratocaster sind sicherlich am gemischtesten. Sie können auch Bilder anzeigen, die das Modell nicht richtig vorhergesagt hat.
losses,idxs = interp.top_losses()
interp.plot_top_losses(9, figsize=(15,15))
Sicher gibt es viele Bilder, die schwer zu beurteilen sind. Das Bild oben links ist in erster Linie ein Gitarrenkoffer. Ganz rechts in der Mitte befindet sich wahrscheinlich die Stratocaster, aber das Bild ist zu beschnitten und für das Modell schwierig. Das Bild unten rechts ist für Menschen schwer zu beurteilen. Es ist eine andere Gitarre. Das heißt, die Trainings- und Validierungsdaten enthalten Rauschen. "Müll rein, Müll raus". Als zukünftige Verbesserung werden wir die Daten sauberer machen und lernen. Sie können auch mehr erfahren, indem Sie die Parameter des importierten Modells aufheben, aber es braucht natürlich Zeit.
Lassen Sie uns eine Vorhersage mit einem Modell machen.
img = open_image(path/'gibson_les_paul'/'00000059.jpg')
pred_class,pred_idx,outputs = learn.predict(img)
Diese Gitarre.
Das Vorhersageergebnis lautet: Kategorie gibson_les_paul
: v: Pipong Pipong: v:
Um das in Meine App erstellte Modell zu verwenden, können Sie das Modell exportieren und mit einfachem Python-Code in eine API konvertieren.
Die meisten der oben genannten Inhalte stammen aus Fast.ai Lektion 1. Es ist erstaunlich, wie einfach es ist, so schnell gute Ergebnisse zu erzielen. Außerdem ist der Unterricht kostenlos! es wird empfohlen
Recommended Posts