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

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

3天内不再提示

采用PYNQ和Vitis AI的智能办公解决方案

XILINX开发者社区 来源:XILINX开发者社区 作者: 赛灵思开发者 2021-11-12 10:08 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文投稿作者: zst123 (github.com/zst123)

信息通信电子爱好者, 热衷于钻研新技术。

使用 Ultra96-V2 进行边缘 AI 和图像处理的分布式移动办公办公室管理可扩展解决方案。

项目简介

在这个项目中,我将创建一款用于智能办公室移动办公布局的应用。

现代办公室正在广泛采用“移动办公”的概念。通过“先到先得”的方式能够更有效地利用共享的空间和办公桌。然而,其中面临的问题在于,员工可能会浪费更多时间来寻找空置的办公桌。此外,跟踪占用率并在预订就系统中进行更新的工作也很单调乏味。借助基于边缘的图像处理功能,我们能够检测区域内的人员并确定办公桌是否被占用。

在技术方面,我将使用 Ultra96-V2 演示 Vitis AI 模型库和面向 PYNQ 的 DPU IP 核的编译流程。我将从零开始进行编译,这样将更方便在以后修改硬件设计,我感觉获取环境设置的过程有些混乱,所以我会为大家一步一步地进行记录。

PYNQ & Vitis AI 工作流程说明

在开始之前,有一点很重要,我们需要知道 Ultra96-V2 使用的是赛灵思 Zynq UltraScale+ MPSoC。我们可以把它称为基于 ARMFPGA,这意味着它既包含处理系统 (PS),也包含可编程逻辑 (PL)。

我将会使用 PYNQ,我们需要制作在 PS 上运行的 Python 脚本。使用预编译的 PYNQ 叠加(或比特流),我们可以在 PL 中配置深度学习处理器单元 (DPU)。在 PS 上运行的软件可以使用 DPU 来加速图像识别任务。

使用的额外硬件

除了 Ultra96-V2 软件包以外,您可能还需要以下这些额外的硬件。

1.USB 摄像头

我使用的是 Logitech C170 USB 摄像头。

通常,大多数 Logitech 网络摄像头应该开箱即用。其他带有 Linux 驱动程序的品牌也应该能够很好地工作。

2.有源 Mini-DisplayPort 适配器

我使用的是 PowerColour Active Mini Displayport to Single-Link DVI 适配器。

Ultra96-V2 只输出纯 DisplayPort 信号,因此需要配备有源适配器。

为了获得更好的搜索结果,您可以尝试搜索“兼容 ATI Eyefinity”的适配器。众所周知,Eyefinity 适配器是有源的。

请注意:如果您有预算限制,可以不用这些。

例如,可以使用 IP 摄像头作为替代, 有一些应用可以将您的智能手机用作 IP 摄像头。如果您使用 USB 或远程 SSH 进行连接,则可能不需要 mini-DP 适配器。

准备 PYNQ 镜像

我们首先将 PYNQ 加载到电路板上,并做一些测试。您可以从从官方网站下载 Avnet Ultra96-V2 v2.5 PYNQ 镜像。

http://www.pynq.io/board.html

您可以在社区版块下面找到它。

根据这些说明将镜像写入 SD 卡中。

https://pynq.readthedocs.io/en/latest/appendix.html#writing-the-sd-card

插入您的 SD 卡,在 Ubuntu 上,您将能够在磁盘 应用中看到您安装的主板。

在这种情况下,器件名称是 /dev/sdb

c0fb525a-42bb-11ec-b939-dac502259ad0.png

卸载分区:

$ umount /dev/sdb

在处理下一个命令的器件名称时要非常小心,我们将要使用 PYNQ 镜像覆盖 SD 卡内容。

您可以使用 dd 命令将 PYNQ 镜像写入 SD 卡中,我决定使用 dcfldd 来显示进度:

$ sudo dcfldd bs=4M if=ultra96v2_v2.5.img of=/dev/sdb

