0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

高通AI Hub:轻松实现Android图像分类

大大通 ? 2024-11-26 01:03 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

上一篇博文“Qualcomm AI Hub介绍”。高通AI Hub为开发者提供了一个强大的平台,以优化、验证和部署在Android设备上的机器学习模型。这篇文章将介绍如何使用高通AI Hub进行图像分类的程式码开发,并提供一个实际的例子来展示其在Android平台上的应用。

程式码介绍

高通AI Hub支持多种机器学习框架,如TensorFlow Lite、Quancomm AI Engine Direct和ONNX Runtime,并能够将训练好的模型转换为优化的on-device执行格式。开发者可以通过AI Hub的模型库,选择适合自己应用需求的模型,并进行相应的优化。此外,AI Hub还提供了详细的on-device性能分析工具,帮助开发者了解模型在实际设备上的运行情况。

于官方提供的Github ai-hub-apps进行下载,使用Android Studio开启app/android,就可以看到ImageClassification、SemanticSegmentation及SuperResolution,本篇博文介绍ImageClassification程式码的部分及执行,使用Android Studio开启专案画面如下图:

wKgaomdFfweABGA5AAOeSe1BmGg453.png


ImageProcessing.java

里面有一个静态方法 resizeAndPadMaintainAspectRatio,其功能是调整图片大小,同时维持图片的宽高比(Aspect Ratio)。如果图片无法完全符合给定的输出尺寸,则会加入填充区域(padding),使得最终输出的图片符合要求的宽度和高度。

TFLiteHelpers.java:

TensorFlow Lite (TFLite) 的辅助工具,用于为 TensorFlow Lite 模型建立解译器(interpreter)和相应的硬件加速委派(delegate),例如 GPU 或 NPU。主要功能是根据指定的硬件加速选项,自动尝试为 TFLite 模型分配不同的硬件委派来优化推论性能。

CreateInterpreterAndDelegatesFromOptions

用于根据指定的优先级顺序,创建 TFLite 解译器并分配硬件加速委派。它会根据委派的优先顺序来尝试分配不同的委派类型,如 GPU 或 NPU,并在无法使用时降级至 CPU 运算(例如使用 XNNPack 提供的 CPU 加速)。

CreateInterpreterFromDelegates

此函式实际上是根据之前创建的委派来生成解译器。主要负责配置 TFLite 解译器的参数,例如 CPU 线程数和是否使用 XNNPack 作为后备计算选项。若解译器创建失败,则会记录失败原因并返回 null。

CreateDelegate

此函式根据指定的委派类型(如 GPUv2 或 QNN_NPU)创建对应的硬件委派。每一个委派都有对应的函式进行初始化,例如 CreateGPUv2Delegate 或 CreateQNN_NPUDelegate。

CreateGPUv2Delegate

这个函式负责创建和配置 GPUv2 委派,它会将 GPU 设定为最大性能模式,允许使用浮点精度 FP16 进行计算,来提升 GPU 运行效率。

CreateQNN_NPUDelegate

此函式负责为支持 Qualcomm NPU 的装置创建 QNN 委派,根据装置支持的硬件类型来选择使用 DSP 或 HTP 来加速推论计算。

ImageClassification.java:

基于 TensorFlow Lite 的影像分类器,用来从给定的影像中推测出最有可能的物件类别。主要的功能包括模型的加载、预处理影像、推论以及后处理推论结果,并且能够返回处理时间等性能资讯。

ImageClassification

功能:从指定的模型和标签路径中创建影像分类器。

参数:

context:应用程式的上下文。

modelPath:模型文件的路径。

labelsPath:标签文件的路径。

delegatePriorityOrder:指定计算单元优先顺序(例如 GPU、CPU 等)。

preprocess

功能:将输入的影像预处理为模型可以接受的格式。

步骤:

检查影像尺寸是否符合模型的输入要求,必要时进行缩放。

根据模型的数据类型(如 FLOAT32 或 UINT8)转换影像数据。

postprocess

功能:将模型输出的结果转换为可读取的标签(类别)。

步骤:

读取模型的输出。

根据预测值选出信心最高的几个结果(TOP-K),并转换为对应的标签名称。

predictClassesFromImage()

功能:对给定的影像进行分类,返回最有可能的类别。

步骤:
进行预处理(preprocess)。

使用解释器进行推论。

后处理输出结果(postprocess)。

返回分类结果。

findTopKFloatIndices() 和 findTopKByteIndices()

功能:从模型输出的数据中找出信心最高的 K 个结果,分别处理 float 和 byte 类型的输出。

