X86与FPGA相结合,基于PIB的AI开发——人体姿态识别

人体姿态估计是计算机视觉领域中用于理解和分析人类行为的一个关键技术。它主要涉及到检测和识别图像或视频中人体的各个关键点,并预测这些关键点之间的空间关系,从而构建出人体的骨架模型。

本文将介绍基于PIB板的人体姿态估计案例。这是一个交互式的实时人姿态识别的Openvino案例展示,它是在Intel X86 i7 CPU和 Cyclone V GT FPGA之间进行异构计算。

1. 系统组成

系统主要由一套PIB板、一套D8M + lvds TX 子卡+ LVDS线以及一台HDMI显示器组成。

PIB是一个基于Intel x86 i7 CPU和 Cyclone V GT FPGA 的智能开发平台,结合FPGA可重配置和CPU的软件可编程能力。

PIB板主要分为FPGA基板和CM模块。PIB 规格如下:

CPU

Intel 11th Core i7

HDMI x1

Ethernet x1 (I219)

USB3.0 x3, USB2.0 x1

Audio Jack x1

SATA x1, mSATAx1, M.2 for Wifi x1

RS232 x2, RS485 x1 (shared with FPGA)

20-pin GPIO Header x1 

FPGA

Serial configuration device: EPCQ256

External JTAG header

1GB DDR3 SDRAM(32-bit data bus)

Gigabit Ethernet x4

LVDS Camera x4, MIPI Camera x2

RS232 x2, RS485 x1, CAN x2

20-pin GPIO Header

9-axis sensor

FPGA_RST Button x1, KEY x2, green LED x2

Four 50MHz clock sources

FPGA基板

图片

图片

CM模块

图片

图片

D8M

D8M-GPIO 是一个 2x20 pin GPIO 接口的八百万素摄像头套件。套件内包含了 MIPI Camera Module 以及MIPI decoder。

MIPI Camera module 撷取影像后输出 MIPI 影像讯号封包,该影像讯号封包经过 MIPI decoder 转换成 10-bits parallel 的 bayer pattern,最终由 2x20 pin GPIO connector 输出。MIPI Camera Module 并内建了控制焦距的音圈马达 ( Voice Coil Motor;VCM ),开发者可透过 I2C 来控制对焦距离。

lvds TX 子卡

接口转换子卡,将GPIO槽口转lvds接口。

图片

2. OpenVINO简介

OpenVINO是Intel推出的开放可视化推理及神经网络优化工具包,运用OpenVINO 可以很轻松的将各种优化后的AI模型部署到 CPU+ FPGA上,从而降低了开发成本和开发时间,还提高了设计性能。

OpenVINO主要特点有:

  • 支持在边缘设备上进行CNN深度学习推理

  • 支持跨Intel计算机视觉加速器的异构加速执行,CPU,英特尔集成图形化,英特尔神经计算棒及FPG。

  • 使用统一的API 通过易于使用的计算机视觉函数和预先优化的内核加速上市时间。

  • 包括对OpenCV*, OpenCL™, and OpenVX*等对算机视觉标准的优化调用。

图片

OpenVINO包含深度学习部署工具包,该工具包主要分以下两个模块:

  • 模型优化器:基于Python的命令行工具从主流的深度学习框架(如caffe,TensorFlow, Apache MXNet等)导入训练过的模型。输入训练模型,优化网络拓扑,并将其转换为IR(中间表示)文件。

  • 推理引擎:推理引擎使用统一的API在您选择的平台(如CPU, GPU, VPU, FPGA)等提供优化的推理解决方案,来进行异构处理和异步执行以节省开发时间。

OpenVINO工作流程

以下是使用 OpenVINO优化并部署训练后的模型的步骤:

1. 为您的框架配置模型优化器

2. 转换训练后的模型,根据训练的网络拓扑、权重和偏置值生成模型的优化中间表示 (IR)文件

3. 通过验证应用程序或示例应用程序,在目标环境中使用推理引擎以中间表示格式测试模型

4. 在应用程序中集成推理引擎,以在目标环境中部署模型

图片

本案例也是直接用Intel openvino预训练好的模型,将人体姿态估计demo部署到PIB的过程。

3. 硬件设计

