# 安装

# 1、JDK

  • Java 版本:JDK 8或更高版本

注意事项:

1、macos M系列芯片,目前不支持JDK8使用,最低请使用JDK11

# 2、运行环境

  • Windowswindows-x86_64
  • Linuxlinux-x86_64
  • MacOS:Apple Silicon (macos-arm64, M 系列芯片)

注意事项:

1、目前不支持 linux-arm64(下个版本支持)

2、macos M系列芯片,目前不支持MXNet 引擎的模型

# 3、Maven

# 【不推荐 ❌】 全量引入(适合快速体验)

如果你希望直接引入所有功能模块,那就"无脑"引入all:

<dependency>
    <groupId>cn.smartjavaai</groupId>
    <artifactId>all</artifactId>
    <version>1.0.24</version>
</dependency>

# 【推荐 ✅】 按需引入(推荐)

如果你想像SpringBoot一样引入SmartJavaAI,再由子模块决定用到哪些模块,你可以在父模块中加入:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>cn.smartjavaai</groupId>
            <artifactId>bom</artifactId>
            <version>${smartjavaai.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

在子模块中就可以引入自己需要的模块了:

<!--人脸识别模块-->
<dependency>
    <groupId>cn.smartjavaai</groupId>
    <artifactId>face</artifactId>
</dependency>

<!--通用视觉模块-->
<dependency>
    <groupId>cn.smartjavaai</groupId>
    <artifactId>vision</artifactId>
</dependency>

<!--OCR检测模块-->
<dependency>
    <groupId>cn.smartjavaai</groupId>
    <artifactId>ocr</artifactId>
</dependency>

<!--翻译模块-->
<dependency>
    <groupId>cn.smartjavaai</groupId>
    <artifactId>translate</artifactId>
</dependency>

<!--语音识别模块-->
<dependency>
<groupId>cn.smartjavaai</groupId>
<artifactId>speech</artifactId>
</dependency>

注意事项:

1、若选择“按需引入模块”方式,你必须同时手动引入平台原生依赖(如 OpenCV、FFmpeg 等),否则运行时将因缺失 native 库而抛出异常。

2、使用 all 则会自动引入所有平台依赖,无需手动配置。

# 平台原生依赖说明

如果不显式引入,程序运行时会自动下载所需的原生依赖库。但这种方式可能导致启动速度较慢。 建议在需要离线运行或加快启动速度时,手动引入对应平台的原生依赖。

原生依赖通过 classifier 控制平台版本。根据目标平台选择对应依赖,可以有效减小包体积。

(1)预设平台属性

在项目的的pom.xml文件中添加以下属性

<properties>
    <javacv.version>1.5.10</javacv.version>
  
    <javacv.platform.macosx-arm64>macosx-arm64</javacv.platform.macosx-arm64>
    <javacv.platform.linux-x86_64>linux-x86_64</javacv.platform.linux-x86_64>
    <javacv.platform.windows-x86_64>windows-x86_64</javacv.platform.windows-x86_64>

    <djl.platform.windows-x86_64>win-x86_64</djl.platform.windows-x86_64>
    <djl.platform.linux-x86_64>linux-x86_64</djl.platform.linux-x86_64>
    <djl.platform.osx-aarch64>osx-aarch64</djl.platform.osx-aarch64>
</properties>

(2)引入核心原生依赖(示例:Windows x86_64)

<!--PyTorch离线平台依赖-->
<dependency>
    <groupId>ai.djl.pytorch</groupId>
    <artifactId>pytorch-native-cpu</artifactId>
    <classifier>${djl.platform.windows-x86_64}</classifier>
    <version>2.5.1</version>
    <scope>runtime</scope>
</dependency>

<dependency>
    <groupId>ai.djl.pytorch</groupId>
    <artifactId>pytorch-jni</artifactId>
    <version>2.5.1-0.32.0</version>
    <scope>runtime</scope>
</dependency>

<!--tensorflow离线平台依赖-->
<dependency>
    <groupId>ai.djl.tensorflow</groupId>
    <artifactId>tensorflow-native-cpu</artifactId>
    <classifier>${djl.platform.windows-x86_64}</classifier>
    <scope>runtime</scope>
    <version>2.16.1</version>
</dependency>

<!--mxnet离线平台依赖-->
<dependency>
    <groupId>ai.djl.mxnet</groupId>
    <artifactId>mxnet-native-mkl</artifactId>
    <classifier>${djl.platform.windows-x86_64}</classifier>
    <scope>runtime</scope>
    <version>1.9.1</version>
</dependency>

注意事项:

1、为了进一步缩小打包体积,可以根据实际使用的模型平台选择性引入依赖。例如:如果仅使用 PyTorch 模型,则只需引入 PyTorch 相关依赖,无需引入其他引擎。

2、OnnxRuntime 依赖说明:SmartJavaAI 已默认引入 OnnxRuntime 的原生离线依赖,因此用户无需额外配置。需要注意的是,OnnxRuntime 依赖 PyTorch,请确保同时引入 PyTorch 依赖。

(3)引入视频功能相关依赖(仅在使用视频功能时需要)

当使用到视频相关功能才需要引入以下依赖

<dependency>
    <groupId>org.bytedeco</groupId>
    <artifactId>javacpp</artifactId>
    <version>${javacv.version}</version>
    <classifier>${javacv.platform.windows-x86_64}</classifier>
</dependency>
<dependency>
    <groupId>org.bytedeco</groupId>
    <artifactId>ffmpeg</artifactId>
    <version>6.1.1-1.5.10</version>
    <classifier>${javacv.platform.windows-x86_64}</classifier>
</dependency>

<dependency>
    <groupId>org.bytedeco</groupId>
    <artifactId>openblas</artifactId>
    <version>0.3.26-1.5.10</version>
    <classifier>${javacv.platform.windows-x86_64}</classifier>
</dependency>

<dependency>
    <groupId>org.bytedeco</groupId>
    <artifactId>opencv</artifactId>
    <version>4.9.0-1.5.10</version>
    <classifier>${javacv.platform.windows-x86_64}</classifier>
</dependency>

# 4、完整示例代码

示例代码 (opens new window)

# 5、centos依赖

centos依赖