2019/12/03 AWS hat die Deep Java Library für die Entwicklung und Bereitstellung von Modellen für maschinelles Lernen in Java angekündigt.
Es ist nur ein bisschen, aber ich habe es berührt, also werde ich es vorstellen. Was Vorkenntnisse betrifft, verwende ich normalerweise Java, aber ich habe fast keine Kenntnisse über ML / DL.
Hier,
Ankündigung von DJL, einer Open-Source-Bibliothek zur Entwicklung von Deep-Learning-Modellen in Java. DJL bietet eine benutzerfreundliche API zum Trainieren, Testen und Bereitstellen von Deep-Learning-Modellen. Wenn Sie ein Java-Benutzer sind, der sich für Deep Learning interessiert, ist DJL ein guter Ausgangspunkt. Für Java-Entwickler, die an Deep-Learning-Modellen arbeiten, ist es mit DJL einfach, Vorhersagen zu trainieren und auszuführen.
Also hoffe ich, es zu berühren.
Die offizielle Seite ist unten, aber die Amazon / AWS-Farben sind nicht sehr sichtbar. https://djl.ai/
Try
Wie auch immer, lassen Sie es uns gemäß dem Tutorial verschieben.
https://github.com/awslabs/djl.git
Es scheint gut zu sein, aus dem Beispiel und darunter zu klonen und es zu verschieben.
#In einem geeigneten Ordner ausführen
git clone https://github.com/awslabs/djl/
Wechseln Sie nach dem Klonen in den Beispielordner und sehen Sie sich dort README.md an.
Es gibt verschiedene Arten von Beispielen, also versuchen wir es zuerst mit dem ersten.
Lassen Sie uns ein Beispiel für die Einzelobjekterkennung erstellen.
Sie werden aufgefordert, es zuerst einzurichten. Da es jedoch nur mit Java 11+, Umgebungsvariablen und optionalem IntelliJ verwendet wird, können Benutzer, die normalerweise Java verwenden, fortfahren, ohne zu viel zu lesen.
In diesem Beispiel wird ein vorbereitetes ZooModel verwendet und ein Bild dagegen geschlagen, um auszudrücken, welche Art von Tier sich darin widerspiegelt. Außerdem wird ein Bild erstellt, in dem der erkannte Teil von einem Quadrat umgeben ist. Es wird ein Beispiel.
Plötzlich können Sie den folgenden Vorgang überprüfen. (Zitiert aus object_detection.md)
cd examples ./gradlew run -Dmain=ai.djl.examples.inference.ObjectDetection
Folgendes wird als Ausführungsergebnis angezeigt. Das Herunterladen der Bibliothek dauert zum ersten Mal einige Zeit, zum zweiten und nachfolgenden Mal jedoch etwa 10 Sekunden.
$ ./gradlew run -Dmain=ai.djl.examples.inference.ObjectDetection
> Task :run
Loading: 100% |████████████████████████████████████████|
[22:02:10] src/nnvm/legacy_json_util.cc:209: Loading symbol saved by previous version v1.5.0. Attempting to upgrade...
[22:02:10] src/nnvm/legacy_json_util.cc:217: Symbol successfully upgraded!
[INFO ] - Detected objects image has been saved in: build/output/detected-dog_bike_car.png
[INFO ] - [
class: "car", probability: 0.99991, bounds: [x=0.611, y=0.137, width=0.293, height=0.160]
class: "bicycle", probability: 0.95385, bounds: [x=0.162, y=0.207, width=0.594, height=0.588]
class: "dog", probability: 0.93752, bounds: [x=0.168, y=0.350, width=0.274, height=0.593]
]
BUILD SUCCESSFUL in 11s
3 actionable tasks: 1 executed, 2 up-to-date
Das Ergebnis ist, dass Auto, Fahrrad und Hund gezeigt werden.
Obwohl es nachgerüstet wird, [ai.djl.examples.inference.ObjectDetection](https://github.com/awslabs/djl/blob/master/examples/src/main/java/ai/djl/examples/inference/ ObjectDetection.java) Betrachten der Klasse
Path imageFile = Paths.get("src/test/resources/dog_bike_car.jpg ");
Sie können sehen, dass dieses Bild Eingabe ist.
Nach der Ausführung befindet sich das Ausgabebild in "build / output / detect-dog_bike_car.png ". (In derselben Klasse implementiert)
Sie können es richtig machen.
Durch Ersetzen des Eingabebildes scheint die Objekterkennung mit einem anderen Bild durchgeführt werden zu können.
nochmal ai.djl.examples.inference.ObjectDetection Wenn Sie es sich ansehen, können Sie sehen, dass selbst ich, der nur Java versteht, etwas tut. Die Logger-Einstellungen sind vertraut und vermitteln Ihnen ein Gefühl der Vertrautheit.
Ich habe den allgemeinen Ablauf wie folgt gelesen.
Es ist wie es ist. Es ist notwendig, im Detail zu bestätigen, was jeder Parameter bedeutet, aber ich dachte ehrlich, dass die Objekterkennung mit dem vorbereiteten Modell eine geringe Hürde darstellt.
Die abhängige Bibliothek des Projekts, die das Beispiel enthielt, sah wie folgt aus. Es scheint keine Duplizierung mit dem Spring-System zu geben, daher scheint es, dass es ohne Konflikte zusammen verwendet werden kann.
Vorerst habe ich nur ein Beispiel mit DJL ausprobiert.
Früher habe ich darüber nachgedacht, Deep Learning 4J zu berühren. Ich stolperte über die Umweltkonstruktion und die Regale, aber diesmal war es glatt.
Alle ML / DL-Systeme in Java! Ich konnte das Gefühl nicht erreichen, aber als ich ML / DL nur für eine Funktion eines allgemeinen Web-Systems verwendete, dachte ich, dass es gut sein könnte, dies mit einem kleinen Anfang zu versuchen. ..
Recommended Posts