说明书一种面向目标检测的图像矩阵列转换加速方法.docx

上传人:lao****ou 文档编号:568543 上传时间:2024-02-03 格式:DOCX 页数:14 大小:103.41KB
下载 相关 举报
说明书一种面向目标检测的图像矩阵列转换加速方法.docx_第1页
第1页 / 共14页
说明书一种面向目标检测的图像矩阵列转换加速方法.docx_第2页
第2页 / 共14页
说明书一种面向目标检测的图像矩阵列转换加速方法.docx_第3页
第3页 / 共14页
说明书一种面向目标检测的图像矩阵列转换加速方法.docx_第4页
第4页 / 共14页
说明书一种面向目标检测的图像矩阵列转换加速方法.docx_第5页
第5页 / 共14页
亲,该文档总共14页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《说明书一种面向目标检测的图像矩阵列转换加速方法.docx》由会员分享,可在线阅读,更多相关《说明书一种面向目标检测的图像矩阵列转换加速方法.docx(14页珍藏版)》请在第一文库网上搜索。

1、说明书一种面向目标检测的图像矩阵列转换加速方法技术领域本发明涉及对目标检测中图像矩阵列转换进行加速的方法,尤指基于深度学习的目标检测中前向传播中图像矩阵列转换加速方法。背景技术目标检测是计算机视觉和数字图像处埋的一个热门方向,广泛应用于机曙人导航、智能视频监控、工业检测、航空航天等诸多领域,通过计算机视觉减少对人力资本的消耗,具有重要的现实意义。因此,目标检测也就成为了近年来理论和应用的研究热点,它是图像处理和计算机视觉学科的重要分支,也是智能监控系统的核心部分,同时目标检测也是泛身份识别领域的一个基础性的算法,对后续的人脸识别、步态识别、人群计数、实例分割等任务起着至关重要的作用。基于深度学

2、习的目标检测主要包括三步:前后处理、图像矩阵列转换(im2co1,imagetoco1umn,本文后面均简称为im2co1)和矩阵矩阵乘(gemm)。前后处理包括权重置0、归一化和激活等。im2co1主要将图像数据中每个卷积核窗口内含有的数据转为列向量,最后按列排成新的矩阵。gemm主要实现权重矩阵和im2co1转换后的矩阵的乘积。im2co1和gemm实际上进行的是权重矩阵和图像矩阵的卷积运算,在目标检测中,通过卷积操作,如ktride为2时,相当于把输入图像缩小了-半,一批注思森11:Stride是什么东西?从而待im2co1处理的图像会越来越小。与此同时,要进行几次、几十次、甚至数百次卷

3、积操作,每一次均需要用到im2co1.下面5个原因导致迫切需要加快图像矩阵列转换:(1) gemm有开源或者商业化的优化实现,如openbias和MK1等算法库,计算速度可以提高数倍到数十倍。gemm占用计算时间下降,而im2co1可能占用30%-的计算时间,导致im2co1的转换速度成为提高目标检测速度的个关键问题。(2)对于实时性要求较高的应用,如基于深度学习的实时目标追踪等,每秒处理的图片可能达到30帧。每一帧的处理时间需要限制在33受秒以内,此时图像矩阵列转换就可能成为实时性关键的限制因素。(3)由于输入的多通道图像直在变化,im2co1需要把变化的多通道图像转换成目标检测中gemm需

4、要的数据,所以不能把im2co1转换后的数据进行保存,因此im2co1是目标检测中不可或缺的一步。(4)传统的im2co1的实现方法均比较原始,效率低。(5)在低功耗目标检测平台上,在同样检测速度下,基于高速im2co1可以节省部分能耗,这对于低功耗目标检测平台尤为重要。卷积运算如图1所示。图1中I卷积核为元素个数为3*3的方阵|。方阵为矩阵种特一二批注|用*|:卷积核?殊情形。卷积核方阵第一行为1、0、2,第二行为5、4、2,第三行为3、4、5此时卷积核大小ksize为3,即为卷积核方阵的维度。权重方阵的第一行为-1、Os1,第二行为1、0、1,第三行为1、0、1。滑移步长Stride指把卷

5、积核方阵向右或者向下移动的距离。对于图1,假设卷积核向右边滑移1个位置,则新的卷积核为图2所示。023420456图2:滑移一个元素时的卷积核批注I思森3:为什么要有填充大小?Pad存在的意义是什么?慎充大小pad在输入的多通道图像四周加0的层次的数目C假设一张单通道图像一有25个元素,分别为1至25,如图3所示。Pad为0时,仍然为如图3所示的矩阵。Pad为1时,即在矩阵的周围加上一层0,如图4所示。12345678910111213141516171819202122232425图3图像示例。0000000012345006789100011121314150016171819200021

6、2223242500000000图4:填充大小Pad为1的示意图。假设图5中卷积核大小ksize为3,滑移步长stride为1,填充大小pad为00经过im2co1处理后得到的矩阵如图6所示。图5中第2个卷积核中的元素用粗体标出,值分别为2、3、4,7、8、9,12、13、14,与之对应的为图2中粗体标出的第2列。类似的图5中第1个卷积核中的元素值为1、2、3,6、7、8,11、12、13,对应的就是图6中的第1列。123456789IOI11213141516171819202122232425图5:图像卷积核示例123623473458678117891289101311121316121

