鸣涧 发表于 2022-11-24 12:42:07

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

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



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

MediaTek AIoT Genio1200 board:



以MTK AIoT 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 NeuroPilotNeuroPilot是联发科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.shdemostest.tflite

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

apusysSession: Seesion(0xaaaae26f9910): thd(ncc-tflite) version(2) log(0)

root@i1200-demo:~# ls

convert_tensorflowLite_to_DLA.shdemostest.dlatest.tflite

root@i1200-demo:~#


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

convert_tensorflowLite_to_DLA.shlabels_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.shlabels_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 x4Arm Cortex-A55 x4GPU:Arm Mali-G57 MP5APU:MediaTek AI Processor (dual core)Video processing:Video encoding 4K60fps HEVC/H.264Video decoding 4K90fps AV1/VP9/HEVC/H.264Software:Android/Yocto Linux/Ubuntu/NeuroPilot SDKInterface:HDMI 2.0 receiver (HDMI RX)PCIE3.0USB3.1GbE MACISP, 48MP@30fps/16MP+16MP@30fps


► 相关视频基於Mediatek Genio1200的即時影像物件識別方案視頻Hello大家好,我是品佳 Apollo,我來為大家介紹本次演練的流程,gstinference 是使用機器學習框架的抽象層,使用此框架,將深度學習集成到 gstreamer pipeline 中,將它用於實時應用程序。

至於它是如何做到的呢?
當相機的影像輸入到 Genio1200之後,將capture到的圖像 scaler縮小,進行mobilenet模型的推演和覆蓋分類的結果到框架中,最後透過 gstreamer 預覽畫面到屏上,我們可以看到畫面中就是進行自動圖像分類推演後的成果。

接下來根據不同的模型進行推演得到的結果也會不一樣。

本次的介紹就到此,有興趣的夥伴們,可以一同來探討和研究,謝謝大家!




页: [1]
查看完整版本: 基于Mediatek AIoT Genio1200 的即时影像物件识别方案