# 快速入门
# 📚简介
SmartJavaAI
是专为JAVA 开发者打造的一个功能丰富、开箱即用的 JAVA AI算法工具包,致力于帮助JAVA开发者零门槛使用各种AI算法模型,开发者无需深入了解底层实现,即可轻松在 Java 代码中调用人脸识别、目标检测、OCR 等功能。底层实现涵盖了 C++、Python 等语言的深度学习模型。后续将持续扩展更多算法,目标是构建一个“像 Hutool 一样简单易用”的 JAVA AI 通用工具箱
# 📌 支持功能
# ✅ 已实现功能
- 人脸识别
- 人脸检测:5点人脸关键点定位
- 人脸识别:人脸512维特征提取、人脸对齐、1:1 人脸比对、1:N 人脸识别
- 人脸库:人脸注册、更新、查询、删除(支持向量数据库milvus/sqlite)
- 人脸属性检测:性别、年龄、口罩、眼睛状态、脸部姿态
- 静默活体检测:图片、视频活体检测
- 人脸表情识别:7种表情识别
- 人脸质量评估:亮度评估、清晰度评估、完整度评估、姿态评估、遮挡评估
- 目标检测
- 支持多种主流模型:兼容 YOLOv3、YOLOv5、YOLOv8、YOLOv11、YOLOv12、SSD 等目标检测算法
- 支持自定义模型加载:可无缝加载并部署用户自行训练的目标检测模型
- OCR文字识别
- 支持PaddleOCR 3.0模型:集成最新PP-OCRv5、PP-OCRv4、表格结构识别模型(SLANet_plus)、文本行方向分类模型
- 支持任意角度识别,方向校准
- 支持通用文字识别,通用手写字识别
- 支持表格识别
- 支持中文车牌识别:单层/双层检测,颜色识别,支持12种中文车牌
- 机器翻译
- 集成NLLB-200模型:支持200+语言互相翻译
# 🛠️包含组件
模块 | 介绍 |
---|---|
smartjavaai-common | 基础通用模块,封装了公共功能,供各算法模块共享使用 |
smartjavaai-face | 人脸功能模块 |
smartjavaai-objectdetection | 目标检测模块 |
smartjavaai-ocr | OCR文字识别模块 |
smartjavaai-translate | 机器翻译模块 |
可以根据需求对每个模块单独引入,也可以通过引入smartjavaai-all
方式引入所有模块。
# 📦 安装
# 1、环境要求
- Java 版本:JDK 8或更高版本
- 操作系统:不同模型支持的系统不一样,具体请查看文档
注意事项:
macos M系列芯片,目前不支持JDK8使用,最低请使用JDK11
# 2、Maven
# 全量引入(适合快速体验)
如果你希望直接引入所有功能模块,那就"无脑"引入smartjavaai-all:
<dependency>
<groupId>cn.smartjavaai</groupId>
<artifactId>smartjavaai-all</artifactId>
<version>1.0.22</version>
</dependency>
# 按需引入(推荐)
如果你想像SpringBoot一样引入SmartJavaAI,再由子模块决定用到哪些模块,你可以在父模块中加入:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>cn.smartjavaai</groupId>
<artifactId>smartjavaai-bom</artifactId>
<version>${smartjavaai.version}</version>
<type>pom</type>
<!-- 注意这里是import -->
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
在子模块中就可以引入自己需要的模块了:
<!--人脸识别模块-->
<dependency>
<groupId>cn.smartjavaai</groupId>
<artifactId>smartjavaai-face</artifactId>
</dependency>
<!--目标检测模块-->
<dependency>
<groupId>cn.smartjavaai</groupId>
<artifactId>smartjavaai-objectdetection</artifactId>
</dependency>
<!--OCR检测模块-->
<dependency>
<groupId>cn.smartjavaai</groupId>
<artifactId>smartjavaai-ocr</artifactId>
</dependency>
<!--翻译模块-->
<dependency>
<groupId>cn.smartjavaai</groupId>
<artifactId>smartjavaai-translate</artifactId>
</dependency>
注意事项:
1、若选择“按需引入模块”方式,你必须同时手动引入平台原生依赖(如 OpenCV、FFmpeg 等),否则运行时将因缺失 native 库而抛出异常。
2、使用 smartjavaai-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.linux-arm64>linux-arm64</javacv.platform.linux-arm64>
<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.linux-aarch64>linux-aarch64</djl.platform.linux-aarch64>
<djl.platform.osx-aarch64>osx-aarch64</djl.platform.osx-aarch64>
</properties>
(2)引入原生依赖(示例:Windows x86_64)
<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>
<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>
# 3、完整示例代码
# 4、文档地址
# 5、模型简介及下载
# 人脸模块
人脸检测模型(FaceDetection、FaceLandmarkExtraction)
支持功能:
- 人脸检测
- 5点人脸关键点定位
模型名称 | 引擎 | 模型简介 | 模型开源网站 |
---|---|---|---|
RetinaFace | PyTorch | 高精度人脸检测模型 | Github (opens new window) |
UltraLightFastGenericFace | PyTorch | 针对边缘计算设备设计的轻量人脸检测模型 | Github (opens new window) |
SeetaFace6 | C++ | 中科视拓最新开放的开源免费的全栈人脸识别工具包 | Github (opens new window) |
人脸识别模型(FaceRecognition)
支持功能:
- 人脸512维特征提取
- 人脸对齐(人脸矫正)
- 人脸特征比对(内积[IP]、欧氏距离[L2]、余弦相似度[COSINE])
模型名称 | 引擎 | 模型简介 | 模型开源网站 |
---|---|---|---|
InsightFace_IR-SE50 | PyTorch | (高精度)这是对 ArcFace(论文)和 InsightFace(GitHub)的 PyTorch 重新实现 | Github (opens new window) |
InsightFace_Mobilefacenet | PyTorch | (轻量级)这是对 ArcFace(论文)和 InsightFace(GitHub)的 PyTorch 重新实现 | Github (opens new window) |
FaceNet | PyTorch | 基于 PyTorch 的 Inception ResNet(V1)模型仓库 | Github (opens new window) |
ElasticFace | PyTorch | 基于 CVPRW2022 论文《ElasticFace: Elastic Margin Loss for Deep Face Recognition》实现的人脸识别模型 | Github (opens new window) |
SeetaFace6 | C++ | 中科视拓最新开放的开源免费的全栈人脸识别工具包 | Github (opens new window) |
静态活体检测(RGB)模型(Silent face-anti-spoofing、FaceLivenessDetection)
支持功能:
- 检测图片中的人脸是否为来自认证设备端的近距离裸拍活体人脸对象(裸拍活体正面人脸是指真人未经重度PS、风格化、人工合成等后处理的含正面人脸)
模型名称 | 引擎 | 模型简介 | 模型开源网站 |
---|---|---|---|
MiniVision | OnnxRuntime | 小视科技的静默活体检测 | Github (opens new window) |
IIC_FL(cv_manual_face-liveness_flrgb) | OnnxRuntime | 阿里通义工作室人脸活体检测模型-RGB | 魔塔 (opens new window) |
SeetaFace6 | C++ | 中科视拓最新开放的开源免费的全栈人脸识别工具包 | Github (opens new window) |
人脸表情识别模型(FacialExpressionRecognition、fer)
支持功能:
- 支持识别7种表情:neutral(中性)、happy(高兴)、sad(悲伤)、surprise(惊讶)、fear(恐惧)、disgust(厌恶)、anger(愤怒)
模型名称 | 引擎 | 模型简介 | 模型开源网站 |
---|---|---|---|
DensNet121 | PyTorch | FaceLib的densnet121表情识别模型 | Github (opens new window) |
FrEmotion | OnnxRuntime | FaceRecognition-LivenessDetection-Javascript | Github (opens new window) |
人脸属性识别模型(GenderDetection、AgeDetection、EyeClosenessDetection、FacePoseEstimation)
支持功能:
- 性别检测
- 年龄检测
- 闭眼检测
- 人脸姿态检测
- 戴口罩检测
模型名称 | 模型简介 | 模型开源网站 |
---|---|---|
SeetaFace6 | 中科视拓最新开放的开源免费的全栈人脸识别工具包 | Github (opens new window) |
人脸质量评估模型(FaceQualityAssessment)
支持功能:
- 亮度评估
- 清晰度评估
- 完整度评估
- 姿态评估
- 遮挡评估
模型名称 | 模型简介 | 模型开源网站 |
---|---|---|
SeetaFace6 | 中科视拓最新开放的开源免费的全栈人脸识别工具包 | Github (opens new window) |
# 目标检测模型
支持功能:
- 自训练模型推理
- yolov3~yolov12 系列
SSD 系列
模型名称 | 引擎 | 骨干网络 | 输入尺寸 | 训练数据集 | 精度(mAP) | 推理速度 | 适用场景 |
---|---|---|---|---|---|---|---|
SSD_300_RESNET5 | PyTorch | ResNet‑50 | 300×300 | COCO | 中等 | 快 | 精度需求一般 |
SSD_512_RESNET50_V1_VOC | PyTorch | ResNet‑50 | 512×512 | Pascal VOC | 稍高 | 中等 | 精度优先、可接受略低速度的场景 |
SSD_512_VGG16_ATROUS_COCO | MXNet | VGG‑16 | 512×512 | COCO | 较高 | 中等 | 通用场景;对小目标有一定提升 |
SSD_300_VGG16_ATROUS_VOC | MXNet | VGG‑16 | 300×300 | Pascal VOC | 中等偏上 | 快 | VOC 数据集同类任务;资源受限时使用 |
SSD_512_MOBILENET1_VOC | MXNet | MobileNet‑1.0 | 512×512 | Pascal VOC | 中等 | 快 | 嵌入式/移动端设备;算力和内存都很有限 |
YOLO 系列
模型名称 | 引擎 | 版本 | 大小(Backbone) | 数据集 | 精度 | 速度 | 适用场景 |
---|---|---|---|---|---|---|---|
YOLO12N | OnnxRuntime | v12 | 极轻量 | COCO | 高 | 极快 | YOLO 系列最新版本,精度与速度进一步优化,适合高实时性要求场景 |
YOLO11N | PyTorch | v11 | 极轻量 | COCO | 中等偏上 | 极快 | 与 v8n 类似,版本更新点在兼容性与 API |
YOLOV8N | PyTorch | v8 | 极轻量 | COCO | 中等偏上 | 极快 | 对实时性要求极高的应用 |
YOLOV5S | PyTorch | v5 | 小型 | COCO | 较高 | 非常快 | 常见通用场景,算力资源有限时优选 |
YOLOV5S_ONNXRUNTIME | OnnxRuntime | v5 | 小型 | COCO | 较高 | 加速(需 ONNX 支持) | Windows/Linux 通用加速部署 |
YOLO (MXNet / 通用模型) | MXNet | v3 | DarkNet‑53 | COCO | 较高 | 快 | 需要 MXNet 生态或复现老项目时使用 |
YOLOv3 变体系列
模型名称 | 引擎 | 骨干网络 | 数据集 | 输入尺寸 | 精度 | 速度 | 适用场景 |
---|---|---|---|---|---|---|---|
YOLO3_DARKNET_VOC_416 | MXNet | DarkNet‑53 | VOC | 416×416 | 高 | 中等 | VOC 任务复现;精度优先 |
YOLO3_DARKNET_COCO_320 | MXNet | DarkNet‑53 | COCO | 320×320 | 中等 | 快 | COCO 小模型测试;资源受限 |
YOLO3_DARKNET_COCO_416 | MXNet | DarkNet‑53 | COCO | 416×416 | 高 | 中等 | 通用 COCO 部署;精度优先 |
YOLO3_DARKNET_COCO_608 | MXNet | DarkNet‑53 | COCO | 608×608 | 很高 | 慢 | 批量离线推理;精度要求极高 |
YOLO3_MOBILENET_VOC_320 | MXNet | MobileNet‑V1 | VOC | 320×320 | 中等 | 非常快 | 嵌入式设备;VOC 小目标任务 |
YOLO3_MOBILENET_VOC_416 | MXNet | MobileNet‑V1 | VOC | 416×416 | 高 | 快 | 移动端 VOC 部署 |
YOLO3_MOBILENET_COCO_320 | MXNet | MobileNet‑V1 | COCO | 320×320 | 中等 | 非常快 | 嵌入式设备;COCO 小目标任务 |
YOLO3_MOBILENET_COCO_416 | MXNet | MobileNet‑V1 | COCO | 416×416 | 高 | 快 | 移动端 COCO 部署 |
YOLO3_MOBILENET_COCO_608 | MXNet | MobileNet‑V1 | COCO | 608×608 | 很高 | 中等 | 对精度要求较高的移动端任务 |
# OCR 模型
支持功能:
- 支持简体中文、繁体中文、英文、日文四种主要语言
- 手写、竖版、拼音、生僻字
- 方向矫正
文本检测模型
模型名称 | 模型简介 | 模型开源网站 |
---|---|---|
PP-OCRv5_server_det | 服务端文本检测模型,精度更高,适合在性能较好的服务器上部署 | Github (opens new window) |
PP-OCRv5_mobile_det | 轻量文本检测模型,效率更高,适合在端侧设备部署 | Github (opens new window) |
PP-OCRv4_server_det | 服务端文本检测模型,精度更高,适合在性能较好的服务器上部署 | Github (opens new window) |
PP-OCRv4_mobile_det | 轻量文本检测模型,效率更高,适合在端侧设备部署 | Github (opens new window) |
文本识别模型
模型名称 | 模型简介 | 模型开源网站 |
---|---|---|
PP-OCRv5_server_rec | (服务端)致力于以单一模型高效、精准地支持简体中文、繁体中文、英文、日文四种主要语言,以及手写、竖版、拼音、生僻字等复杂文本场景的识别。在保持识别效果的同时,兼顾推理速度和模型鲁棒性,为各种场景下的文档理解提供高效、精准的技术支撑。 | Github (opens new window) |
PP-OCRv5_mobile_rec | (轻量)致力于以单一模型高效、精准地支持简体中文、繁体中文、英文、日文四种主要语言,以及手写、竖版、拼音、生僻字等复杂文本场景的识别。在保持识别效果的同时,兼顾推理速度和模型鲁棒性,为各种场景下的文档理解提供高效、精准的技术支撑。 | Github (opens new window) |
PP-OCRv4_server_rec | (服务端)推理精度高,可以部署在多种不同的服务器上 | Github (opens new window) |
PP-OCRv4_mobile_rec | (轻量) 效率更高,适合在端侧设备部署 | Github (opens new window) |
文本方向分类模型(cls)
模型名称 | 模型简介 | 模型开源网站 |
---|---|---|
ch_ppocr_mobile_v2.0_cls | 原始分类器模型,对检测到的文本行文字角度分类 | Github (opens new window) |
PP_LCNET_X0_25 | (轻量)基于PP-LCNet_x0_25的文本行分类模型 | Github (opens new window) |
PP_LCNET_X1_0 | 基于PP-LCNet_x1_0的文本行分类模型 | Github (opens new window) |
表格结构识别(Table Structure Recognition)
模型名称 | 模型简介 | 模型开源网站 |
---|---|---|
SLANet | 该模型通过轻量级骨干 PP-LCNet、CSP-PAN 融合与 SLA Head 解码,有效提升表格结构识别的精度与速度。 | Github (opens new window) |
SLANet_plus | (增强版)该模型通过轻量级骨干 PP-LCNet、CSP-PAN 融合与 SLA Head 解码,有效提升表格结构识别的精度与速度。 | Github (opens new window) |
车牌检测模型(License Plate Detection)
模型名称 | 模型简介 | 模型开源网站 |
---|---|---|
YOLOV5 | 基于YOLOV5训练,支持12种中文车牌 | Github (opens new window) |
yolov7-lite-t | (超小型模型)YOLOv7-Lite 架构的轻量级车牌检测模型 | Github (opens new window) |
yolov7-lite-s | YOLOv7-Lite 架构的轻量级车牌检测模型 | Github (opens new window) |
车牌识别模型(License Plate Recognition)
模型名称 | 模型简介 | 模型开源网站 |
---|---|---|
PLATE_REC_CRNN | CRNN中文字符识别 | Github (opens new window) |
# 机器翻译模型
支持功能
- 200多语言互相翻译
模型名称 | 模型简介 | 模型官网 |
---|---|---|
NLLB-200 | Meta AI 开发的一个先进的单一多语言机器翻译模型 | Github (opens new window) |
# 联系方式
如您在使用过程中有任何问题或建议,欢迎添加微信,与我们交流并加入用户交流群
- 微信: deng775747758 (请备注:SmartJavaAI)
- Email: 775747758@qq.com
🚀 如果这个项目对你有帮助,别忘了点个 Star ⭐!你的支持是我持续优化升级的动力! ❤️
人脸识别 →