1987WEB视界-分享互联网热门产品和行业

您现在的位置是:首页 > 人工智能AI > 正文

人工智能AI

边缘盒子(Hi3559)AI算法(yolo)移植

1987web2023-08-17人工智能AI136
个人记录,有些地方还需要完善

个人记录,有些地方还需要完善边缘盒子背景:

AI 正处于从研究阶段迅速转向大规模实际应用部署的临界点,而边缘算力盒子就是走向落地的有力现实。随着算法模型越来越复杂,落地应用逐渐增多,大量的数据产生于端侧,对于靠近端侧的算力产生了前所未有的需求:需要满足实时性、带宽利用率、处理能力等。边缘算力盒子就在这些需求下火爆,它有很多名字:智能边缘计算盒、AI 算力盒、AIoT 盒、边缘智盒、边缘智能物联网盒,本质就是具备 AI 能力的轻量级边缘计算设备

事实上,它并不是一个横空出世的新产品,甚至可以追溯到早期的嵌入式数据分析盒子。当时主要为了辅助终端设备对采集数据做初步的分析与加速,不过由于数据类型较少,单次处理数据量小,实时处理性能要求并不高,并且也不具备上传云端功能,很难直接共享数据。

随着嵌入式硬件计算与存储能力的提升,以及云计算、大数据技术的发展,众多硬件厂商给出了一些加速引擎,使得嵌入式数据分析盒子能够处理大数据能力,出现了微型大数据分析盒子。

有了以上两个阶段的基础,随着 5G 等通信技术的发展,使得端边云可以进行海量数据的快速传输。此外,随着深度学习技术的发展和应用,嵌入式人工智能领域十分重要的两类算法——语音识别和图像识别,在近两年取得了突破性进展,对于靠近端侧的算力产生了前所未有的需求。正是在这一背景下,边缘算力盒子需求大增,与之前的数据分析盒子相比,计算性能大大提升,且时延降低、带宽利用率更高,安全性、实时性都更好。

目前,边缘算力盒子应用最多的还是在智能视频监控、分析和数据存储等应用场景。玩家不乏 NVIDIA、Intel 这样的传统硬件巨头,还有百度、海思这样的实力选手,最近,飞腾、比特大陆、寒武纪、云天励飞等也在纷纷组团入局。

从方案结构来看,各阵营又有不同。NVIDIA、Intel 自身就可提供一揽子的平台方案,海思的 Camera SoC 由于新加入了 AI 模块,也可以独当一面,这也是其最大竞争力。像比特大陆、寒武纪等 AI 芯片公司提供的属于协处理器,则需要搭配主控芯片来形成方案。

:协处理器(coprocessor),一种芯片,用于减轻系统微处理器的特定处理任务。

边缘盒子AI算法移植

  1. 准备算法模型

算法模型:算法网络结构搭建,数据处理,模型训练,模型测试,评估。

以YOLOv3为例,我们主要研究的是AI算法移植这一块,所以上面过程不做介绍,我这里直接在github上找了一个caffe的YOLO代码;https://github.com/hojel/caffe-yolo-model

配置环境:Ubuntu 16.4 无GPU CUDA,python2,caffe,OpenCV2

CPU版本的Caffe框架兼容性差,坑比较多,一定按照对应的版本配置安装。(目前 NNIE 配套软件及工具链仅支持以 Caffe 框架,使用其他框架的网络模型需要转化为 Caffe 框架下的模型才可以被编译器支持。)

  • 通过测试可以跑通。
  • "python yolo_main.py -m model_filename -w weight_filename -i image_filename"
  1. 算法移植
  2. 准备工作:完成3559A的Hi交叉编译器的安装并解压sdk包

由于嵌入式单板的资源有限,不能在单板上运行开发和调试工具,通常需要交叉编译 调试的方式进行开发和调试,即宿主机+目标机(评估板)的形式。宿主机和目标 机一般采用串口连接,也可同时通过网口或者 JTAG 连接。

注:交叉编译器命名规则arch [-vendor] [-os] [-(gnu)eabi]

  • arch - 体系架构,如ARM,MIPS
  • verdor - 工具链提供商
  • os - 目标操作系统
  • eabi - 嵌入式应用二进制接口
  • arm-none-eabi:这个是没有操作系统的。

step1. 复制并拷贝 aarch64-himix100-linux.tgz 与 Hi3559AV100_SDK_V2.0.2.0.tar 到 linux下。

step2. 在拷贝后的目录下解压并安装交叉编译器,进入拷贝后的目录执行

tar -zxf aarch64-himix100-linux.tgz

cd aarch64-himix100-linux

sudo ./aarch64-himix100-linux.install

source /etc/profile

step3. 安装SDK包,进入拷贝后的目录执行

tar -zxf Hi3559AV100_SDK_V2.0.2.0.tar

cd Hi3559AV100_SDK_V2.0.2.0

sudo ./sdk.unpack

  1. 完成Ruyi Stdio的安装

RuyiStudio 集成 windows 版的 NNIE 编译器和仿真库,具有编译 NNIE wk 功能、仿真NNIE 功能,同时具有代码编辑、编译、调试、执行功能、网络拓扑显示、目标检测画框、向量相似度对比、调试定位信息获取等功能。Ruyi stdio不需要安装,只需要打开就行,所有的文件都在 HiSVP_PC_V1.1.2.0.tar 文件中,解压之后,直接双击打开即可,注意路径中不要出现中文路径,有可能导致编译器出现问题。

依赖:Visual Studio 2015 64 bi;MinGW-W64 7.2.0

具体安装参考《HiSVP开发指南》中的第4章。

  1. caffemodel转换wk文件

ruyistdio 安装成功后,将我们训练好的模型,

yolo_small_deploy.prototxt和权重yolo_small.caffemodel ,放入新建的文件中。具体参照开发指南。

参考链接:https://blog.csdn.net/feitme/article/details/106758318

  1. RuyiStudio PC仿真

仿真有两种运行模式:指令级和功能级。模拟在板子上运行,为在板子上运行做准备。

参考链接:https://blog.csdn.net/avideointerfaces/article/details/89037223

  1. 算法移植到hi3559单板上

首先需要搭建开发环境,一个典型的嵌入式开发环境通常包括 Linux 服务器、Windows 工作台和目标板,三者同处于一个网络中。

串口连接
  1. 在ubuntu上进入SDK目录下的mpp/sample/svp/big-little,并将自己的wk文件与bgr图像放入nnie/data中。进入nnie/sample文件夹,打开并编辑sample_nnie.c 文件,找到下面这两部分,按照自己的需求进行更改。(这边是一个难点,需要熟悉网络结构,输入输出)

(2)这里由于条件限制,我才用串口+主机和开发板直连的方式,进行模型移植运行。串口利用SecureCRT软件连接。

使用 NFS 文件系统进行开发。(前提要将主机、虚拟机、开发板实现两两相互可以ping通,需要配置网络,参考链接:https://blog.csdn.net/zkw12312/article/details/81006814

步骤 1. 在开发阶段,推荐使用 NFS 作为开发环境,可以省去重新制作和烧写根文件系统的工作。

步骤 2. 挂载 NFS 文件系统的操作命令:

mount -t nfs -o nolock -o tcp -o rsize=32768,wsize=32768 xx.xx.xx.xx:/your-nfs-path /mnt

步骤 3. 然后就可以在/mnt 目录下访问服务器上的文件,并进行开发工作。