实现设备上的节能图像识别 — Qualcomm Technologies 的方法

AMD Radeon RX 7000/6000系列显卡安装ROCm 调用CUDA A卡调用CUDA、A卡画图炼丹、跑大模型甚至是跑机器学习、深度学习之必看必会: RX6000系列及以下显卡安装ROCm 5.4.2稳定版本,较新的RX7000系列显卡需安装ROCm 5.6版本 阅读详情

文 / 特邀文章作者,Qualcomm Technologies 的 Chen Feng、Terry Sheng、Jay Zhuo、Zhiyu Liang、Parker Zhang 和 Liang Shen

来源 | TensorFlow 公众号

IEEE LPIRC 挑战赛

低功耗图像识别挑战赛 (LPIRC) 是一年一度的竞赛,主要从准确度、执行时间和能量消耗方面评估计算机视觉技术。今年的竞赛由 Google 和 Facebook 赞助,共分为三个赛道,其中赛道 1 的挑战目标是使用由 Qualcomm Snapdragon 835 移动平台支持的 Pixel 2 智能手机,在 10 分钟的时间限制内处理 20000 张图像,同时最大程度地保证图像分类的准确度。此次竞赛使用大型数据集作为训练数据,其中包含大约 120 万张 JPEG 图像,涵盖 1000 个不同类别,同时使用 Holdout 图像集作为测试数据。

现实世界需要能够在移动设备上实时运行且可准确进行图像分类的神经网络模型,此项公开竞赛正是为此目的而举行。除准确度以外,计算效率对电池供电设备也至关重要。在竞赛中,我们团队将易于量化的 MobileNet V2 架构与先进的量化后方案结合使用,并因绝佳速度和准确度拔得头筹。我们使用每层计算好的最小和最大值插入 FakeQuantization 节点,以修改 TensorFlow 中的图表,并使用 TensorFlow Lite 将图表转化为用于硬件部署的.tflite 文件。

在这里插入图片描述
Qualcomm Canada Inc 的团队成员:Parker Zhang、Liang Shen、Chen Feng、Terry Sheng、Jay Zhuo 和 Zhiyu Liang

我们的模型在单个 ARM CPU 上的每次推理中以 28 毫秒识别 20000 张图像时,实现了最高的准确度。

Qualcomm Technologies, Inc. 工程部副总裁 Mickey Aleksic 说:“此次挑战与我们的 AI 战略完美契合,而赢得这次竞赛对于确立 Qualcomm Technologies 在机器学习中的重要地位以及推广设备中的 AI 大有帮助。”

实现设备上的极速图像识别

在边缘设备上准确快速地识别图像需要执行以下步骤:

  • 创建和训练一个神经网络模型,从而以浮点运算对图像进行识别和分类。
  • 将浮点模型转化为定点模型,后者可以在边缘设备上高效运行,而不会出现延迟和准确度问题。

我们团队的模型基于 MobileNet v2 构建,但以 “易于量化” 的方式进行了修改。虽然 Google 的 MobileNet 模型通过使用可分离卷积结构成功缩小了参数大小和计算延时,但直接量化预训练的 MobileNet v2 模型可能会造成准确度下降。我们的团队分析并找出了在此类可分离卷积网络中因量化而降低准确度的根本原因,并在不使用量化感知重新训练的情况下解决了此问题。通过量化感知训练,模型可获得良好的准确度,而我们的方法是一种替代方案,能够修改网络架构以解决量化问题,而无需重新训练。另一种更为端到端的方法是使用 Google 的 ML 框架 Learn2Compress,通过优化多个网络架构和同时使用量化及其他技术(如提炼、剪枝和联合训练),直接从头开始训练高效的设备上模型或现有的 TensorFlow 模型。
注:Learn2Compress 链接
https://ai.googleblog.com/2018/05/custom-on-device-ml-models.html

模型架构

在这里插入图片描述
在可分离卷积结构中,我们将深度卷积分别应用于每个通道。但是,用于权重量化的最小和最大值是从所有通道中整体获取的。由于数据范围的扩大,某个通道中的异常值可能会导致整个模型的量化损失。如果未在不同通道中进行数据计算,深度卷积结构可能会在某个通道内产生全零值的权重,而这在 MobileNet v1 和 v2 模型中都很常见。某个通道中的全零值意味着偏差很小。在完成深度卷积后,直接应用批量归一化转换时,预计该特定通道的"缩放"值会较大。这会损害整个模型的表示能力。

