使用DJL+yolov5,在将项目打成jar包后运行提示ModelNotFoundException,找不到djl api中的输入输出类是为什么

这个项目中使用了djl api中的ai.djl.modality.cv.Image 和 class ai.djl.modality.cv.output.DetectedObjects
在idea中运行项目是正常的,打成jar包后运行就有这个问题。jar包中的djl api 也是存在的,求解!
jdk1.8 djl0.11.0

img

代码:


        YoloV5Translator translate = YoloV5Translator.builder()
                .optSynsetArtifactName("coco.names").build();

        Criteria<Image, DetectedObjects> criteria =
                Criteria.builder().setTypes(Image.class, DetectedObjects.class)
                        .optDevice(Device.cpu())
                        .optModelUrls(AsyncTask.class.getResource("/yolov5s").getPath())
                        .optModelName("yolov5s.torchscript.pt")
                        .optTranslator(translate)
                        .optEngine("PyTorch")
                        .build();

        System.out.println(criteria);
        //下面这步ModelZoo.loadModel 加载criteria报错
        try (ZooModel<Image, DetectedObjects> model = ModelZoo.loadModel(criteria)) {
            VideoCapture capture = new VideoCapture();

            capture.open("rtsp://admin:admin@"+ip+":554/h264/ch1/sub/av_stream");
            if (!capture.isOpened()) {
                System.out.println("Camera Error!");
            } else {

                Mat frame = new Mat();//创建一个输出帧
                int num=0;
                boolean flag = capture.read(frame);//read方法读取摄像头的当前帧
                while (flag) {
                    //重新设置图片的宽高
                    Size sz = new Size(640, 480);
                    Mat im = new Mat();
                    Imgproc.resize(frame, im, sz);

                    HighGui.imshow("yolov5", im);
                    HighGui.waitKey(20);

                    if(num % 50 == 0){
                        detect(im, model,ip);
                    }
                    if(num>200000){
                        num = 0;
                    }else{
                        num++;
                    }
                    flag = capture.read(frame);
                }
                capture.release();
            }
        } catch (RuntimeException | ModelException | IOException | TranslateException e) {
            e.printStackTrace();
        }



试一下optModelUrls用绝对路径,然后把模型放在jar包外吧

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。