作者 | 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 万美元
你点的每个“在看”,我都认真当成了喜欢