Using board = Khadas Vim3
OS = Armbian Latest (Debian Trixie)
Architecture = aarch64 (arm8)
Using PyTorch code for yolo11n from djl model zoo works in windows and linux with architecture amd64 but fails with aarch64
Code
package com.kgprojects.pretrained.ultralytics.yolo;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.nio.file.Paths;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.SystemUtils;
import ai.djl.Application;
import ai.djl.inference.Predictor;
import ai.djl.modality.cv.Image;
import ai.djl.modality.cv.ImageFactory;
import ai.djl.modality.cv.output.DetectedObjects;
import ai.djl.modality.cv.translator.YoloV8TranslatorFactory;
import ai.djl.repository.zoo.Criteria;
import ai.djl.repository.zoo.ZooModel;
import ai.djl.training.util.ProgressBar;
public class UltralyticsYoloModelDefault11
{
public static void main(String[] args)throws Exception
{
Criteria<Image, DetectedObjects> criteria = Criteria.builder()
.setTypes(Image.class, DetectedObjects.class)
.optApplication(Application.CV.OBJECT_DETECTION)
.optModelUrls("djl://ai.djl.pytorch/yolo11n")
.optTranslatorFactory(new YoloV8TranslatorFactory())
.optProgress(new ProgressBar())
.build();
ZooModel<Image, DetectedObjects> model = criteria.loadModel();
Predictor<Image, DetectedObjects> predictor = model.newPredictor();
File output = Paths.get(SystemUtils.USER_DIR, "output").toFile();
for(File content : output.listFiles())
{
FileUtils.delete(content);
}
for(File imgFile : Paths.get(SystemUtils.USER_DIR, "input","yolo11objectdetection")
.toFile().listFiles())
{
System.out.println(imgFile.getAbsolutePath());
Image image = ImageFactory.getInstance().fromFile(imgFile.toPath());
DetectedObjects result = predictor.predict(image);
System.out.println(result);
image.drawBoundingBoxes(result);
OutputStream os = new FileOutputStream(new File(output,imgFile.getName()));
image.save(os, "png");
os.close();
}
}
}
output
SLF4J(W): No SLF4J providers were found.
SLF4J(W): Defaulting to no-operation (NOP) logger implementation
SLF4J(W): See https://www.slf4j.org/codes.html#noProviders for further details.
Loading: 100% |████████████████████████████████████████|
[WARNING]
ai.djl.engine.EngineException: Failed to load PyTorch native library
at ai.djl.pytorch.engine.PtEngine.newInstance (PtEngine.java:90)
at ai.djl.pytorch.engine.PtEngineProvider.getEngine (PtEngineProvider.java:41)
at ai.djl.engine.Engine.getEngine (Engine.java:195)
at ai.djl.Model.newInstance (Model.java:99)
at ai.djl.repository.zoo.BaseModelLoader.createModel (BaseModelLoader.java:218)
at ai.djl.repository.zoo.BaseModelLoader.loadModel (BaseModelLoader.java:169)
at ai.djl.repository.zoo.Criteria.loadModel (Criteria.java:151)
at com.kgprojects.pretrained.ultralytics.yolo.UltralyticsYoloModelDefault11.main (UltralyticsYoloModelDefault11.java:32)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
at java.lang.reflect.Method.invoke (Method.java:580)
at org.codehaus.mojo.exec.AbstractExecJavaBase.executeMainMethod (AbstractExecJavaBase.java:402)
at org.codehaus.mojo.exec.ExecJavaMojo.executeMainMethod (ExecJavaMojo.java:142)
at org.codehaus.mojo.exec.AbstractExecJavaBase.doExecClassLoader (AbstractExecJavaBase.java:377)
at org.codehaus.mojo.exec.AbstractExecJavaBase.lambda$execute$0 (AbstractExecJavaBase.java:287)
at java.lang.Thread.run (Thread.java:1583)
Caused by: java.lang.UnsatisfiedLinkError: /installed/tmp/DJL_CACHE_DIR/pytorch/2.5.1-20241113-cpu-precxx11-linux-aarch64/0.35.1-libdjl_torch.so: /installed/tmp/DJL_CACHE_DIR/pytorch/2.5.1-20241113-cpu-precxx11-linux-aarch64/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /installed/tmp/DJL_CACHE_DIR/pytorch/2.5.1-20241113-cpu-precxx11-linux-aarch64/0.35.1-libdjl_torch.so)
at jdk.internal.loader.NativeLibraries.load (Native Method)
at jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open (NativeLibraries.java:331)
at jdk.internal.loader.NativeLibraries.loadLibrary (NativeLibraries.java:197)
at jdk.internal.loader.NativeLibraries.loadLibrary (NativeLibraries.java:139)
at java.lang.ClassLoader.loadLibrary (ClassLoader.java:2418)
at java.lang.Runtime.load0 (Runtime.java:852)
at java.lang.System.load (System.java:2025)
at ai.djl.pytorch.jni.LibUtils.loadNativeLibrary (LibUtils.java:380)
at ai.djl.pytorch.jni.LibUtils.loadLibrary (LibUtils.java:86)
at ai.djl.pytorch.engine.PtEngine.newInstance (PtEngine.java:53)
at ai.djl.pytorch.engine.PtEngineProvider.getEngine (PtEngineProvider.java:41)
at ai.djl.engine.Engine.getEngine (Engine.java:195)
at ai.djl.Model.newInstance (Model.java:99)
at ai.djl.repository.zoo.BaseModelLoader.createModel (BaseModelLoader.java:218)
at ai.djl.repository.zoo.BaseModelLoader.loadModel (BaseModelLoader.java:169)
at ai.djl.repository.zoo.Criteria.loadModel (Criteria.java:151)
at com.kgprojects.pretrained.ultralytics.yolo.UltralyticsYoloModelDefault11.main (UltralyticsYoloModelDefault11.java:32)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
at java.lang.reflect.Method.invoke (Method.java:580)
at org.codehaus.mojo.exec.AbstractExecJavaBase.executeMainMethod (AbstractExecJavaBase.java:402)
at org.codehaus.mojo.exec.ExecJavaMojo.executeMainMethod (ExecJavaMojo.java:142)
at org.codehaus.mojo.exec.AbstractExecJavaBase.doExecClassLoader (AbstractExecJavaBase.java:377)
at org.codehaus.mojo.exec.AbstractExecJavaBase.lambda$execute$0 (AbstractExecJavaBase.java:287)
at java.lang.Thread.run (Thread.java:1583)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 22.575 s
[INFO] Finished at: 2026-03-28T02:11:51+05:30
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:3.6.3:java (default-cli) on project deep-learning-java: An exception occurred while executing the Java class. Failed to load PyTorch native library: /installed/tmp/DJL_CACHE_DIR/pytorch/2.5.1-20241113-cpu-precxx11-linux-aarch64/0.35.1-libdjl_torch.so: /installed/tmp/DJL_CACHE_DIR/pytorch/2.5.1-20241113-cpu-precxx11-linux-aarch64/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /installed/tmp/DJL_CACHE_DIR/pytorch/2.5.1-20241113-cpu-precxx11-linux-aarch64/0.35.1-libdjl_torch.so) -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
root@khadas-vim3:/installed/lab/deep-learning-java#
Using board = Khadas Vim3
OS = Armbian Latest (Debian Trixie)
Architecture = aarch64 (arm8)
Using PyTorch code for yolo11n from djl model zoo works in windows and linux with architecture amd64 but fails with aarch64
Code
output