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

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

3天内不再提示

Temporal-Shift-Module在 FPGA上解决视频理解问题的实用性和性能

OpenFPGA 来源:OpenFPGA 2023-07-07 10:47 次阅读

在这个项目中,将在线和离线 TSM 网络部署到 FPGA,通过 2D CNN 执行视频理解任务。

1776a3c8-1c5e-11ee-962d-dac502259ad0.png

介绍

在这个项目中,展示了 Temporal-Shift-Module ( https://hanlab.mit.edu/projects/tsm/)在 FPGA 上解决视频理解问题的实用性和性能。

TSM 是一种网络结构,可以通过 2D CNN 有效学习时间关系。在较高级别上,这是通过一次对单个帧(在线 TSM)或多个帧(离线 TSM)执行推理并在这些张量流经网络时在这些张量之间转移激活来完成的。这是通过将shift操作插入 2D 主干网的bottleneck层(在本例中为 mobilenetv2 和 resnet50)来完成的。然后,该shift操作会打乱时间相邻帧之间的部分输入通道。

详细的解析可以看下面的文章:

https://zhuanlan.zhihu.com/p/64525610

将这样的模型部署到 FPGA 可以带来许多好处。首先,由于 TSM 已经在功效方面带来了巨大优势,部署到 FPGA 可以进一步推动这一点。

TSM网络结构

我们将首先回顾这些 TSM 网络的底层结构以及到 DPU 兼容实现的转换。TSM 网络的核心结构是插入骨干模型bottleneck层中的时间shift模块,以实现时间建模。例如,插入shift操作后,TSM MobilenetV2 bottleneck层具有以下结构:

17a3a8b4-1c5e-11ee-962d-dac502259ad0.png

Online Shift

在演示的在线 TSM 网络中,如果我们处于时间步骤 T,我们也处于推理轮 T。shift模块将输入通道的前 1/8 移位到包含来自上一推理轮的相同通道的shift缓冲区( T – 1)。然后,第 (T – 1) 轮的内容被移入 T 轮的当前张量。

Offline Shift

对于离线 TSM,如 resnet50 演示(当前禁用)中所使用的,shift缓冲区被绕过。相反,我们将N 个相邻的时间步骤作为批次中的张量进行处理。通道可以在批次内直接移动,而不是将步骤 (T – 1) 中的通道存储在缓冲区中。此外,这使得能够访问批次内的未来回合(即推理步骤 T 可以与步骤 T + 1 存在于同一批次中)。通过这种访问,离线shift也会将通道从步骤 T + 1 移位到步骤 T 的张量中。

DPU模型优化

为了将TSM部署到 DPU,需要对原始 TSM 模型进行两项重大更改。第一个是将shift模块与网络分离,因为我们无法使用支持的张量流操作来实现shift操作。为了实现这一目标,我们在每次出现shift模块时对模型进行管道化。

17ca8920-1c5e-11ee-962d-dac502259ad0.png

通过将shift模块放置在其自己的管道阶段,我们可以灵活地从 DPU 内核卸载shift操作。下面我们可以看到 MobilenetV2 在线 TSM 的前 4 个管道阶段(从右到左)。如果比较两个bottleneck层实现,并删除shift操作,则这对应于以下转换,其中bottleneck层在移位模块之前包含 1 个输出,在shift模块之后包含 2 个输入。一个输入包含来自顶部分支的移位后张量,另一个输入包含底部分支中未移位的残差张量。

1801df7e-1c5e-11ee-962d-dac502259ad0.png

为简单起见,这里我们使用 mobilenetV2 主干网来可视化 TSM,但 resnet-50 主干网也使用相同的方法。

为了实现这种流水线结构, Tensorflow 模型中有一个标志,指示我们是否要生成不包括移位操作的拆分模型(用于 DPU 部署)或在 Tensorflow 中实现移位操作的普通统一模型。如果设置了分割标志,则在每次移位操作之前添加新的输出,并在移位后添加新的占位符,其中输入移位后的输入。

因为移位(shift)模块仅插入到类似于上面所示的 3 级 MobilenetV2 瓶颈的结构中,所以逻辑的实现得到了简化。然而,对于 resnet 模型,我们确保在快捷路径中的归约逻辑之后插入移位管道阶段。由于移位+卷积路径在瓶颈层完成之前独立于快捷路径,因此快捷路径上的操作可以放置在3个阶段中的任何一个中。

DPU量化策略

虽然如上所述对模型进行流水线化简化了转换实现,但由于我们的网络不再是单个内核,因此使 DPU 部署变得复杂。相反,我们为每个管道阶段都有一个内核,无需进行移位操作(MobilenetV2 为 11,resnet50 为 17)。

为了量化这样的网络,我们必须为每个内核提供未量化的输入。为了生成这些信息,我们的模型可以在没有管道阶段的情况下生成。然后,我们直接在 Tensorflow 中对来自真实校准数据集的帧进行推理,但是我们在每个管道边界转储中间网络状态。转储的状态包括需要馈送到 vai_q_tensorflow 的节点名称等元数据以及相应的张量数据。当在校准集中重复推理时,所有这些信息都会被“波及”。

转储此中间推理信息后,我们获得了输入 vai_q_tensorflow 的每个内核的输入张量。该逻辑全部由我们的tensorflow模型脚本和quantize_split.sh脚本中的DUMP_QUANTIZE标志处理(项目结构在“Deployment”部分中描述)。一旦对所有内核运行量化,我们就可以为每个内核生成一个 ELF 文件,就可以集成到我们的主代码中。

演示

下面我们介绍 2 个平台(ZCU104 和 Ultra96V2)和 2 个模型(MobilenetV2 Online TSM 和 Resnet50 Offline TSM)的性能细分。我们将 FPS 计算为 1/(预处理 + 推理延迟)。

MobilenetV2 在线 TSM 延迟:

ZCU104 (60.1 FPS) - B4096,300MHz,RAM 高,启用所有功能

185fa168-1c5e-11ee-962d-dac502259ad0.png

Ultra96V2 (38.4 FPS) - B2304,300MHz,RAM 低,启用所有功能

188ff282-1c5e-11ee-962d-dac502259ad0.png

现在,我们可以将推理延迟与之前在移动设备和 NVIDIA Jetson 平台上收集的 TSM 数据进行比较。

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

    关注

    1631

    文章

    21806

    浏览量

    606684
  • 模块
    +关注

    关注

    7

    文章

    2740

    浏览量

    47828
  • 网络
    +关注

    关注

    14

    文章

    7604

    浏览量

    89365

原文标题:在这个项目中,将在线和离线 TSM 网络部署到 FPGA,通过 2D CNN 执行视频理解任务。

文章出处:【微信号:Open_FPGA,微信公众号:OpenFPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Labview FPGA Module有人用过吗?

    本人是Labview小白,刚接触,有个问题想请教大家,我看labview介绍有FPGA Module,有人用过吗?使用FPGA Module开发的代码能下载到自己开发的
    发表于 03-08 22:09

    深刻认识Shift RAM学习笔记

    3x3矩阵,FPGA中生成3x3矩阵有以下三种方法:(1)通过2个或者3个RAM的存储来实现3X3像素窗口;(2)通过2个或者3个FIFO的存储来实现3X3像素窗口;(3)通过2行或者3行
    发表于 08-31 10:57

    Checkpoints_and_Temporal_Separation

    Checkpoints_and_Temporal_Separation
    发表于 01-25 10:18

    简单语法怎么理解

    repeat(size)beginif(shift_opb[1])result = result + shift_opa;shift_opa = shift_opa 1;end这段程序
    发表于 05-27 04:35

    SPI slave无法理解语法

    这里找到了一个SPI slave verilog模块代码开始时,autthor使用传输SCK与FPGA时钟同步//使用3位移位寄存器将SCK同步到FPGA时钟reg [2:0] SCKr;总是
    发表于 06-14 10:30

    实用性很强的程序分享!

    借原子哥宝地。。。。很多实用性很强的程序,一定会解决你垒码时遇见的问题,欢迎来看看!!帮收藏下也好.......https://shop60994719.taobao.com
    发表于 08-19 21:50

    FPGA与ASSP视频处理相比有什么不同?

    随着数字融合的进一步发展,系统的设计和实现需要更大的灵活性,以解决将完全不同的标准和要求整合为同类产品时引发的诸多问题。本文介绍FPGA视频处理中的应用,与ASSP和芯片组解决方案相比,FP
    发表于 08-22 08:21

    视频监控系统中使用FPGA进行视频处理

    视频监控系统中使用FPGA进行视频处理:视频监控系统是火车站,机场,银行,娱乐场所,购物中心乃至家庭保安的重要组件。 您可以使用xili
    发表于 09-22 08:12 36次下载

    XtremeDSP视频入门套件(VSK)加速FPGA上的视频

    随着下一代视频压缩标准问世,行业从基本视频处理向更复杂的集成处理解决方案转移,这使得系统的要求超越了独立DSP力所能及的视频性能
    发表于 07-17 08:56 649次阅读

    通过XtremeDSP视频入门套件加速FPGA上的视频应用开发

    随着下一代视频压缩标准问世,行业从基本视频处理向更复杂的集成处理解决方案转移,这使得系统的要求超越了独立DSP力所能及的视频性能
    的头像 发表于 05-13 08:07 1411次阅读
    通过XtremeDSP<b class='flag-5'>视频</b>入门套件加速<b class='flag-5'>FPGA</b>上的<b class='flag-5'>视频</b>应用开发

    如何使用FPGA视频图像领域的应用视频教程资料免费下载

    本文档的主要内容详细介绍的是如何使用FPGA视频图像领域的应用视频教程资料免费下载。
    发表于 02-26 11:02 16次下载
    如何使用<b class='flag-5'>FPGA</b><b class='flag-5'>在</b><b class='flag-5'>视频</b>图像领域的应用<b class='flag-5'>视频</b>教程资料免费下载

    FPGA视频教程之FPGA视频图像处理领域的应用视频资料说明

    本文档的主要内容详细介绍的是FPGA视频教程之FPGA视频图像处理领域的应用视频资料说明。
    发表于 04-04 16:40 35次下载
    <b class='flag-5'>FPGA</b><b class='flag-5'>视频</b>教程之<b class='flag-5'>FPGA</b><b class='flag-5'>在</b><b class='flag-5'>视频</b>图像处理领域的应用<b class='flag-5'>视频</b>资料说明

    FPGA视频处理中的应用综述

    FPGA视频处理中的应用综述
    发表于 06-19 10:37 18次下载

    传音InfinixCES 2024上推出最新突破技术E-Color Shift

    近日,传音旗下品牌InfinixCES 2024上推出最新突破技术E-Color Shift,可以使手机背面面板不消耗电力的情况下改变并保持鲜艳的颜色。
    的头像 发表于 01-23 11:39 1287次阅读

    Credo发布HiWire SHIFT AEC新品

    该新系列SHIFT AEC产品是基于Credo先进的800G HiWire AEC设计优化而来,能效卓越,性能更佳,且具有极致的可靠
    的头像 发表于 09-12 14:07 413次阅读