如何在Java中使用YOLO?

问题描述 投票:0回答:1

有一个用Python编写的项目,它使用YOLO分割来检测一些对象,预测是通过ultralytics/yolo库完成的,需要一种方法将该项目的代码翻译成Java

Примерный код

model = YOLO("best.pt")
result = model(["pict1.png", "pict2.png"])

我不需要显示图像本身,我只需要找到的对象蒙版的坐标

java yolo yolov8 ultralytics
1个回答
0
投票

基于当前可用的库,在 Java 中执行 YOLO 对象检测的最佳解决方案是使用 DarknetJava 库。 DarknetJava 是 Darknet 框架的 Java 包装器,它是用于 YOLO 对象检测的原始框架。

以下是在 Java 中使用 DarknetJava 进行 YOLO 对象检测的分步计划:

  1. 按照 DarknetJava 存储库中提供的说明下载并设置 DarknetJava。

  2. 将 YOLO 权重文件(best.pt)转换为与 DarknetJava 兼容的格式。 DarknetJava 要求权重文件采用 .weights 格式。您可以使用 darknet 命令行工具使用以下命令转换权重文件:

./darknet partial cfg/yolov3.cfg best.weights yolov3.weights 185

这将创建一个可与 DarknetJava 一起使用的 yolov3.weights 文件。

  1. 初始化DarknetJava框架并加载转换后的权重文件:
DarknetJNI darknet = DarknetJNI.INSTANCE;
darknet.init();
Pointer network = darknet.loadNetwork("cfg/yolov3.cfg", "yolov3.weights", 0);
  1. 加载要执行对象检测的图像。 DarknetJava 要求图像采用特定格式(RGB、宽度 x 高度 x 通道),因此您可能需要相应地转换图像。

  2. 通过 YOLO 网络传递图像来执行对象检测:

Pointer image = darknet.loadImage("path/to/image.jpg");
Pointer[] detections = darknet.detect(network, image, 0.5f, 0.5f);

0.5f值分别是置信阈值和非最大抑制阈值。您可以根据您的要求调整这些值。

  1. 从检测数组中提取物体检测结果并根据需要进行处理。每个检测将包含检测到的对象的边界框坐标和类标签。

请注意,此解决方案假设您已成功设置 DarknetJava 并转换了 YOLO 权重文件。请务必参考 DarknetJava 文档和示例以获取准确的使用说明。

© www.soinside.com 2019 - 2024. All rights reserved.