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
    +关注

    关注

    1655

    文章

    22287

    浏览量

    630324
  • SSD
    SSD
    +关注

    关注

    21

    文章

    3061

    浏览量

    121791
  • 人工智能
    +关注

    关注

    1813

    文章

    49741

    浏览量

    261565
  • 卷积神经网络

    关注

    4

    文章

    371

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    复杂的软件算法硬件IP核的实现

    硬件加速 IP 核 HDL 文件的生成分为两个步骤,首先根据将要接入的 SOPC 系统的总线的特性,将算法做适当的包装、暴露相关的接口以及调用方法,即适配总线接口。不同的 SOPC 总线有不同的时序以及
    发表于 10-30 07:02

    常用硬件加速的方法

    之前总结了一些常用硬件加速方法 1)面积换速度:也就是串转并运算,可以多个模块同时计算; 2)时间换空间:时序收敛下通过频率提高性能,虽然面积可能稍微加大点; 3)流水线操作:流水线以面积换性能,以
    发表于 10-29 06:20

    目标追踪的简易实现:模板匹配

    在分析硬件加速之前,首先要弄明白这个算法软件实现中有哪些冗余的操作:首先是遍历次数多(前文算出来的就已经达到了 82.6 万次),每次遍历都需要对 50 * 50=2500 个像
    发表于 10-28 07:21

    硬件加速模块的时钟设计

    硬件加速模块需要四个时钟,分别为clk_l , clk_r , clk_c , clk_n 。 clk_l : 整个硬件加速模块为了最大化的节约时间成本而采用了类似处理器的流水线设计,具体上将每一层
    发表于 10-23 07:28

    如何验证硬件加速是否真正提升了通信协议的安全性?

    是具体验证方法与框架,覆盖从底层硬件到上层协议的全链路验证: 一、基础验证:硬件加速模块的安全功能正确性 硬件加速(如加密 / 解密、哈希计算、密钥管理)是通信协议安全的 “底层支撑”
    的头像 发表于 08-27 10:16 820次阅读
    如何验证<b class='flag-5'>硬件加速</b>是否真正提升了通信协议的安全性?

    有哪些方法可以确保硬件加速与通信协议的兼容性?

    安全风险。以下是具体可落地的方法,按实施阶段和优先级排序: 一、硬件选型阶段:优先选择 “协议原生支持” 的硬件方案 硬件加速的兼容性根基在选型阶段奠定,需明确
    的头像 发表于 08-27 10:07 657次阅读

    如何利用硬件加速提升通信协议的安全性?

    产品实拍图 利用硬件加速提升通信协议安全性,核心是通过 专用硬件模块或可编程硬件 ,承接软件层面难以高效处理的安全关键操作(如加密解密、认证、密钥管理等),在提升性能的同时,通过
    的头像 发表于 08-27 09:59 647次阅读
    如何利用<b class='flag-5'>硬件加速</b>提升通信协议的安全性?

    【机器视觉】睿擎平台支持NCNN AI 推理框架,轻松实现实时目标检测( 睿擎线下 Workshop 报名已开启)|产品动

    RT-Thread系统上深度集成NCNN推理框架,通过其轻量化架构与硬件级优化能力,结合YOLO系列算法的高效单阶段检测特性,实现了工业场景
    的头像 发表于 08-20 17:40 4824次阅读
    【机器视觉】睿擎平台支持NCNN AI 推理<b class='flag-5'>框架</b>,轻松<b class='flag-5'>实现</b>实时<b class='flag-5'>目标</b><b class='flag-5'>检测</b>( 睿擎线下 Workshop 报名已开启)|产品动

    【VisionFive 2单板计算机试用体验】在 VisionFive 2 上为目标检测准备软件环境并运行 MobileNet-SSD 模型

    目标: 本教程将实现在 StarFive VisionFive 2 开发板上为目标检测应用准备所需软件环境,并最终运行一个基于 Mobile
    发表于 07-10 19:51

    基于FPGA的SSD目标检测算法设计

    随着人工智能的发展,神经网络正被逐步应用于智能安防、自动驾驶、医疗等各行各业。目标识别作为人工智能的一项重要应用也拥有着巨大的前景,随着深度学习的普及和框架的成熟,卷积神经网络模型的识别精度越来越高
    的头像 发表于 07-10 11:12 2224次阅读
    基于FPGA的<b class='flag-5'>SSD</b><b class='flag-5'>目标</b><b class='flag-5'>检测算法</b>设计

    基于FPGA的压缩算法加速实现

    本设计中,计划实现对文件的压缩及解压,同时优化压缩中所涉及的信号处理和计算密集型功能,实现对其的加速处理。本设计的最终目标是证明在充分并行化的硬件
    的头像 发表于 07-10 11:09 2085次阅读
    基于FPGA的压缩<b class='flag-5'>算法</b><b class='flag-5'>加速</b><b class='flag-5'>实现</b>

    基于RK3576开发板的安全帽检测算法

    安全帽佩戴检测是工地、生产安全、安防的重中之重,但人为主观检测的方式时效性差且不能全程监控。AI技术的日渐成熟催生了安全帽佩戴检测方案,成为了监督佩戴安全帽的利器。本安全帽
    的头像 发表于 05-08 16:59 1870次阅读
    基于RK3576开发板的安全帽<b class='flag-5'>检测算法</b>

    轩辕智驾红外目标检测算法在汽车领域的应用

    在 AI 技术蓬勃发展的当下,目标检测算法取得了重大突破,其中红外目标检测算法更是在汽车行业掀起了波澜壮阔的变革,从根本上重塑着汽车的安全性能、驾驶体验与产业生态。
    的头像 发表于 03-27 15:55 747次阅读

    工业4.0革命利器!明远智睿SSD2351核心板:低成本+高算力,破解产线智能化难题

    力: 算力突破: 四核A35主频1.5GHz,支持Neon/FPU加速,并行处理PLC控制指令与视觉算法; IVE引擎实现高斯滤波、形态学运算(膨胀/腐蚀)硬件加速,图像预处理
    发表于 03-21 14:22

    睿创微纳推出新一代目标检测算法

    随着AI技术的发展,目标检测算法也迎来重大突破。睿创微纳作为热成像领军者,凭借深厚的技术积累与创新能力,结合AI技术推出新一代目标检测算法,以三大核心技术带来AI视觉感知全场景解决
    的头像 发表于 03-20 13:49 800次阅读