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

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

3天内不再提示

基于PYNQ的软件框架实现SSD目标检测算法硬件加速方案

454398 来源:PYNQ开源社区 作者:PYNQ开源社区 2020-09-26 11:33 次阅读

设计目的与应用

随着人工智能的发展,神经网络正被逐步应用于智能安防、自动驾驶、医疗等各行各业。目标识别作为人工智能的一项重要应用也拥有着巨大的前景,随着深度学习的普及和框架的成熟,卷积神经网络模型的识别精度越来越高。有名的LeNet-5手写数字识别网络,精度达到99%,AlexNet模型和VGG-16模型的提出突破了传统图像识别算法,GooLeNet和ResNet推动了卷积神经网络的应用。

但是神经网络的发展也给我们带来了更多挑战,权重参数越来越多,计算量越来越大导致了复杂的模型很难移植到移动端或嵌入式设备中,且嵌入式环境对功耗、实时性、存储都有着严格的约束。因此如何将卷积神经网络部署到嵌入式设备中是一件非常有意义的事情。目前神经网络在传统嵌入式设备上绝大部分是基于ARM平台,神经网络在ARM上部署时存在的巨大问题是算力的不足。GPU主要应用于神经网络训练阶段,对环境和库的依赖性较大,国内技术积累较弱,难以实现技术自主可控。ASIC 是为特定需求而专门定制优化开发的架构,灵活性较差,缺乏统一的软硬件开发环境,开发周期长且造价极高。所以,基于FPGA的硬件加速平台是时候发挥它的优势了。FPGA由于独特的架构,被广泛的应用与实时信号处理、图像处理领域,其并行性也为卷积神经网络提供了巨大算力。

传统的RTL开发FPGA流程相比缓慢,不如软件的开发效率高,所以HLS运营而生,使用高层次语言来进行转换为底层的硬件代码,极大的加快开发进程。因此项目选用HLS工具来实现算法中的加速IP核,将SSD目标检测网络移植到FPGA硬件平台上, 对于硬件加速过程中的算法并行性,在本设计中主要采用两个方式:对层内的运算并行化,将多个通道的数据进行分块,每一块内的通道同时进行运算,最后将结果累加在一起。对于模块的运算采用HLS并行优化,对数组核循环添加优化指令进行优化。整个系统采用PYNQ的软件框架来实现,为SSD目标检测算法提供了硬件加速方案,充分发挥了FPGA的并行性。

SSD目标检测算法原理

SSD于2016年提出,是经典的单阶段目标检测模型之一。它的精度可以媲美FasterRcnn双阶段目标检测方法,速度却达到了59FPS(512x512,TitanV),单阶段目标检测方法的目标检测和分类是同时完成的,其主要思路是利用CNN提取特征后,均匀地在图片的不同位置进行密集抽样,抽样时可以采用不同尺度和长宽比,物体分类与预测框的回归同时进行,整个过程只需要一步,所以其优势是速度快。

SSD采用的主干网络是VGG网络,VGG是由Simonyan 和Zisserman在文献《Very Deep Convolutional Networks for Large Scale Image Recognition》中提出卷积神经网络模型,其名称来源于作者所在的牛津大学视觉几何组(Visual Geometry Group)的缩写。该模型参加2014年的 ImageNet图像分类与定位挑战赛,取得了优异成绩:在分类任务上排名第二,在定位任务上排名第一。

基于PYNQ的软件框架实现SSD目标检测算法硬件加速方案

图1.VGG16网络结构

这里的VGG网络相比普通的VGG网络有一定的修改,主要修改的地方就是:

1、将VGG16的FC6和FC7层转化为卷积层。

2、去掉所有的Dropout层和FC8层;

3、新增了Conv6、Conv7、Conv8、Conv9。

图2.SSD主干网络结构

上图展示了SSD的主干网络结构,整个网络为全卷积网络结构,SSD将VGG16的两个全连接层转换成了普通的卷积层,池化层POOL5由原来的stride=2,kernel大小2x2变成stride=1,kernel大小3x3,为了不改变特征图大小同时获得更大的感受野,Conv6改为空洞卷积,diliation=6,输入的图片经过了改进的VGG网络(Conv1->fc7)和几个另加的卷积层(Conv6->Conv9)进行特征提取。

从图2我们可以看出,SSD将conv4_3、conv7、conv6_2、conv7_2、conv8_2、conv9_2都连接到了最后的检测分类层做回归,6个特征图分别预测不同大小和长宽比的边界框,具体细节如图3。

图3.SSD特征提取网络

SSD为每个检测层都预定义了不同大小的先验框(prior boxes),Conv4_3、Conv8_2和Conv9_2分别有4个先验框,而Conv7、conv7_2和Conv8_2分别有6种先验框,即对应于特征图上的每个像素,都会生成4或6个prior box.

在浅层的神经网络里,只能看到图片的细节和纹理信息,就如管中窥豹。随着网络层数的加深,相当于把图片往后移动一段距离。这样才能够感知到图片的整体信息。低层卷积可以捕捉到更多的细节信息,高层卷积可以捕捉到更多的抽象信息。低层特性更关心“在哪里”,但分类准确度不高,而高层特性更关心“是什么”,但丢失了物体的位置信息。SSD正是利用不同尺度检测图片中不同大小和类别的目标物体,获得了很好的效果。

作品展示





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

    关注

    1592

    文章

    21207

    浏览量

    592139
  • SSD
    SSD
    +关注

    关注

    20

    文章

    2656

    浏览量

    115284
  • 人工智能
    +关注

    关注

    1773

    文章

    43356

    浏览量

    230105
  • 卷积神经网络

    关注

    3

    文章

    279

    浏览量

    11649