实现:使用优先伫列(PriorityQueue)来追踪最大值,并返回这些最大值对应的索引

MainActivity.java:

使用 TensorFlow Lite 来进行影像分类。它主要负责初始化 UI 元件、管理影像选择与处理、并进行模型推论。如果执行时发生图像读取错误问题,需要在loadImageFromStringAsync函式做调整:

// try (InputStream inputImage = getAssets().open("images/" + imagePath))

try (InputStream inputImage = getAssets().open( imagePath))

模型及App执行

TFLite模型:

模型部分可以依据AI Hub提供的Image Classification选项的TFLite模型,下载自己所需的模型,并放置于ImageClassification/src/main/assets档案夹底下,修改Android Studio内的 gradle.properties,修改:classification_tfLiteModelAsset=xxxxxxx.tflite

程式运作:

高通AI Hub提供的Android程式码,除了在高通提供相关芯片的开发板上执行,也可以在拥有高通芯片的手机上执行,实机测试是使用小米11手机。

执行结果如下方Gif动画,App最下方Image透过下拉式选单选择内建的三张图片或相簿图片,选择完成后上方会出现选择的图片,按下RUN MODEL按钮即可开始推论,当然也可以选择CPU Only体验一下没有硬件加速的推论时间,而All Hardware则会使用QNN_NPU + GPUv2 + XNNPack等硬件加速。

wKgaomdFfwiAMYJTAHYriBtf1IA347.gif

小结

本篇博文就到这里,通过高通AI Hub Android开发者可以更轻松地将先进的AI模型集成到他们的应用中。高通AI Hub的文档和模型库提供了丰富的资源,帮助开发者探索和实现AI领域的应用。

参考

ai-hub-apps

AI Hub Image Classification

Q&A

问:如何获取高通AI Hub Model的ImageClassification模型?

答:您可以访问高通AI Hub的GitHub页面或官方网站,这里提供了模型的开源代码和安装指南。

问:部署模型时需要注意哪些性能和精度问题?

答:在部署模型时,您需要考虑模型的延迟、记忆体使用等性能指标,以及模型在特定设备上的精度。高通AI Hub提供了性能指标和优化指南,帮助您选择最适合您需求的模型。

问:如果在部署过程中遇到问题,该如何解决?

答:如果在模型部署过程中遇到性能、精度或其他问题,您可以通过高通AI Hub的支持Slack 提交问题。此外,您也可以参考官方文档中的疑难解答部分。

问:高通AI Hub Model可以在哪些设备上运行?

答:高通AI Hub Model支持在多种设备上运行,包括但不限于Snapdragon 845, Snapdragon 855/855+, Snapdragon 865/865+, Snapdragon 888/888+等多款芯片组的设备。

