# 安装
# 1、JDK
- Java 版本:JDK 8或更高版本
注意事项:
1、macos M系列芯片,目前不支持JDK8使用,最低请使用JDK11
# 2、运行环境
- Windows:
windows-x86_64
- Linux:
linux-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>