一个 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 个关键点坐标
SAM2Result result = sam.predict("cat.jpg",
new PointPrompt(100, 200, POSITIVE));
// 点哪里,分哪里
SAM3Result result = sam.predict("street.jpg", "red car");
// 自然语言概念级分割
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 共享内存桥接。

关键设计:
TensorBufferPool 避免 Java-Python 数据拷贝不是只能推理。是完整 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));
测试 | 覆盖 |
|---|---|
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 / SAM 2/3 / MediaPipe / OpenCV
计划中:
Java 程序员做 AI,不需要 Python 工程师,不需要双服务架构,不需要阉割版 API。
一个 Maven 依赖,六行代码,在 JVM 里跑完整的 PyTorch 生态——训练、推理、SAM、MediaPipe,全搞定。
Gitee: gitee.com/javpower/jpy-ml
GitHub:github.com/javpower/jpy-ml
如果你也是 Java 技术栈,被 AI 需求折磨过,这个项目可能省你三个月。
一个依赖,一行加载,一行推理。