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

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

3天内不再提示

为嵌入式应用程序优化 AI

张飞雄 来源:一个黄人 作者:一个黄人 2022-07-20 09:49 次阅读

在我之前的博客中,我谈到了对基于 AI 的界面的需求如何变得几乎不可避免——并且添加一个基于 AI 的界面(如 face-id)来授权对机器的访问,乍一看似乎是一个巨大的飞跃,但实际上并非如此有你想象的那么困难。有大量可用的 AI 平台、大量培训选项甚至开源应用程序,例如face-id 示例。您可以使用可以在 PC 上运行的原型快速启动和测试。

约束

将训练有素的网络迁移到您的嵌入式应用程序似乎是另一个巨大的障碍。PC 或云训练的网络并没有针对内存使用或功耗进行太多优化。他们可能会使用浮点数或双字进行网络计算,并且在处理图像上的滑动窗口时会严重依赖片外内存访问。对于在插入墙上电源的高性能 PC 上运行的原型来说,这不是问题,但您需要在最终应用程序中更加节俭,同时不影响性能。

优化的要点

优化的一个关键步骤称为量化。将权重从浮点切换到定点并减小定点大小,例如从 32 位浮点到 8 位整数,不仅会影响权重的大小,还会影响中间计算值。仅此一项就可以显着减少内存占用,在大多数情况下对识别质量几乎没有明显影响。

第二个操作是利用权重的稀疏性,对准确性的影响最小。这种做法将利用接近零的权重,并将它们四舍五入为零,同时密切跟踪准确性影响。权重用于乘以部分和,当其中一个因素为零时,这是没有意义的练习,因此无需执行操作。

在实际实现中,图像是增量处理的,因此当计算窗口在图像上移动时必须更新权重。这可以带来很多更新和大量流量。通过强制大部分权重为零,可以压缩权重数组,从而可以将所有或大部分数组存储在片上 SRAM 中,以便按需解压缩。这反过来又最大限度地减少了访问主存储器的需要,从而提高了性能并降低了功耗。它还偶然减少了加载重量时的片上流量。更少的流量争用意味着更高的吞吐量。

还应考虑一个因素。像大多数复杂的应用程序一样,神经网络依赖于复杂的库。您需要使用专为在微控制器环境中使用而设计的库,并将编译器用于您选择的平台。一个好的起点可能是开源库,例如TensorFlow Lite,但要充分利用微控制器,就需要专门定制的解决方案。

当然,知道你必须做什么并不容易。您现在需要找到一个能够简化这些操作并提供硬件优化库的平台。

我如何使它成为一个易于使用的流程?

您想要的是一个流程,您可以在其中使用您在特定平台(例如 TensorFlow)上训练的网络,并将其直接编译到您的嵌入式解决方案中——除了拨打一些基本要求外,无需干预。当然,您还希望该选项能够进一步手动优化,可能在不同的平面上设置不同的量化级别。也许可以尝试权重阈值与片上内存大小。您需要针对硬件优化的库和针对库优化的硬件。

CEVA 的CDNN等经过验证的 AI 平台旨在提供这种类型的流程。CDNN 为量化和运行时任务生成提供离线处理器工具集,以及为 CEVA DSP 和客户用户硬件加速器定制的运行时库。CEVA 的解决方案支持所有流行的 AI 模型格式,包括 TensorFlow Lite、ONNX、Caffe 等。

审核编辑 黄昊宇

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

    关注

    5068

    文章

    19017

    浏览量

    303260
  • AI
    AI
    +关注

    关注

    87

    文章

    30140

    浏览量

    268411