1536 blocks (6144Mb) written.

1574+1 records in

1574+1 records out

启动 PYNQ

插入 SD 卡并按下电源按钮,以启动电路板。

c14d82fa-42bb-11ec-b939-dac502259ad0.png

将 Micro USB 电缆从您的 PC 连接到 Ultra96-V2,您将在您的 PC 上看到一个新的以太网接口

您现在可以通过此链接在浏览器中访问 Jupyter Notebook http://192.168.2.1:9090

如果需要密码,那就是“xilinx”

连接到 WiFi

我们需要将电路板连接到 Wifi,因为我们将下载一些东西。如果您有 USB-to-Ethernet 适配器,您也可以使用它,并跳过这个部分。

带有脚本的 Jupyter Notebook 可以帮助您连接到 Wifi。导航到

notebooks/common/wifi.ipynb,在这里您可以将脚本修改为您自己的 Wifi 凭证。

或者,如果您熟悉 Linux 系统,您也可以发出以下命令:

# Scan Wifi

$ ifconfig wlan0 up

$ iwlist wlan0 scan

# Connect to WEP access point

$ iwconfig wlan0 essid “YOUR_SSID_NAME” key s:YOUR_PASSWORD

# Connect to WPA access point

$ wpa_passphrase YOUR_SSID_NAME YOUR_PASSWORD 》 /etc/wpa_supplicant.conf

$ sudo wpa_supplicant -c /etc/wpa_supplicant.conf -i wlan0 -B

在这里,我们可以从 Web 界面打开一个新的终端:

c220478a-42bb-11ec-b939-dac502259ad0.png

使用 Vitis AI 升级到最新的PYNQ

在后续步骤中,我们将在终端中发出一些命令,以便下载和安装大量软件包, 这估计需要 1 个小时的时间。

我建议安装 USB 风扇或任何散热装置,因为 Ultra96-V2 会变得非常得烫手。当它很热时,处理器将开始减少热量并减慢进程。

从 Jupyter Notebooks 打开终端。

从 Github Repo 下载并编译 Vitis AI PYNQ DPU。这个步骤是使用 Vitis-AI 来升级 PYNQ(可能需要大约一个小时才能完成):

$ git clone --recursive --shallow-submodules https://github.com/Xilinx/DPU-PYNQ.git

$ cd DPU-PYNQ/upgrade

$ make

安装 pynq-dpu python 包:

pip3 install pynq-dpu

将 pynq-dpu notebooks 下载到您的主文件夹中

cd $PYNQ_JUPYTER_NOTEBOOKS

pynq get-notebooks pynq-dpu -p 。

测试 USB 网络摄像头功能

连接您的 USB 网络摄像头并测试功能:

这里我使用的是 Logitech C170,PYNQ 可以自动检测到它,您可以使用此命令进行确认。

$ lsusb

Bus 001 Device 004: ID 046d:082b Logitech, Inc. Webcam C170

在 Jupyter 中,通过。/notebooks/common/usb_webcam.ipynb 打开 notebook,您可以运行它,以查看您的网络摄像头是否正常工作。

现在,我们已经验证了该电路板功能齐全。我们可以从 Vitis AI 库编译 PYNQ DPU 镜像和模型。

准备编译环境

我们需要安装赛灵思 Vitis 和赛灵思运行时 (XRT) 2020.1 版本。对于 Vitis 和 XRT 2020.1,受支持的最新操作系统是 Ubuntu 18.04.2 LTS。

Ubuntu 20.04 不受支持,所以我无法成功安装。因此,我在虚拟机中安装了所有东西。

通过此链接下载赛灵思运行时 (XRT) 的 .deb 文件

https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-platforms.html

使用此命令来进行安装:

sudo apt install 。/xrt_202010.2.6.655_18.04-amd64-xrt.deb

