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

使用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日
  • 展开全部

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!