收藏 人收藏

    评论

    相关推荐

    音视频解码器硬件加速实现更流畅的播放效果

    随着多媒体内容的日益丰富和高清化,传统的软件解码已经难以满足人们对流畅播放体验的需求。因此,音视频解码器硬件加速技术的出现,为提升播放效果带来了革命性的改变。 硬件加速的原理 硬件加速
    的头像 发表于 02-21 14:40 213次阅读
    音视频解码器<b class='flag-5'>硬件加速</b>:<b class='flag-5'>实现</b>更流畅的播放效果

    【KV260视觉入门套件试用体验】PYNQ初次上手体验

    KV260 Vision 套件以及其他套件配合使用。 它可用于创建具有以下功能的高性能应用程序: 并行硬件执行 高帧率视频处理 硬件加速算法 实时信号处理 高带宽 IO 低延迟控制 PYNQ
    发表于 10-18 01:22

    【KV260视觉入门套件试用体验】 硬件加速之—使用PL加速FFT运算(Vivado)

    的应用,比如在数学,密码学,天文学,地震学,生物学等领域。 本文主旨 利用PL端的并行性和灵活性来实现高效的FFT运算,在KV260搭建一个硬件加速算法,作为对比,我同时使用ARM核进行fft运算,验证PL
    发表于 10-02 22:03

    Alveo卡的区块链硬件加速器解决方案

    电子发烧友网站提供《Alveo卡的区块链硬件加速器解决方案.pdf》资料免费下载
    发表于 09-15 14:42 0次下载
    Alveo卡的区块链<b class='flag-5'>硬件加速</b>器解决<b class='flag-5'>方案</b>

    硬件加速自然语言理解解决方案

    电子发烧友网站提供《硬件加速自然语言理解解决方案.pdf》资料免费下载
    发表于 09-13 10:45 0次下载
    <b class='flag-5'>硬件加速</b>自然语言理解解决<b class='flag-5'>方案</b>

    Hyperon—大数据应用的硬件加速解决方案

    电子发烧友网站提供《Hyperon—大数据应用的硬件加速解决方案.pdf》资料免费下载
    发表于 09-13 10:12 0次下载
    Hyperon—大数据应用的<b class='flag-5'>硬件加速</b>解决<b class='flag-5'>方案</b>

    基于Transformer的目标检测算法

    掌握基于Transformer的目标检测算法的思路和创新点,一些Transformer论文涉及的新概念比较多,话术没有那么通俗易懂,读完论文仍然不理解算法的细节部分。
    发表于 08-16 10:51 374次阅读
    基于Transformer的<b class='flag-5'>目标</b><b class='flag-5'>检测算法</b>

    Intel媒体加速器参考软件用户指南

    英特尔媒体加速器参考软件是用于数字标志、交互式白板(IWBs)和亭位使用模型的参考媒体播放器应用软件,它利用固定功能硬件加速来提高媒体流速、改进工作量平衡和资源利用,以及定制的图形处理
    发表于 08-04 07:07

    基于强化学习的目标检测算法案例

    摘要:基于强化学习的目标检测算法检测过程中通常采用预定义搜索行为,其产生的候选区域形状和尺寸变化单一,导致目标检测精确度较低。为此,在基于
    发表于 07-19 14:35 0次下载

    无Anchor的目标检测算法边框回归策略

    导读 本文主要讲述:1.无Anchor的目标检测算法:YOLOv1,CenterNet,CornerNet的边框回归策略;2.有Anchor的目标检测算法
    的头像 发表于 07-17 11:17 564次阅读
    无Anchor的<b class='flag-5'>目标</b><b class='flag-5'>检测算法</b>边框回归策略

    如何学习基于Tansformer的目标检测算法

    视觉感知算法的核心在于精准实时地感知周围环境,以便下游更好地进行决策规划,而 目标检测任务 就是视觉感知的 基础 。不仅在自动驾驶领域,在机器人导航、工业检测、视频监控等领域,
    的头像 发表于 06-25 10:37 361次阅读
    如何学习基于Tansformer的<b class='flag-5'>目标</b><b class='flag-5'>检测算法</b>

    硬件加速人体姿态估计开源分享

    电子发烧友网站提供《硬件加速人体姿态估计开源分享.zip》资料免费下载
    发表于 06-25 10:27 0次下载
    <b class='flag-5'>硬件加速</b>人体姿态估计开源分享

    基于 FPGA 的目标检测网络加速电路设计

    CNN 更容易满足实际应用场景中 的低功耗、实时性要求。而且目标检测算法发展迅速,针对 CNN 的硬件加速研究也大有可 为。所以本项目计划使用 PYNQ-Z2 开发板设计一个
    发表于 06-20 19:45

    快速入门自动驾驶中目标检测算法

    现在目标检测算法总结 1. 目标检测算法在机动车和行人检测识别上应用较多,在非机动车上应用较少 2. 对于
    发表于 06-06 09:40 0次下载
    快速入门自动驾驶中<b class='flag-5'>目标</b><b class='flag-5'>检测算法</b>

    如何使用RSA硬件加速能多快生成2048bit的密钥?

    面,可能会导致误判。尝试改正后,生成的密钥是正常的,但速度比OpenSSL纯软件慢。正常使用RSA硬件加速能多快生成2048bit的密钥?这个补丁有优化版吗?
    发表于 05-06 08:05