Cambricon MLU220 边缘端运行离线模型

随着嵌入式处理器以及 NPU 性能越来越强大,边缘端对机器学习、人工智能的需求变得可行,传统的 ARM 架构嵌入式 SOC 集成 NPU 变成主流,本内容主要介绍寒武纪 MLU220 在边缘端的使用,主要涉及到 ARM 架构的交叉编译以及边缘端的环境设置。

一、边缘端环境介绍

  1. 简介

如图(1):IVP02-D 人工智能工作站是一款支持运行深度学习神经网络算法的智能视频分析处理终端设备。内部集成了MLU220 NPU,高达 16Tops 超强算力。高性能配置的主控平台,具备 16路 1080P 高清视频的解码能力,集成多种视频信号处理单元,具有轻量化、高性能、低功耗、接入方便等特点,广泛应用于人脸识别、智能安防、行为分析等各个领域。

                 
                       图(1)

 

  1. 资源图解

  如图(2)为正面图解:

                
                图(2)
 

 图(3)为背面图解:

                    
             图(3)

 

  1. 3. 硬件资源

  如图(4)所示,IVP02-D 内部使用了一块集成了4 X ARM CortexA55 核心以及

1 X Cambricon MLU220 NPU 的 SOC,并搭载了 8G LPDDR4 运行内存和 32G eMMc,

16M Nor Flash 外部存储。

                 
    图(4)

 

 

二、  交叉编译

  1. 从 FTP 服务器下载测试工程 tar.gz以及交叉工具链到编译主机,如图(5),建议使用 Ubuntu18.04,下载地址请联系atu.cn@wpi-group.com
                   
         图(5)

 

  1. 主机安装 cmake 工具

$sudo apt install cmake

 

  1. 解压交叉工具链和tar.gz。修改 prj 工程的 CMakeLists.txt 文件,指定交叉工具链路径。

如图(6)

           
          图(6)

 

  1. 修改 prj_220_arm/app/main.cpp 函数。Prj 提供了多个测试函数,但是在边缘端运行的 Linux 系统并没有提供 GTK 图形界面,因此所有调用了 cv::imshow()函数的测试程序只能计算,不能显示,并会报错终止运行。这里我们挑选测试例程 test_ssd_threads_batch(),该函数没有显示需求。见图(7)

              

图(7)

 

  1. 编译

执行以下命令编译工程:

$cd build

$cmake ..

$make

编译成功如图(8):

           
    图(8)
  1. 打包工程,copy到 U 盘准备测试运行。

$cd prj_220_arm

$tar -zcvf prj.tar.gz ./*

 

 

三、运行模型

  1. 按照图(9)所示,将含有tar.gz 的 U 盘插在IVP02-D USB 接口上,连接 Type-C 调试接口,连接 12V 电源,上电启动。

 

                

 图(9)

 

  1. 挂载 U 盘,解压 tar.gz。

$mkdir /cambricon/prj-arm

$mkdir /cambricon/app

$mount /dev/sdb1 /cambricon/app

$cd /cambricon/app

$tar -zxvf prj.tar.gz -C /cambricon/prj-arm

 

  1. 输入 cmmon,检查 MLU220 驱动,IVP02-D 默认已经安装好驱动和 cntoolkit,图(10)

           

 图(10)

  1. 修改环境变量,将第三方库路径加入到变量 LD_LIBRARY_PATH。

$export LD_LIBRARY_PATH=/cambricon/prj-arm/3rd/opencv/lib34:/cambricon/prj-arm/3rd/opencv/lib:/cambricon/prj-arm/3rd/cncv/lib:/cambricon/prj-arm/3rd/cambricon/lib:$LD_LIBRARY_PATH

  1. 运行 run 程序

$cd /cambricon/prj-arm/build

$./run

                   运行结果如图(11)                                   

                     
 图(11)
 

四、总结

  1. 边缘端 Linux 系统基本没有 GTK 图形界面,因此,一个可行的方案是使用 QT 图形库编写相关的 app。
  2. 本次测试使用了现成的 ARM 架构的第三方库,针对不同平台,不同的编译器,应该尽量掌握各种库的交叉编译方法。

  

参考资料:

  1. Cambricon-Driver-User-Guide-CN-v4.8.0.pdf
  2. IVP02D 人工智能工作站_用户手册3.pdf

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论