嵌入式AI简报 (2020-04-26)

导读:本期内容23条。「业界新闻」除了提到的三星下一代旗舰Soc外,还有与骁龙835麒麟970的GPU在同一档次的Exynos980。以及最近华为刚发布Nova7的麒麟985,公主身子丫鬟的命。TensorFlow.js的2.0和3.0持续发力包体积大小,去年微信官方账号(微信开发者)发文零基础也能在小程序上实现机器学习,实际便是TensorFlow.js提供的微信小程序插件。

「论文」部分除了这两天被大家津津乐道的,工程优化大于实际创新的YOLOv4,还有商汤小伙伴们在int8训练方面做得工作,小型化BERT模型方面的MobileBERT、手机GPU实现视频风格迁移的新方法等等。

「开源」部分,腾讯推出的X86/CUDA的TurboTransformers,比TF和Pytorch性能好不少。OpenCV4.3发布,ARM上集成Tengine提升性能可观;比TF性能更好的Pytorch版本的EfficientDet;“博文”部分包括且不限于压缩、量化相关总结、微信扫一扫识物的技术揭秘等,都非常值得一看。
微信公众号:NeuroMem
Editor: https://github.com/ysh329
Project: https://github.com/ysh329/awesome-embedded-ai

业界新闻

  • 三星全新旗舰SoC曝光:最强公版架构 | 安兔兔
    摘要:此前三星方面已经明确表示将放弃自家的猫鼬架构,外媒报道显示,下一代三星旗舰Soc的CPU部分将会采用ARM公版架构,Soc将采用5nm LPE工艺打造。
    CPU部分包含两颗Cortex A78超大核、两颗Cortex A76大核以及4颗Cotex A55小核,GPU则集成了ARM代号Borr(北欧神话)的新Mali,核心数20(Mali-G78?)。
  • vivo的中高端5G手机S6,搭载三星Exynos980 | 三易生活
    摘要:vivo S6此次发布的顶配版本,具备8+256GB的存储组合,以及标配的Exynos 980主控方案。
    Exynos 980使用了2+6核的大小核设计,这是当前中高端主流SoC的共通做法。但在具体的核心架构上,它率先用上了最新的Cortex-A77大核。拜此所赐,vivo S6在Geekbench 5.1的CPU核心性能测试中,仅以2.2GHz的最高主频就在单核性能上追平了具有2.84GHz大核的前旗舰骁龙855,同时多核性能也超过了Exynos 9810和骁龙845,新架构的优势可谓显露无疑。
    从3DMARK的跑分结果来看,Exynos 980配备的Mali-G76MP5图形处理器在3D游戏性能上,和骁龙835、Exynos8895、麒麟970等处于同一档次。类比同世代的高通方案的话,则是远高于骁龙730G。
    基于安兔兔综合跑分,Exynos 980在综合性能上略胜骁龙765G的,基本达到骁龙845水平。
  • 华为麒麟985背后,藏着国产芯片设计的一丝辛酸 | 魔铁的世界
    摘要:一般来说,在芯片的产品线规划里,旗舰产品居于金字塔顶端,是唯一的存在,如果要推出系列,也往往是先发标准版,在市场树立威名后,再发售加强版,比如高通的骁龙8系的标准版和8系Plus版。
    为了平衡硬件错配,让麒麟990跑分不那么丢脸,华为在麒麟985上不惜使用诸多压制手法:
  1. 麒麟985的CPU内核族群布局变了,没有采用麒麟990的“4大核+4小核”的形式,而是“1大核+3中核+4小核”;
  2. 降低麒麟985的CPU最高运行频率,大核(2.58GHz)、小核(1.84GHz)分别比麒麟990的低280MHz和110MHz。不要小看这不足0.3GHz的差距,在高通那里,0.11GHz的差距就是骁龙855和骁龙855 Plus的差别;
  3. 麒麟985的GPU内核是比麒麟990先进的Mali-G77,如果两颗芯片的GPU核心数相同,麒麟990将被985捶得渣渣都不剩,于是,麒麟985的GPU内核数被定为8个,麒麟990的则是16个,16个“小矮人”以人海战术保住了旗舰的面子。
  • 谷歌自研终端AI芯片曝出重大进展,联手三星,用于手机笔记本 | 量子位
    摘要:谷歌透露,代号为”白教堂“(Whitechaple)的自研处理器芯片取得了重大进展,明年就可能应用在下一代谷歌手机和笔记本上,”白教堂“芯片由谷歌和三星联合开发。
    芯片将会采用三星的5nm半导体工艺打造,搭载8个ARM核心。这一技术也用在了三星自主设计的Exynos芯片上。
    在已经推出的Pixel手机上,谷歌已经搭载了图像处理的专用AI芯片Visual Core,用于编译HDR+图像的速度比应用处理器快5倍,功耗仅为其1/10。Visual Core还处理与相机相关的复杂成像和机器学习任务,其中包括基于场景的自动图像调整以及其他用途。
  • TensorFlow.js 的2.x和3.x的 更新计划 | TensorFlow
    摘要:tfjs团队在2.0和3.0版本,都侧重生产环境优化的包体积与相关优化。
    2.x 中,唯一重大变化是 CPU 和 WebGL 后端从 tfjs-core 移到各自的 NPM 包中(对应tfjs-backend-cpu 和 tfjs-backend-webgl),让包更小。
    3.0版本将完全模块化所有算子和内核,并支持动态梯度的内核注册模式,并提供工具来协助创建仅包含给定模型或 TensorFlow.js 程序内核的自定义包。且还将开始默认支持 ES2017。
  • 为 TensorFlow.js 引入 WebAssembly 后端 | TensorFlow
    摘要:TensorFlow.js 现在为浏览器和 Node.js 提供 WebAssembly (WASM) 后端!WASM 是 WebGL 后端的替代方案,尤其是缺乏 WebGL 支持或 GPU 速度慢的低端移动设备,可实现基于XNNPack 库来加速 CPU 的推理。Chrome 已在实验性的状态下部分支持了 SIMD,Firefox 和 Edge 尚在开发之中,而 Safari 尚未给出任何公开信号。
    SIMD 非常有发展前景。在热门 ML 模型上使用 SIMD-WASM 进行的基准测试表明,速度相比非 SIMD WASM 可提高2-3倍。
    除了原始的 SIMD 方案外,LLVM WASM 后端近期已实现对实验性 QFMA SIMD 指令的支持,这将进一步提高内核性能。根据常见模型上的benchmark,QFMA SIMD 与普通 SIMD 相比,可额外提速 26-50%。TF.js WASM 后端将通过 XNNPACK 库来使用 SIMD,该库包括已针对 WASM SIMD 优化的微内核。