登录大大通网站阅读原文,提问/评论,获取技术文档等更多资讯!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 高通
    +关注

    关注

    78

    文章

    7630

    浏览量

    193468
  • Android
    +关注

    关注

    12

    文章

    3974

    浏览量

    130488
  • 开发板
    +关注

    关注

    25

    文章

    5725

    浏览量

    105589
  • Qualcomm
    +关注

    关注

    8

    文章

    679

    浏览量

    53556
  • tensorflow
    +关注

    关注

    13

    文章

    330

    浏览量

    61231
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Android Studio中的Gemini支持多模态输入功能

    在开发生命周期的每个阶段,Android Studio 中的 Gemini 都已成为您的 AI 助手,助您更轻松地构建高质量的应用。我们很高兴地与您分享一项重大升级:Android S
    的头像 发表于 05-14 16:44 ?551次阅读

    在友晶LabCloud平台上使用PipeCNN实现ImageNet图像分类

    利用深度卷积神经网络(CNN)进行图像分类是通过使用多个卷积层来从输入数据中提取特征,最后通过分类层做决策来识别出目标物体。
    的头像 发表于 04-23 09:42 ?459次阅读
    在友晶LabCloud平台上使用PipeCNN<b class='flag-5'>实现</b>ImageNet<b class='flag-5'>图像</b><b class='flag-5'>分类</b>

    基于RV1126开发板实现自学习图像分类方案

    在RV1126开发板上实现自学习:在识别前对物体图片进行模型学习,训练完成后通过算法分类得出图像的模型ID。 方案设计逻辑流程图,方案代码分为分为两个业务流程,主体代码负责抓取、合成
    的头像 发表于 04-21 13:37 ?11次阅读
    基于RV1126开发板<b class='flag-5'>实现</b>自学习<b class='flag-5'>图像</b><b class='flag-5'>分类</b>方案

    AI开发工具分类与功能

    当下,AI开发工具不仅简化了AI开发的复杂流程,还提高了开发效率,推动了AI技术的广泛应用。下面,AI部落小编为大家介绍AI开发工具的
    的头像 发表于 04-12 10:12 ?421次阅读

    行业集结:共同定制 RK3566 集成 AI 眼镜的前沿 AR 方案

    硬编码· 超低功耗,路由器连接保活况下功耗低于 150uA· 内置语音唤醒 / 命令词· 方案成熟度,声音和图像上传手机和服务器已有多个成熟案例,并有配套 APP适用场景与产品特性AI 眼镜具备
    发表于 02-20 18:44

    使用卷积神经网络进行图像分类的步骤

    使用卷积神经网络(CNN)进行图像分类是一个涉及多个步骤的过程。 1. 问题定义 确定目标 :明确你想要分类图像类型,例如猫和狗、不同的植物种类等。 数据需求 :确定需要多少数据以及
    的头像 发表于 11-15 15:01 ?889次阅读

    如何在Android上构建自定义AI功能

    在 "AI on Android Spotlight Week" 期间,我们深入探讨了如何将自己的 AI 模型引入 Android 设备,如手机、平板电脑等。通过利用
    的头像 发表于 11-15 11:51 ?1823次阅读

    AI图像识别摄像机

    AI图像识别摄像机是一种集成了先进算法和深度学习模型的智能监控设备。这些摄像机不仅能够捕捉视频画面,还能实时分析和处理所拍摄的内容,从而实现对特定对象、场景或行
    的头像 发表于 11-08 10:38 ?925次阅读
    <b class='flag-5'>AI</b><b class='flag-5'>图像</b>识别摄像机

    手把手教你使用LabVIEW TensorRT实现图像分类实战(含源码)

    Hello,大家好,我是virobotics(仪酷智能),一个深耕于LabVIEW和人工智能领域的开发工程师。 各位朋友,今天我们一起来探究一下如何基于LabVIEW使用TensorRT实现图像分类
    的头像 发表于 11-06 16:07 ?899次阅读
    手把手教你使用LabVIEW TensorRT<b class='flag-5'>实现</b><b class='flag-5'>图像</b><b class='flag-5'>分类</b>实战(含源码)

    ASTRA AI Hub详细介绍

    ASTRA AI Hub以其强大的边缘计算能力、低成本的AI升级方案、持续的产品价值提升、高级的视觉识别应用以及端云智能交互的能力,为行业数字化转型和消费智能化升级提供了有力的支持。
    的头像 发表于 10-24 16:23 ?756次阅读
    ASTRA <b class='flag-5'>AI</b> <b class='flag-5'>Hub</b>详细介绍

    RK3588 技术分享 | 在Android系统中使用NPU实现Yolov5分类检测

    NPU。 应用领域 图像识别: NPU能够迅速对图像进行分类、检测和分割等操作,大大提升了处理效率。 语音识别: NPU实现了实时语音转换和语音合成功能,为语音交互提供了更自然的体验。
    发表于 10-24 10:13

    AI大模型在图像识别中的优势

    大模型借助高性能的计算硬件和优化的算法,能够在短时间内完成对大量图像数据的处理和分析,显著提高了图像识别的效率。 识别准确性 :通过深度学习和计算机视觉技术,AI大模型能够自动提取图像
    的头像 发表于 10-23 15:01 ?2497次阅读

    Freepik携手Magnific AI推出AI图像生成器

    近日,设计资源巨头Freepik携手Magnific AI,共同推出了革命性的AI图像生成器——Freepik Mystic,这一里程碑式的发布标志着AI
    的头像 发表于 08-30 16:23 ?1622次阅读

    RK3588 技术分享 | 在Android系统中使用NPU实现Yolov5分类检测-迅为电子

    RK3588 技术分享 | 在Android系统中使用NPU实现Yolov5分类检测-迅为电子
    的头像 发表于 08-23 14:58 ?1417次阅读
    RK3588 技术分享 | 在<b class='flag-5'>Android</b>系统中使用NPU<b class='flag-5'>实现</b>Yolov5<b class='flag-5'>分类</b>检测-迅为电子

    RK3588 技术分享 | 在Android系统中使用NPU实现Yolov5分类检测

    NPU。 应用领域 图像识别: NPU能够迅速对图像进行分类、检测和分割等操作,大大提升了处理效率。 语音识别: NPU实现了实时语音转换和语音合成功能,为语音交互提供了更自然的体验。
    发表于 08-20 11:13