接下来,下载赛灵思统一 Web 安装程序,它将安装 Vitis 2020.1。您需要注册一个赛灵思帐户。请遵循此网站上的说明

https://www.xilinx.com/html_docs/xilinx2020_1/vitis_doc/juk1557377661419.html

将 swappiness 设置为较低的值也很有帮助,因为构建过程中会使用大量的 RAM。它会告知操作系统在换出到硬盘之前可以使用更多的 RAM。

https://askubuntu.com/questions/103915/how-do-i-configure-swappiness

如需更改系统 swappiness 值,通过 root 权限打开 /etc/sysctl.conf

sudo gedit /etc/sysctl.con

然后,通过添加此行来更改 swappiness。我选择将该值设置为 1。这意味着在将 RAM 交换到硬盘之前,系统将使用高达 99% 的 RAM(剩余 1%)。

c3992154-42bb-11ec-b939-dac502259ad0.png

应用更改。

sudo sysctl -p

c3c539d8-42bb-11ec-b939-dac502259ad0.png

现在我们准备开始编译……

为 Ultra96-V2 编译 DPU-PYNQ

我们将仔细参考本指南:

https://github.com/Xilinx/DPU-PYNQ/blob/master/boards/README.md

首先,从赛灵思 DPU-PYNQ 库中复制构建文件

git clone --recursive --shallow-submodules https://github.com/Xilinx/DPU-PYNQ.git

cd DPU-PYNQ/boards

我们必须对构建文件进行一些更改,因为它们最初是在 Vitis 2019.2 中设计的,但现在我们正在使用新版本进行编译。

在 boards 文件夹中,编辑 check_env.sh

搜索 2019.2,将其改为 2020.1

c442498c-42bb-11ec-b939-dac502259ad0.png

同样转至 /vitis-ai-git/DPU-TRD/dpu_ip/dpu_eu_v3_2_0,并编辑 component.xml

搜索 2019.2,将其改为 2020.1

c4f0dcfe-42bb-11ec-b939-dac502259ad0.png

最后,如果您想对 DPU IP 配置进行任何更改,请转至 boards/Ultra96/dpu_conf.vh。

在这个案例中,我将存储器更改为 RAM_USAGE_HIGH。

c561595c-42bb-11ec-b939-dac502259ad0.png

我们准备好开始编译了:

打开一个终端,并获取赛灵思工具

source /opt/Xilinx/Vitis/2020.1/settings64.sh

source /opt/xilinx/xrt/setup.sh

开始编译(请注意: Ultra96 和 Ultra96-V2 可以使用相同的方法)

$ make BOARD=Ultra96

过了一段时间后,构建再次失败了,因为它检查到版本是 2019.2,而不是 2020.1。

查看 DPU-PYNQ/boards 目录。这是因为有一个名为 PYNQ-derivative-overlays 的新文件夹。构建脚本复制了另一个名为 PYNQ-derivative-overlays 的存储库。它负责将 DPU IP 置于 PYNQ 基础叠加之上。

转至 PYNQ-derivative-overlays/dpu/ 并编辑 dpu.tcl

同样地,将 2019.2 更改为 2020.1

c5ff29ca-42bb-11ec-b939-dac502259ad0.png

然后继续制作过程。

$ make BOARD=Ultra96

c63bf04e-42bb-11ec-b939-dac502259ad0.png

综合过程所花的时间最长,可能需要一个小时

完成后,您将看到以下文件, 这些文件是面向 PYNQ 的比特流叠加。

我会将这些文件上传到 Juypyter 实例中,放在一个名为 mymodel 的文件夹中。

在右上角,单击“新建 》 文件夹”

然后在文件夹中,单击“上传”并选择 3 个文件。

从 Vitis 模型库编译 YoloV3

请注意:模型是特定于您编译的 DPU(即一种 DPU 配置的模型与另一种不兼容)。例如,这意味着如果您更改编译时使用的内核数量,您还必须重新编译模型。

准备 docker 文件

cd DPU-PYNQ/host

