baidu_23078617 2021-09-23 15:38 采纳率: 100%
浏览 173
已结题

使用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();
        }



  • 写回答

2条回答 默认 最新

  • 虹幺 2021-09-29 23:16
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月8日
  • 已采纳回答 9月30日
  • 修改了问题 9月23日
  • 修改了问题 9月23日
  • 展开全部

悬赏问题

  • ¥15 Python输入字符串转化为列表排序具体见图,严格按照输入
  • ¥20 XP系统在重新启动后进不去桌面,一直黑屏。
  • ¥15 opencv图像处理,需要四个处理结果图
  • ¥15 无线移动边缘计算系统中的系统模型
  • ¥15 深度学习中的画图问题
  • ¥15 java报错:使用mybatis plus查询一个只返回一条数据的sql,却报错返回了1000多条
  • ¥15 Python报错怎么解决
  • ¥15 simulink如何调用DLL文件
  • ¥15 关于用pyqt6的项目开发该怎么把前段后端和业务层分离
  • ¥30 线性代数的问题,我真的忘了线代的知识了