mirror of
https://github.com/geekwenjie/SmartJavaAI.git
synced 2026-09-10 03:28:49 +00:00
新增Dockerfile及代码示例
This commit is contained in:
35
examples/face-example/Dockerfile
Normal file
35
examples/face-example/Dockerfile
Normal file
@@ -0,0 +1,35 @@
|
||||
# 使用官方 Ubuntu 22.04 作为基础
|
||||
FROM ubuntu:22.04
|
||||
|
||||
# 设置工作目录(可选,但推荐)
|
||||
WORKDIR /app
|
||||
|
||||
# 更新 apt 仓库并安装 OpenJDK 11
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --no-install-recommends openjdk-11-jdk && \
|
||||
apt-get clean && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
|
||||
# (可选) 验证 Java 安装 (可以选择添加你的应用程序,并编译运行,或者只是执行 java -version)
|
||||
RUN java -version
|
||||
|
||||
# 设置默认的模型路径环境变量
|
||||
ENV SMART_MODEL_PATH=/app/models
|
||||
|
||||
# 创建该目录
|
||||
RUN mkdir -p /app/models
|
||||
|
||||
# 挂载
|
||||
VOLUME ["/app/models"]
|
||||
|
||||
# UTF-8
|
||||
ENV LANG=zh_CN.UTF-8
|
||||
ENV LC_ALL=zh_CN.UTF-8
|
||||
|
||||
|
||||
# 声明服务运行在8080端口
|
||||
EXPOSE 8080
|
||||
|
||||
# 指定docker容器启动时运行jar包
|
||||
ENTRYPOINT ["java", "-Dfile.encoding=UTF-8", "-jar", "app.jar"]
|
||||
@@ -14,7 +14,7 @@
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<smartjavaai.version>1.1.0</smartjavaai.version>
|
||||
<!--如果打包运行,需要替换成你的main-->
|
||||
<exec.mainClass>smartai.examples.face.facedet.FaceDetDemo</exec.mainClass>
|
||||
<exec.mainClass>smartai.examples.face.FaceDemo</exec.mainClass>
|
||||
|
||||
<javacv.version>1.5.10</javacv.version>
|
||||
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
package smartai.examples.face;
|
||||
|
||||
import ai.djl.modality.cv.Image;
|
||||
import cn.smartjavaai.common.config.Config;
|
||||
import cn.smartjavaai.common.cv.SmartImageFactory;
|
||||
import cn.smartjavaai.common.entity.DetectionInfo;
|
||||
import cn.smartjavaai.common.entity.DetectionResponse;
|
||||
import cn.smartjavaai.common.entity.R;
|
||||
import cn.smartjavaai.common.utils.ImageUtils;
|
||||
import cn.smartjavaai.face.config.FaceDetConfig;
|
||||
import cn.smartjavaai.face.constant.FaceDetectConstant;
|
||||
import cn.smartjavaai.face.enums.FaceDetModelEnum;
|
||||
import cn.smartjavaai.face.factory.FaceDetModelFactory;
|
||||
import cn.smartjavaai.face.model.facedect.FaceDetModel;
|
||||
import cn.smartjavaai.face.utils.FaceUtils;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import java.io.InputStream;
|
||||
|
||||
/**
|
||||
* @author dwj
|
||||
* @date 2025/12/23
|
||||
*/
|
||||
@Slf4j
|
||||
public class FaceDemo {
|
||||
|
||||
public static String MODEL_PATH = "";
|
||||
|
||||
/**
|
||||
* 获取人脸检测模型
|
||||
* 注意事项:极速模型,识别准确度低,速度快
|
||||
* @return
|
||||
*/
|
||||
public static FaceDetModel getFaceDetModel(){
|
||||
FaceDetConfig config = new FaceDetConfig();
|
||||
//人脸检测模型,SmartJavaAI提供了多种模型选择(更多模型,请查看文档),切换模型需要同时修改modelEnum及modelPath
|
||||
config.setModelEnum(FaceDetModelEnum.YOLOV5_FACE_320);
|
||||
//下载模型并替换本地路径,下载地址:https://pan.baidu.com/s/10l22x5fRz_gwLr8EAHa1Jg?pwd=1234 提取码: 1234
|
||||
config.setModelPath(MODEL_PATH + "/face_model/yolo-face/yolov5face-n-0.5-320x320.onnx");
|
||||
//只返回相似度大于该值的人脸,需要根据实际情况调整,分值越大越严格容易漏检,分值越小越宽松容易误识别
|
||||
config.setConfidenceThreshold(0.5f);
|
||||
//用于去除重复的人脸框,当两个框的重叠度超过该值时,只保留一个
|
||||
config.setNmsThresh(FaceDetectConstant.NMS_THRESHOLD);
|
||||
return FaceDetModelFactory.getInstance().getModel(config);
|
||||
}
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
try {
|
||||
MODEL_PATH = System.getenv("SMART_MODEL_PATH");
|
||||
log.info("MODEL_PATH:" + MODEL_PATH);
|
||||
Config.setCachePath("/app/smartjavaai_cache");
|
||||
|
||||
FaceDetModel faceModel = getFaceDetModel();
|
||||
InputStream is = FaceDemo.class
|
||||
.getClassLoader()
|
||||
.getResourceAsStream("iu_1.jpg");
|
||||
//创建Image对象,可以从文件、url、InputStream创建、BufferedImage、Base64创建,具体使用方法可以查看文档
|
||||
Image image = SmartImageFactory.getInstance().fromInputStream(is);
|
||||
R<DetectionResponse> detectedResult = faceModel.detect(image);
|
||||
if(detectedResult.isSuccess()){
|
||||
log.info("人脸检测结果:{}", JSONObject.toJSONString(detectedResult.getData()));
|
||||
}else{
|
||||
log.info("人脸检测失败:{}", detectedResult.getMessage());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
35
examples/ocr-examples/Dockerfile
Normal file
35
examples/ocr-examples/Dockerfile
Normal file
@@ -0,0 +1,35 @@
|
||||
# 使用官方 Ubuntu 22.04 作为基础
|
||||
FROM ubuntu:22.04
|
||||
|
||||
# 设置工作目录(可选,但推荐)
|
||||
WORKDIR /app
|
||||
|
||||
# 更新 apt 仓库并安装 OpenJDK 11
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --no-install-recommends openjdk-11-jdk && \
|
||||
apt-get clean && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
|
||||
# (可选) 验证 Java 安装 (可以选择添加你的应用程序,并编译运行,或者只是执行 java -version)
|
||||
RUN java -version
|
||||
|
||||
# 设置默认的模型路径环境变量
|
||||
ENV SMART_MODEL_PATH=/app/models
|
||||
|
||||
# 创建该目录
|
||||
RUN mkdir -p /app/models
|
||||
|
||||
# 挂载
|
||||
VOLUME ["/app/models"]
|
||||
|
||||
# UTF-8
|
||||
ENV LANG=zh_CN.UTF-8
|
||||
ENV LC_ALL=zh_CN.UTF-8
|
||||
|
||||
|
||||
# 声明服务运行在8080端口
|
||||
EXPOSE 8080
|
||||
|
||||
# 指定docker容器启动时运行jar包
|
||||
ENTRYPOINT ["java", "-Dfile.encoding=UTF-8", "-jar", "app.jar"]
|
||||
35
examples/speech-examples/Dockerfile
Normal file
35
examples/speech-examples/Dockerfile
Normal file
@@ -0,0 +1,35 @@
|
||||
# 使用官方 Ubuntu 22.04 作为基础
|
||||
FROM ubuntu:22.04
|
||||
|
||||
# 设置工作目录(可选,但推荐)
|
||||
WORKDIR /app
|
||||
|
||||
# 更新 apt 仓库并安装 OpenJDK 11
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --no-install-recommends openjdk-11-jdk && \
|
||||
apt-get clean && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
|
||||
# (可选) 验证 Java 安装 (可以选择添加你的应用程序,并编译运行,或者只是执行 java -version)
|
||||
RUN java -version
|
||||
|
||||
# 设置默认的模型路径环境变量
|
||||
ENV SMART_MODEL_PATH=/app/models
|
||||
|
||||
# 创建该目录
|
||||
RUN mkdir -p /app/models
|
||||
|
||||
# 挂载
|
||||
VOLUME ["/app/models"]
|
||||
|
||||
# UTF-8
|
||||
ENV LANG=zh_CN.UTF-8
|
||||
ENV LC_ALL=zh_CN.UTF-8
|
||||
|
||||
|
||||
# 声明服务运行在8080端口
|
||||
EXPOSE 8080
|
||||
|
||||
# 指定docker容器启动时运行jar包
|
||||
ENTRYPOINT ["java", "-Dfile.encoding=UTF-8", "-jar", "app.jar"]
|
||||
35
examples/translation-example/Dockerfile
Normal file
35
examples/translation-example/Dockerfile
Normal file
@@ -0,0 +1,35 @@
|
||||
# 使用官方 Ubuntu 22.04 作为基础
|
||||
FROM ubuntu:22.04
|
||||
|
||||
# 设置工作目录(可选,但推荐)
|
||||
WORKDIR /app
|
||||
|
||||
# 更新 apt 仓库并安装 OpenJDK 11
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --no-install-recommends openjdk-11-jdk && \
|
||||
apt-get clean && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
|
||||
# (可选) 验证 Java 安装 (可以选择添加你的应用程序,并编译运行,或者只是执行 java -version)
|
||||
RUN java -version
|
||||
|
||||
# 设置默认的模型路径环境变量
|
||||
ENV SMART_MODEL_PATH=/app/models
|
||||
|
||||
# 创建该目录
|
||||
RUN mkdir -p /app/models
|
||||
|
||||
# 挂载
|
||||
VOLUME ["/app/models"]
|
||||
|
||||
# UTF-8
|
||||
ENV LANG=zh_CN.UTF-8
|
||||
ENV LC_ALL=zh_CN.UTF-8
|
||||
|
||||
|
||||
# 声明服务运行在8080端口
|
||||
EXPOSE 8080
|
||||
|
||||
# 指定docker容器启动时运行jar包
|
||||
ENTRYPOINT ["java", "-Dfile.encoding=UTF-8", "-jar", "app.jar"]
|
||||
35
examples/vision-example/Dockerfile
Normal file
35
examples/vision-example/Dockerfile
Normal file
@@ -0,0 +1,35 @@
|
||||
# 使用官方 Ubuntu 22.04 作为基础
|
||||
FROM ubuntu:22.04
|
||||
|
||||
# 设置工作目录(可选,但推荐)
|
||||
WORKDIR /app
|
||||
|
||||
# 更新 apt 仓库并安装 OpenJDK 11
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --no-install-recommends openjdk-11-jdk && \
|
||||
apt-get clean && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
|
||||
# (可选) 验证 Java 安装 (可以选择添加你的应用程序,并编译运行,或者只是执行 java -version)
|
||||
RUN java -version
|
||||
|
||||
# 设置默认的模型路径环境变量
|
||||
ENV SMART_MODEL_PATH=/app/models
|
||||
|
||||
# 创建该目录
|
||||
RUN mkdir -p /app/models
|
||||
|
||||
# 挂载
|
||||
VOLUME ["/app/models"]
|
||||
|
||||
# UTF-8
|
||||
ENV LANG=zh_CN.UTF-8
|
||||
ENV LC_ALL=zh_CN.UTF-8
|
||||
|
||||
|
||||
# 声明服务运行在8080端口
|
||||
EXPOSE 8080
|
||||
|
||||
# 指定docker容器启动时运行jar包
|
||||
ENTRYPOINT ["java", "-Dfile.encoding=UTF-8", "-jar", "app.jar"]
|
||||
Reference in New Issue
Block a user