高通AI Stack Models开源仓库介绍(二)

9 篇文章 0 订阅
2 篇文章 0 订阅
文章介绍了高通推出的AI软件栈QualcommAIStack,集成了TensorFlow、PyTorch等框架,展示了QualcommAIStackModels仓库中的图片超分、图像增强、目标检测、图像分割和语言理解模型,包括具体模型如SESR、SRGAN、SSD等,并强调了模型的跨平台部署和优化特性。
摘要由CSDN通过智能技术生成

文章介绍

AI是高通一直关注的领域,为此推出了高通AI软件栈(Qualcomm AI Stack),提供了一个集成所有AI框架(如TensorFlow、PyTorch、ONNX、Keras)、开发者库、系统软件和操作系统的整合平台,有不同层面的架构支持,能够助力开发人员一次开发,即可跨不同终端和操作系统进行扩展,赋能生态系统。Qualcomm AI Stack Models是高通开源的一个模型示例Github仓库,演示了使用Qualcomm AI Stack端到端的解决方案,也提供模型精度调优的例子。Qualcomm AI Stack Models的代码可以在这里获得

https://github.com/quic/ai-stack-models/tree/main/

本文主要介绍Qualcomm AI Stack Models仓库使用到的模型,包括模型的转换和调优

AI 模型

1. Super-resolution—图片超分

图片超分是指通过硬件或软件算法将一幅低分辨率的图像恢复生成高分辨率图像,下面是几种可以使用的模型

        a. SESR

Collapsible Linear Blocks for Super-Efficient Super Resolution (SESR)网络建立了一种新的高效超分辨率技术,它是基于CNNs的线性过参数化,并为SISR创建了一个有效的模型体系结构。

DNN Framework为ONNX,source code链接为https://github.com/quic/aimet-model-zoo/#pytorch-model-zoo

        b. SRGAN

SRGAN是一个超分辨网络,利用生成对抗网络(GAN)的方法实现图片的超分辨。GAN不仅能做图像生成,还能辅助其他输入信息不足的视觉任务。SRGAN就是把GAN应用在超分辨率(SR)任务上的代表之作。

DNN Framework为PyTorch,source code链接为https://github.com/quic/aimet-model-zoo/

        c. QuickSRNet

QuickSRNet是一种简单而有效的架构,与现有的单图像超分辨率神经架构相比,它提供了更好的准确性和延迟权衡,主要用于移动平台上实时应用程序的高效超分辨率架构。

DNN Framework为ONNX,source code链接为https://github.com/quic/aimet-model-zoo/

        d. XLSR

Extreme Lightweight Super Resolution(XLSR)超轻量图片超分,运行AIMET量化。

DNN Framework为ONNX,source code链接为https://github.com/quic/aimet-model-zoo/blob/develop/aimet_zoo_torch/xlsr/XLSR.md

2. Low-light-enhancement-图片增强

“图像增强”,是通过算法将原图像附加一些信息或数据,有选择的将图像中感兴趣的部分突出。下面是几种可以使用的模型:

        a. EnlightenGAN

EnlightenGAN提出了一种高效的无监督生成对抗性网络,可以在没有弱光和正常光图像的情况下进行训练,但事实证明,该网络在各种真实世界的测试图像上都能很好地运用。

DNN Framework为ONNX,source code链接为https://github.com/arsenyinfo/EnlightenGAN-inference

        b. MBLLEN

MBLLEN通过CNN卷积层将图像丰富的特征提取到不同的层次,使用多个子网进行同时增强,最后将多分支输出结果融合成最终增强图像,达到从多方面提高图像质量的效果。

DNN Framework为ONNX,source code链接为https://github.com/ymmshi/MBLLEN.pytorch.git

        c. RUAS

RUAS通过注入弱光图像的知识和搜索轻量级的优先架构,为现实场景中的微光图像构建轻量级但有效的增强网络

首先,通过展开Retinex-inspired 模型的优化过程来建立增强网络。

然后,引入了一个基于蒸馏池的先验模块搜索空间。

最后,提出了一种合作的双层搜索策略,以发现所需的光照估计和噪声去除架构。

DNN Framework为ONNX,source code链接为https://github.com/dut-media-lab/RUAS.git

        d. SCI

自校准光照学习(SCI)是一种全新的低光照图像增强方案,通过构建引入自校准模块的权重共享光照学习过程,摒弃了网络结构的繁杂设计过程,实现了仅使用简单操作进行增强的目的。

DNN Framework为ONNX,source code链接为https://github.com/vis-opt-group/SCI.git

        e. StableLLVE

StableLLVE是利用自一致性的单图像方法来增强微光视频,并通过在网络上施加一致性来解决时间不一致性问题。首先从单个图像中学习和推断运动场(光流),然后将光流图像扭曲为相邻帧,并对深层模型施加一致性

DNN Framework为ONNX,source code链接为https://github.com/zkawfanx/StableLLVE.git

        f. Zero-DCE