下图所示为PIB RTL设计系统框图,CPU可通过PCIE_DMA_Ctl子系统中的PCIe Gen2 x1配置Camera子系统,LVDS camera 拍摄到的图像数据会由 Camera 子系统进行处理,然后存储到 DDR3 内存中,CPU 可通过 PCIE_DMA_Ctl 子系统中的 PCIe Gen2x4 读取 DDR3 中的图像数据。

图片

4. 应用程序

如下是人体姿态识别的应用程序流程图:

图片

5. 测试步骤

1. 将D8M-GPIO子卡连接到LVDS-TX子卡上。

图片

2. 将GMSL线缆连接到LVDS-TX子卡的J2接口。

图片

3. 将GMSL线缆的另一端连接到PIB底板的LVDS0(J4)接口。

图片

4. 保持SW1处于OFF,然后将24V/5A电源适配器的插头插到PIB底板的DC_IN(J20)接口,开机PIB系统。

图片

5. PIB系统启动后,显示器上会显示输入密码的界面,输入密码(terasic)进入系统桌面。

图片

4. 视频演示

视频请参考原文:X86与FPGA相结合,基于PIB的AI开发——人体姿态识别

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/4379.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kotlin语法入门-数据类、伴生类、枚举类(9)

Kotlin语法入门-数据类、伴生类、枚举类(9) 文章目录 Kotlin语法入门-数据类、伴生类、枚举类(9)九、数据类、伴生类、枚举类1、数据类2、伴生类2.1、定义伴生类2.2、JvmStatic注解2.3、const关键字 3、枚举类3.1、定义3.2、传参3.3、继承与实现 九、数据类、伴生类、枚举类 1…

适用于Windows和Mac的十大误删除数据恢复软件

数据恢复是从辅助存储或可移动文件中找回丢失、删除或损坏的数据的过程。数据丢失的原因有很多。因此,有必要恢复已删除的数据。有各种可用的软件工具,使用户能够恢复任何类型的已删除数据。但是,任何数据恢复都有四个主要阶段。他们正在修复…

【C 数据结构】普通树

文章目录 【 1. 树的双亲表示法 】【 2. 树的孩子表示法 】【 3. 树的孩子兄弟表示法 】 前面学了二叉树的存储结构,本节学习如何存储具有普通树结构的数据。例如下图所示为普通树存储结构。 通常,存储具有普通树结构数据的方法有 3 种: 双…

Linux红帽(RHCE)认证学习笔记-(1)Linux 文件管理

Linux 文件管理 1. Linux下的目录结构 / 是Linux里的根目录 Linux的一级目录 /boot :存放的是系统的启动配置⽂件和内核⽂件/dev :存放的是Linux的设备⽂件/etc:存放的是Linux下的配置文件/home:存放普通用户的家目录/media&am…

NDK 基础(一)—— C 语言知识汇总

本系列文章主要是介绍一些 NDK 开发所需的基础知识,目录如下: NDK 基础(一)—— C 语言知识汇总 NDK 基础(二)—— C 语言基础与特性1 NDK 基础(三)—— C 语言基础与特性2 NDK 基础…

MF(推荐系统的矩阵分解技术)论文笔记

论文概述 推荐系统的矩阵分解技术可以为用户提供更为准确的个性化推荐,对比传统的近邻技术,矩阵分解技术可以纳入更多信息,如隐式反馈、时间效应和置信度 近邻技术:基于用户或物品之间的相似性进行推荐,当用户之间已…

ChatGPT4.0知识问答、DALL-E生成AI图片、Code Copilot辅助编程,打开新世界的大门

目录 1、DALL-E 文字转图片 在线AI修改2、Write For Me3、Code Copilot 目前最强的AI编程大模型4、Diagrams: Show Me5、Instant Website [Multipage] 网站合成神器6、AskYourPDF Research Assistant 无限PDF7、Diagrams & Data: Research, Analyze, Visualize 精读Excel …

【注解和反射】获取类运行时结构