收藏 人收藏

    评论

    相关推荐

    【「嵌入式Hypervisor:架构、原理与应用」阅读体验】+全文学习心得

    Hypervisor是一种在嵌入式系统中实现虚拟化技术的关键组件,它能够在同一硬件平台上并行运行多个操作系统或应用程序,提供资源隔离、管理和优化。通过引入时空域隔离的虚拟机,嵌入式Hy
    发表于 10-09 19:11

    嵌入式系统的启动流程

    嵌入式系统的启动流程是一个复杂但有序的过程,它涉及从系统上电到操作系统内核及应用程序启动的多个阶段。
    的头像 发表于 10-05 17:44 291次阅读

    嵌入式linux开发的基本步骤有哪些?

    嵌入式Linux开发是一个复杂的过程,涉及到硬件选择、操作系统移植、驱动开发、应用程序开发等多个方面。以下是嵌入式Linux开发的基本步骤,以及每个步骤的说明。 硬件选择 在开始嵌入式
    的头像 发表于 09-02 09:11 398次阅读

    C28x嵌入式应用程序二进制接口

    电子发烧友网站提供《C28x嵌入式应用程序二进制接口.pdf》资料免费下载
    发表于 08-31 09:39 0次下载
    C28x<b class='flag-5'>嵌入式</b><b class='flag-5'>应用程序</b>二进制接口

    MSP430嵌入式应用程序二进制接口

    电子发烧友网站提供《MSP430嵌入式应用程序二进制接口.pdf》资料免费下载
    发表于 08-30 11:43 0次下载
    MSP430<b class='flag-5'>嵌入式</b><b class='flag-5'>应用程序</b>二进制接口

    C6000嵌入式应用程序二进制接口

    电子发烧友网站提供《C6000嵌入式应用程序二进制接口.pdf》资料免费下载
    发表于 08-29 14:52 0次下载
    C6000<b class='flag-5'>嵌入式</b><b class='flag-5'>应用程序</b>二进制接口

    恩智浦加速嵌入式AI创新应用开发

    AI应用飞速发展的今天,如何能够将AI嵌入式系统开发有机结合起来,营造新的开发生态,打造与众不同的创新用例,一直是嵌入式开发者追求的目标。
    的头像 发表于 08-27 09:46 792次阅读

    嵌入式系统中的实时操作系统

    嵌入式RTOS是嵌入式应用程序运行、相互交互和与外界通信的底层软件机制。在本节中,您将了解嵌入式软件开发人员使用哪些流行RTOS以及它们运行的嵌入式
    的头像 发表于 08-20 11:28 443次阅读

    嵌入式软件开发与AI整合

    嵌入式软件开发与AI整合是当前技术发展的重要趋势之一。随着人工智能技术的快速发展,嵌入式系统越来越多地集成了AI算法,以实现更复杂的智能功能。以下是关于
    的头像 发表于 07-31 09:25 657次阅读
    <b class='flag-5'>嵌入式</b>软件开发与<b class='flag-5'>AI</b>整合

    AI引爆边缘计算变革,塑造嵌入式产业新未来AI引爆边缘计算变革,塑造嵌入式产业新未来——2024研华嵌入式

    中国北京,2024年5月30日 - 2024年研华嵌入式产业合作伙伴会议在北京·中关村皇冠假日酒店成功举办,现场参会嘉宾逾300人。会议以“AI引爆边缘计算变革,塑造嵌入式产业新未来”为主题展开
    发表于 05-31 13:53 267次阅读
    <b class='flag-5'>AI</b>引爆边缘计算变革,塑造<b class='flag-5'>嵌入式</b>产业新未来<b class='flag-5'>AI</b>引爆边缘计算变革,塑造<b class='flag-5'>嵌入式</b>产业新未来——2024研华<b class='flag-5'>嵌入式</b>

    嵌入式系统软硬件基础知识大全

    两部分组成的。硬件部分包括处理器、存储器、输入输出等,是嵌入式系统实现功能的基础。软件部分则包括操作系统、驱动程序应用程序等,负责控制硬件组件的工作和实现各种功能。嵌入系统的硬件和软
    发表于 05-09 14:12

    USB嵌入式主机堆栈

    在USB标准下,USB设备之间不能直接通信。它们只能与控制一个或多个设备通信的总线的 USB 主机通信。常见的 USB 主机是 PC。本应用笔记讨论了 USB 嵌入式主机,它可以使嵌入式应用程序在各种 USB 设备中使用。
    发表于 05-03 09:13 172次阅读
    USB<b class='flag-5'>嵌入式</b>主机堆栈

    提升嵌入式系统可靠性的有效策略

    嵌入式工程师来说一个很大的好处是,我们的IDE和工具链可以自动产生应用程序或内存空间校验和(Checksum),从而根据这个校验和验证应用程序是否完好。有
    发表于 04-26 14:50 470次阅读
    提升<b class='flag-5'>嵌入式</b>系统可靠性的有效策略

    再谈嵌入式实时操作系统

    由于嵌入式处理器早期功能单一且运算能力不高,嵌入式应用已不能满足各个领域不断增长的需求。嵌入式操作系统应运而生,嵌入式操作系统可以支持新时代复杂、多任务环境和功能的
    的头像 发表于 04-09 17:27 742次阅读
    再谈<b class='flag-5'>嵌入式</b>实时操作系统

    【从0开始创建AWTK应用程序】编译应用到嵌入式Linux平台运行

    。搭建Linux平台交叉编译环境在上一篇文章我们介绍了使用AWTK开发简单的应用并在PC上模拟运行,本篇文章就来介绍一下怎么让应用程序运行在嵌入式Linux平台上。1
    的头像 发表于 12-07 12:08 670次阅读
    【从0开始创建AWTK<b class='flag-5'>应用程序</b>】编译应用到<b class='flag-5'>嵌入式</b>Linux平台运行