DevEco Studio中目标检测开发相关问题咨询
背景与问题
本人是DevEco Studio开发新手,此前已在Android Studio中基于TFLite和YOLOv5 PyTorch实现目标检测功能,现希望在DevEco Studio中完成开发,目前遇到以下问题:
- 已引入依赖的TFLite和PyTorch库无法使用,因二者类仅适配Android,且DevEco Studio与Android Studio的变量、函数命名不同(如Android Studio的
RectF对应DevEco Studio的RectFloat); - 使用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(); } }
- 所用Android Studio为Dolphin版本,HMS Toolkit无法在此版本及以上使用,只能使用DevEco Studio。
由于需实现离线实时目标检测,追求速度与精度,现提出以下疑问:
- 能否将Android Studio代码转换至DevEco Studio?
- DevEco Studio有哪些可用的目标检测工具?
- 能否在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
相关产品推荐
相关产品推荐

