基于Mediatek IoT Genio1200 的即时影像物件识别方案

在MediaTek IoT Genio1200平台上,MediaTek 提供许多不同的软件解决方案,伙伴们可通过CPU、GPU和APU来提供 AI 计算能力。在开发和部署广泛的机器学习时,决大部分会为了推演自行开发出的模型,来提供硬件加速功能,伙伴们也可通过图形处理器来启用 TensorFlot Lite模型的硬件加速。

MediaTek IoT Genio1200 board:

Genio1200 demo board

以MTK IoT Yocto而言,目前已知下列三种方式(CPU、GPU和APU)

第一种是 ARM NN,是一组开源软件,可在 ARM 的硬件设备上实现机器学习工作,它在目前常见的神经网路框架 Cortex-A CPU、ARM Mali GPU 之间桥接,透过 CPU 来运算和推演模型。

第二种是GPU Neural Network Acceleration,它使用的是设备上的 OpenGL ES(OpenGL for Embedded Systems)计算着色器来推演模型。

第三种是 APU Neural Network Acceleration (MediaTek Deep Learning Accelerator and Vision Processing Unit)。

让小弟来为各位伙伴们介绍 MediaTek 专有的深度学习加速器,它是一款功能强大且高效的卷积神经网路(Convolutional Neural Network)加速器,MDLA能够以高乘法累加(Multiply-Accumulate utilization, MAC)利用率实现高 AI 基准测试结果,此设计将 MAC单元与存用功能模块集成在一起。

在开始演练之前,各位伙伴们是否还记得什么是 MediaTek NeuroPilot 呢?忘记的伙伴们,可以回过头去了解 浅谈MediaTek NeuroPilot

NeuroPilot是联发科AI 生态系统的核心。伙伴们可介由NeuroPilot在边缘设备上,以极高的效率开发和部署 AI 应用程序。这使得各种各样的人工智能应用程序运行得更快。伙伴们日后可以在 NeuroPilot SDK内,使用 Neuron编译器( ncc-tflite),用于将 TFLite 模型转换为MediaTek 专有的二进制文件 (DLA, 深度学习存档),以便在 Genio1200 平台上部署。生成的模型非常高效,延迟减少,内存占用更少。 Neuron SDK 还提供了 Neuron Run-time API,它提供了一组 API,可以让伙伴们从 C/C++ 程序中调用这些 API,以创建运行时的环境,解析编译的模型文件,并执行设备上的神经网路推理。



由图示可以知道,DLA档是 MediaTek专有模型,它是 MDLA(MediaTek Deep Learning Accelerator) 和 VPU(Vision processing unit )计算设备的 low-level binary 档案。使用 ncc-tflite 将 TensorFlow lite 模型转换成可在 APU 上推演的 DLA文件,再供给图像/物件识别的应用程序使用。

使用预先写好的脚本来将 TensorFlow Lite模型转换成 DLA 文档,信息如下:

root@i1200-demo:~# ls

convert_tensorflowLite_to_DLA.sh  demos  test.tflite

root@i1200-demo:~# ./convert_tensorflowLite_to_DLA.sh

[apusys][info]apusysSession: Seesion(0xaaaae26f9910): thd(ncc-tflite) version(2) log(0)

root@i1200-demo:~# ls

convert_tensorflowLite_to_DLA.sh  demos  test.dla  test.tflite

root@i1200-demo:~#




如图所示,GstInference 是个开源项目,它提供了一个将深度学习推理整合到 GStreamer 中的框架。可用于众多的深度学习架构进行推理,也可搭配实用的程序来支持自定义的架构。此框架使用 R2Inference,这是 C/C++ 中的一个抽象层,用于各种机器学习框架。单一个 C/C++ 应用程序就可以借助 R2Inference来使用不同框架上的模型。这对于利用不同的硬件执行推理时非常有用 (CPU、GPU、APU的加速器)。本次的演练是基于图中的框架来实现即时影像识别的应用,将刚才转换好的 DLA文档来执行于图像识别的推演。

接下来执行预先配置好的脚位来实现图像和物件识别的演练。

root@i1200-demo:~# ls

convert_tensorflowLite_to_DLA.sh  labels_objectD.txt   test2.dla

demos                             objectD.dla          test2.tflite

image_classification.sh           object_detection.sh

labels.txt                        test.tflite

root@i1200-demo:~# ./image_classification.sh


执行结果将会显示于 HDMI 屏上,可以看到所推演出的物件为 ballpoint pen




继续执行物件识别的演示。

root@i1200-demo:~# ls

convert_tensorflowLite_to_DLA.sh  labels_objectD.txt   test2.dla

demos                             objectD.dla          test2.tflite

image_classification.sh           object_detection.sh

labels.txt                        test.tflite

root@i1200-demo:~# ./object_detection.sh

 


推演的结果,可以看到识别为 bottle



推演的结果可以看到识别为 monitor



推演的结果可以,可以看到识别为 chair



本次的演示就到此,有兴趣的伙伴们可以一起来讨论和研究,谢谢大家!

►场景应用图

►展示板照片

►方案方块图

►核心技术优势

双核AI处理器单元(APU) 可处理基于 AI 的任务,支持深度学习(Deep Learning)、神经网络(Neural Network)加速和计算机视觉(computer vision)应用。

►方案规格

CPU: Arm Cortex-A78 x4 Arm Cortex-A55 x4 GPU: Arm Mali-G57 MP5 APU: MediaTek AI Processor (dual core) Video processing: Video encoding 4K60fps HEVC/H.264 Video decoding 4K90fps AV1/VP9/HEVC/H.264 Software: Android/Yocto Linux/Ubuntu/NeuroPilot SDK Interface: HDMI 2.0 receiver (HDMI RX) PCIE3.0 USB3.1 GbE MAC ISP, 48MP@30fps/16MP+16MP@30fps