Java AI 框架,让 YOLO 在 JVM 里原生跑 GPU

一个 Maven 依赖。六行代码。在 Java 里直接调用 PyTorch CUDA,零 Python 配置。


在这里插入图片描述

先问一个问题

你团队的技术栈是 Java,老板突然说:“加个 AI 检测功能,识别产线上的缺陷。”

你怎么办?

三个方案,三种妥协。

我选了第四条路:让 Java 直接跑 Python 的 AI 生态,进程内,GPU 加速,强类型 API,训练推理一条龙。


六行代码,能做什么?

检测

try (Model model = Model.preset("yolov8n")) {
    DetectionResult result = model.predict("photo.jpg");
    System.out.println(result.toJson());
}
// {"task":"detect","count":6,"boxes":[...]}

分割

SegmentationResult result = model.predict("photo.jpg");
Mask mask = result.getMasks().get(0);
// 像素级掩码,不是框

姿态

PoseResult result = model.predict("dance.jpg");
Keypoint nose = result.getKeypoints().get(0).getNose();
// 17 个关键点坐标

SAM 2:点一下,分割出来

SAM2Result result = sam.predict("cat.jpg", 
    new PointPrompt(100, 200, POSITIVE));
// 点哪里,分哪里

SAM 3:说句话,分割出来

SAM3Result result = sam.predict("street.jpg", "red car");
// 自然语言概念级分割

MediaPipe:手部 21 关键点

HandResult result = mp.detectHands("hand.jpg");
// 478 面部关键点 / 33 姿态关键点 同样一行

注意Model.preset("yolov8n") 自动下载模型。你不用翻 HuggingFace,不用手动拷贝权重文件。


和传统方案的区别

REST 调 Python ONNX Runtime Java jpy-ml
调用方式 HTTP 往返 本地推理 JNI 进程内
类型安全 Map<String, Object> 强转地狱 依赖 ONNX Java API DetectionResult 强类型
GPU 支持 ✅(Python 端) ✅ CUDA/TensorRT ✅ 完整 PyTorch 生态
训练能力 ✅ 训练 + 验证 + 导出
模型管理 手动 手动 ✅ 自动下载缓存
部署形态 Java + Python 两个服务 单服务 单 JVM,一个 Jar 包
SAM/MediaPipe 再搭一个服务 不支持 ✅ 内置

关键差异:ONNX Runtime Java 是"推理工具",jpy-ml 是"完整 ML 平台"——训练、验证、导出、推理、SAM、MediaPipe,全在 JVM 里。


架构:怎么做到的?

不是 Python 子进程。不是 HTTP 调用。是 JNI 共享内存桥接

关键设计:

  • 单例 PythonEngine:Jep 限制每 JVM 一个解释器,通过变量名前缀隔离多模型
  • sys.path 过滤:自动解决 Homebrew 系统包冲突
  • 零拷贝桥接TensorBufferPool 避免 Java-Python 数据拷贝
  • AutoCloseable:模型关闭时 Python 变量置 None,GC 友好

覆盖模型全生命周期

不是只能推理。是完整 MLOps

// 训练
TrainingResult result = model.train(config, (epoch, log) -> {
    System.out.println("Epoch " + epoch + ": " + log);
});

// 验证
ValidationResult val = model.validate("coco128.yaml");

// 导出 TensorRT FP16
model.export(ExportFormat.ENGINE, new ExportConfig().half(true));

质量:106 个测试,0 失败

测试 覆盖
YOLO 检测/分割/分类/姿态/OBB
SAM 2 点/框/视频跟踪
SAM 3 文本/图像提示
MediaPipe 手部/面部/姿态
OpenCV 图像处理
训练 + 验证 + 导出
异步推理 + 视频流
零拷贝 + GPU 内存管理

不是 Demo。是生产级框架。


怎么用?

<dependency>
    <groupId>io.github.javpower</groupId>
    <artifactId>jpy-ml</artifactId>
    <version>1.0.0</version>
</dependency>
// 六行代码,开始检测
try (Model model = Model.preset("yolov8n")) {
    DetectionResult result = model.predict("photo.jpg");
    System.out.println(result.toJson());
}

要求:JDK 17 Temurin(不要用 GraalVM,JNI 会崩),Python 3.13 venv。


路线图:不止 YOLO

已完成:YOLO / SAM 2/3 / MediaPipe / OpenCV

计划中:

  • HuggingFace Transformers(NLP、嵌入)
  • Whisper(语音)
  • Stable Diffusion(图像生成)
  • DeepSeek / LLM 推理
  • Spring Boot Starter

一句话总结

Java 程序员做 AI,不需要 Python 工程师,不需要双服务架构,不需要阉割版 API。

一个 Maven 依赖,六行代码,在 JVM 里跑完整的 PyTorch 生态——训练、推理、SAM、MediaPipe,全搞定。


Gitee: gitee.com/javpower/jpy-ml

GitHub:github.com/javpower/jpy-ml


如果你也是 Java 技术栈,被 AI 需求折磨过,这个项目可能省你三个月。

一个依赖,一行加载,一行推理。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