论文

  • Riptide:12倍端到端加速,陈天奇创业公司OctoML提出克服二值网络瓶颈新方法 | 机器之心
    摘要:(Ps:之前简报似乎发过)OctoML 的研究者提出了 Riptide,这是一种找出并解决端到端二值网络瓶颈的方法。Riptide 基于深度学习系统编译器 TVM,可自动生成调优过的高性能二值化算子。
    假设二值化可以使卷积的速度提高近 43 倍(计算见文章),但网络也有卷积外的算子如WeightScale/Act/BN/Dequant层等,即使卷积二值化加速了,但其它层将消耗大约 50%以上的总推理时间。因此,作者基于定点量化近似(fixed point quantized approximations)对其它层也做了二值化。构建出了完全二值化网络。
    此外,TVM框架层面做了tiling、vectorization、多核MIMD、Loop unroll常规操作,以及结合基于《Automating Generation of Low Precision Deep Learning Operators》论文中提到的 fast popcount 算子,还提出bitpack fusion尽可能将 bitpacking 折叠到前面的卷积核中,将中间内存需求减少到原来的 1/16。基于以上,在树莓派 3b 基于 ARM Cortex-A53 处理器与全精度基于For循环的MKL-DNN的性能相比【这里就有点迷惑了,为何不和华为Bolt或者dabnn比较呢】,在ResNet18模型上看到 10 倍的实际加速。 当然,10 倍的加速远小于论文中所期望的 43 倍加速。
    论文链接:https://proceedings.mlsys.org/static/paper\_files/mlsys/2020/155-Paper.pdf
    GitHub 项目:https://github.com/jwfromm/Riptide
  • AlexeyAB的Darknet发布YOLO v4及论文:速度效果双提升 | 机器之心
    摘要:俄罗斯开发者Alexey Bochkovskiy 对比了 YOLOv4 和当前最优目标检测器,发现 YOLOv4 在取得与 EfficientDet 同等性能的情况下,速度是 EfficientDet 的二倍。与 YOLOv3 相比,新版本的 AP 和 FPS 分别提高了 10% 和 12%。
    YoloV4 的作者提出了两种实时神经网络:对于 GPU,研究者在卷积层中使用少量组(1-8 组):CSPResNeXt50 / CSPDarknet53;对于 VPU,研究者使用了分组卷积(grouped-convolution),但避免使用 Squeeze-and-excitement(SE)块。具体而言,它包括以下模型:EfficientNet-lite / MixNet / GhostNet / MobileNetV3。
    文章:https://arxiv.org/abs/2004.10934
    代码:https://github.com/AlexeyAB/darknet
  • [CVPR 2020] 用于加速卷积神经网络训练过程INT8训练技术 | 商汤泰坦公开课
    摘要:模型量化是一种将浮点计算转成低比特定点计算的技术,可以有效的降低模型计算强度、参数大小和内存消耗,但往往带来巨大的精度损失。尤其是在极低比特(<4bit)、二值网络(1bit)、甚至将梯度进行量化时,带来的精度挑战更大。
    由商汤研究院–链接与编译团队的两位研究员分享了团队在模型量化方面的的一系列研究工作,其中包含CVPR 2020、ICCV 2019等多篇与北航刘祥龙老师团队合作的论文成果。
  • [ACL2020] MobileBERT:用于资源受限设备的任务无关“瘦版”BERT | 专知
    摘要:作者提出了压缩和加速流行的BERT模型的MobileBERT。与最初的BERT一样,MobileBERT是与任务无关的。即通过简单的微调应用于各种下游NLP任务。基本上,MobileBERT是BERT\_LARGE的瘦版,同时配备了瓶颈结构和精心设计的自关注和前馈网络之间的平衡。
    为了训练MobileBERT,我们首先训练一个特别设计的教师模型,一个倒瓶颈合并BERT\_LARGE模型。然后,我们把这个老师的知识传递给MobileBERT。实证研究表明,MobileBERT比BERT\_BASE小4.3倍,快5.5倍,同时在著名的基准上取得了有竞争力的结果。在GLUE的自然语言推断任务中,MobileBERT实现了GLUEscore o 77.7(比BERT\_BASE低0.6),在Pixel 4手机上实现了62毫秒的延迟。在team v1.1/v2.0的问题回答任务中,MobileBERT获得了dev F1的90.0/79.2分(比BERT\_BASE高1.5/2.1分)。
  • [CVPR2020] RANet:分辨率自适应网络,效果和性能的best trade-off | 晓飞的算法工程笔记
    摘要:基于对自适应网络的研究,论文提出了自适应网络RANet(Resolution Adaptive Network)来进行效果与性能上的取舍,该网络包含多个不同输入分辨率和深度的子网,难易样本的推理会自动使用不同的计算量,并且子网间的特征会进行融合,从实验结果来看,在性能和速度上取得了很不错的trade-off。
  • 手机GPU实现4K视频实时风格迁移 | 极市平台
    标题:Joint Bilateral Learning for Real-time Universal Photorealistic Style Transfer
    摘要:风格迁移指的是将图像A的艺术风格迁移到图像B的内容中,从而媲美相加拍摄的效果。但以往的方法都存在速度慢或伪影问题,导致难以实际产品化落地。
    作者提出一种的快速的端到端的风格迁移架构。该方法核心:一个可以学习局部边缘敏感仿射变换(edge-aware affine transforms)的前向神经网络,训练完成后,可在任意对图像上实施鲁棒风格迁移。相比其他SOTA方法,视觉效果更逼真,同时更快在手机端可达实时@4K。看是以手机GPU完成的推理,但并未提及具体型号。

