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

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

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

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

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

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

4、要的数据,所以不能把im2col转换后的数据进行保存,因此im2col是目标检测中不可或缺的一步。(4)传统的im2col的实现方法均比较原始,效率低。(5)在低功耗目标检测平台上,在同样检测速度下,基于高速im2col可以节省部分能耗,这对于低功耗目标检测平台尤为重要。卷积运算如图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经过im2col处理后得到的矩阵如图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列。123456789IOIl1213141516171819202122232425图5:图像卷积核示例1236234734586 7 8 11789128 9 10 1311 12

7、 13 1612 13 14 1713 14 15 187811128 9 12 139 10 13 1412 13 16 1713 14 17 1814 15 18 1917 18 21 2218 19 22 2319 20 23 24131415181920232425图6:im2col处理后得到的矩阵示例。在目标检测中常用的卷积核大小ksize为I、3、5、7等奇数,这样可以保护位置信息和填充时保持对称。整个卷积计算量与ksize的4次方成正比,所以卷积核大小不能太大。滑移步长Stride一般为1、2。滑移步长必须大于1,否则卷积核不滑动,不能检测卷积核外的图像。填充大小Pad般为0、1

8、。Pad为0即为原图像,为1时是为了检测边界特征。Pad太大就会在边界上带来误差。传统im2col实现方法如下所示:第一步:获取输入变量和计算常用变量,包括待转换的多通道图像数组daiajm、通道数ChanneIs、图像高度height、图像宽度Width、卷积核大小ksize、滑移步长Stride、填充大小pad0data_im可以保存channels*height*width个图像数据,索引从0开始,即data_im的元素为别为datajmdatajmlx、dataJmchannels*height*width-1odata_im在内存中实际上是一个大小为Channek*heighdwid

9、ih的一维数组,逻辑上可以理解成高度为height、宽度Width的二维图像,共有ChannelS个。令im2col处理后的通道数channels-col=channels*ksize*ksize令im2col转换后的多通道图像高度heigh(-col=(height+2*ad-ksize)/stride+1,“表示向下取整数,非四舍五入取整数。令im2col转换后的多通道图像宽度width-col=(width+2*pad-ksize)/stride+1.im2col处理后得到的维矩阵数组dataol,为转换后的多通道图像数据。data_col可以保存channels_col*height_

10、col*width_col个转换后的数据,索引从0开始,即data_col的元素为别为data_col0、data_col1、data_colchannels_col*heigh(_col*width_col-1。data_col在内存中实际上是一个大小为channels_col*height_col*width_col的一维数组,逻辑上可以理解成高度为height_col、宽度width_col的二维图像,共有Channels-COl个。令通道变量C=0。第二步:若C小于Channek_col,转第三步;否则转第十步;第三步:令宽度偏移变量w_offset=c%ksize,%表示取余操作。令

11、高度偏移变量h_offset=(c/ksize)%ksize令临时通道变量cjm=c/ksize/ksize。令高度变量h=0o第四步:判定h有没有超出当前转换后的多通道图像高度。若h小于height_col,转第五步,否则转第九步。第五步:令宽度变量w=00第六步:判定W有没有超出当前转换后的多通道图像宽度。若W小于WidIh_col,转第七步,否则转第八步。第七步:1.1 令行号row=h_offset+h*stride-pad0确定待转换的图像数据元素的行号。令列号col=w_offset+w*stride-pado确定待转换的图像数据元素的列号。令index=c*height_col*

12、width_col+h*width_col+w1,确定转换后的多通道图像的索引。1.2 若row小于0或者col小于0或者row大于等于height或者col大于等于width.令data_colindex=0;否则data-colindex=data_imcol+width*(row+height*cjm)。令W=W+1。转第六步。第八步令h=h+10转第四步。第九步令c=c+l:转第二步。第十步:处理完成,得到转换后的多通道图像数组dataol.传统im2col实现并不高效。因为对于im2col处理后得到的一维矩阵数组data_col中的元素值是递增顺序访问,但是在第7.1步中,需要计算等

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

14、可以分为4种情况进行处理,总体流程如图3所示。图3:总体流程示意图本发明涉及二个核心输入输出数组,分别为待转换的多通道图像数组data_im和im2col转换后的多通道图像数组data.coL核心方法是根据滑移步长stride和填充大小pad分四种情况分别进行处理,具体包括加速处理Strkle=Ipad=O的情况,加速处理Slride=2、Pad=O的情况,加速处理Slride=1、pad=l的情况,加速处理Stride=2、pad=l的情况。具体技术方案为:第步:获取输入变量、计算常用变量和确定输出变量。获取输入变量包括待转换的多通道图像数组dataJm.通道数Channe1s、图像高度height,图像宽度Widlh、卷积核大小ksize、滑移步长Slride、填充大小pad。data_im可以保存Channek*heighl*widlh个图像数据,索引从0开始,即datajm的元素为别为data_im0、data-iml%、data.imchannels*height*width-1data-im在内存中实际上是一个大小为ChannelS*height*width的维数组,逻辑上可以理解成高度为height、宽度Width的二维图像,共有ChannelS个。令im2col处理后的通道数channels-col=channels

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

当前位置:首页 > IT计算机 > matlab

copyright@ 2008-2023 yzwku网站版权所有

经营许可证编号:宁ICP备2022001189号-2

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