继上一篇博客【注解和反射】类加载器-CSDN博客 目录 七、获取类运行时结构 测试 getFields()和getDeclaredFields() getMethods()和getDeclaredMethods() 七、获取类运行时结构 获取类运行时结构通常指的是在Java等面向对象编程语言中,使用反射(Ref…

迁移学习基础知识

简介 使用迁移学习的优势: 1、能够快速的训练出一个理想的结果 2、当数据集较小时也能训练出理想的效果。 注意:在使用别人预训练的参数模型时,要注意别人的预处理方式。 原理: 对于浅层的网络结构,他们学习到的…

[Swift]单元测试

编写单元测试是确保你的代码质量和功能正确性的重要步骤 一、编写单元测试的详细流程 1. 创建一个新的Xcode项目 如果你尚未创建一个项目,首先你需要在Xcode中创建一个新的iOS项目: 打开Xcode,选择“File” > “New” > “Project”…

重生之我是Nginx服务专家

nginx服务访问页面白色 问题描述 访问一个域名服务返回页面空白,非响应404。报错如下图。 排查问题 域名解析正常,网络通讯正常,绕过解析地址访问源站IP地址端口访问正常,nginx无异常报错。 在打开文件时,发现无法…

R可视化:ggplot2绘制双y轴图

介绍 ggplot2绘制双y轴图加载R包 knitr::opts_chunk$set(message = FALSE, warning = FALSE) library(tidyverse) library(readxl)# rm(list = ls()) options(stringsAsFactors = F) options(future.globals.maxSize = 10000 * 1024^2)Importing data 下载Underdetection of c…

IDEA实现Springboot项目自动热部署

每当我们在修改代码时,往往需要重新启动项目,这样不仅浪费时间而且很麻烦,我们可以通过IDEA的热部署来提高效率 1、首先点file >> settings >> Build Excution >> Compire,选择Build project auto matically 2.…

CMakeLists.txt中如何添加编译选项?

1. 引子 编译器有多种可供选择,如g、c、clang等,如下以c作为示例。 2. 使用CMAKE_CXX_FLAGS添加编译选项 在Makefile中可能用类似如下的指令来添加编译选项: /usr/bin/c -Wall -Wextra -Wno-sign-compare -Wno-unused-variable -Wno-unuse…

flutter笔记-主要控件及布局

文章目录 1. 富文本实例2. Image2.1 本地图片2.2 网络图片 笔记3. 布局4. 滑动相关view4.1 GridView类似九宫格view4.2 ListView 关于widget的生命周期的相关知识这里就不做介绍,和很多语言类似; 1. 富文本实例 Dart中使用richtext,示例如下…

Vue3+Vite开发的项目进行加密打包

本文主要介绍Vue3+Vite开发的项目如何进行加密打包。 目录 一、vite简介二、混淆工具三、使用方法1. 安装插件:2. 配置插件:3. 运行构建:4. 自定义混淆选项:5. 排除文件:下面是Vue 3+Vite开发的项目进行加密打包的方法。 一、vite简介 Vite 是一个由 Evan You 创造的现代…

XBoot:基于Spring Boot 2.x的一站式前后端分离快速开发平台

XBoot:基于Spring Boot 2.x的一站式前后端分离快速开发平台 摘要 随着信息技术的迅速发展,快速构建高质量、高可靠性的企业级应用成为了迫切需求。XBoot,作为一个基于Spring Boot 2.x的一站式前后端分离快速开发平台,通过整合微信…

针对icon报错

针对上篇文章生成图标链接中图标报错 C# winfrom应用程序添加图标-CSDN博客 问题:参数“picture”必须是可用作Icon的参数 原因:生成的ico图标类型不匹配 解决方法: 更改导出的ico类型

iOS - 多线程-读写安全

文章目录 iOS - 多线程-读写安全1. 多读单写1.1 场景1.2 实现方案1.2.1 pthread_rwlock:读写锁1.2.1.1 示例 1.2.2 dispatch_barrier_async:异步栅栏调用1.2.2.1 示例 iOS - 多线程-读写安全 假设有一个文件,A线程进行读取操作,B…

数智时代的AI人才粮仓模型解读白皮书(2024版)

来源:极客邦科技 自 2023 年上半年起,ChatGPT 等大模型技术蓬勃发展,AI 技术不断突破边界,展现 出惊人的潜力和发展速度。从早期的逻辑推理、专家系统,到如今的深度学习、神经网络, AI 技术显著缩小了科学…