开源项目

注:每条内容前缀为github地址的仓库拥有者和仓库名,补全地址后为github.com/<repo_owner>/<repo_name>

  • Tencent/TurboTransformers:腾讯开源第100个Github项目TurboTransformers | 机器之心
    摘要:在多种 CPU 和 GPU 硬件测试中,Transformer 推理加速工具超越 PyTorch/TensorFlow 和目前主流优化引擎的性能。
    性能的提升得益于,调优 Intel MKL 和 cuBLAS 的 GEMM 调用方式,并在硬件允许条件下,可在 GPU 上使用 tensor core 方式进行 GEMM 运算。
    此外,类似于 NVIDIA FasterTransformers 方案,TurboTransformers 将所有 GEMM 运算之间的计算融合成一个调用核心。这样有两个好处,一是减少了内存访问开销,二是减少多线程启动开销。
    对于这些核心,TurboTransformers 在 CPU 上采用 openmp 并行,在 GPU 上用 CUDA 优化实现。对较复杂的 LayerNorm 和 Softmax 算子,虽然它们包含了不适合 GPU 上并行的规约操作,但TurboTransformers 设计了创新的并行算法,降低算子延迟。
  • opencv/opencv:OpenCV4.3正式发布,深度神经网络模块支持全面升级 | OpenCV学堂
    摘要:OpenCV4.3正式发布,包括集成ARM上Tengine推理加速引擎框架支持,OpenVINO加速引擎默认使用 nGraph API等重大改动。对层与激活函数支持提升包括不限于:ONNX对LSTM、广播、分片输入支持等;Darknet支持组卷积、通道尺度、sigmoid与switch;支持MobileNet V3。英特尔OpenVINO的Inference Engine的支持方面:加入nGraph的自定义层支持;默认使用nGraph API作为后台。
  • zylo117/Yet-Another-EfficientDet-Pytorch: The pytorch re-implement of the official efficientdet with SOTA performance in real time and pretrained weights.
    摘要:去年 11 月份,谷歌大脑提出兼顾准确率和模型效率的新型目标检测器 EfficientDet,实现了新的 SOTA 结果。前不久,该团队开源了 EfficientDet 的 TensorFlow 实现代码。
    如此高效的 EfficientDet 还能更高效吗?最近,有开发者在 GitHub 上开源了「PyTorch 版本的 EfficientDet」。该版本的性能接近原版,但速度是官方 TensorFlow 实现的近 26 倍。
    EfficientNets 的效率超过之前常用的主干网络。于是研究者将 EfficientNet 主干网络和 BiFPN、复合缩放结合起来,开发出新型目标检测器 EfficientDet,其准确率优于之前的目标检测器,同时参数量和 FLOPS 比它们少了一个数量级。
  • breezedeus/cnocr: 更轻量的中英文OCR包 cnocr-V1.1.0 发布,最小模型只有 6.8M
    摘要:cnocr 是Python3下的中英文OCR包,通过pip命令安装后即可直接使用。V1.1.0 对代码做了很大改动,重写了大部分训练的代码,也生成了更多更难的训练和测试数据。训练好的模型相较于之前版本的模型精度有显著提升,尤其是针对英文单词的识别。
  • dlunion/DBFace: DBFace is a real-time, single-stage detector for face detection, with faster speed and higher accuracy
    摘要:DBFace 是一个模型仅有7M的轻量级实时人脸识别方法,该项目在保持较小参数量的前提下,识别精度要高很多,并且只需要 OpenCV 和 PyTorch 就能运行。

