From 7b3426f231d1fbe311c523759a30edc33a57c2df Mon Sep 17 00:00:00 2001 From: dengwenjie <775747758@qq.com> Date: Wed, 24 Dec 2025 11:23:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9EDockerfile=E5=8F=8A=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/face-example/Dockerfile | 35 +++++++++ examples/face-example/pom.xml | 2 +- .../java/smartai/examples/face/FaceDemo.java | 73 +++++++++++++++++++ examples/ocr-examples/Dockerfile | 35 +++++++++ examples/speech-examples/Dockerfile | 35 +++++++++ examples/translation-example/Dockerfile | 35 +++++++++ examples/vision-example/Dockerfile | 35 +++++++++ 7 files changed, 249 insertions(+), 1 deletion(-) create mode 100644 examples/face-example/Dockerfile create mode 100644 examples/face-example/src/main/java/smartai/examples/face/FaceDemo.java create mode 100644 examples/ocr-examples/Dockerfile create mode 100644 examples/speech-examples/Dockerfile create mode 100644 examples/translation-example/Dockerfile create mode 100644 examples/vision-example/Dockerfile diff --git a/examples/face-example/Dockerfile b/examples/face-example/Dockerfile new file mode 100644 index 0000000..45829d4 --- /dev/null +++ b/examples/face-example/Dockerfile @@ -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"] diff --git a/examples/face-example/pom.xml b/examples/face-example/pom.xml index 38a2725..4b34106 100644 --- a/examples/face-example/pom.xml +++ b/examples/face-example/pom.xml @@ -14,7 +14,7 @@ UTF-8 1.1.0 - smartai.examples.face.facedet.FaceDetDemo + smartai.examples.face.FaceDemo 1.5.10 diff --git a/examples/face-example/src/main/java/smartai/examples/face/FaceDemo.java b/examples/face-example/src/main/java/smartai/examples/face/FaceDemo.java new file mode 100644 index 0000000..e3f6e1d --- /dev/null +++ b/examples/face-example/src/main/java/smartai/examples/face/FaceDemo.java @@ -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 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); + } + + } + +} diff --git a/examples/ocr-examples/Dockerfile b/examples/ocr-examples/Dockerfile new file mode 100644 index 0000000..45829d4 --- /dev/null +++ b/examples/ocr-examples/Dockerfile @@ -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"] diff --git a/examples/speech-examples/Dockerfile b/examples/speech-examples/Dockerfile new file mode 100644 index 0000000..45829d4 --- /dev/null +++ b/examples/speech-examples/Dockerfile @@ -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"] diff --git a/examples/translation-example/Dockerfile b/examples/translation-example/Dockerfile new file mode 100644 index 0000000..45829d4 --- /dev/null +++ b/examples/translation-example/Dockerfile @@ -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"] diff --git a/examples/vision-example/Dockerfile b/examples/vision-example/Dockerfile new file mode 100644 index 0000000..45829d4 --- /dev/null +++ b/examples/vision-example/Dockerfile @@ -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"]