2025-04-15 10:11:44 +08:00
2025-04-13 20:33:15 +08:00
2025-04-13 20:33:15 +08:00
2025-02-21 11:26:58 +08:00
2025-04-15 10:11:44 +08:00
2025-04-13 20:33:15 +08:00
2025-04-14 14:02:59 +08:00

🍬JAVA轻量级深度学习算法库该库致力于构建Java生态与AI模型之间的高效桥梁

📚简介

SmartJavaAI是专为Java 开发者打造的一个功能丰富、开箱即用的 Java 算法工具包致力于帮助Java开发者高效集成各类智能算法。SmartJavaAI通过对多种主流算法的统一封装开发者无需深入了解底层实现即可轻松在 Java 代码中调用人脸识别、目标检测、OCR 等功能。目前已支持部分人脸识别与目标检测算法,底层实现涵盖了 C++、Python 等语言的深度学习模型。后续将持续扩展更多算法,最终将构建一个面向 Java 开发者的通用智能工具库。

🚀 核心亮点

针对 Java 开发者在集成智能算法时常见的两大痛点:

  • 🐍 主流AI深度学习框架PyTorch/TensorFlow的Python生态与Java工程体系割裂

  • ⚙️ 现有算法方案分散杂乱,封装不统一,使用门槛高,不易直接服务于 Java 业务开发

我们实现了:

开箱即用 - 两行代码即可调用算法

支持多种深度学习引擎 - Pytorch、Tensorflow、MXNet、ONNX Runtime

功能丰富 - 当前支持人脸识别与目标检测,未来将陆续支持 OCR、图像分类、NLP 等多个 AI 领域任务,构建全面的智能算法体系。

跨平台兼容 - 支持Windows/Linux/macOS系统x86 & ARM架构

🌟 AI集成方式对比

方案 技术特点 优点 缺点
OpenCV 传统图像处理方案 提供java接口
轻量级部署
社区资源丰富
基于传统算法精度低(60%-75%)
需本地安装环境
虹软SDK 商业级闭源解决方案 开箱即用
提供完整文档和SDK
支持离线活体检测
免费版需年度授权更新
商业授权费用高
代码不可控
云API(阿里云) SaaS化云端服务 零部署成本
支持高并发
自带模型迭代
网络延迟风险(200-800ms)
按调用量计费
有数据安全风险
Python混合调用 跨语言调用方案 可集成PyTorch/TF等框架
支持自定义算法
识别精度高
需维护双语言环境
进程通信性能损耗(30%+)
异常处理复杂度翻倍
DJL框架 深度学习框架 纯Java实现
支持主流深度学习框架
可加载预训练模型(99%+)
需掌握DL知识
需处理模型加载、预处理、后处理等复杂技术细节
SmartJavaAI java深度学习工具包 支持主流深度学习框架
提供丰富、开箱即用API
上手简单单一Jar包集成
要求JDK版本11及以上

📌 支持功能

已实现功能

  • 人脸检测
    人脸检测、人脸识别、人脸比对1:1、人脸比对1:N、人脸库注册、人脸库、人脸库删除
  • 目标检测 支持通用目标检测,能够识别图像中的多种物体类别,返回物体位置与类别信息

规划中功能

  • OCR文字识别
    即将支持身份证/银行卡/车牌等关键信息提取
  • 图像分割
  • 语音识别
    基于Transformer的语音转文本引擎支持中文/英文多语种识别

🛠️包含组件

模块 介绍
smartjavaai-common 基础通用模块,封装了公共功能,供各算法模块共享使用
smartjavaai-face 人脸功能模块
smartjavaai-objectdetection 目标检测模块
smartjavaai-seetaface6-lib seetaface6人脸算法JNI接口封装

可以根据需求对每个模块单独引入,也可以通过引入smartjavaai-all方式引入所有模块。


📦 安装

1、环境要求

  • Java 版本:JDK 11或更高版本
  • 操作系统:不同模型支持的系统不一样,具体请查看文档

2、Maven

在项目的pom.xml的dependencies中加入以下内容全部功能也可以根据需求对每个模块单独引入:

<dependency>
    <groupId>ink.numberone</groupId>
    <artifactId>smartjavaai-all</artifactId>
    <version>1.0.8</version>
</dependency>

3、人脸检测运行流程

1人脸模型下载使用人脸相关功能