mkdir -p docker

cp -rf 。。/vitis-ai-git/docker_run.sh 。

cp -rf 。。/vitis-ai-git/docker/PROMPT.txt docker

chmod u+x docker_run.sh

安装 docker

sudo apt install docker -y

sudo groupadd docker

newgrp docker

运行 docker 实例

。/docker_run.sh xilinx/vitis-ai-cpu:latest

c742406a-42bb-11ec-b939-dac502259ad0.png

进入实例后,您可以编译模型

cp 。。/boards/Ultra96/dpu.hwh 。/

。/compile.sh Ultra96 tf_yolov3_voc_416_416_65.63G_1.1

c7a7a4c8-42bb-11ec-b939-dac502259ad0.png

完成后,您将在目录中看到模型 dpu_tf_yolov3.elf

也将其上传到您的 Jupyter 实例:

Notebook 示例

pynq_dpu/dpu_yolo_v3.ipynb 中有一个示例,它可以测试 YoloV3 模型

现在制作副本(文件 》 制作副本),并修改代码以指向 mymodel 文件夹,其中包含我们自己编译的比特流和模型

c85bde3e-42bb-11ec-b939-dac502259ad0.png

运行所有单元(单元 》 运行所有)

c8686b0e-42bb-11ec-b939-dac502259ad0.png

验证镜像已经分类成功

我们终于准备好创建我们的应用了!

应用代码

最后,在完成了所有的硬件设置和测试后,我编写了软件代码来创建我自己的智能办公室移动办公应用。

它由 2 个并行运行的 Jupyter Notebooks 组成。第一个负责设置 PYNQ 叠加和处理视频馈送。第二个将利用数据显示基于座位可用性的控制面板。

结论

我希望这篇文章对您来说已经足够全面详细了。这是我第一次使用赛灵思硬件来了解边缘上的 FPGA 和 AI。因此,在开始时,最难的部分是使用开发工具和适应环境,因此,我尽力详细地展示了尽可能多的设置过程。感谢您阅读完全文!

编辑:jq

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

    关注

    1655

    文章

    22283

    浏览量

    630209
  • ARM
    ARM
    +关注

    关注

    135

    文章

    9499

    浏览量

    388674
  • AI
    AI
    +关注

    关注

    89

    文章

    38090

    浏览量

    296526
  • DPU
    DPU
    +关注

    关注

    0

    文章

    407

    浏览量

    26194
  • PYNQ
    +关注

    关注

    4

    文章

    62

    浏览量

    3293

原文标题:月度项目 | 采用 PYNQ 和 Vitis AI 的智能办公解决方案