Zero-DCE是利用神经网络拟合出这样的一条亮度映射曲线,再结合原图就能得到一张亮度增强后的图像,而这个曲线的拟合是可导的,因此可以我们可以利用梯度下降法,使用深度卷积神经网络来学习这个曲线的参数,这个网络可以通过迭代去近似高阶的曲线,从而提高结果的准确性和鲁棒性。

DNN Framework为ONNX,source code链接为https://github.com/Li-Chongyi/Zero-DCE.git

3. Object-detection-目标检测

目标检测是通过算法找出图像中所有感兴趣的目标(物体),确定它们的类别和位置Android应用程序可以设计为使用任何内置/外接的相机来捕捉对象,并使用机器学习模型来获得预测/推断相应对象的位置。

以下是几种可以使用的模型:

        a. SSD-MobileNetV2

SSD-MobileNet 是以 MobileNet 为基础的目标检测算法,很好的继承了 MobileNet 预测速度快,易于部署的特点,能够很好的在多种设备上完成图像目标检测任务。MobileNet网络中,核心思想就是减少卷积计算以及参数。SSD整个网络采取了one stage的思想,以此提高检测速度。

DNN Framework为ONNX,source code链接为https://github.com/lufficc/SSD.git

        b. YoloX

YOLOYou Only Look Once)是一种对象检测算法,它使用深度神经网络模型,来实时检测和分类对象。YOLOX是旷视开源的高性能检测器。旷视的研究者将解耦头、数据增强、无锚点以及标签分类等目标检测领域的优秀进展与 YOLO 进行了巧妙的集成组合,提出了 YOLOX,不仅实现了超越 YOLOv3、YOLOv4 和 YOLOv5 的 AP,而且取得了极具竞争力的推理速度。

DNN Framework为ONNX,source code链接为https://github.com/Megvii-BaseDetection/YOLOX/

        c. DETR

DETR 是 Facebook 团队于 2020 年提出的基于 Transformer 的端到端目标检测,没有非极大值抑制 NMS 后处理步骤、没有 anchor 等先验知识和约束,整个由网络实现端到端的目标检测实现,大大简化了目标检测的 pipeline。

DNN Framework为ONNX,source code链接为https://github.com/facebookresearch/detr

        d. Yolo NAS

YOLOYou Only Look Once)是一种对象检测算法,它使用深度神经网络模型,来实时检测和分类对象。“NAS”代表神经架构搜索,是一种用于自动化神经网络架构设计过程的技术。NAS 不依赖手动设计和人类直觉,而是采用优化算法来发现最适合给定任务的架构。NAS 的目标是找到一种在准确性、计算复杂性和模型大小之间实现最佳权衡的架构。

DNN Framework为ONNX,source code链接为https://github.com/Deci-AI/super-gradients/

4. Image-segmentation-图像分割

图像分割是指将一幅图像划分成多个不重叠的区域或像素集合的过程。其目标是将图像中的每个像素分配到不同的类别或对象中,从而实现对图像的语义理解和区域识别。

图像分割在计算机视觉领域中具有广泛的应用,包括目标检测、图像分析、图像编辑和机器人视觉等。通过对图像进行分割,可以提取出感兴趣的目标区域,进而实现更高级别的图像分析和理解。

以下是几种可以使用的模型:

        a. FFNet

FFNet是一种简单的编码器-解码器结构,编码器由ResNet骨干网络组成,但没有分类头。FFNet从所有中间残差阶段提取不同空间分辨率的特征,并将它们传递给一个轻量级卷积解码器头Decoder,该Decoder将低分辨率分支的特征上采样并与高分辨率分支的特征进行融合(称之为Up-head),从而输出不同空间分辨率的且具有多尺度上下文信息的特征。

DNN Framework为ONNX,source code链接为https://github.com/quic/aimet-model-zoo/releases/tag/torch_segmentation_ffnet

        b. deeplabv3

DeepLabv3 是目前广泛使用的语义分割方法,本文将围绕DeepLabv3给出语义分割的一个简单实现。DeepLabv3是一种基于深度卷积神经网络的语义分割模型,由Google Brain团队于2017年提出。DeepLab v3的主要特点是能够有效地利用多尺度上下文信息和低级特征进行语义分割,取得了在多个数据集上的优秀表现。

DNN Framework为ONNX

        c. FCN

FCN语义分割网络是在图像语义分割文章Fully Convolutional Networks for Semantic Segmentation中提出的全卷积网络,基于深度网络进行图像语义分割,而且是全卷积的网络,可以输入任意图像尺寸。

DNN Framework为ONNX

        d. LRASPP

LRASPP是一个轻量级语义分割网络,它是在MobileNetV3论文中提出来的,非常适合移动端部署。相比于其他语义分割网络,LR-ASPP在精度上有所牺牲,但在速度上有很大的提升。LRASPP的推理时间在CPU上只需要0.3秒,而且它的网络结构也非常简单。

DNN Framework为ONNX

5. Nlp-nlu –语言理解(智能问答)

NLP可以追溯到20世纪50年代计算机程序员开始尝试简单的语言输入。NLU在20世纪60年代开始发展,希望让计算机能够理解更复杂的语言输入。NLU被认为是NLP的一个子方向,主要侧重于机器阅读理解:让计算机理解文本的真正含义。