博文

  • 闲话模型压缩之网络剪枝(Network Pruning)| 极市平台
    摘要:简化模型来减少计算量和存储占用。本文主要谈的就是这一类方法,称为模型压缩(Model compression)。它是软件方法,应用成本低,而且与硬件加速方法并不矛盾,可以相互加成。细分来说,模型压缩又可分很多方法,如剪枝(Pruning)、量化(Quantization)、低秩分解(Low-rank factorization)、知识蒸馏(Knowledge distillation)。每一子类方法展开都可以是很大的话题,来本文主要限于pruning方法。
  • 模型量化总结 | 商汤泰坦公开课
    摘要:模型量化是一种将浮点计算转成低比特定点计算的技术,可以有效的降低模型计算强度、参数大小和内存消耗,但往往带来巨大的精度损失。尤其是在极低比特(<4bit)、二值网络(1bit)、甚至将梯度进行量化时,带来的精度挑战更大。
    由商汤研究院–链接与编译团队的两位研究员分享了团队在模型量化方面的的一系列研究工作,其中包含CVPR 2020、ICCV 2019等多篇与北航刘祥龙老师团队合作的论文成果。
  • 微信扫一扫识物的技术揭秘:抠图与检索 | 腾讯技术工程
    摘要:微信扫一扫识物是典型的“离线写,在线读”的业务,业务数据的存储和检索库的构建都是在离线环节完成。我们通过爬虫系统收录了小程序生态下的商品图片,下载后进行检测抠图,提取检索特征,最终构建成检索库交付到线上环境。这篇文章将主要介绍这一部分的工作。
  • 深入理解深度可分离卷积计算量公式推导 | GiantPandaCV
    摘要:再次复习对比普通卷积与depthwise+pointwise卷积的计算量分析。
  • OpenCV 4.3 with Tengine(飙车版) | 知乎
    摘要:OpenCV 4.3.0已在GitHub上悄悄更新,Tengine作为DNN Module中新增Arm平台的推理后端(Backend)在OpenCV官方版本(稳定版)中便提供了可见的速度提升。
  • 基于Padde-Lite C++ API在树莓派4B上实现视频流的人脸检测与口罩识别 | 飞桨PaddlePaddle
    摘要:百度Paddle-Lite推理框架在树莓派上部署口罩识别的方案介绍,附代码。

往期回顾

  • 嵌入式AI简报 (2020-04-04)
  • 嵌入式AI简报 (2020-03-19)
  • 嵌入式AI简报 (2020-03-02)
  • 嵌入式AI简报 (2020-02-16)
  • 嵌入式AI简报 (2020-01-27)
  • 嵌入式AI简报 (2020-01-06)

本作品采用知识共享署名-相同方式共享 4.0 通用许可协议进行许可。
欢迎关注公众号,关注模型压缩、低比特量化、移动端推理加速优化、部署。

发表评论

邮箱地址不会被公开。 必填项已用*标注