文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    达实智能构建企业办公空间智慧场景解决方案

    为了给企业用户提供优质的整体智能方案服务,达实智能搭建了以AIoT智能物联网管控平台为核心的 “1 + 4 + N ” 产品体系,用丰富的行业原生应用,实现互联互通和数据共享,让数据
    的头像 发表于 11-28 10:24 362次阅读

    AMD Vitis AI 5.1测试版现已开放下载

    AMD Vitis AI 5.1全新发布——新增了对 AMD Versal AI Edge 系列神经网络处理单元( NPU )的支持。Vitis A
    的头像 发表于 11-08 09:24 982次阅读

    AMD Vitis AI 5.1测试版发布

    AMD Vitis AI 5.1全新发布——新增了对 AMD Versal AI Edge 系列神经网络处理单元 (NPU) 的支持。Vitis A
    的头像 发表于 10-31 12:46 489次阅读

    新联合众AI赋能智能办公解决方案亮相香港环球资源电子展

    新联在展会中重磅推出多款AI赋能的智能办公创新产品,展现了公司在电子配件领域的前沿技术实力,成为展会焦点。   智能办公
    的头像 发表于 10-15 17:43 377次阅读
    新联合众<b class='flag-5'>AI</b>赋能<b class='flag-5'>智能</b><b class='flag-5'>办公</b><b class='flag-5'>解决方案</b>亮相香港环球资源电子展

    华为AI UBB解决方案加速网络迈向高阶智能

    解决方案,包括AI FAN、AI OTN、AI WAN和ADN四大部分,端到端覆盖家庭网络、承载网络和UBB智能管控系统。
    的头像 发表于 06-23 15:56 1196次阅读

    九联科技AI解决方案接入AI大模型

    在人工智能技术迅猛发展的今天,九联科技凭借其领先的物联网通信模组技术和创新的AI应用方案,再次走在了行业的前沿。日前,九联科技AI解决方案
    的头像 发表于 03-07 17:21 955次阅读

    启明智显AI(人工智能解决方案加速传统企业智能化转型

    启明智显AI解决方案,将AI技术深入传统行业,支持多模态交互、生成式AIoT、灵活调用AI能力,通过快捷、经济的方案助力企业实现
    的头像 发表于 02-27 17:33 1041次阅读
    启明智显<b class='flag-5'>AI</b>(人工<b class='flag-5'>智能</b>)<b class='flag-5'>解决方案</b>加速传统企业<b class='flag-5'>智能</b>化转型

    启明智显AI解决方案,用AI生活助手角度打开AI智能体的一天

    启明智显AI解决方案打造AI生活助手,用AI智能体的角度看AI
    的头像 发表于 02-26 14:43 1009次阅读
    启明智显<b class='flag-5'>AI</b><b class='flag-5'>解决方案</b>,用<b class='flag-5'>AI</b>生活助手角度打开<b class='flag-5'>AI</b><b class='flag-5'>智能</b>体的一天

    广和通正式推出AI玩具大模型解决方案

    广和通近期推出了一款创新的AI玩具大模型解决方案,该方案深度融合了豆包等AI大模型,并内置了广和通Cat.1模组,为智能玩具的
    的头像 发表于 01-24 10:36 1728次阅读

    广和通发布AI玩具大模型解决方案

    近日,广和通推出了一项专为AI玩具设计的创新解决方案——AI玩具大模型解决方案。该方案深度融合了豆包等领先的
    的头像 发表于 01-21 14:45 1574次阅读

    广和通推出AI玩具大模型解决方案

    广和通推出AI玩具大模型解决方案,该方案深度融合豆包等AI大模型、内置广和通Cat.1模组,助力智能玩具实现
    的头像 发表于 01-21 10:27 1664次阅读

    移远通信推出AI智能玩具解决方案

    为了满足玩具厂商日益增长的智能化升级需求,移远通信近日宣布推出了一款针对玩具市场的AI智能解决方案。该方案旨在通过AI大模型的赋能,为传统玩
    的头像 发表于 01-16 11:33 1290次阅读

    黑芝麻智能与RockAI发布AI Agent解决方案

    黑芝麻智能与RockAI联合发布基于武当C1200家族芯片的AI Agent解决方案,该方案将部署于未来的智能座舱应用中。
    的头像 发表于 01-10 16:33 1290次阅读

    企业AI解决方案包括哪些内容

    企业AI解决方案是一种集成了人工智能技术的综合性方案,旨在提高企业运营效率、降低成本、优化业务流程,并提升企业的整体竞争力。那么,企业AI
    的头像 发表于 01-10 10:15 1006次阅读

    广和通发布AI Buddy产品及解决方案,创新AI智能终端

    1月9日,在2025国际消费电子展览会(CES)期间,广和通发布集智能语音交互及翻译、4G/5G全球漫游、随身热点、智能娱乐、充电续航等功能于一体的AIBuddy(AI陪伴)产品及解决方案
    的头像 发表于 01-09 18:24 1141次阅读
    广和通发布<b class='flag-5'>AI</b> Buddy产品及<b class='flag-5'>解决方案</b>,创新<b class='flag-5'>AI</b><b class='flag-5'>智能</b>终端