我们的团队提出一种易于量化的高效可分离卷积架构作为解决方案,将深度和逐点卷积层之间的非线性操作(批量归一化和 ReLU6)全部移除,让网络学习合适的权重来直接处理批量归一化转换。此外,我们还将所有逐点卷积层中的 ReLU6 替换为 ReLU。在使用 MobileNet v1 和 v2 模型进行的多项试验中,此架构在 8 位量化通道中展示出显著的准确度提升。

量化后技术

定义模型结构后,您便可在数据集上训练浮点模型。在量化后步骤中,我们使用各种不同的输入内容并针对训练数据中各个类别的单张图像运行模型,以收集最小和最大值以及每层输出的数据直方图分布。我们选取最佳 “步长” 和 “偏移” 值(用 ∆ 表示)以用于线性量化,这可以在贪婪搜索期间最大限度地减小量化损失和饱和损失的总量。根据计算出的最小和最大值范围,TensorFlow Lite 提供了将图表模型转化为.tflite 模型的路径,以便在边缘设备上部署模型。

在这里插入图片描述
Qualcomm Technologies, Inc 的 Ning Bi(上图右侧中间)代表团队领奖

结论

将计算移至 8 位并保留较高的准确度是在边缘设备上快速高效地运行模型的关键步骤。我们的团队发现了此量化问题,分析并找出其根本原因,然后解决了此问题。之后,我们将这些发现应用于图像分类挑战赛,并看到我们的理论成果变为了现实。您可以在我们发表的论文《适用于 MobileNets 的易于量化可分离卷积架构》(A quantization-friendly separable convolution architecture for MobileNets) 中了解详情 (https://arxiv.org/abs/1803.08607)。

ubuntu22.04安装rocm教程,AMD深度学习,6800xt配置pytorch、CUDA(已更新)本地安装torch 官方文档 对应torch下载地址 ROCm安装配置踩坑 遇到的问题 安装ubuntu系统更新内核,但是在win和Ubuntu双系统的前提下(可能)导致内核更新不成功,我安装成功的内核是5.13.39. 内核更新不成功的原因是自己在安装ubuntu系统时没有手动分区,直接清空磁盘安装,所以安装系统时还是手动分区 关闭bios安全启动,并设置ubuntu的启动引导为第一引导 navi6800xt(gfx1030)显卡安装5.0及以上 安装后重启 ROCm安装 此版本为5.1.0 sudo apt 阅读详情

相关推荐

【量化】A Quantization-Friendly Separable Convolution for MobileNets

将深度卷积+BN+ReLU+点卷积+BN+ReLU替换成深度卷积+点卷积+BN+ReLU(+L2正则化)

Treasure Ashes 682

AMD ROCm 硬件支持情况

GITHUB上截的,真坑!!! apu不被官方支持! 原文链接:https://github.com/RadeonOpenCompute/ROCm#Hardware-and-Software-Support Hardware and Software Support ROCm is focused on using AMD GPUs to accelerate computational tasks such as machine learning, engineering workloads, and s

weixin_43295247的博客 1万+

rocm

rocm

【opencv学习】 Low-Power Image Recognition Challenge (LPIRC):Track 3 用摄像头从带二维码边框的图片中提取照片及信息的方法

这是一篇总结的文章,写的方法是如何从的二维码边框中识别出图片的ID、宽度、高度这些信息,再根据识别出的宽度、高度把图片从带二维码边框的图片截取出来。

Joe_quan的博客 4987

matlab集成c代码-lpirc2016:lpirc2016

matlab集成c代码 LPIRC 2016 使用 Install 重要重要 注意--user是强制的了!!! 不要用sudo装在系统路径, 因为大家在用一个container! 或者直接运行make. python setup.py develop --user 此时就应该可以在命令行中使用 lpirc_detect, lpirc_detect_prof, lpirc_vis 这三个命令. NOTICE: 可能你的 ${HOME}/.local/bin/ 目录还不在环境变量 PATH 里, 需要将其加入 PATH 才能找到这些命令 为了方便用不同的faster RCNN build测试,现在先不使用git submodule并自动设置sys.path的形式. 所以需要自己设置好 PYTHONPATH 环境变量 export PYTHONPATH="/path/to/pycaffe:/path/to/py-faster-rcnn/lib:${PYTHONPATH}" Config lpirc.conf.sample里是一个示例配置文件 cp lpirc.conf.sample lpir

pytorch for ROCM 安装包,amd显卡

pytorch for ROCM 安装包whl , 支持ubuntu 18.04及以上系统, amd Radeon Vii 显卡。 里面带配置手册(rocm分版本安装方法)

阅读笔记——A Quantization-Friendly Separable Convolution for MobileNets

目录概述经典量化流程MobileNet V1 量化损失原因分析改进方法结果及结论 概述 在资源和内存受限的移动或者 IoT 平台上,对深度学习模型进行推理时进行模型量化很重要。 Google 提出的 MobileNet V1 模型极大降低了模型模型参数量和内存占用,但是一个缺陷就是 MobileNet V1 中使用的深度分离卷积,在进行量化时造成了极大的量化精度损失。下表所示,在直接对 MobileNet V1 进行训练后 8 bit 量化后,在 ImageNet 数据集上的分类精度从 70.50% 下降到

哇哇的博客 2172

rocm-documentation

AMD出品的基于opencl 的开源开发平台,类似于CUDA,现在应用越来越广泛,也支持CAFFE等库,以后会越来越热的。

AMD 显卡编译 pytorch 指南 ROCM + pytorch

ROCM + pytorch 快速安装方法 需要在干净机器上安装 原始参考资料 https://github.com/aieater/rocm_pytorch_informations ,有修改 在ubuntu 18.04 及ubuntu 20.04 测试通过 以下为安装pytorch 1.6 + rocm 3.5.1 (需要版本匹配) 1. 更新系统,安装必要的库 sudo apt update sudo apt -y dist-upgrade ...

znsoft的专栏 1万+

No Target Connected 错误时的一种情况

STM32的SWD烧录模式No Target Connected 错误的一种情况 STM32的SWD烧录模式No Target Connected 错误时的一种处理情况 这是我第一次烧板子的时候遇到的问题,在给板子download的时候出现了“No Target Connected”的错误,这里讲一种解决方法。不一定适用于全部状况,但是可以作为一种纠错方法。 打开 Options for Target… 1.首先点击Options for Target…这个像魔棒一样的按键打开,会出现这个页面 2.点击

Logan_CodeGou的博客 1万+

Cadence Allegro 17.4学习记录开始02-原理图Capture CIS 17.4

Allegro的第一方网表与第三方网表有以下几个区别点;Ø 与Allegro实现交互式操作的是第一方网表,第三方网表时不可以实现交互式操作;Ø 第三方网表不能将器件的Value属性导入到PCB中,输出时以封装属性来代替Value属性,第一方网表是可以的;Ø 网表导入到PCB中时,第三方的网表需要指定事先指定好PCB封装库文件,并产生Device文件,才可以将网表导入到PCB中,第一方网表则可以直接导入。

qq_31444421的博客 1万+

两块 ESP32 如何抓出 Wi-Fi CSI 数据:ESP-CSI 实操与人体检测案例

ESP-CSI 是基于 Wi-Fi CSI(信道状态信息)的开源项目,直接读取 ESP32 系列芯片的子载波幅度与相位,用于室内定位、人体活动检测等无线感知场景。本文以 get-started 与 esp-radar 两个示例为主线,给出一套可复现的编译、烧录、取数到检测的完整流程,并附上常见故障的排查路径。 ## 先弄懂:CSI 比 RSSI 多给了什么 RSSI 只是接收信号功率的标量,多

gitblog_00372的博客 160

[MR]RCM约束下的手术机器人

RCM(Remote Center of Motion)约束,通俗讲就是做微创手术时,机械臂插进身体,机械臂受身体的插入点的约束,不能乱动。 相关参考论文 Task Control with Remote Center of Motion Constraint for Minimally Invasive Robotic Surgery ...

土豆大叔的博客 4575

A Quantization-Friendly Separable Convolution for MobileNets

这是公众号的第 15 篇原创文章,本文大约 5500 字,阅读大约需要 15 分钟论文:《A Quantization-Friendly Separable Convolution for MobileNets》论文地址:https://arxiv.org/pdf/1803.08607.pdf这篇是高通在 2018 年发表的一篇论文,主要是针对在量化方面效果很差的 MobileNetV1 网络进行研究,探索其量化掉点很严重的原因(从浮点模型的 70

AI 算法笔记 2525

FTViewSE利用VB脚本制作简易日报表

罗克韦尔SE用VB做的简单的报表

z0800656的博客 3021

【大模型】一图看懂3D因果卷积!

本文将系统性地介绍从1D到3D的因果卷积原理,通过直观的动图演示帮助读者理解其工作机制,并重点探讨3D因果卷积在大规模视频生成中的独特价值和应用前景。

xian0710830114的专栏 2197

tensorflow在AMD上用ROCm框架实现GPU训练(亲测有效)

众所周知,a卡对于tensorflow gpu的支持很小,要想使用的话一般都得配n卡的电脑。而我只是感兴趣一个项目,想要跑出来一个模型,如果不用gpu加速,可能得跑一个月,所以不得不寻找在a卡上的解决方案。好在,终于找到了一个解决方案,虽然只是取巧,速度也不如正常n卡跑的快,但已经很不错了。 我的配置: 显卡:RX 550 所用系统:虚拟机ubuntu 18 注:如果是虚拟机的话,最好分配3GB内...

XuXing的博客 2万+

AgentScope实战训练营-Java开发HITL人机协作AI应用完整指南

本文手把手带你从零搭建一个基于 Spring Boot WebFlux + AgentScope + 通义千问的人机协作(HITL)AI 聊天应用。项目涵盖流式对话、工具调用、高危操作确认、对话中断、动态 MCP 工具接入、中英文双语界面等完整功能。文章从环境准备、pom.xml 配置、DTO 数据模型、Hook 机制、AgentService 核心服务、ChatController 接口到前端 HTML/CSS/JS 实现,逐一讲解每行代码的设计意图,并附带 REST API 接口说明、测试场景、常见问题

program哲学 712

Ollama GPU支持详解:NVIDIA/AMD/Apple M系列性能对比

想要在本地高效运行Llama 2等大型语言模型?Ollama的GPU加速支持绝对是你的最佳选择!🎯 本文将深入解析Ollama对NVIDIA、AMD和Apple M系列GPU的完整支持方案,帮助你选择最适合的硬件配置。 ## Ollama GPU加速的核心优势 Ollama通过智能的GPU发现和内存管理机制,能够自动检测系统中的可用GPU资源,并根据模型大小和硬件性能进行最优分配。无论是游戏

gitblog_00199的博客 1711

VS Code下载安装与使用教程

VSCode下载安装与使用教程

weixin_46713695的博客 4万+

【深度学习】什么是交叉注意力机制?

输入序列:自注意力机制在同一个输入序列内建立注意力,交叉注意力机制在不同的输入序列间建立注意力。应用场景:自注意力机制多用于单一模态的任务(如纯文本任务),交叉注意力机制多用于多模态任务(如图像和文本的结合)。计算过程:自注意力机制的查询、键和值都来自同一个输入序列,而交叉注意力机制的查询来自一个输入序列,键和值来自另一个输入序列。

q742971636的博客 7365

AMD显卡也能加速!FaceFusion镜像ROCm支持实测体验

本文介绍了如何在星图GPU平台上自动化部署Facefusion镜像,实现AMD显卡的AI换脸加速功能。通过集成ROCm支持,该镜像使AMD用户能够高效完成视频换脸、图片处理等任务,性能提升达3倍以上,为内容创作者提供便捷的多媒体编辑解决方案。

weixin_31961675的博客 488

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

ubuntu20.04 安装rocm及tensorflow-rocm记录(已放弃)

580安装rocm,最终失败

qq571028495的博客 6936

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Windows WSL环境下安装 pytorch +ROCM 支持AMD显卡

windows 下安装WSL 环境( windows subsystem for Linux), 安装ubuntu 22.04环境。安装好后,创建pytorch环境,注意,只支持python 3.10。三、安装pytorch+rocm。安装pytorch +rocm。二、安装anaconda。

znsoft的专栏 5396

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ROCm平台简介及使用汇总

ROCm是AMD的一个软件平台,用来加速GPU计算A卡上编程模型使用的是HIP或者OpenCL,而运行环境是ROCmN卡上,编程模型是CUDA,运行环境也是CUDA链接: [https://rocmdocs.amd.com/en/latest/]

weixin_45206081的博客 1万+

最新论文阅读(31)

L1-Norm Batch Normalization for Efficient Training of Deep Neural Networks - 2018年2月 - L1-BN - 中国人   BN中的平方和根运算对低比特量化不友好。   我们提出在训练期中只有线性运算的L1范数BN(L1BN)。L1-BN被证明与原始的BN乘以比例因子(π/2的根号)近似相等。   对各种...

wydbyxr的博客 1299
上一篇: 使用 Google Cloud 上的 tf.Transform 对 TensorFlow 管道模式进行预处理
下一篇: What-If 工具:无需写代码,即可测试机器学习模型
TensorFlowers
博客等级 码龄8年 24粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值