# 安装

# 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.27</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依赖