以下是几种可以使用的模型:

        a. BERT

BERT全称是来自变换器的双向编码器表征量(Bidirectional Encoder Representations from Transformers),它是Google于2018年末开发并发布的一种新型语言模型。与BERT模型相似的预训练语言模型例如问答、命名实体识别、自然语言推理、文本分类等在许多自然语言处理任务中发挥着重要作用。BERT是一种基于微调的多层双向变换器编码器

DNN Framework为ONNX,source code链接为https://huggingface.co/bert-base-uncased

        b. ALBERT

ALBERT 是 BERT 的“改进版”,其进步的地方,一言以蔽之,就是 用更少的参数,取得了更好的效果。ALBERT模型也是基于这一点考虑,通过各种手段减少参数量,得到一个占用较小的模型,对实际落地有较大的意义,不过由于其主要还是减少参数量,所以在推断时间上并没有优化

DNN Framework为ONNX,source code链接为https://huggingface.co/docs/transformers/model_doc/albert

        c. DistillBert

DistillBert是在Bert的基础上用知识蒸馏技术训练出来的小型化bert,通过teacher model的soft target作为total loss的一部分,以诱导student model的训练,实现Bert模型的知识迁移。

DNN Framework为ONNX,source code链接为https://huggingface.co/docs/transformers/model_doc/distilbert

        d. MobileBERT

MobileBERT 可以看作一个“瘦身”后的BERT-large模型,其使用了瓶颈结构(Bottleneck Structure),并且在自注意力和前馈神经网络的设计上也有一定的改进。MobileBERT能够达到教师模型 BERT-base 99.2% 的性能效果(以GLUE数据集 为测试基准),推理速度快 5.5 倍,参数量降低至23.2%。

DNN Framework为ONNX,source code链接为https://github.com/gemde001/MobileBERT

        e. ELECTRA

ELECTRA(Efficiently Learning an Encoder that Classifies Token Replacements Accurately)采用了一种“生成器——判别器”结构,其与生成式对抗网络(Generative Adversarial Net,GAN)的结构非常相似。使用替换词检测(Replaced Token Detection,RTD)预训练任务,取代了BERT模型原始的MLM。

DNN Framework为ONNX,source code链接为https://huggingface.co/google/electra-base-discriminator

作者:高通工程师,戴忠忠(Zhongzhong Dai)

  • 21
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我可以为您查找有关FPGA上开源的基于堆栈的CPU的信息。一些流行的选项包括J1 CPU,FLEA CPU,以及OpenCores的OR1200 CPU。您还需要进一步调查以确保这些选项适合您的特定需求。 ### 回答2: 在FPGA上有一些开源的基于栈的CPU可供选择: 1. J1 CPU:J1是一个基于栈的CPU,它以精简为设计目标,适合在FPGA上实现。它具有简单的指令集和基本的堆栈操作,可以轻松地与其他外设进行集成。 2. VexRiscv:VexRiscv是一个基于RISC-V指令集的开源处理器,可以在FPGA上进行实现。它支持栈操作以及其他高级功能,例如乘法和除法等,可以用于各种应用领域。 3. PicoRV32:PicoRV32是一个小型的RISC-V处理器,适用于嵌入式系统和FPGA开发。它具有一个基本的堆栈指令集和流水线架构,适合实现在资源有限的FPGA上。 4. OpenCores OR1K:OpenCores OR1K是一个基于开源指令集架构OpenRISC的处理器。它支持栈指令集和流水线操作,可以在FPGA上构建一个完整的系统。 这些开源的基于栈的CPU提供了灵活性和可定制性,可以根据特定应用的需求进行修改和优化。通过在FPGA上实现这些CPU,可以加速原型设计和软件开发过程,并满足各种应用领域的需求。 ### 回答3: FPGA上的开源stack-based CPU包括StackCPU、OpenCores、JOP等。 StackCPU是一个开源的基于堆栈的CPU,它具有简单的指令集和紧凑的设计。它使用堆栈作为主要的数据结构,提供了一系列基本的堆栈操作指令,如入栈、出栈和复制。StackCPU的设计精简,适合在FPGA上进行快速原型设计和验证。 OpenCores是一个开源硬件社区,提供了许多开源的硬件设计,包括基于堆栈的CPU。这些堆栈CPU的设计取决于具体的项目和需求,所以具体的实现会有所不同。OpenCores提供了一些可用的开源堆栈CPU设计,供用户参考和使用。 JOP(Java Optimized Processor)是一个开源的Java优化处理器,也是一个基于堆栈的CPU。JOP的设计目标是为嵌入式系统提供高性能和低功耗的Java执行环境。它提供了Java字节码的硬件执行支持,并具有符合Java虚拟机规范的功能。JOP的开源设计和可定制性使其成为在FPGA上构建Java嵌入式系统的理想选择。 总结起来,FPGA上的开源的堆栈CPU包括StackCPU、OpenCores和JOP等,它们都提供了不同的优化和功能,适用于不同的应用场景和需求。用户可以根据自己的需求选择合适的设计,并基于FPGA进行快速原型设计和验证。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值