--go colaboratory (Laufzeit: GPU) (Tensorflow 2.0) (Google Chrome)
Führen Sie die folgenden Schritte aus
Überspringen, wenn Sie bereits Bilder gesammelt haben Wenn Sie es noch nicht gesammelt haben, ist google_image_download (Referenz-URL) praktisch. Es lädt Bilder herunter, indem Schlüsselwörter, Erweiterungen, Größen, Anzahl der Blätter usw. angegeben werden.
Teilen Sie die Bilder in gute Gefühle für Training und Tests ein (80% Training: ca. 20% Test?) Erstellen Sie insbesondere einen Ordner mit der folgenden Struktur images ├train │└A │ └a01.jpg │ └aslfdjk.png │ ... │└B │ └ba.jpg │ └dskrup.png │ ... │└C │ └ba.jpg │ └sdddrrd.png │ ... │ ├validation │└A │ └fwwqd.jpg │ └qiita.png │ ... │└B │ └sddd.jpg │ └reag.png │ ... │└C │ └vtet.jpg │ └fhyr.png │ ...
Erstellen Sie das Modell in den folgenden Schritten
Der Code, der das von Tensorflow bereitgestellte Tutorial umgeleitet hat, lautet (Referenz-URL) *. Google Colaboratory wird plötzlich geöffnet, wenn Sie auf die URL klicken. 1p-MY8C_H238TWffWrRjC8cc20alZACSD) Informationen zur Verwendung von Google Colaboratory finden Sie unter Offizielle HP.
Dieser Teil des Quellcodes
from google.colab import drive
drive.mount('/content/drive')
PATH = '/content/drive/'+'Pfad zu Ihrem Datensatz auf Google Drive'
Wenn Sie dies eingeben, möchten Sie den Zugriff auf Google Drive zulassen? Sie werden gebeten, dies zu bestätigen. Ich persönlich kümmere mich nicht darum, also authentifiziere ich mich, ohne darüber nachzudenken, aber wenn Sie sich darum kümmern, sollten Sie aufhören, Ihren eigenen Datensatz mit Google Colaboraotry zu laden.
Dieser Teil des Quellcodes
Danach können Sie das Modell trainieren, indem Sie die folgenden Codezellen nacheinander ausführen.
history = model.fit_generator(
train_data_gen,
steps_per_epoch=total_train // batch_size,
epochs=epochs,
validation_data=val_data_gen,
validation_steps=total_val // batch_size
)
nur das
saved_model_dir = base_dir+'Wo Sie speichern möchten'
tf.saved_model.save(model, saved_model_dir)
Führen Sie die folgenden Schritte aus
nur das
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
tflite_model = converter.convert()
with open(base_dir+'Modellname.tflite', 'wb') as f:
f.write(tflite_model)
Laden Sie das gespeicherte Modell herunter und speichern Sie es lokal.
Installieren Sie zunächst Android Studio (Referenz-URL). Wie üblich wird der durch Tensorflow bereitgestellte Schnellstart verwendet. Referenz-URL Wenn Sie die Schritte ausführen, wird in der lokalen Umgebung ein Ordner mit dem Namen example erstellt. Öffnen Sie daher das Android-Projekt im folgenden Pfad. \examples\lite\examples\image_classification\android
Folgen Sie den unteren Schritten
Legen Sie es in den folgenden Ordner. \examples\lite\examples\image_classification\android\app\src\main\assets Es gibt einige .tflite am selben Ort.
Schreiben Sie in diesem Fall die Klassen A, B und C wie folgt und speichern Sie sie am selben Speicherort wie die .tflite-Datei.
mylabel.text
A
B
C
Zuerst, \examples\lite\examples\image_classification\android\app\src\main\java\org\tensorflow\lite\examples\classification\tflite\ClassifierFloatMobileNet.java 56. Zeile
return "mobilenet_v1_1.0_224.tflite";
Wird wie folgt umgeschrieben
return "Modellname.tflite";
Nächster, \examples\lite\examples\image_classification\android\app\src\main\java\org\tensorflow\lite\examples\classification\tflite\Classifier.java 110. Zeile
public static Classifier create(Activity activity, Model model, Device device, int numThreads)
throws IOException {
if (model == Model.QUANTIZED) {
return new ClassifierQuantizedMobileNet(activity, device, numThreads);
} else {
return new ClassifierFloatMobileNet(activity, device, numThreads);
}
}
Wird wie folgt umgeschrieben
public static Classifier create(Activity activity, Model model, Device device, int numThreads)
throws IOException {
//if (model == Model.QUANTIZED) {
//return new ClassifierQuantizedMobileNet(activity, device, numThreads);
//} else {
return new ClassifierFloatMobileNet(activity, device, numThreads);
//}
}
Führen Sie abschließend ein make-Projekt in Android Studio aus. Schließen Sie danach das Smartphone an den PC an und führen Sie Run'app 'aus. Anschließend wird eine Anwendung namens TFL Classify auf dem Smartphone installiert und ausgeführt. Am unteren Bildschirmrand wird das Vertrauen von A, B und C (das angibt, wie wahrscheinlich die Klasse in% ist) angezeigt.
Ich werde einige der fehlgeschlagenen (?) Geschichten teilen, auf die der Autor gestoßen ist und die hilfreich sein können.
Ich habe versucht, das Pytorch-Modell in das Tensorflow-LITE-Modell umzuwandeln, und war frustriert. Ich habe hauptsächlich auf diese beiden Websites verwiesen, aber URL1, URL2 -keras-models-to-android-with-tensorflow-mobile-a16a1fb83f2) In beiden Fällen habe ich einen unklaren Fehler erhalten und aufgehört. Wenn ich jetzt darüber nachdenke, kann es an der Existenz von Keras und Tf.keras liegen. Sollen wir es das nächste Mal überprüfen?
Dieses Mal wollte ich mein eigenes Modell so schnell wie möglich mit der Android-App verschieben. Daher habe ich mithilfe des Tensorflow-Tutorials ein Modell erstellt und das Keras-Modell wie oben beschrieben in das Tensorflow-LITE-Modell konvertiert.
Wie oben in [URL1] beschrieben (https://qiita.com/lain21/items/9f9f9707ebad4bbc627d)
In der Zwischenzeit sind die klaren Vorteile von TensorFlow gegenüber PyTorch wie folgt.
Kann mit TPU lernen Rich APIs wie TFLite und TensorFlow.js, die die Bereitstellung im Frontend erleichtern
Derzeit scheint Tensorflow mehr Unterstützung zu haben, um die Konvertierung in Apps zu erleichtern.
Beim Sammeln verschiedener Codes wurden Keras und Tf.keras gemischt. Von der Mitte an habe ich es an tf.keras als einen Mann umgeschrieben, der Keras absolut löscht.
Ich bemerke nicht, dass die Ausgabe des Modells eine im Standard-Tutorial-Code ist und es in Android Studio nicht genug Ausgabe gibt! Ich habe einen Fehler gemacht. Ich dachte, dass die Ursache des Fehlers darin bestand, mit TFLiteConverter eine .tflite-Datei aus Keras zu erstellen, also verbrachte ich viel Zeit dort ... Schließlich wurde unter dieser URL beim Versuch, mein eigenes Modell zu bewerten, festgestellt, dass "etwas mit der Form der Ausgabe nicht stimmt?" Mir ist aufgefallen, dass die Form von
Ich habe versucht, das Modell zu quantisieren, aber ich habe aufgegeben, weil es von Android Studio nicht gelesen werden konnte. Immerhin habe ich das Float-Modell verwendet. Ich habe es versucht, weil die Größe des Modells kleiner und die Verarbeitung schneller wäre, wenn es quantisiert würde, aber ich konnte nicht. Die Ursache hierfür ist noch unbekannt.
Zuerst hatte ich mich nicht entschieden, was ich für die Objekterkennung verwenden sollte, und ich dachte darüber nach, Yolo mit Darknet zu verwenden, aber ich wusste nicht, wie ich mein eigenes Modell verwenden sollte, also gab ich auf, weil ich nicht wusste, wie ich es machen sollte. Von einem Bekannten ist Pytorch einfach! Es führte zum Scheitern 1. Gib nicht auf, sobald du so denkst. .. ..
Mit google_image_download können Sie ganz einfach Bilder mit [Bilder der Klassen A, B, C sammeln](# Bilder der Klassen A, B, C sammeln) sammeln! Ich habe das geschrieben, aber das ist ziemlich schwierig. Natürlich werden auch unangemessene Bilder heruntergeladen, so dass es schwierig ist, sie wegzuwerfen oder zu trimmen, und dann wartet die Arbeit der Klassifizierung. Ich verstehe, warum Anmerkungen ein Job in der Welt sind, aber ich möchte nicht viel tun, weil echte Abgeordnete wahrscheinlich abnehmen werden. .. .. Es gibt ein aktives Lernen als verwandtes Wort, und es scheint eine Methode zu sein, die automatisch ein Bild auswählt, das die Erkennungsrate erhöht. Es wäre bequem, wenn möglich. Ich wundere mich?
Nachdem ich mit dem Schreiben dieses Artikels begonnen hatte, stellte ich fest, dass sich der Inhalt des Tensorflow-Tutorials geändert hatte. Eigentlich habe ich das Lernprogramm zum Übertragen verwendet, aber da es schwierig war, meinen Code zu veröffentlichen, hatte ich keine andere Wahl, als das Lernprogramm zur Bildklassifizierung zur Erklärung zu verwenden. Ich denke, Transferlernen, das die Genauigkeit mit einer kleinen Anzahl von Daten verbessern soll, ist bequemer als das Erstellen eines Modells selbst. Das aktuelle Lernprogramm zum Übertragen von Daten dient zum Lesen von Daten aus tf's. Es ist kompliziert, sie zu ändern und zu schreiben. Deshalb habe ich es aufgegeben, sie zur Erklärung zu verwenden. Ich möchte meine Daten für das Transferlernen verwenden! Wenn es eine Anfrage gibt, möchten Sie vielleicht Ihr Bestes geben. .. ..
Recommended Posts