Lassen Sie uns auf Deep Java Library (DJL) eingehen, eine von AWS veröffentlichte Bibliothek, die Deep Learning in Java verarbeiten kann.

Überblick

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.

DJL - Deep Java Library

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.

Deep Java Library の発表: Java で機械学習モデルを開発およびデプロイする

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.

image.png

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. image.png

Nach der Ausführung befindet sich das Ausgabebild in "build / output / detect-dog_bike_car.png ". (In derselben Klasse implementiert)

image.png

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.

Überprüfen Sie abhängige Bibliotheken

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. image.png

Zusammenfassung

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

Lassen Sie uns auf Deep Java Library (DJL) eingehen, eine von AWS veröffentlichte Bibliothek, die Deep Learning in Java verarbeiten kann.
[JavaScript] Java-Programmierer! Sie können das Schließen von JavaScript sehr leicht verstehen!
Schreiben einer Klasse, die in Java bestellt werden kann Ein kleines Standard-Memo
Probleme, die leicht mit Java und JavaScript verwechselt werden können
Lassen Sie uns auf Deep Java Library (DJL) eingehen, eine von AWS veröffentlichte Bibliothek, die Deep Learning in Java verarbeiten kann.
[Deep Learning von Grund auf neu] in Java 3. Neuronales Netzwerk
Schreiben einer Klasse, die in Java bestellt werden kann Ein kleines Standard-Memo
Eine Bibliothek, die mehrzeilige Zeichenfolgen in mehrzeiligen Java-Zeichenfolgen realisiert
Mit [AWS] CodeStar können Sie ein Spring (Java) -Projekt erstellen, das auf Lambda in nur 3 Minuten ausgeführt wird! !!
Deep Learning Java von Grund auf 6.4 Regularisierung
Ich habe eine Klasse erstellt, die JUMAN und KNP aus Java verwenden kann
Erste Schritte für tiefes Lernen in Java
Deep Learning Java von Grund auf neu Kapitel 1 Einführung
Deep Learning Java von Grund auf 6.1 Parameteraktualisierung
Deep Learning Java von Grund auf neu Kapitel 2 Perceptron
Deep Learning Java von Grund auf 6.3 Batch-Normalisierung
[Java] Erstellen wir eine DB-Zugriffsbibliothek!
Erstellen wir eine vielseitige Dateispeicher (?) - Operationsbibliothek, indem wir die Dateispeicherung / -erfassung mit Java abstrahieren
[Deep Learning von Grund auf neu] in Java 1. Zur Zeit Differenzierung und teilweise Differenzierung