You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DevEco Studio中目标检测开发相关问题咨询

背景与问题

本人是DevEco Studio开发新手,此前已在Android Studio中基于TFLite和YOLOv5 PyTorch实现目标检测功能,现希望在DevEco Studio中完成开发,目前遇到以下问题:

  1. 已引入依赖的TFLite和PyTorch库无法使用,因二者类仅适配Android,且DevEco Studio与Android Studio的变量、函数命名不同(如Android Studio的RectF对应DevEco Studio的RectFloat);
  2. 使用DJL(Deep Java Library) PyTorch时,出现错误“[tablet] SEVERE ai.djl.engine.EngineException: No deep learning engine found”,相关代码如下:
private void init(){
        ImageClassificationTranslator translator = ImageClassificationTranslator.builder()
                .addTransform(new RandomResizedCrop(INPUT_SIZE, INPUT_SIZE, 0.6, 1,
                        3. / 4, 4. / 3))
                .addTransform(new ToTensor())
                .addTransform(new Normalize(
                        new float[] {0.5f,0.5f,0.5f},
                        new float[] {0.5f,0.5f,0.5f}))
                .optApplySoftmax(true)
                .optSynset(herbsNames)
                .optTopK(5)
                .build();
        HiLog.debug(LOG_LABEL, "debug process:v---------alue:%{private}s", translator);
        //Engine engine = Engine.getEngine(PtEngine.ENGINE_NAME);
        Model model = Model.newInstance("model", Device.cpu()); //Problem is here
        HiLog.debug(LOG_LABEL, "debug process:v---------alue:%{private}s", model);
        try{
            InputStream inputStream = HerbUtil.class.getClassLoader().getResourceAsStream("yolov5s.pt");
            HiLog.debug(LOG_LABEL, "debug process:v---------alue:%{private}s", inputStream);
            if (inputStream == null){
                throw new RuntimeException("ERROR");
            }
            model.load(inputStream);

            predictor = model.newPredictor(translator);
        } catch (MalformedModelException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
  1. 所用Android Studio为Dolphin版本,HMS Toolkit无法在此版本及以上使用,只能使用DevEco Studio。

由于需实现离线实时目标检测,追求速度与精度,现提出以下疑问:

  1. 能否将Android Studio代码转换至DevEco Studio?
  2. DevEco Studio有哪些可用的目标检测工具?
  3. 能否在DevEco Studio或华为设备上运行Android程序?

问题解答

现有问题修复建议

1. TFLite/PyTorch库适配DevEco Studio问题

DevEco Studio基于HarmonyOS,与Android API存在差异,直接用Android版库会出现类不兼容,解决方式:

  • 替换专属类:把Android的RectF、Bitmap等类替换为HarmonyOS对应的RectFloat、PixelMap,手动适配API差异;
  • 换用兼容推理库:优先使用华为官方适配HarmonyOS的AI推理框架,或者将TFLite模型通过ModelArts转换为OM格式,用HarmonyOS的HiAI Engine进行推理。

2. DJL PyTorch引擎未找到错误

该错误源于DJL未找到适配HarmonyOS的PyTorch引擎实现,修复方法:

  • 检查依赖配置:添加DJL针对HarmonyOS的PyTorch引擎依赖,确保版本匹配;
  • 手动指定引擎:取消注释代码中的Engine engine = Engine.getEngine(PtEngine.ENGINE_NAME);,明确指定使用PyTorch引擎,同时确认引擎包已正确引入;
  • 适配模型格式:DJL在HarmonyOS上对.pt模型支持有限,建议将PyTorch模型转换为TorchScript格式(.ptl)后再加载。

疑问解答

1. Android Studio代码能否转换至DevEco Studio?

可以转换,但无法一键自动完成,需手动适配HarmonyOS API:

  • 替换基础类:将Android的Activity换为HarmonyOS的Ability,View组件换为ArkUI组件,IO、日志等API替换为HarmonyOS对应接口;
  • 适配AI推理部分:替换TFLite/PyTorch的Android专属调用,改用HarmonyOS兼容的推理方式;
  • 适配资源文件:将XML布局转换为ArkTS的UI描述,或通过兼容层保留XML布局(后者会影响性能)。

2. DevEco Studio可用的目标检测工具

  • HiAI Engine:华为官方AI引擎,支持离线目标检测,可集成预训练模型或自定义转换的OM模型,适配华为硬件加速;
  • DJL HarmonyOS版:适配HarmonyOS的DJL分支,支持TFLite、TorchScript格式的PyTorch模型,需配置对应引擎依赖;
  • 自定义TFLite封装:用HarmonyOS的NAPI接口封装TFLite的C++库,实现底层推理,适合高性能需求场景;
  • ModelArts模型转换:将YOLOv5等模型转换为OM格式,通过HiAI Engine部署到HarmonyOS设备,最大化利用硬件性能。

3. 能否在DevEco Studio或华为设备上运行Android程序?

  • DevEco Studio本身不支持直接运行Android程序,它是针对HarmonyOS开发的IDE;
  • 搭载HarmonyOS的华为设备支持运行Android程序,直接安装APK即可;若需在IDE中调试Android应用,仍需使用Android Studio,部分DevEco Studio版本支持Android兼容开发套件,但优先推荐用Android Studio处理。

内容的提问来源于stack exchange,提问作者Kusanagi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 23:42:31