2019/12/03 AWS a annoncé la bibliothèque Deep Java pour le développement et le déploiement de modèles d'apprentissage automatique en Java.
C'est juste un peu, mais je l'ai touché alors je vais le présenter. En ce qui concerne les connaissances préalables, j'utilise généralement Java, mais je n'ai presque aucune connaissance de ML / DL.
ici,
Annonce de DJL, une bibliothèque open source pour le développement de modèles d'apprentissage profond en Java. DJL fournit une API conviviale pour la formation, les tests et le déploiement de modèles d'apprentissage en profondeur. Si vous êtes un utilisateur Java intéressé par le deep learning, DJL est un excellent point de départ. Pour les développeurs Java travaillant sur des modèles d'apprentissage profond, DJL facilite la formation et l'exécution des prédictions.
J'espère donc y toucher.
La page officielle est ci-dessous, mais les couleurs Amazon / AWS ne sont pas très visibles. https://djl.ai/
Try
Quoi qu'il en soit, déplaçons-le selon le tutoriel.
https://github.com/awslabs/djl.git
Il semble bon de cloner et de déplacer l'exemple et le dessous.
#Exécuter dans un dossier approprié
git clone https://github.com/awslabs/djl/
Après le clonage, accédez au dossier d'exemple et jetez un œil à README.md.
Il existe différents types d'exemples comme ci-dessous, alors essayons d'abord le premier.
Faisons un exemple de détection d'objet en un seul coup.
Il vous sera demandé de le configurer en premier, mais comme il n'est utilisé qu'avec Java 11+, les variables d'environnement et IntelliJ en option, il semble que les personnes qui utilisent généralement Java peuvent continuer sans trop lire.
Dans cet exemple, un ZooModel pré-préparé est utilisé, et une image est frappée contre lui pour exprimer le type d'animal qui y est reflété, et une image avec la partie reconnue entourée d'un carré est également créée. Cela devient un exemple.
Du coup, vous pouvez vérifier le fonctionnement ci-dessous. (Cité de object_detection.md)
cd examples ./gradlew run -Dmain=ai.djl.examples.inference.ObjectDetection
Ce qui suit est affiché comme résultat de l'exécution. La première fois, il faut du temps pour télécharger la bibliothèque, etc., mais après la deuxième fois, cela prendra environ 10 secondes.
$ ./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
Le résultat est que la voiture, le vélo et le chien sont montrés.
Bien qu'il soit modernisé, [ai.djl.examples.inference.ObjectDetection](https://github.com/awslabs/djl/blob/master/examples/src/main/java/ai/djl/examples/inference/ ObjectDetection.java) En regardant la classe
Path imageFile = Paths.get("src/test/resources/dog_bike_car.jpg ");
Vous pouvez voir que cette image est une entrée.
Après exécution, l'image de sortie est dans `` build / output / found-dog_bike_car.png ''. (Implémenté dans la même classe)
Vous pouvez le faire correctement.
En remplaçant l'image d'entrée, il semble que la détection d'objet puisse être effectuée avec une autre image.
encore ai.djl.examples.inference.ObjectDetection Si vous le regardez, vous pouvez voir que même moi, qui ne comprend que Java, fait quelque chose. Les paramètres de l'enregistreur sont familiers et vous donnent un sentiment de familiarité.
J'ai lu le flux général comme suit.
C'est comme ça. Il est nécessaire de confirmer en détail ce que signifie chaque paramètre, mais je pensais honnêtement que la détection d'objet à l'aide du modèle préparé est un faible obstacle.
La bibliothèque dépendante du projet qui incluait l'exemple ressemblait à ce qui suit. Il ne semble pas y avoir de duplication avec le système Spring, il semble donc qu'il puisse être utilisé ensemble sans conflits.
Pour le moment, je n'ai essayé qu'un seul exemple utilisant DJL.
J'avais l'habitude de penser à toucher Deep Learning 4J, Je trébuchais autour de la construction de l'environnement et de son étagère, mais cette fois, c'était sans heurts.
Tous les systèmes ML / DL en Java! Je ne pouvais pas en avoir l'impression, mais lorsque j'utilisais ML / DL pour une seule fonction d'un système Web général, j'ai pensé qu'il serait peut-être bon d'essayer de l'utiliser avec un petit départ. ..
Recommended Posts