作者 | Qing Lan,Mikhail Shapirov
责编 | Carol
封图 | CSDN 下载自视觉中国
出品 | CSDN云计算(ID:CSDNcloud)
许多AWS云服务的用户,无论是初创企业还是大公司,都在逐步将机器学习 (ML) 和深度学习 (DL) 任务搭载在他们已有产品之上。大量的机器学习任务应用在商业和工业领域,例如应用在图像和视频中的目标检测,文档中的情感分析,大数据中的欺诈识别。
尽管机器学习应用广泛应用在其他语言中(例如Python),但是对于广大已有产品的开发者学习和集成成本依然很高。试想一下,如果要用另一种语言集成在已有的Java服务中,从写代码,编译,测试到最后部署都要做出大量改变。
为了解决用户在这方面上的痛点,本文将提出一种解决问题的新思路:用户无需对已有的资源和人员重新调配,可以直接部署机器学习应用在现有的服务中。
<parent>
<artifactId>spring-boot-starter-parent
</artifactId>
<groupId>org.springframework.boot
</groupId>
<version>2.2.6.RELEASE
</version>
</parent>
<properties>
<java.version>11
</java.version>
<!-- 11 是Java最低支持的版本 -->
<jna.version>5.3.0
</jna.version>
<!-- 需要覆写 JNA 版本-->
</properties>
<dependency>
<groupId>ai.djl.spring
</groupId>
<artifactId>djl-spring-boot-starter-mxnet-linux-x86_64
</artifactId>
<version>${djl.starter.version}
</version>
<!-- e.g. 0.2 -->
</dependency>
<dependency>
<groupId>ai.djl.spring
</groupId>
<artifactId>djl-spring-boot-starter-mxnet-auto
</artifactId>
<version>${djl.starter.version}
</version>
<!-- e.g. 0.2 -->
</dependency>
<dependency>
<groupId>ai.djl.spring
</groupId>
<artifactId>djl-spring-boot-starter-pytorch-auto
</artifactId>
<version>${djl.starter.version}
</version>
<!-- e.g. 0.2 and above -->
</dependency>
plugins {
...
id(
"org.springframework.boot")
}
repositories {
mavenCentral()
// 发布的包在maven central
}
dependencies {
implementation(
"ai.djl.spring:djl-spring-boot-starter-mxnet-auto:0.2")
}
<dependency>
<groupId>ai.djl.spring
</groupId>
<artifactId>djl-spring-boot-starter-autoconfigure
</artifactId>
<version>${djl.starter.version}
</version>
</dependency>
dependencies {
implementation(
"ai.djl.spring:djl-spring-boot-starter-autoconfigure:${djl.starter.version}")
}
QUESTION_ANSWER(
NLP
.QUESTION_ANSWER),
TEXT_CLASSIFICATION(
NLP
.TEXT_CLASSIFICATION),
IMAGE_CLASSIFICATION(
CV
.IMAGE_CLASSIFICATION),
OBJECT_DETECTION(
CV
.OBJECT_DETECTION),
ACTION_RECOGNITION(
CV
.ACTION_RECOGNITION),
INSTANCE_SEGMENTATION(
CV
.INSTANCE_SEGMENTATION),
POSE_ESTIMATION(
CV
.POSE_ESTIMATION),
SEMANTIC_SEGMENTATION(
CV
.SEMANTIC_SEGMENTATION);
djl:
# 设定应用种类
application-type:
OBJECT_DETECTION
# 设定输入数据格式, 有的模型支持多种数据格式
input-class:
java
.awt.image.BufferedImage
# 设定输出数据格式
output-class:
ai
.djl.modality.cv.output.DetectedObjects
# 设定一个筛选器来筛选你的模型
model-filter:
size: 512
backbone:
mobilenet1
.0
# 覆写已有的输入输出配置
arguments:
threshold: 0
.5 # 只展示预测结果大于等于 0
.5
@
Resource
private Supplier<Predictor> predictorProvider;
try (
var predictor = predictorProvider.
get()) {
var results = predictor.predict(ImageIO.read(
this.getClass()
.getResourceAsStream(
"/puppy-in-white-and-red-polka.jpg")));
for(
var result : results.items()) {
LOG.info(
"results: {}", result.toString());
}
}
a.d.s.e.console.ConsoleApplication: results:
class: "dog", probability: 0.90820, bounds: {x=0.487, y=0.057, width=0.425, height=0.484}
git
clone git@github.com:awslabs/djl-spring-boot-starter.git
cd djl-spring-boot-starter/djl-spring-boot-console-sample
../mvnw package
../mvnw spring-boot:run
更多精彩推荐
☞卖掉 3000 平房子,50 岁程序员回国写代码,三个月内融资 2000 万美元
![]()
你点的每个“在看”,我都认真当成了喜欢