7、31417131415187811128912139101314121316171314171814151819171821221819222319202324131415181920232425图6:im2co1处理后得到的矩阵示例。在目标检测中常用的卷积核大小ksize为I、3、5、7等奇数,这样可以保护位置信息和填充时保持对称。整个卷积计算量与ksize的4次方成正比,所以卷积核大小不能太大。滑移步长Stride一般为1、2。滑移步长必须大于1,否则卷积核不滑动,不能检测卷积核外的图像。填充大小Pad般为0、1。Pad为0即为原图像,为1时是为了检测边界特征。Pad太大就会在边界上带来误

8、差。传统im2co1实现方法如下所示:第一步:获取输入变量和计算常用变量,包括待转换的多通道图像数组daiajm、通道数ChanneIs、图像高度height、图像宽度Width、卷积核大小ksize、滑移步长Stride、填充大小pad0data_im可以保存channe1s*height*width个图像数据,索引从0开始,即data_im的元素为别为datajmdatajm1x、dataJmchanne1s*height*width-1odata_im在内存中实际上是一个大小为Channek*heighdwidih的一维数组,逻辑上可以理解成高度为height、宽度Width的二维图像,

9、共有Channe1S个。令im2co1处理后的通道数channe1s-co1=channe1s*ksize*ksize令im2co1转换后的多通道图像高度heigh(-co1=(height+2*ad-ksize)/stride+1,“表示向下取整数,非四舍五入取整数。令im2co1转换后的多通道图像宽度width-co1=(width+2*pad-ksize)/stride+1.im2co1处理后得到的维矩阵数组datao1,为转换后的多通道图像数据。data_co1可以保存channe1s_co1*height_co1*width_co1个转换后的数据,索引从0开始,即data_co1的元

10、素为别为data_co10、data_co11、data_co1channe1s_co1*heigh(_co1*width_co1-1。data_co1在内存中实际上是一个大小为channe1s_co1*height_co1*width_co1的一维数组,逻辑上可以理解成高度为height_co1、宽度width_co1的二维图像,共有Channe1s-CO1个。令通道变量C=0。第二步:若C小于Channek_co1,转第三步;否则转第十步;第三步:令宽度偏移变量w_offset=c%ksize,%表示取余操作。令高度偏移变量h_offset=(c/ksize)%ksize令临时通道变量cj

11、m=c/ksize/ksize。令高度变量h=0o第四步:判定h有没有超出当前转换后的多通道图像高度。若h小于height_co1,转第五步,否则转第九步。第五步:令宽度变量w=00第六步:判定W有没有超出当前转换后的多通道图像宽度。若W小于WidIh_co1,转第七步,否则转第八步。第七步:1.1 令行号row=h_offset+h*stride-pad0确定待转换的图像数据元素的行号。令列号co1=w_offset+w*stride-pado确定待转换的图像数据元素的列号。令index=c*height_co1*width_co1+h*width_co1+w1,确定转换后的多通道图像的索引

12、。1.2 若row小于0或者co1小于0或者row大于等于height或者co1大于等于width.令data_co1index=0;否则data-co1index=data_imco1+width*(row+height*cjm)。令W=W+1。转第六步。第八步令h=h+10转第四步。第九步令c=c+1:转第二步。第十步:处理完成,得到转换后的多通道图像数组datao1.传统im2co1实现并不高效。因为对于im2co1处理后得到的一维矩阵数组data_co1中的元素值是递增顺序访问,但是在第7.1步中,需要计算等号row、列号co1、data.co1的索引index,计算量较大;同时在7.

13、2步中,需要对4种情况进行判断,CPU在执行指令时会出现流水线停顿,从而影响计算速度。目前在人脸实时追踪、飞行器实时追踪等目标枪测场合,需要达到处理的速度为30FPS(顿/秒),转换后的每张图像的处理时间约为33亳秒。采用传统im2co1处理,最多只能够达到20FPS的处理速度,而。这样的速度无法满足人脸实时追踪等目标检测场合,如何加快实现im2co1是本领域技术人员极为关注的技术问题。发明内容本发明要解决的技术问题在于:提供针对滑移步长Stride等于1、2,填充大小Pad等于0、1时的快速图像矩阵列转换方法,从而可以分为4种情况进行处理,总体流程如图3所示。图3:总体流程示意图本发明涉及二

14、个核心输入输出数组,分别为待转换的多通道图像数组data_im和im2co1转换后的多通道图像数组data.co1核心方法是根据滑移步长stride和填充大小pad分四种情况分别进行处理,具体包括加速处理Strk1e=Ipad=O的情况,加速处理S1ride=2、Pad=O的情况,加速处理S1ride=1、pad=1的情况,加速处理Stride=2、pad=1的情况。具体技术方案为:第步:获取输入变量、计算常用变量和确定输出变量。获取输入变量包括待转换的多通道图像数组dataJm.通道数Channe1s、图像高度height,图像宽度Wid1h、卷积核大小ksize、滑移步长S1ride、填充大小pad。data_im可以保存Channek*heigh1*wid1h个图像数据,索引从0开始,即datajm的元素为别为data_im0、data-im1%、data.imchanne1s*height*width-1data-im在内存中实际上是一个大小为Channe1S*height*width的维数组,逻辑上可以理解成高度为height、宽度Width的二维图像,共有Channe1S个。令im2co1处理后的通道数channe1s-co1=channe1s*ksize*ksizeo令im2co1转换后的多通道图像高度height-co1=(height+

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 工作总结

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服