如果在有网环境下使用,不需要下载模型(SeetaFace6模型除外)

模型名称 下载地址 文件大小 适用场景 兼容系统
retinaface 下载 110MB 高精度人脸检测 Windows/Linux/MacOS
ultralightfastgenericface 下载 1.7MB 高速人脸检测 Windows/Linux/MacOS
seetaface6 下载 288MB 人脸检测、人脸比对、人脸库注册、人脸库查询 Windows
facenet 下载 104MB 人脸特征提取、人脸比对 Windows/Linux/MacOS

2人脸库下载使用人脸库相关功能人脸注册、人脸查询

目前仅SeetaFace6人脸算法支持人脸库注册查询等功能所以只有使用SeetaFace6模型时才需要下载face.dbface.db 是 一个SQLite 数据库,程序启动并使用相关功能时会自动操作该数据库,用于存储人脸特征数据及其对应的唯一标识 Key支持后续的人脸注册、查询和比对等操作。

下载链接: https://pan.baidu.com/s/1DzE1rDkFnjEXQbIasIdFrA?pwd=1234 提取码: 1234

3下载示例代码

https://gitee.com/dengwenjie/SmartJavaAI-Demo

📁 src/main/java/smartai/examples/face

└── 📄RetinaFaceDemo.java 人脸模型RetinaFace示例代码

└── 📄LightFaceDemo 人脸模型UltraLightFastGenericFaceModel示例代码

└── 📄SeetaFace6Demo.java 人脸模型SeetaFace6示例代码

└── 📄FaceNetDemo.java 人脸模型FaceNet示例代码

4离线使用方法

程序首次运行时,会自动下载所需的底层依赖库到默认的缓存路径。不同操作系统的默认缓存路径如下:

{user}需要替换成您当前登录的用户名

依赖库及缓存目录
windows C:/Users/{user}/.djl.ai
linux /home/{user}/.djl.ai
macos /Users/{user}/.djl.ai

对于需要在离线环境中使用的情况,可以在联网环境中运行程序一次,确保所需的依赖库已下载。然后,将上述缓存目录复制到离线环境中相同的路径下,即可实现离线使用。

请注意SeetaFace6 默认支持离线使用,无需上述操作即可在离线环境中运行。

4、目标检测运行流程

1下载示例代码

https://gitee.com/dengwenjie/SmartJavaAI-Demo

📁 src/main/java/smartai/examples/objectdetection

└── 📄ObjectDetection.java (目标检测示例代码)

5、运行设备

默认将使用CPU运行模型如果需要使用GPU需要在创建模型接口中手动指定运行设备

GPU中运行需要满足如下条件

1安装CUDA v12.4及cuDNN v8.9.7

2将缓存目录加入到环境变量中并删除其他cuda环境变量

windows配置如下

3示例代码

FaceModelConfig config = new FaceModelConfig();
config.setModelEnum(FaceModelEnum.RETINA_FACE);//人脸模型
config.setDevice(DeviceEnum.GPU);//指定GPU
FaceModel faceModel = FaceModelFactory.getInstance().getModel(config);

🙏 鸣谢

本项目在开发过程中借鉴或使用了以下优秀开源项目,特此致谢:

联系方式

如您在使用过程中有任何问题或建议,欢迎添加微信,与我们交流并加入用户交流群

🚀 如果这个项目对你有帮助,别忘了点个 Star !你的支持是我持续优化升级的动力! ❤️

更新日志

[v1.0.8] - 2025-04-13

  • 新增目标检测功能
  • 模型调用接口统一封装
  • 修复若干已知问题
  • 支持自定义选择使用 GPU 或 CPU 运算
  • 人脸识别模块新增多种接口,功能更加完善

[v1.0.6] - 2025-04-01

  • 修复人脸识别算法facenet-pytorch实现方式
  • 优化Seetaface6算法兼容jdk高版本
Description
离线AI算法工具箱,支持人脸识别(支持安卓Android),活体检测、目标检测、实例分割、行人检测、OCR文字识别、车牌识别、表格识别、ASR+TTS、机器翻译等功能,Maven引用即可使用。支持PyTorch、Tensorflow,已集成 Mtcnn、InsightFace、SeetaFace6、YOLOv8~v12、PaddleOCR(PPOCRv5)、等主流模型
Readme MulanPSL-2.0 61 MiB
Languages
Java 100%