0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

fireflyNCC S1--PLAI神经网络量化工具介绍

firefly 来源:firefly 作者:firefly 2019-11-18 14:13 次阅读
PLAI

PLAI是一个基于PyTorch的神经网络量化工具 - 用于将浮点神经网络转换为定点 神经网络实现(给GTI 2801s使用), 或从头开始训练定点模型。 PLAI使用主机的CPUGPU进行训练,使用GTI NPU USB Dongle进行推理验证。

PLAI现支持GNet1、GNet18和GNetfc三种基于VGG-16的模型。

运行要求及建议

PLAI运行硬件要求如下:

  • Intel i5 3.0 GHz及以上主频或者更高性能CPU (Intel i7为较佳选择)
  • 8 GB及以上内存
  • 独立显卡6GB及以上显存,推荐使用GTX 1060及以上显卡,AMD显卡不适用。(此项为可选,但强烈推荐,可大大缩短训练时间)

PLAI最终会使用USB Dongle进行推理测试,如果有则可以进行配置使用。

PLAI现支持以下系统:

运行环境配置
环境依赖
  • Python3
  • PyTorch
  • OpenCV
  • CUDA 9.0及以上版本(可选)
Ubuntu

这里以使用Miniconda进行环境配置为例。

安装过程如下:

ubunut16.04:~$ sudo chmod +x Downloads/Miniconda3-latest-Linux-x86_64.sh ubunut16.04:~$ ./Downloads/Miniconda3-latest-Linux-x86_64.sh Welcome to Miniconda3 4.5.11 In order to continue the installation process, please review the license agreement. Please, press ENTER to continue >>> (回车) ... Do you accept the license terms? [yes|no] [no] >>> yes(回车) ... - Press CTRL-C to abort the installation - Or specify a different location below [/home/firefly/miniconda3] >>> (回车) ... (安装过程) Do you wish the installer to prepend the Miniconda3 install location to PATH in your /home/firefly/.bashrc ? [yes|no] [no] >>> yes(回车)

以上将Miniconda安装在用户根目录miniconda3下,同时设置默认使用Miniconda的程序。

可以通过以下操作使Miniconda生效并测试:

ubunut16.04:~$ source ~/.bashrc ubunut16.04:~$ conda -V conda 4.5.11

接着,如果有英伟达独立显卡加速,可以通过以下操作安装PyTorch和OpenCV:

ubunut16.04:~$ conda install pytorch torchvision -c pytorch ubunut16.04:~$ pip install opencv-contrib-python

否则,请执行以下操作:

ubunut16.04:~$ conda install pytorch-cpu torchvision-cpu -c pytorch ubunut16.04:~$ pip install opencv-contrib-python

如果有显卡加速可参考此页面进行安装配置,否则可跳过此步骤。

cuda安装操作摘抄如下:

ubunut16.04:~$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_10.0.130-1_amd64.deb ubunut16.04:~$ sudo dpkg -i cuda-repo-ubuntu1604_10.0.130-1_amd64.deb ubunut16.04:~$ sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub ubunut16.04:~$ sudo apt-get update ubunut16.04:~$ sudo apt-get install cuda

最后,进行USB Dongle配置(可选),可在PLAI目录下执行以下操作配置并验证:

