有一个用Python编写的项目,它使用YOLO分割来检测一些对象,预测是通过ultralytics/yolo库完成的,需要一种方法将该项目的代码翻译成Java
Примерный код
model = YOLO("best.pt")
result = model(["pict1.png", "pict2.png"])
我不需要显示图像本身,我只需要找到的对象蒙版的坐标
基于当前可用的库,在 Java 中执行 YOLO 对象检测的最佳解决方案是使用 DarknetJava 库。 DarknetJava 是 Darknet 框架的 Java 包装器,它是用于 YOLO 对象检测的原始框架。
以下是在 Java 中使用 DarknetJava 进行 YOLO 对象检测的分步计划:
按照 DarknetJava 存储库中提供的说明下载并设置 DarknetJava。
将 YOLO 权重文件(best.pt)转换为与 DarknetJava 兼容的格式。 DarknetJava 要求权重文件采用 .weights 格式。您可以使用 darknet 命令行工具使用以下命令转换权重文件:
./darknet partial cfg/yolov3.cfg best.weights yolov3.weights 185
这将创建一个可与 DarknetJava 一起使用的 yolov3.weights 文件。
DarknetJNI darknet = DarknetJNI.INSTANCE;
darknet.init();
Pointer network = darknet.loadNetwork("cfg/yolov3.cfg", "yolov3.weights", 0);
加载要执行对象检测的图像。 DarknetJava 要求图像采用特定格式(RGB、宽度 x 高度 x 通道),因此您可能需要相应地转换图像。
通过 YOLO 网络传递图像来执行对象检测:
Pointer image = darknet.loadImage("path/to/image.jpg");
Pointer[] detections = darknet.detect(network, image, 0.5f, 0.5f);
0.5f值分别是置信阈值和非最大抑制阈值。您可以根据您的要求调整这些值。
请注意,此解决方案假设您已成功设置 DarknetJava 并转换了 YOLO 权重文件。请务必参考 DarknetJava 文档和示例以获取准确的使用说明。