ubunut16.04:~/PLAI$ sudo cp lib/python/gtilib/*.rules /etc/udev/rules.d/ ubunut16.04:~/PLAI$ ls /dev/sg* -l crw-rw-rw- 1 root disk 21, 0 11月 20 10:28 /dev/sg0 crw-rw-rw- 1 root disk 21, 1 11月 20 10:28 /dev/sg1

如果出现未找到设备的情况请参考常见问题进行排查。

Windows 10

待完善…(可部分参考Ubuntu的配置过程)

环境测试

以下操作可测试环境完整性,如无错误,则配置完成。

ubunut16.04:~$ python Python 3.7.0 (default, Jun 28 2018, 13:15:42) [GCC 7.2.0] :: Anaconda, Inc. on linux Type "help", "copyright", "credits" or "license" for more information. >>> import torch,cv2 >>> torch.cuda.is_available() True >>>
参数设置
training.json文件
  • num_classes - 数据集分类个数,即data/train和data/val中的文件夹(分类)数
  • max_epoch - 所有训练向量一次用于更新权重的次数
  • learning_rate - 确定权重变化的速度
  • train_batch_size - 根据GPU内存设置
  • test_batch_size - 根据GPU内存设置
  • mask_bits - 表示每个主层(卷积层)的掩码
  • act_bits - 表示每个主层(卷积层)的激活参数
  • resume - 设置是否从一个已知的checkpoint中开始训练
  • finetune - 可选项, 启用此项通常能得到更高的精度
  • full - 设置是否训练一个全精度模型

mask_bits和act_bits参数参考如下:

  1. GNetfc
    • mask_bits: 3,3,1,1,1,1
    • act_bits: 5,5,5,5,5,5
  2. GNet18
    • mask_bits: 3,3,3,3,1
    • act_bits: 5,5,5,5,5
  3. GNet1
    • mask_bits: 3,3,1,1,1
    • act_bits: 5,5,5,5,5
PLAI.py参数

PLAI.py暂不支持命令行参数,需要修改PLAI.py源码。

通常修改源码位置大约在142行,原始内容如下:

gtiPLAI = PLAI(num_classes=2, data_dir=data_dir, checkpoint_dir=checkpoint_dir, model_type=0, module_type=1, device_type=1)
  • num_classes - 可在training.json中设置
  • data_dir - 默认为data目录
  • checkpoint_dir - 默认为checkpoint目录
  • model_type - 设置训练的模型,0: GNetfc, 1: GNet18, 2:GNet1
  • module_type - 0: Conv(w/o bias) + bn + bias,1: Conv(w/ bias) + bn
  • device_type - 用于推理的GTI设备类型,ftdi: 0, emmc: 1
模型训练

将训练图片数据按类型存放到PLAI data目录下以类型名命名的文件夹中,然后调整training.json和修改PLAI.py(默认网络模型为GNetfc)在PLAI根目录下执行以下操作即可。

ubunut16.04:~$ python PLAI.py
模型使用

训练结束会生成coefDat_2801.dat、coefBin_2801.bin(GNetfc没有此文件)和data/pic_label.txt,如果是GNet1可用到AI资料U盘中的sample中测试。 其中userinput.txt可在PLAI nets目录下找到,如netConfig_2801_gnet1.txt。使用示例如下:

liteSample -c coefDat_2801.dat -u netConfig_2801_gnet1.txt -f coefBin_2801.bin -l pic_label.txt

测试时请注意userinput.txt即-u参数文件中的设备节点是否正确。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • WINDOWS
    +关注

    关注

    3

    文章

    3524

    浏览量

    88398
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6085

    浏览量

    35196
  • Firefly
    +关注

    关注

    2

    文章

    538

    浏览量

    6980
收藏 人收藏

    评论

    相关推荐

    MATLAB神经网络工具箱函数

    MATLAB神经网络工具箱函数说明:本文档中所列出的函数适用于MATLAB5.3以上版本,为了简明起见,只列出了函数名,若需要进一步的说明,请参阅MATLAB的帮助文档。1. 网络创建函数newp
    发表于 09-22 16:10

    labview BP神经网络的实现

    请问:我在用labview做BP神经网络实现故障诊断,在NI官网找到了机器学习工具包(MLT),但是里面没有关于这部分VI的帮助文档,对于”BP神经网络分类“这个范例有很多不懂的地方,比如
    发表于 02-22 16:08

    神经网络基本介绍

    神经网络基本介绍
    发表于 01-04 13:41

    【PYNQ-Z2试用体验】神经网络基础知识

    能在外界信息的基础上改变内部结构,是一种自适应系统,通俗的讲就是具备学习功能。现代神经网络是一种非线性统计性数据建模工具。简单来说,就是给定输入,神经网络经过一系列计算之后,输出最终结果。这好比人的大脑
    发表于 03-03 22:10

    如何构建神经网络

    原文链接:http://tecdat.cn/?p=5725 神经网络是一种基于现有数据创建预测的计算系统。如何构建神经网络神经网络包括:输入层:根据现有数据获取输入的层隐藏层:使用反向传播优化输入变量权重的层,以提高模型的预测
    发表于 07-12 08:02

    量化神经网络的相关资料下载

    原文链接:【嵌入式AI部署&基础网络篇】轻量化神经网络精述--MobileNet V1-3、ShuffleNet V1-2、NasNet深度
    发表于 12-14 07:35

    卷积神经网络一维卷积的处理过程

    inference在设备端上做。嵌入式设备的特点是算力不强、memory小。可以通过对神经网络量化来降load和省memory,但有时可能memory还吃紧,就需要对神经网络在memory使用上做进一步优化
    发表于 12-23 06:16

    基于Hopfield神经网络的图像矢量量化

    矢量量化是图像压缩的重要方法。论文提出了基于Hopfield 神经网络的图像矢量量化方法,该方法首先构造聚类表格;然后聚类表格按离散Hopfield 神经网络串行方式运行;最后根据
    发表于 07-11 08:19 19次下载

    神经网络基本介绍

    神经网络基本介绍,人工神经网络(简称神经网络,Neural Network)是模拟人脑思维方式的数学模型。 神经网络是在现代生物
    发表于 12-06 15:07 0次下载

    fireflyNCC S1 神经网络计算卡简介

    基于AI专用的APiM架构,无需外部缓存的模块化深度神经网络学习加速器,用于高性能边缘计算领域,可作为基于视觉的深度学习运算和AI算法加速。外形小巧,极低功耗,拥有着强劲算力,配套完整易用的模型训练工具网络训练模型实例,搭配专
    的头像 发表于 11-11 11:04 1285次阅读
    <b class='flag-5'>fireflyNCC</b> <b class='flag-5'>S1</b> <b class='flag-5'>神经网络</b>计算卡简介

    fireflyNCC S1神经网络计算卡介绍

    Firefly神经网络计算卡是Firefly推出的,配合Firefly开发板使用的NPU(Neural Processing Unit)模块。模块搭载GTI(全称Gyrfalcon
    的头像 发表于 11-18 14:36 1912次阅读
    <b class='flag-5'>fireflyNCC</b> <b class='flag-5'>S1</b><b class='flag-5'>神经网络</b>计算卡<b class='flag-5'>介绍</b>

    12个将神经网络画地更好看的工具

    本文介绍了了12个将神经网络画地更好看的工具。一个用于画卷积神经网络的Python脚本
    的头像 发表于 06-13 14:10 3707次阅读
    12个将<b class='flag-5'>神经网络</b>画地更好看的<b class='flag-5'>工具</b>

    神经网络量化:它是什么,它与TinyML有什么关系?

    本文将基本了解机器学习背景下的量化,特别是微型机器学习(tinyML)。 主要挑战tinyML就是怎么拿一个比较大的 神经网络,有时约为数百兆字节,使其适合并在资源受限的微控制器上运行,同时保持最小
    的头像 发表于 01-27 16:43 3076次阅读
    <b class='flag-5'>神经网络</b><b class='flag-5'>量化</b>:它是什么,它与TinyML有什么关系?

    matlab神经网络工具箱结果分析

    神经网络是一种强大的机器学习技术,广泛应用于各种领域,如图像识别、语音识别、自然语言处理等。MATLAB提供了一个功能强大的神经网络工具箱,可以帮助用户快速构建和训练神经网络模型。本文将介绍
    的头像 发表于 07-03 10:32 520次阅读

    如何使用MATLAB神经网络工具

    和训练神经网络。本文将介绍如何使用MATLAB神经网络工具箱,以及如何解读神经网络的结果图。 MATLAB神经网络工具箱简介 MATLAB
    的头像 发表于 07-03 10:34 2184次阅读