一种基于GPU多核并行加速的车辆检测方法.pdf

上传人:a*** 文档编号:1314251 上传时间:2018-04-15 格式:PDF 页数:12 大小:1.28MB
返回 下载 相关 举报
摘要
申请专利号:

CN201310306471.0

申请日:

2013.07.19

公开号:

CN103336959A

公开日:

2013.10.02

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06K 9/00申请日:20130719|||公开

IPC分类号:

G06K9/00; G06F9/38; G08G1/01

主分类号:

G06K9/00

申请人:

西安电子科技大学

发明人:

袁通; 刘志镜; 王韦桦; 刘慧; 邱龙滨; 曹文涛; 赵纬龙; 赵宏伟; 李雨楠; 熊静; 张小骏; 王梓; 曹志高

地址:

710071 陕西省西安市太白南路2号西安电子科技大学

优先权:

专利代理机构:

北京科亿知识产权代理事务所(普通合伙) 11350

代理人:

汤东凤

PDF下载: PDF下载
内容摘要

本发明公开了一种基于GPU多核并行加速的车辆检测方法,其步骤包括计算机视觉、特征提取、目标相似度检测以及Map-Reduce并行计算框架。本发明有益效果在于,通过Map-Reduce的GPU并行计算提高了HOG特征提取算法效率,显著缩短了车辆检测所需时间,可用于自动化的智能交通和城市管理领域。

权利要求书

1.   一种基于GPU多核并行加速的车辆检测方法,其特征在于,所述方法包括以下步骤:
(1)由CPU获得待检测的图像并复制到GPU内存,其中,将分配的内存设置为不可换页可提高传输速度;
(2)利用硬件纹理单元对所述图像进行降采样,然后对所述降采样后的图像进行伽马校验;
(3)计算梯度值,其中,将一个检测窗口划分为若干个区块,在每个区块内,使用GPU并行计算技术,利用水平梯度卷积算子[‑1,0,1]与垂直梯度卷积算<mfenced open='[' close=']'><MTABLE><MTR><MTD><MO>-</MO><MN>1</MN></MTD></MTR><MTR><MTD><MN>0</MN></MTD></MTR><MTR><MTD><MN>1</MN></MTD></MTR></MTABLE></MFENCED>]]&gt;</MATH><IMG id=ifm0001 inline="yes" orientation="portrait" img-format="tif" img-content="drawing" he="14" wi="9" file="FDA00003535715900011.TIF"></MATHS>分别计算水平方向梯度与和垂直方向梯度,进而计算幅值与相位,根据得到的幅值与相位,按照相位值最近的两个bin之间的相位差为权值分解幅值,并记录;<BR>(4)计算方向梯度直方图,其中,根据步骤(3)中得到的结果,使用基于MapReduce模型,在Map函数阶段对检测窗口进行子胞元划分,并使用二次线性插值求子胞元内的方向梯度直方图,在Reduce函数阶段对相同区块内的子胞元方向梯度直方图进行合并,得出区块内的方向梯度直方图;<BR>(5)归一化方向梯度直方图,其中,在Map函数阶段检测窗口进行区块划分,对区块内方向直方图数组求一个归一化系数,并该数组每个元素乘以这个系数,具体是归一化系数通过求数组内加权平方和的开平方的倒数得到;<BR>(6)线性SVM计算,其中,将归一化的结果交由CPU进行合并,并与实现训练好的SVM系数向量进行内积运算;<BR>(7)判断是否遍历完全,如果遍历完,退出GPU运算模式,如果没有遍历完,转到步骤(2);<BR>(8)根据步骤(6)计算出的SVM值与预设的阈值对比,如果超过所述预设阈值,则说明当前检测窗口存在目标车辆,将坐标与尺度信息输出。<BR><SPAN style="COLOR: blue; FONT-SIZE: 14px; FONT-WEIGHT: bold"><BR>2.</SPAN>&nbsp;&nbsp; 根据权利1所述的车辆检测方法,其特征在于,所述步骤(4)中计算子胞元的方向梯度直方图的步骤为:<BR>(1)调度程序将显卡内存中的输入数据input数组分为n块,每块大小为<IMG id=ifm0002 inline="yes" orientation="portrait" img-format="tif" img-content="drawing" he="9" wi="8" file="FDA00003535715900021.TIF"><BR>(2)每个线程执行MapCount函数,其中MapCount函数输出三个值:Map函数产生的中间键的个数i、Map函数产生的M‑keys数组的大小j字节、Map函数产生的M‑values数组的大小k字节。<BR>(3)通过j、k计算出每个线程中M‑keys数组和M‑values数组的大小和其起始位置;<BR>(4)每个线程并行执行用户自定义的Map函数,将产生的结果写入该线程对应M‑keys数组、M‑values数组和M‑directory&nbsp;index数组中,M‑directory&nbsp;index数组中的每条记录表示一条中间键记录;<BR>(5)对中间键按照key值进行排序;<BR>(6)按照key值将中间键进行分块,把相同key值的中间键数据交给一个GPU线程进行处理;<BR>(7)每个线程执行ReduceCount函数,其中ReduceCount函数输出三个值:Reduce函数产生的结果记录的个数i、Reduce函数产生的R‑keys数组的大小j字节、Reduce函数产生的R‑values数组的大小k字节;<BR>(8)通过j、k计算出每个线程中R‑keys数组和R‑values数组的大小和其起始位置;通过i计算出每个线程中R‑directory&nbsp;index数组的大小和其起始位置;<BR>(9)每个线程并行执行Reduce函数,其中:<BR>输入:M‑keys数组、M‑values数组、经过排序的M‑directory&nbsp;index数组输出:results数组;<BR>操作:M‑directory&nbsp;index数组可以表示为&lt;mid,res&gt;,mid为区块的编号;res表示该区块对应的直方图数组。将相同mid的res数组中对应的相同位置上元素求和,得到rdata数组;<BR>将产生的结果写入该线程对应R‑keys数组、R‑values数组和R‑directory&nbsp;index数组中。这样就可以得到每个区块对应的总直方图results数组&lt;id,rdata&gt;,其中id表示区块的编号,rdata表示对应区块的总直方图数组。<BR><SPAN style="COLOR: blue; FONT-SIZE: 14px; FONT-WEIGHT: bold"><BR>3.</SPAN>&nbsp;&nbsp; 根据权利1所述的车辆检测方法,其特征在于,所述步骤5区块的方向梯度直方图的归一化步骤为:<BR>(1)调度程序将显卡内存中的输入数据input数组分为n块,每块大小为<IMG id=ifm0003 inline="yes" orientation="portrait" img-format="tif" img-content="drawing" he="10" wi="8" file="FDA00003535715900041.TIF"><BR>(2)每个线程执行MapCount函数,其中MapCount函数输出三个值:Map函数产生的中间键的个数i、Map函数产生的M‑keys数组的大小j字节、Map函数产生的M‑values数组的大小k字节;<BR>(3)通过j、k计算出每个线程中M‑keys数组和M‑values数组的大小和其起始位置;<BR>(4)每个线程并行执行用户自定义的Map函数,计算每个区块的方向梯度直方图,将产生的结果写入该线程对应M‑keys数组、M‑values数组和M‑directory&nbsp;index数组中。得到results数组&lt;id,rdata&gt;,id表示区块的编号,rdata表示该区块的方向梯度直方图。<BR></p></div> </div> </div> <div class="zlzy"> <div class="zltitle">说明书</div> <div class="gdyy"> <div class="gdyy_show"><p>一种基于GPU多核并行加速的车辆检测方法 <BR><SPAN style="COLOR: blue">技术领域</SPAN> <BR>本发明涉及计算机视觉领域,具体涉及一种基于MapReduce的GPU并行计算应用于车辆检测的方法。 <BR><SPAN style="COLOR: blue">背景技术</SPAN> <BR>随着智能交通系统在现代社会中重要性的不断提升,车辆监控技术得到了越来越广泛的应用。现有智能交通系统的问题主要是大量的监控信息难以得到有效的及时的处理。而如何通过计算机智能地实时地分析和提取有效的信息,以提升车辆监控与跟踪准确率,已经成为计算机视觉领域的一个热点研究问题。 <BR>基于视觉监控的智能分析技术是计算机视觉和智能交通领域的热点和难点问题,涉及到图像处理、机器学习、模式识别等课题。近年来学术界上进行了较多的相关研究。 <BR>国内外学者在基于视频序列的复杂场景下车辆检测技术上做了很多的工作。我国的道路交通情况比较复杂,存在车辆、行人公用一条道路的情况,行车道路上车辆的颜色、形状、速度都存在较大差异,因此基于像素级的目标检测方法,如帧间差法、背景差分法不能满足我国实际道路需要。现在基于视频序列的目标检测系统主要采用特征级的检测与机器学习算法相结合的方法对运动目标进行检测。目前,通常采用纹理信息作为特征点,常用的纹理特征有HOG(梯度方向直方图),小波滤波器,类Haar特征滤波器等。现在运用比较广泛的车辆检测的方法有:类Harr特征和自适应决策树结合算法,HOG描述子与SVM结合算法,HOG描述子与随机森林结合算法等。类Harr特征的检测算法在实际应用中,还存在一定数量的误检和漏检,因此HOG是现阶段比较好的特征描述子。 <BR>然而这些研究和应用还存在一定的问题:虽然基于HOG特征的检测和跟踪算法能够达到比较理想的效果,但是在传统的计算架构下,对HOG特征的提取、SVM训练的计算以及特征匹配的计算都比较费时,远不能满足实时性的要求。 <BR>MapReduce是由谷歌公司提出的并行算法,旨在帮助程序员轻松的编写分布式程序。程序员只需编写两个函数:Map函数和Reduce函数,其他有关并行的功能,包括:任务调度、容错、实时同步等都由运行时负责。Map函数负责处理输入数据并产生中间键key/value。Reduce函数根据key值将中间键进行合并,并产生最终的结果。目前MapReduce的实现包括基于机群的Hadoop系统、基于CPU的Phoenix系统和基于GPU的Mars系统等。 <BR>GPU英文全称为Graphic&nbsp;Processing&nbsp;Unit,中文翻译为“图形处理单元”,是一种专门处理在个人电脑、工作站或游戏机上图像运算工作的微处理器。GPU与CPU相比有更多的处理器和更大的内存带宽,所以GPU有较好的计算能力,可以进行大量计算,如图3所述,为显卡的内部结构示意图。但GPU也有相应的缺点,主要包括:(1)GPU最初的目的是加速图像处理,采用了SIMD(单指令多数据流)模式,这种模式不支持复杂的控制流;(2)GPU的线程是由硬件管理的;(3)GPU不支持直接存取主机内存,需要进行主机内存和显卡内存的调度;(4)GPU没有统一的标准,往往由各厂家决定。为了解决上述问题,NVIDIA公司和AMD公司分别提供了CUDA和Brook+类库,旨在让程序员更好的操作GPU,完成通用计算功能。 <BR>Bingsheng&nbsp;He、Wenbin&nbsp;Fang等人在《Mars:Accelerating&nbsp;MapReduce&nbsp;with&nbsp;Graphics&nbsp;Processors》一文中提出一种基于MapReduce的显卡多处理器并行计算模型。 <BR><SPAN style="COLOR: blue">发明内容</SPAN> <BR>鉴于现有技术的不足,本发明旨在于提供一种用基于MapReduce的GPU多核并行加速的车辆检测方法,具体用以分析和理解复杂场景下车辆行为,有效的降低了原有相应方法的时间复杂度,为用户提供了较高的实时性,同时在省时的基础上保障对车辆较高的识别准确率,能有效去除视频采集图像的复杂背景和噪声,本发明的应用有助于改善公共场所的安全监控水平。 <BR>为了实现上述目的,本发明采用的技术方案如下: <BR>一种基于GPU多核并行加速的车辆检测方法,所述方法包括以下步骤: <BR>(1)由CPU获得待检测的图像并复制到GPU内存,其中,将分配的内存设置为不可换页可提高传输速度; <BR>(2)利用硬件纹理单元对所述图像进行降采样,然后对所述降采样后的图像进行伽马校验; <BR>(3)计算梯度值,其中,将一个检测窗口划分为若干个区块,在每个区块内,使用GPU并行计算技术,利用水平梯度卷积算子[‑1,0,1]与垂直梯度卷积算子<MATHS num="0001"><MATH><![CDATA[ <mfenced open='[' close=']'> <MTABLE><MTR><MTD><MO>-</MO> <MN>1</MN> </MTD></MTR><MTR><MTD><MN>0</MN> </MTD></MTR><MTR><MTD><MN>1</MN> </MTD></MTR></MTABLE></MFENCED>]]&gt;</MATH><IMG inline="yes" orientation="portrait" img-format="tif" img-content="drawing" he="15" wi="8" file="BDA00003535716000041.TIF"></MATHS>分别计算水平方向梯度与和垂直方向梯度,进而计算幅值与相位,根据得到的幅值与相位,按照相位值最近的两个bin之间的相位差为权值分解幅值,并记录; <BR>(4)计算方向梯度直方图,其中,根据步骤(3)中得到的结果,使用基于MapReduce模型,在映射函数阶段对检测窗口进行子胞元划分,并使用二次线性插值求子胞元内的方向梯度直方图,具体是在化简函数阶段对相同区块内的子胞元方向梯度直方图进行合并,得出区块内的方向梯度直方图; <BR>(5)归一化方向梯度直方图,其中,在Map函数阶段检测窗口进行区块划分,对区块内方向直方图数组求一个归一化系数,并该数组每个元素乘以这个系数,具体是归一化系数通过求数组内加权平方和的开平方的倒数得到; <BR>(6)线性SVM计算,其中,将归一化的结果交由CPU进行合并,并与实现训练好的SVM系数向量进行内积运算; <BR>(7)判断是否遍历完全,如果遍历完,退出GPU运算模式,如果没有遍历完,转到步骤(2); <BR>(8)根据步骤(6)计算出的SVM值与预设的阈值对比,如果超过所述预设阈值,则说明当前检测窗口存在目标车辆,将坐标与尺度信息输出。 <BR>需要说明的是,所述步骤(4)中计算子胞元的方向梯度直方图的步骤为: <BR>(1)调度程序将显卡内存中的输入数据input数组分为n块,每块大小为; <BR>(2)每个线程执行MapCount函数,其中MapCount函数输出三个值:Map函数产生的中间键的个数i、Map函数产生的M‑keys数组的大小j字节、Map函数产生的M‑values数组的大小k字节。 <BR>(3)通过j、k计算出每个线程中M‑keys数组和M‑values数组的大小和其起始位置; <BR>(4)每个线程并行执行用户自定义的Map函数,将产生的结果写入该线程对应M‑keys数组、M‑values数组和M‑directory&nbsp;index数组中,M‑directory&nbsp;index数组中的每条记录表示一条中间键记录; <BR>(5)对中间键按照key值进行排序; <BR>(6)按照key值将中间键进行分块,把相同key值的中间键数据交给一个GPU线程进行处理; <BR>(7)每个线程执行ReduceCount函数,其中ReduceCount函数输出三个值:Reduce函数产生的结果记录的个数i、Reduce函数产生的R‑keys数组的大小j字节、Reduce函数产生的R‑values数组的大小k字节; <BR>(8)通过j、k计算出每个线程中R‑keys数组和R‑values数组的大小和其起始位置;通过i计算出每个线程中R‑directory&nbsp;index数组的大小和其起始位置; <BR>(9)每个线程并行执行Reduce函数,其中: <BR>输入:M‑keys数组、M‑values数组、经过排序的M‑directory&nbsp;index数组输出:results数组; <BR>操作:M‑directory&nbsp;index数组可以表示为&lt;mid,res&gt;,mid为区块的编号;res表示该区块对应的直方图数组。将相同mid的res数组中对应的相同位置上元素求和,得到rdata数组; <BR>将产生的结果写入该线程对应R‑keys数组、R‑values数组和R‑directory&nbsp;index数组中。这样就可以得到每个区块对应的总直方图results数组&lt;id,rdata&gt;,其中id表示区块的编号,rdata表示对应区块的总直方图数组。 <BR>需要说明的是,所述步骤5区块的方向梯度直方图的归一化步骤为: <BR>(1)调度程序将显卡内存中的输入数据input数组分为n块,每块大小为; <BR>(2)每个线程执行MapCount函数,其中MapCount函数输出三个值:Map函数产生的中间键的个数i、Map函数产生的M‑keys数组的大小j字节、Map函数产生的M‑values数组的大小k字节; <BR>(3)通过j、k计算出每个线程中M‑keys数组和M‑values数组的大小和其起始位置; <BR>(4)每个线程并行执行用户自定义的Map函数,计算每个区块的方向梯度直方图,将产生的结果写入该线程对应M‑keys数组、M‑values数组和M‑directory&nbsp;index数组中。得到results数组&lt;id,rdata&gt;,id表示区块的编号,rdata表示该区块的方向梯度直方图。 <BR>本发明有益效果在于,本发明将基于HOG特征的车辆检测算法较之传统架构的计算方法效率上提高30至50倍,将基于HOG特征的车辆检测算法应用于实时的交通视频处理中,将现有的实时车辆检测命中率大大提高。 <BR><SPAN style="COLOR: blue">附图说明</SPAN> <BR>图1为本发明流程示意图; <BR>图2为本发明中GPU多核并行计算流程图; <BR>图3为显卡内部结构图。 <BR><SPAN style="COLOR: blue">具体实施方式</SPAN> <BR>下面将结合附图对本发明作进一步的描述。 <BR>如图1、图2所示,本发明为一种基于GPU多核并行加速的车辆检测方法,所述方法包括以下步骤: <BR>(1)由CPU获得待检测的图像并复制到GPU内存,其中,将分配的内存设置为不可换页的可提高传输速度; <BR>(2)利用硬件纹理单元对所述图像进行降采样,然后对降采样后的图像进行伽马校验; <BR>(3)计算梯度值:将一个检测窗口划分为若干个区块,在每个区块内,使用GPU并行计算技术,利用水平梯度卷积算子[‑1,0,1]与垂直梯度卷积算子<MATHS num="0002"><MATH><![CDATA[ <mfenced open='[' close=']'> <MTABLE><MTR><MTD><MO>-</MO> <MN>1</MN> </MTD></MTR><MTR><MTD><MN>0</MN> </MTD></MTR><MTR><MTD><MN>1</MN> </MTD></MTR></MTABLE></MFENCED>]]&gt;</MATH><IMG inline="yes" orientation="portrait" img-format="tif" img-content="drawing" he="15" wi="9" file="BDA00003535716000081.TIF"></MATHS>分别计算水平方向梯度与和垂直方向梯度,进而计算幅值与相位,根据得到的幅值与相位,按照相位值最近的两个bin之间的相位差为权值分解幅值,并记录; <BR>(4)计算方向梯度直方图,其中,每个区块有2×2个胞元,每个胞元有8×8个像素,每个区块有一个方向梯度直方图,每个直方图有9个bin,每个像素点的角度范围是[0,180°],每个bin占20°,对一个胞元的方向梯度直方图的表示按照其bin所占角度从大到小排列成一个大小为9的数组,对一个区块内4个胞元的方向梯度直方图需要二次线性插值,并最后进行归一化,那么一个区块内4个方向直方图按照胞元从左向右从上至下的方式排列成一个大小为36的数组,最后一个检测窗口的方向直方图按照区块从左向右从上至下的方式排列成一个大小为36×n的数组(n为检测窗口中的区块数目)。 <BR>进一步地说,具体计算时,一个区块内的4个胞元再分成2×2个子胞元,然后对一个检测窗口中所有的子胞元进行编号,一个区块内的子胞元按照从左向右从上至下的方式编号,不同区块内的子胞元也按照从左向右从上至下的方式编号,因此假设子胞元的编号值是i,那么该子胞元所在的区块号为<IMG inline="yes" orientation="portrait" img-format="tif" img-content="drawing" he="11" wi="11" file="BDA00003535716000082.TIF">对检测窗口进行划分,产生input数组,一个input数组是&lt;id,data&gt;组成,其中id是对应子胞元的编号,data是子胞元内存储的是每个像素点对应的两个bin编号h0和h1以及分解到相对应bin的幅值a0和a1,然后将input数组交给GPU并行计算出区块直方图。 <BR>需要说明的是,GPU并行计算的Map函数: <BR>输入:input数组中的键值对,可以表示为&lt;id,data&gt;; <BR>输出:M‑directory&nbsp;index数组中的键值对,可以表示为&lt;mid,res&gt;,其中,mid为区块的编号;res表示该区块对应的直方图数组; <BR>操作:根据事先建好的二维高斯表作为权值,用数组[ω<SUB>0</SUB>,ω<SUB>1</SUB>,ω<SUB>2</SUB>]表示,分别代表对1个、2个和4个胞元方向直方图贡献的权值,输出的是&lt;mid,res&gt;的键值对,<IMG inline="yes" orientation="portrait" img-format="tif" img-content="drawing" he="11" wi="26" file="BDA00003535716000091.TIF">sub=id%16得到子胞元在所在区块中的编号。,res的元素是4个胞元的方向直方图数组按照胞元从左往右从上往下排列而成,其中: <BR>如果sub为0,则res[h0]为ω<SUB>0</SUB>×a0,res[h1]为ω<SUB>0</SUB>×a1; <BR>如果sub为1或2,则res[h0]为ω<SUB>1</SUB>×a0,res[h1]为ω<SUB>1</SUB>×a1,res[9+h0]为ω<SUB>1</SUB>×a0,res[9+h1]为ω<SUB>1</SUB>×a1; <BR>如果sub为3,则res[9+h0]为ω<SUB>0</SUB>×a0,res[9+h1]为ω<SUB>0</SUB>×a1; <BR>如果sub是4或8,则res[h0]为ω<SUB>1</SUB>×a0,res[h1]为ω<SUB>1</SUB>×a1,res[18+h0]为ω<SUB>1</SUB>×a0,res[18+h1]为ω<SUB>1</SUB>×a1; <BR>如果sub是5或6或9或10,则res[h0]为ω<SUB>2</SUB>×a0,res[h1]为ω<SUB>2</SUB>×a1,res[9+h0]为ω<SUB>2</SUB>×a0,res[9+h1]为ω<SUB>2</SUB>×a1,res[18+h0]为ω<SUB>2</SUB>×a0,res[18+h1]为ω<SUB>2</SUB>×a1,res[27+h0]为ω<SUB>2</SUB>×a0,res[27+h1]为ω<SUB>2</SUB>×a1; <BR>如果sub是7或11,则res[9+h0]为ω<SUB>1</SUB>×a0,res[9+h1]为ω<SUB>1</SUB>×a1,res[27+h0]为ω<SUB>1</SUB>×a0,res[27+h1]为ω<SUB>1</SUB>×a1; <BR>如果sub是12,则res[18+h0]为ω<SUB>0</SUB>×a0,res[18+h1]为ω<SUB>0</SUB>×a1; <BR>如果sub是13或14,则res[18+h0]为ω<SUB>1</SUB>×a0,res[18+h1]为ω<SUB>1</SUB>×a1,res[27+h0]为ω<SUB>1</SUB>×a0,res[27+h1]为ω<SUB>1</SUB>×a1; <BR>如果sub是15,则res[27+h0]为ω<SUB>0</SUB>×a0,res[27+h1]为ω<SUB>0</SUB>×a1; <BR>需要进一步说明的是,计算子胞元的方向梯度直方图为: <BR>1)调度程序将显卡内存中的输入数据input数组分为n块,每块大小为<IMG inline="yes" orientation="portrait" img-format="tif" img-content="drawing" he="10" wi="8" file="BDA00003535716000101.TIF"> <BR>其中,m表示整个输入数据的大小,n表示GPU中进行计算的线程个数,input数组由&lt;id,data&gt;组成,id表示子胞元的编号,data表示子胞元的像素数组; <BR>2)每个线程执行MapCount函数。其中MapCount函数输出三个值:Map函数产生的中间键的个数i、Map函数产生的M‑keys数组的大小j字节、Map函数产生的M‑values数组的大小k字节; <BR>其中,M‑keys数组由mid组成,mid表示子胞元组成的区块编号;M‑values数组存放该区块对应的直方图数组; <BR>3)通过j、k计算出每个线程中M‑keys数组和M‑values数组的大小和其起始位置;通过i计算出每个线程中M‑directory&nbsp;index数组的大小和其起始位置; <BR>其中,M‑keys数组由mid组成,mid表示子胞元组成的区块编号; <BR>需要说明的是,M‑values数组存放该区块对应的直方图数组res,M‑directory&nbsp;index数组由键值对&lt;key&nbsp;offset,key&nbsp;size,value&nbsp;offset,value&nbsp;size&gt;组成,key&nbsp;offset表示M‑keys数组中每个key值的偏移量,key&nbsp;size表示M‑keys数组中每个key值的大小,value&nbsp;offset表示M‑values数组中每个Value值的偏移量,value&nbsp;size表示M‑values数组中每个Value值的大小。通过directory&nbsp;index数组可以从M‑keys数组和M‑values数组中取得相应的key值和value值。 <BR>4)每个线程并行执行用户自定义的Map函数,将产生的结果写入该线程对应M‑keys数组、M‑values数组和M‑directory&nbsp;index数组中,M‑directory&nbsp;index数组中的每条记录表示一条中间键记录; <BR>5)对中间键按照key值进行排序; <BR>6)按照key值将中间键进行分块,把相同key值的中间键数据交给一个GPU线程进行处理; <BR>7)每个线程执行ReduceCount函数,其中ReduceCount函数输出三个值:Reduce函数产生的结果记录的个数i、Reduce函数产生的R‑keys数组的大小j字节、Reduce函数产生的R‑values数组的大小k字节; <BR>其中,R‑keys数组存放每个区块编号,R‑values数组存放区块直方图的总和; <BR>8)通过j、k计算出每个线程中R‑keys数组和R‑values数组的大小和其起始位置; <BR>通过i计算出每个线程中R‑directory&nbsp;index数组的大小和其起始位置。 <BR>其中R‑keys数组存放每个区块编号,R‑values数组存放区块直方图的总和; <BR>需要说明的是,R‑directory&nbsp;index数组由键值对&lt;key&nbsp;offset,key&nbsp;size,value&nbsp;offset,value&nbsp;size&gt;组成,key&nbsp;offset表示R‑keys数组中每个key值的偏移量,key&nbsp;size表示R‑keys数组中每个key值的大小,value&nbsp;offset表示R‑values数组中每个Value值的偏移量,value&nbsp;size表示R‑values数组中每个Value值的大小。通过R‑directory&nbsp;index数组可以从R‑keys数组和R‑values数组中取得相应的key值和value值。 <BR>9)每个线程并行执行Reduce函数,其中 <BR>Reduce函数: <BR>输入:M‑keys数组、M‑values数组、经过排序的M‑directory&nbsp;index数组; <BR>输出:results数组; <BR>操作:M‑directory&nbsp;index数组可以表示为&lt;mid,res&gt;,mid为区块的编号,res表示该区块对应的直方图数组; <BR>进一步地说,将相同mid的res数组中对应的相同位置上元素求和,得到rdata数组;将产生的结果写入该线程对应R‑keys数组、R‑values数组和R‑directory&nbsp;index数组中。这样就可以得到每个区块对应的总直方图results数组&lt;id,rdata&gt;,其中id表示区块的编号,rdata表示对应区块的总直方图数组。 <BR>(5)归一化方向梯度直方图,将一个区块中方向直方图数组内所有元素乘以一个归一化系数α,假设一个区块中方向直方图数组为O|0|35|,则<MATHS num="0003"><MATH><![CDATA[ <mrow> <MI>α</MI> <MO>=</MO> <MFRAC><MN>1</MN> <MSQRT><MSUB><MI>Σ</MI> <MROW><MI>i</MI> <MO>=</MO> <MN>0</MN> <MO>.</MO> <MO>.</MO> <MO>.</MO> <MN>35</MN> </MROW></MSUB><MI>O</MI> <MO>[</MO> <MI>i</MI> <MO>]</MO> <MO>×</MO> <MI>O</MI> <MO>[</MO> <MI>i</MI> <MO>]</MO> </MSQRT></MFRAC><MO>.</MO> </MROW>]]&gt;</MATH><IMG inline="yes" orientation="portrait" img-format="tif" img-content="drawing" he="18" wi="41" file="BDA00003535716000131.TIF"></MATHS>交由GPU并行计算。 <BR>需要说明的是,GPU并行计算的Map函数: <BR>输入:input数组中的键值对,可以表示为&lt;id,data&gt;,id为区块号,data为区块内方向直方图数组; <BR>输出:result数组中的键值对,可以表示为&lt;id,rdata&gt;,id为区块号,rdata为区块内方向直方图数组; <BR>操作:rdata[i]=data[i]×α,1=0~35 <BR>需要进一步说明的是,区块的方向梯度直方图的归一化步骤为: <BR>1)调度程序将显卡内存中的输入数据input数组分为n块,每块大小为<IMG inline="yes" orientation="portrait" img-format="tif" img-content="drawing" he="10" wi="6" file="BDA00003535716000132.TIF"> <BR>其中,m表示整个输入数据的大小,n表示GPU中进行计算的线程个数;input数组由&lt;id,data&gt;组成,id表示区块的编号,data对应区块的总直方图数组; <BR>2)每个线程执行MapCount函数,其中MapCount函数输出三个值:Map函数产生的中间键的个数i、Map函数产生的M‑keys数组的大小j字节、Map函数产生的M‑values数组的大小k字节。 <BR>其中,M‑keys数组由id组成,id表示区块的编号;M‑values数组存放该区块对应的方向梯度直方图数组; <BR>3)通过j、k计算出每个线程中M‑keys数组和M‑values数组的大小和其起始位置; <BR>通过i计算出每个线程中M‑directory&nbsp;index数组的大小和其起始位置,其中M‑keys数组由id组成,id表示区块编号,M‑values数组存放该区块对应的方向梯度直方图数组res; <BR>需要说明的是,M‑directory&nbsp;index数组由键值对&lt;key&nbsp;offset,key&nbsp;size,value&nbsp;offset,value&nbsp;size&gt;组成,key&nbsp;offset表示M‑keys数组中每个key值的偏移量,key&nbsp;size表示M‑keys数组中每个key值的大小,value&nbsp;offset表示M‑values数组中每个Value值的偏移量,value&nbsp;size表示M‑values数组中每个Value值的大小。通过directory&nbsp;index数组可以从M‑keys数组和M‑values数组中取得相应的key值和value值。 <BR>4)每个线程并行执行用户自定义的Map函数,计算每个区块的方向梯度直方图。将产生的结果写入该线程对应M‑keys数组、M‑values数组和M‑directory&nbsp;index数组中。得到results数组&lt;id,rdata&gt;,id表示区块的编号,rdata表示该区块的归一化的方向梯度直方图。 <BR>(6)线性SVM计算,将步骤(5)中得到的result数组返回给CPU,由CPU将result数组中键值对合并成数组,并与事先训练好的支持向量作内积运算,计算出SVM权值,计算SVM权值的公式为<IMG inline="yes" orientation="portrait" img-format="tif" img-content="drawing" he="6" wi="40" file="BDA00003535716000141.TIF">其中score为SVM权值,O[1...n]为合并后的result数组,X|1|n|为事先训练好的支持向量数组; <BR>(7)是否已经遍历完整,如果遍历完,退出GPU运算模式,如果没有遍历完,转到步骤(2); <BR>(8)根据步骤(6)计算出的SVM值score与事先设定好的阈值T对比,如果score≥T,则说明当前检测窗口存在目标车辆,将坐标与尺度信息输出。 <BR>对于本领域的技术人员来说,可根据以上描述的技术方案以及构思,做出其它各种相应的改变以及变形,而所有的这些改变以及变形都应该属于本发明权利要求的保护范围之内。</p></div> </div> </div> </div> <div class="tempdiv cssnone" style="line-height:0px;height:0px; overflow:hidden;"> </div> <div id="page"> <div class="page"><img src='https://img.zhuanlichaxun.net/fileroot1/2018-4/11/07d85c3e-74cd-4d4b-9164-35983ce285c6/07d85c3e-74cd-4d4b-9164-35983ce285c61.gif' alt="一种基于GPU多核并行加速的车辆检测方法.pdf_第1页" width='100%'/></div><div class="pageSize">第1页 / 共12页</div> <div class="page"><img src='https://img.zhuanlichaxun.net/fileroot1/2018-4/11/07d85c3e-74cd-4d4b-9164-35983ce285c6/07d85c3e-74cd-4d4b-9164-35983ce285c62.gif' alt="一种基于GPU多核并行加速的车辆检测方法.pdf_第2页" width='100%'/></div><div class="pageSize">第2页 / 共12页</div> <div class="page"><img src='https://img.zhuanlichaxun.net/fileroot1/2018-4/11/07d85c3e-74cd-4d4b-9164-35983ce285c6/07d85c3e-74cd-4d4b-9164-35983ce285c63.gif' alt="一种基于GPU多核并行加速的车辆检测方法.pdf_第3页" width='100%'/></div><div class="pageSize">第3页 / 共12页</div> </div> <div id="pageMore" class="btnmore" onclick="ShowSvg();">点击查看更多>></div> <div style="margin-top:20px; line-height:0px; height:0px; overflow:hidden;"> <div style=" font-size: 16px; background-color:#e5f0f7; font-weight: bold; text-indent:10px; line-height: 40px; height:40px; padding-bottom: 0px; margin-bottom:10px;">资源描述</div> <div class="detail-article prolistshowimg"> <p>《一种基于GPU多核并行加速的车辆检测方法.pdf》由会员分享,可在线阅读,更多相关《一种基于GPU多核并行加速的车辆检测方法.pdf(12页珍藏版)》请在专利查询网上搜索。</p> <p >1、10申请公布号CN103336959A43申请公布日20131002CN103336959ACN103336959A21申请号201310306471022申请日20130719G06K9/00200601G06F9/38200601G08G1/0120060171申请人西安电子科技大学地址710071陕西省西安市太白南路2号西安电子科技大学72发明人袁通刘志镜王韦桦刘慧邱龙滨曹文涛赵纬龙赵宏伟李雨楠熊静张小骏王梓曹志高74专利代理机构北京科亿知识产权代理事务所普通合伙11350代理人汤东凤54发明名称一种基于GPU多核并行加速的车辆检测方法57摘要本发明公开了一种基于GPU多核并行加速的车辆。</p> <p >2、检测方法,其步骤包括计算机视觉、特征提取、目标相似度检测以及MAPREDUCE并行计算框架。本发明有益效果在于,通过MAPREDUCE的GPU并行计算提高了HOG特征提取算法效率,显著缩短了车辆检测所需时间,可用于自动化的智能交通和城市管理领域。51INTCL权利要求书2页说明书7页附图2页19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书7页附图2页10申请公布号CN103336959ACN103336959A1/2页21一种基于GPU多核并行加速的车辆检测方法,其特征在于,所述方法包括以下步骤(1)由CPU获得待检测的图像并复制到GPU内存,其中,将分配的内存设置为不可换。</p> <p >3、页可提高传输速度;(2)利用硬件纹理单元对所述图像进行降采样,然后对所述降采样后的图像进行伽马校验;(3)计算梯度值,其中,将一个检测窗口划分为若干个区块,在每个区块内,使用GPU并行计算技术,利用水平梯度卷积算子1,0,1与垂直梯度卷积算分别计算水平方向梯度与和垂直方向梯度,进而计算幅值与相位,根据得到的幅值与相位,按照相位值最近的两个BIN之间的相位差为权值分解幅值,并记录;(4)计算方向梯度直方图,其中,根据步骤(3)中得到的结果,使用基于MAPREDUCE模型,在MAP函数阶段对检测窗口进行子胞元划分,并使用二次线性插值求子胞元内的方向梯度直方图,在REDUCE函数阶段对相同区块内的子。</p> <p >4、胞元方向梯度直方图进行合并,得出区块内的方向梯度直方图;(5)归一化方向梯度直方图,其中,在MAP函数阶段检测窗口进行区块划分,对区块内方向直方图数组求一个归一化系数,并该数组每个元素乘以这个系数,具体是归一化系数通过求数组内加权平方和的开平方的倒数得到;(6)线性SVM计算,其中,将归一化的结果交由CPU进行合并,并与实现训练好的SVM系数向量进行内积运算;(7)判断是否遍历完全,如果遍历完,退出GPU运算模式,如果没有遍历完,转到步骤(2);(8)根据步骤(6)计算出的SVM值与预设的阈值对比,如果超过所述预设阈值,则说明当前检测窗口存在目标车辆,将坐标与尺度信息输出。2根据权利1所述的车。</p> <p >5、辆检测方法,其特征在于,所述步骤(4)中计算子胞元的方向梯度直方图的步骤为(1)调度程序将显卡内存中的输入数据INPUT数组分为N块,每块大小为(2)每个线程执行MAPCOUNT函数,其中MAPCOUNT函数输出三个值MAP函数产生的中间键的个数I、MAP函数产生的MKEYS数组的大小J字节、MAP函数产生的MVALUES数组的大小K字节。(3)通过J、K计算出每个线程中MKEYS数组和MVALUES数组的大小和其起始位置;(4)每个线程并行执行用户自定义的MAP函数,将产生的结果写入该线程对应MKEYS数组、MVALUES数组和MDIRECTORYINDEX数组中,MDIRECTORYIND。</p> <p >6、EX数组中的每条记录表示一条中间键记录;(5)对中间键按照KEY值进行排序;(6)按照KEY值将中间键进行分块,把相同KEY值的中间键数据交给一个GPU线程进行处理;(7)每个线程执行REDUCECOUNT函数,其中REDUCECOUNT函数输出三个值REDUCE函数权利要求书CN103336959A2/2页3产生的结果记录的个数I、REDUCE函数产生的RKEYS数组的大小J字节、REDUCE函数产生的RVALUES数组的大小K字节;(8)通过J、K计算出每个线程中RKEYS数组和RVALUES数组的大小和其起始位置;通过I计算出每个线程中RDIRECTORYINDEX数组的大小和其起始位置。</p> <p >7、;(9)每个线程并行执行REDUCE函数,其中输入MKEYS数组、MVALUES数组、经过排序的MDIRECTORYINDEX数组输出RESULTS数组;操作MDIRECTORYINDEX数组可以表示为,MID为区块的编号;RES表示该区块对应的直方图数组。将相同MID的RES数组中对应的相同位置上元素求和,得到RDATA数组;将产生的结果写入该线程对应RKEYS数组、RVALUES数组和RDIRECTORYINDEX数组中。这样就可以得到每个区块对应的总直方图RESULTS数组,其中ID表示区块的编号,RDATA表示对应区块的总直方图数组。3根据权利1所述的车辆检测方法,其特征在于,所述步骤。</p> <p >8、5区块的方向梯度直方图的归一化步骤为(1)调度程序将显卡内存中的输入数据INPUT数组分为N块,每块大小为(2)每个线程执行MAPCOUNT函数,其中MAPCOUNT函数输出三个值MAP函数产生的中间键的个数I、MAP函数产生的MKEYS数组的大小J字节、MAP函数产生的MVALUES数组的大小K字节;(3)通过J、K计算出每个线程中MKEYS数组和MVALUES数组的大小和其起始位置;(4)每个线程并行执行用户自定义的MAP函数,计算每个区块的方向梯度直方图,将产生的结果写入该线程对应MKEYS数组、MVALUES数组和MDIRECTORYINDEX数组中。得到RESULTS数组,ID表示区。</p> <p >9、块的编号,RDATA表示该区块的方向梯度直方图。权利要求书CN103336959A1/7页4一种基于GPU多核并行加速的车辆检测方法技术领域0001本发明涉及计算机视觉领域,具体涉及一种基于MAPREDUCE的GPU并行计算应用于车辆检测的方法。背景技术0002随着智能交通系统在现代社会中重要性的不断提升,车辆监控技术得到了越来越广泛的应用。现有智能交通系统的问题主要是大量的监控信息难以得到有效的及时的处理。而如何通过计算机智能地实时地分析和提取有效的信息,以提升车辆监控与跟踪准确率,已经成为计算机视觉领域的一个热点研究问题。0003基于视觉监控的智能分析技术是计算机视觉和智能交通领域的热点和。</p> <p >10、难点问题,涉及到图像处理、机器学习、模式识别等课题。近年来学术界上进行了较多的相关研究。0004国内外学者在基于视频序列的复杂场景下车辆检测技术上做了很多的工作。我国的道路交通情况比较复杂,存在车辆、行人公用一条道路的情况,行车道路上车辆的颜色、形状、速度都存在较大差异,因此基于像素级的目标检测方法,如帧间差法、背景差分法不能满足我国实际道路需要。现在基于视频序列的目标检测系统主要采用特征级的检测与机器学习算法相结合的方法对运动目标进行检测。目前,通常采用纹理信息作为特征点,常用的纹理特征有HOG(梯度方向直方图),小波滤波器,类HAAR特征滤波器等。现在运用比较广泛的车辆检测的方法有类HAR。</p> <p >11、R特征和自适应决策树结合算法,HOG描述子与SVM结合算法,HOG描述子与随机森林结合算法等。类HARR特征的检测算法在实际应用中,还存在一定数量的误检和漏检,因此HOG是现阶段比较好的特征描述子。0005然而这些研究和应用还存在一定的问题虽然基于HOG特征的检测和跟踪算法能够达到比较理想的效果,但是在传统的计算架构下,对HOG特征的提取、SVM训练的计算以及特征匹配的计算都比较费时,远不能满足实时性的要求。0006MAPREDUCE是由谷歌公司提出的并行算法,旨在帮助程序员轻松的编写分布式程序。程序员只需编写两个函数MAP函数和REDUCE函数,其他有关并行的功能,包括任务调度、容错、实时同。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>12、步等都由运行时负责。MAP函数负责处理输入数据并产生中间键KEY/VALUE。REDUCE函数根据KEY值将中间键进行合并,并产生最终的结果。目前MAPREDUCE的实现包括基于机群的HADOOP系统、基于CPU的PHOENIX系统和基于GPU的MARS系统等。0007GPU英文全称为GRAPHICPROCESSINGUNIT,中文翻译为“图形处理单元”,是一种专门处理在个人电脑、工作站或游戏机上图像运算工作的微处理器。GPU与CPU相比有更多的处理器和更大的内存带宽,所以GPU有较好的计算能力,可以进行大量计算,如图3所述,为显卡的内部结构示意图。但GPU也有相应的缺点,主要包括(1)GPU。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>13、最初的目的是加速图像处理,采用了SIMD(单指令多数据流)模式,这种模式不支持复杂的控制流;(2)GPU的线程是由硬件管理的;(3)GPU不支持直接存取主机内存,需要进行主机内存和显卡内存的调度;(4)GPU没有统一的标准,往往由各厂家决定。为了解决上述问题,NVIDIA公司和AMD公司分别提供了CUDA和BROOK类库,旨在让程序员更好的操作GPU,完成通用计算功能。说明书CN103336959A2/7页50008BINGSHENGHE、WENBINFANG等人在MARSACCELERATINGMAPREDUCEWITHGRAPHICSPROCESSORS一文中提出一种基于MAPREDUCE。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>14、的显卡多处理器并行计算模型。发明内容0009鉴于现有技术的不足,本发明旨在于提供一种用基于MAPREDUCE的GPU多核并行加速的车辆检测方法,具体用以分析和理解复杂场景下车辆行为,有效的降低了原有相应方法的时间复杂度,为用户提供了较高的实时性,同时在省时的基础上保障对车辆较高的识别准确率,能有效去除视频采集图像的复杂背景和噪声,本发明的应用有助于改善公共场所的安全监控水平。0010为了实现上述目的,本发明采用的技术方案如下0011一种基于GPU多核并行加速的车辆检测方法,所述方法包括以下步骤0012(1)由CPU获得待检测的图像并复制到GPU内存,其中,将分配的内存设置为不可换页可提高传输速。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>15、度;0013(2)利用硬件纹理单元对所述图像进行降采样,然后对所述降采样后的图像进行伽马校验;0014(3)计算梯度值,其中,将一个检测窗口划分为若干个区块,在每个区块内,使用GPU并行计算技术,利用水平梯度卷积算子1,0,1与垂直梯度卷积算子分别计算水平方向梯度与和垂直方向梯度,进而计算幅值与相位,根据得到的幅值与相位,按照相位值最近的两个BIN之间的相位差为权值分解幅值,并记录;0015(4)计算方向梯度直方图,其中,根据步骤(3)中得到的结果,使用基于MAPREDUCE模型,在映射函数阶段对检测窗口进行子胞元划分,并使用二次线性插值求子胞元内的方向梯度直方图,具体是在化简函数阶段对相同区。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>16、块内的子胞元方向梯度直方图进行合并,得出区块内的方向梯度直方图;0016(5)归一化方向梯度直方图,其中,在MAP函数阶段检测窗口进行区块划分,对区块内方向直方图数组求一个归一化系数,并该数组每个元素乘以这个系数,具体是归一化系数通过求数组内加权平方和的开平方的倒数得到;0017(6)线性SVM计算,其中,将归一化的结果交由CPU进行合并,并与实现训练好的SVM系数向量进行内积运算;0018(7)判断是否遍历完全,如果遍历完,退出GPU运算模式,如果没有遍历完,转到步骤(2);0019(8)根据步骤(6)计算出的SVM值与预设的阈值对比,如果超过所述预设阈值,则说明当前检测窗口存在目标车辆,将。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>17、坐标与尺度信息输出。0020需要说明的是,所述步骤(4)中计算子胞元的方向梯度直方图的步骤为0021(1)调度程序将显卡内存中的输入数据INPUT数组分为N块,每块大小为;0022(2)每个线程执行MAPCOUNT函数,其中MAPCOUNT函数输出三个值MAP函数产生的中间键的个数I、MAP函数产生的MKEYS数组的大小J字节、MAP函数产生的MVALUES数组的大小K字节。说明书CN103336959A3/7页60023(3)通过J、K计算出每个线程中MKEYS数组和MVALUES数组的大小和其起始位置;0024(4)每个线程并行执行用户自定义的MAP函数,将产生的结果写入该线程对应MKEY。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>18、S数组、MVALUES数组和MDIRECTORYINDEX数组中,MDIRECTORYINDEX数组中的每条记录表示一条中间键记录;0025(5)对中间键按照KEY值进行排序;0026(6)按照KEY值将中间键进行分块,把相同KEY值的中间键数据交给一个GPU线程进行处理;0027(7)每个线程执行REDUCECOUNT函数,其中REDUCECOUNT函数输出三个值REDUCE函数产生的结果记录的个数I、REDUCE函数产生的RKEYS数组的大小J字节、REDUCE函数产生的RVALUES数组的大小K字节;0028(8)通过J、K计算出每个线程中RKEYS数组和RVALUES数组的大小和其起始。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>19、位置;通过I计算出每个线程中RDIRECTORYINDEX数组的大小和其起始位置;0029(9)每个线程并行执行REDUCE函数,其中0030输入MKEYS数组、MVALUES数组、经过排序的MDIRECTORYINDEX数组输出RESULTS数组;0031操作MDIRECTORYINDEX数组可以表示为,MID为区块的编号;RES表示该区块对应的直方图数组。将相同MID的RES数组中对应的相同位置上元素求和,得到RDATA数组;0032将产生的结果写入该线程对应RKEYS数组、RVALUES数组和RDIRECTORYINDEX数组中。这样就可以得到每个区块对应的总直方图RESULTS数组,其。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>20、中ID表示区块的编号,RDATA表示对应区块的总直方图数组。0033需要说明的是,所述步骤5区块的方向梯度直方图的归一化步骤为0034(1)调度程序将显卡内存中的输入数据INPUT数组分为N块,每块大小为;0035(2)每个线程执行MAPCOUNT函数,其中MAPCOUNT函数输出三个值MAP函数产生的中间键的个数I、MAP函数产生的MKEYS数组的大小J字节、MAP函数产生的MVALUES数组的大小K字节;0036(3)通过J、K计算出每个线程中MKEYS数组和MVALUES数组的大小和其起始位置;0037(4)每个线程并行执行用户自定义的MAP函数,计算每个区块的方向梯度直方图,将产生的结。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>21、果写入该线程对应MKEYS数组、MVALUES数组和MDIRECTORYINDEX数组中。得到RESULTS数组,ID表示区块的编号,RDATA表示该区块的方向梯度直方图。0038本发明有益效果在于,本发明将基于HOG特征的车辆检测算法较之传统架构的计算方法效率上提高30至50倍,将基于HOG特征的车辆检测算法应用于实时的交通视频处理中,将现有的实时车辆检测命中率大大提高。附图说明0039图1为本发明流程示意图;0040图2为本发明中GPU多核并行计算流程图;说明书CN103336959A4/7页70041图3为显卡内部结构图。具体实施方式0042下面将结合附图对本发明作进一步的描述。0043。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>22、如图1、图2所示,本发明为一种基于GPU多核并行加速的车辆检测方法,所述方法包括以下步骤0044(1)由CPU获得待检测的图像并复制到GPU内存,其中,将分配的内存设置为不可换页的可提高传输速度;0045(2)利用硬件纹理单元对所述图像进行降采样,然后对降采样后的图像进行伽马校验;0046(3)计算梯度值将一个检测窗口划分为若干个区块,在每个区块内,使用GPU并行计算技术,利用水平梯度卷积算子1,0,1与垂直梯度卷积算子分别计算水平方向梯度与和垂直方向梯度,进而计算幅值与相位,根据得到的幅值与相位,按照相位值最近的两个BIN之间的相位差为权值分解幅值,并记录;0047(4)计算方向梯度直方图,。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>23、其中,每个区块有22个胞元,每个胞元有88个像素,每个区块有一个方向梯度直方图,每个直方图有9个BIN,每个像素点的角度范围是0,180,每个BIN占20,对一个胞元的方向梯度直方图的表示按照其BIN所占角度从大到小排列成一个大小为9的数组,对一个区块内4个胞元的方向梯度直方图需要二次线性插值,并最后进行归一化,那么一个区块内4个方向直方图按照胞元从左向右从上至下的方式排列成一个大小为36的数组,最后一个检测窗口的方向直方图按照区块从左向右从上至下的方式排列成一个大小为36N的数组(N为检测窗口中的区块数目)。0048进一步地说,具体计算时,一个区块内的4个胞元再分成22个子胞元,然后对一个检。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>24、测窗口中所有的子胞元进行编号,一个区块内的子胞元按照从左向右从上至下的方式编号,不同区块内的子胞元也按照从左向右从上至下的方式编号,因此假设子胞元的编号值是I,那么该子胞元所在的区块号为对检测窗口进行划分,产生INPUT数组,一个INPUT数组是组成,其中ID是对应子胞元的编号,DATA是子胞元内存储的是每个像素点对应的两个BIN编号H0和H1以及分解到相对应BIN的幅值A0和A1,然后将INPUT数组交给GPU并行计算出区块直方图。0049需要说明的是,GPU并行计算的MAP函数0050输入INPUT数组中的键值对,可以表示为;0051输出MDIRECTORYINDEX数组中的键值对,可以表。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>25、示为,其中,MID为区块的编号;RES表示该区块对应的直方图数组;0052操作根据事先建好的二维高斯表作为权值,用数组0,1,2表示,分别代表对1个、2个和4个胞元方向直方图贡献的权值,输出的是的键值对,SUBID16得到子胞元在所在区块中的编号。,RES的元素是4个胞元的说明书CN103336959A5/7页8方向直方图数组按照胞元从左往右从上往下排列而成,其中0053如果SUB为0,则RESH0为0A0,RESH1为0A1;0054如果SUB为1或2,则RESH0为1A0,RESH1为1A1,RES9H0为1A0,RES9H1为1A1;0055如果SUB为3,则RES9H0为0A0,RES。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>26、9H1为0A1;0056如果SUB是4或8,则RESH0为1A0,RESH1为1A1,RES18H0为1A0,RES18H1为1A1;0057如果SUB是5或6或9或10,则RESH0为2A0,RESH1为2A1,RES9H0为2A0,RES9H1为2A1,RES18H0为2A0,RES18H1为2A1,RES27H0为2A0,RES27H1为2A1;0058如果SUB是7或11,则RES9H0为1A0,RES9H1为1A1,RES27H0为1A0,RES27H1为1A1;0059如果SUB是12,则RES18H0为0A0,RES18H1为0A1;0060如果SUB是13或14,则RES18H。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>27、0为1A0,RES18H1为1A1,RES27H0为1A0,RES27H1为1A1;0061如果SUB是15,则RES27H0为0A0,RES27H1为0A1;0062需要进一步说明的是,计算子胞元的方向梯度直方图为00631)调度程序将显卡内存中的输入数据INPUT数组分为N块,每块大小为0064其中,M表示整个输入数据的大小,N表示GPU中进行计算的线程个数,INPUT数组由组成,ID表示子胞元的编号,DATA表示子胞元的像素数组;00652)每个线程执行MAPCOUNT函数。其中MAPCOUNT函数输出三个值MAP函数产生的中间键的个数I、MAP函数产生的MKEYS数组的大小J字节、MA。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>28、P函数产生的MVALUES数组的大小K字节;0066其中,MKEYS数组由MID组成,MID表示子胞元组成的区块编号;MVALUES数组存放该区块对应的直方图数组;00673)通过J、K计算出每个线程中MKEYS数组和MVALUES数组的大小和其起始位置;通过I计算出每个线程中MDIRECTORYINDEX数组的大小和其起始位置;0068其中,MKEYS数组由MID组成,MID表示子胞元组成的区块编号;0069需要说明的是,MVALUES数组存放该区块对应的直方图数组RES,MDIRECTORYINDEX数组由键值对组成,KEYOFFSET表示MKEYS数组中每个KEY值的偏移量,KEYSIZ。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>29、E表示MKEYS数组中每个KEY值的大小,VALUEOFFSET表示MVALUES数组中每个VALUE值的偏移量,VALUESIZE表示MVALUES数组中每个VALUE值的大小。通过DIRECTORYINDEX数组可以从MKEYS数组和MVALUES数组中取得相应的KEY值和VALUE值。00704)每个线程并行执行用户自定义的MAP函数,将产生的结果写入该线程对应MKEYS数组、MVALUES数组和MDIRECTORYINDEX数组中,MDIRECTORYINDEX数组中的每条记录表示一条中间键记录;00715)对中间键按照KEY值进行排序;说明书CN103336959A6/7页90072。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>30、6)按照KEY值将中间键进行分块,把相同KEY值的中间键数据交给一个GPU线程进行处理;00737)每个线程执行REDUCECOUNT函数,其中REDUCECOUNT函数输出三个值REDUCE函数产生的结果记录的个数I、REDUCE函数产生的RKEYS数组的大小J字节、REDUCE函数产生的RVALUES数组的大小K字节;0074其中,RKEYS数组存放每个区块编号,RVALUES数组存放区块直方图的总和;00758)通过J、K计算出每个线程中RKEYS数组和RVALUES数组的大小和其起始位置;0076通过I计算出每个线程中RDIRECTORYINDEX数组的大小和其起始位置。0077其中R。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>31、KEYS数组存放每个区块编号,RVALUES数组存放区块直方图的总和;0078需要说明的是,RDIRECTORYINDEX数组由键值对组成,KEYOFFSET表示RKEYS数组中每个KEY值的偏移量,KEYSIZE表示RKEYS数组中每个KEY值的大小,VALUEOFFSET表示RVALUES数组中每个VALUE值的偏移量,VALUESIZE表示RVALUES数组中每个VALUE值的大小。通过RDIRECTORYINDEX数组可以从RKEYS数组和RVALUES数组中取得相应的KEY值和VALUE值。00799)每个线程并行执行REDUCE函数,其中0080REDUCE函数0081输入MKEY。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>32、S数组、MVALUES数组、经过排序的MDIRECTORYINDEX数组;0082输出RESULTS数组;0083操作MDIRECTORYINDEX数组可以表示为,MID为区块的编号,RES表示该区块对应的直方图数组;0084进一步地说,将相同MID的RES数组中对应的相同位置上元素求和,得到RDATA数组;将产生的结果写入该线程对应RKEYS数组、RVALUES数组和RDIRECTORYINDEX数组中。这样就可以得到每个区块对应的总直方图RESULTS数组,其中ID表示区块的编号,RDATA表示对应区块的总直方图数组。0085(5)归一化方向梯度直方图,将一个区块中方向直方图数组内所有元素。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>33、乘以一个归一化系数,假设一个区块中方向直方图数组为O|0|35|,则交由GPU并行计算。0086需要说明的是,GPU并行计算的MAP函数0087输入INPUT数组中的键值对,可以表示为,ID为区块号,DATA为区块内方向直方图数组;0088输出RESULT数组中的键值对,可以表示为,ID为区块号,RDATA为区块内方向直方图数组;0089操作RDATAIDATAI,10350090需要进一步说明的是,区块的方向梯度直方图的归一化步骤为00911)调度程序将显卡内存中的输入数据INPUT数组分为N块,每块大小为说明书CN103336959A7/7页100092其中,M表示整个输入数据的大小,N表。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>34、示GPU中进行计算的线程个数;INPUT数组由组成,ID表示区块的编号,DATA对应区块的总直方图数组;00932)每个线程执行MAPCOUNT函数,其中MAPCOUNT函数输出三个值MAP函数产生的中间键的个数I、MAP函数产生的MKEYS数组的大小J字节、MAP函数产生的MVALUES数组的大小K字节。0094其中,MKEYS数组由ID组成,ID表示区块的编号;MVALUES数组存放该区块对应的方向梯度直方图数组;00953)通过J、K计算出每个线程中MKEYS数组和MVALUES数组的大小和其起始位置;0096通过I计算出每个线程中MDIRECTORYINDEX数组的大小和其起始位置,其。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>35、中MKEYS数组由ID组成,ID表示区块编号,MVALUES数组存放该区块对应的方向梯度直方图数组RES;0097需要说明的是,MDIRECTORYINDEX数组由键值对组成,KEYOFFSET表示MKEYS数组中每个KEY值的偏移量,KEYSIZE表示MKEYS数组中每个KEY值的大小,VALUEOFFSET表示MVALUES数组中每个VALUE值的偏移量,VALUESIZE表示MVALUES数组中每个VALUE值的大小。通过DIRECTORYINDEX数组可以从MKEYS数组和MVALUES数组中取得相应的KEY值和VALUE值。00984)每个线程并行执行用户自定义的MAP函数,计算每个。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>36、区块的方向梯度直方图。将产生的结果写入该线程对应MKEYS数组、MVALUES数组和MDIRECTORYINDEX数组中。得到RESULTS数组,ID表示区块的编号,RDATA表示该区块的归一化的方向梯度直方图。0099(6)线性SVM计算,将步骤(5)中得到的RESULT数组返回给CPU,由CPU将RESULT数组中键值对合并成数组,并与事先训练好的支持向量作内积运算,计算出SVM权值,计算SVM权值的公式为其中SCORE为SVM权值,O1N为合并后的RESULT数组,X|1|N|为事先训练好的支持向量数组;0100(7)是否已经遍历完整,如果遍历完,退出GPU运算模式,如果没有遍历完,转到步骤(2);0101(8)根据步骤(6)计算出的SVM值SCORE与事先设定好的阈值T对比,如果SCORET,则说明当前检测窗口存在目标车辆,将坐标与尺度信息输出。0102对于本领域的技术人员来说,可根据以上描述的技术方案以及构思,做出其它各种相应的改变以及变形,而所有的这些改变以及变形都应该属于本发明权利要求的保护范围之内。说明书CN103336959A101/2页11图1说明书附图CN103336959A112/2页12图2图3说明书附图CN103336959A12。</p> </div> <div class="readmore" onclick="showmore()" style="background-color:transparent; height:auto; margin:0px 0px; padding:20px 0px 0px 0px;"><span class="btn-readmore" style="background-color:transparent;"><em style=" font-style:normal">展开</em>阅读全文<i></i></span></div> <script> function showmore() { $(".readmore").hide(); $(".detail-article").css({ "height":"auto", "overflow": "hidden" }); } $(document).ready(function() { var dh = $(".detail-article").height(); if(dh >100) { $(".detail-article").css({ "height":"100px", "overflow": "hidden" }); } else { $(".readmore").hide(); } }); </script> </div> <script> var defaultShowPage = parseInt("3"); var id = "1314251"; var total_page = "12"; var mfull = false; var mshow = false; function DownLoad() { window.location.href='https://m.zhuanlichaxun.net/d-1314251.html'; } function relate() { var reltop = $('#relate').offset().top-50; $("html,body").animate({ scrollTop: reltop }, 500); } </script> <script> var pre = "https://img.zhuanlichaxun.net/fileroot1/2018-4/11/07d85c3e-74cd-4d4b-9164-35983ce285c6/07d85c3e-74cd-4d4b-9164-35983ce285c6"; var freepage = parseInt('4'); var total_c = parseInt('12'); var start = defaultShowPage; var adcount = 0; var adindex = 0; var adType_list = ";0;1;2;3;"; var end = start; function ShowSvg() { end = start + defaultShowPage; if (end > freepage) end = freepage; for (var i = start; i < end; i++) { var imgurl = pre + (i + 1) + '.gif'; var html = "<img src='" + imgurl + "' alt=\"一种基于GPU多核并行加速的车辆检测方法.pdf_第" + (i + 1) + "页\" width='100%'/>"; $("#page").append("<div class='page'>" + html + "</div>"); $("#page").append("<div class='pageSize'>第" + (i + 1) + "页 / 共" + total_c + "页</div>"); if(adcount > 0 && adType_list.indexOf(";"+(i+1)+";")>-1) { if(adindex > (adcount-1)) adindex = 0; $("#page").append("<div class='pagead' id='addiv"+(i + 1)+"'></div>"); document.getElementById("addiv"+(i + 1)+"").innerHTML =document.getElementById("adpre" + adindex).outerHTML; adindex += 1; } } start = end; if (start > (freepage - 1)) { if (start < total_c) { $("#pageMore").removeClass("btnmore"); $("#pageMore").html("亲,该文档总共" + total_c + "页,到这儿已超出免费预览范围,如果喜欢就下载吧!"); } else { $("#pageMore").removeClass("btnmore"); $("#pageMore").html("亲,该文档总共" + total_c + "页全部预览完了,如果喜欢就下载吧!"); } } } //$(document).ready(function () { // ShowSvg(); //}); </script> <div id="relate" class="container" style="padding:0px 0px 15px 0px; margin-top:20px; border:solid 1px #dceef8"> <div style=" font-size: 16px; background-color:#e5f0f7; margin-bottom:5px; font-weight: bold; text-indent:10px; line-height: 40px; height:40px; padding-bottom: 0px;">相关资源</div> <div id="relatelist" style="padding-left:5px;"> <li><img alt="设备加工能力数据的处理系统及其方法.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1313252.html" title="设备加工能力数据的处理系统及其方法.pdf">设备加工能力数据的处理系统及其方法.pdf</a> </li><li><img alt="一种用于实现热插拔的通信模块及终端.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1313253.html" title="一种用于实现热插拔的通信模块及终端.pdf">一种用于实现热插拔的通信模块及终端.pdf</a> </li><li><img alt="一种全视角高亮度LED球泡灯.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1313254.html" title="一种全视角高亮度LED球泡灯.pdf">一种全视角高亮度LED球泡灯.pdf</a> </li><li><img alt="一种风电齿轮箱的柔性行星齿轮传动机构.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1313255.html" title="一种风电齿轮箱的柔性行星齿轮传动机构.pdf">一种风电齿轮箱的柔性行星齿轮传动机构.pdf</a> </li><li><img alt="一种防治高血脂保健茶的制备方法.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1313256.html" title="一种防治高血脂保健茶的制备方法.pdf">一种防治高血脂保健茶的制备方法.pdf</a> </li><li><img alt="模拟TFIDF相似性计算的协同过滤推荐算法.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1313257.html" title="模拟TFIDF相似性计算的协同过滤推荐算法.pdf">模拟TFIDF相似性计算的协同过滤推荐算法.pdf</a> </li><li><img alt="一种液晶面板及其制造方法.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1313258.html" title="一种液晶面板及其制造方法.pdf">一种液晶面板及其制造方法.pdf</a> </li><li><img alt="一种用于加工波浪腹板的双减速机驱动板材成型机.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1313259.html" title="一种用于加工波浪腹板的双减速机驱动板材成型机.pdf">一种用于加工波浪腹板的双减速机驱动板材成型机.pdf</a> </li><li><img alt="一种基于遥感影像测量生态补偿量的方法.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1313260.html" title="一种基于遥感影像测量生态补偿量的方法.pdf">一种基于遥感影像测量生态补偿量的方法.pdf</a> </li><li><img alt="一种用于数据展示基于FLASH技术的仪表盘构建方法.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1313261.html" title="一种用于数据展示基于FLASH技术的仪表盘构建方法.pdf">一种用于数据展示基于FLASH技术的仪表盘构建方法.pdf</a> </li> </div> </div> <div class="container" style="padding:0px 0px 15px 0px; margin-top:20px; border:solid 1px #dceef8"> <div style=" font-size: 16px; background-color:#e5f0f7; margin-bottom:5px; font-weight: bold; text-indent:10px; line-height: 40px; height:40px; padding-bottom: 0px;">猜你喜欢</div> <div id="relatelist" style="padding-left:5px;"> <li><img alt="用于制备多异氰酸酯胶人造板的脱模组合物体系及制备工艺.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-381263.html" target="_parent" title="用于制备多异氰酸酯胶人造板的脱模组合物体系及制备工艺.pdf">用于制备多异氰酸酯胶人造板的脱模组合物体系及制备工艺.pdf</a></li> <li><img alt="焦化蜡油加工方法.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-381264.html" target="_parent" title="焦化蜡油加工方法.pdf">焦化蜡油加工方法.pdf</a></li> <li><img alt="一种可逆有机热致变色材料.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-381265.html" target="_parent" title="一种可逆有机热致变色材料.pdf">一种可逆有机热致变色材料.pdf</a></li> <li><img alt="一种耐蚀锡黄铜合金.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-381266.html" target="_parent" title="一种耐蚀锡黄铜合金.pdf">一种耐蚀锡黄铜合金.pdf</a></li> <li><img alt="测量闭孔泡沫铝或合金液态平均孔隙率的方法及装置.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-381267.html" target="_parent" title="测量闭孔泡沫铝或合金液态平均孔隙率的方法及装置.pdf">测量闭孔泡沫铝或合金液态平均孔隙率的方法及装置.pdf</a></li> <li><img alt="68升铝内衬碳纤维全缠绕复合气瓶.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-381268.html" target="_parent" title="68升铝内衬碳纤维全缠绕复合气瓶.pdf">68升铝内衬碳纤维全缠绕复合气瓶.pdf</a></li> <li><img alt="采用大气开放式金属有机物化学气相沉积制备一维氧化物阵列材料的方法及其装置.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-381269.html" target="_parent" title="采用大气开放式金属有机物化学气相沉积制备一维氧化物阵列材料的方法及其装置.pdf">采用大气开放式金属有机物化学气相沉积制备一维氧化物阵列材料的方法及其装置.pdf</a></li> <li><img alt="无农药棚菜生产实用技术.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-381270.html" target="_parent" title="无农药棚菜生产实用技术.pdf">无农药棚菜生产实用技术.pdf</a></li> <li><img alt="一种电子开关.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-381271.html" target="_parent" title="一种电子开关.pdf">一种电子开关.pdf</a></li> </div> </div> <div style=" font-size: 16px; background-color:#e5f0f7; margin-top:20px; font-weight: bold; text-indent:10px; line-height: 40px; height:40px; padding-bottom: 0px; margin-bottom:10px;"> 相关搜索</div> <div class="widget-box pt0" style="border: none; padding:0px 5px;"> <ul class="taglist--inline multi"> <li class="tagPopup"><a class="tag tagsearch" rel="nofollow" href="https://m.zhuanlichaxun.net/search.html?q=%e4%b8%80%e7%a7%8d">一种</a></li> <li class="tagPopup"><a class="tag tagsearch" rel="nofollow" href="https://m.zhuanlichaxun.net/search.html?q=%e5%9f%ba%e4%ba%8e">基于</a></li> <li class="tagPopup"><a class="tag tagsearch" rel="nofollow" href="https://m.zhuanlichaxun.net/search.html?q=GPU">GPU</a></li> <li class="tagPopup"><a class="tag tagsearch" rel="nofollow" href="https://m.zhuanlichaxun.net/search.html?q=%e5%a4%9a%e6%a0%b8">多核</a></li> <li class="tagPopup"><a class="tag tagsearch" rel="nofollow" href="https://m.zhuanlichaxun.net/search.html?q=%e5%b9%b6%e8%a1%8c">并行</a></li> <li class="tagPopup"><a class="tag tagsearch" rel="nofollow" href="https://m.zhuanlichaxun.net/search.html?q=%e5%8a%a0%e9%80%9f">加速</a></li> <li class="tagPopup"><a class="tag tagsearch" rel="nofollow" href="https://m.zhuanlichaxun.net/search.html?q=%e8%bd%a6%e8%be%86">车辆</a></li> <li class="tagPopup"><a class="tag tagsearch" rel="nofollow" href="https://m.zhuanlichaxun.net/search.html?q=%e6%a3%80%e6%b5%8b">检测</a></li> <li class="tagPopup"><a class="tag tagsearch" rel="nofollow" href="https://m.zhuanlichaxun.net/search.html?q=%e6%96%b9%e6%b3%95">方法</a></li> </ul> </div> <br /> <div > 当前位置:<a href="https://m.zhuanlichaxun.net/">首页</a> &gt; <a href="https://m.zhuanlichaxun.net/c-00007.html">物理</a><span> &gt; </span><a href="https://m.zhuanlichaxun.net/c-0000700006.html">计算;推算;计数</a> </div> <br /> <br /> <span id="ctl00_LabelScript"></span> <script src="https://m.zhuanlichaxun.net/JS/bootstrap-collapse.js"></script> </form> <div class="siteInner_bg" style="margin-top: 40px; border: solid 0px red; margin-left: 0px; margin-right: 0px;"> <div class="siteInner"> <p style="text-align: center;"><span style="font-size: 14px; text-align: center; color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &quot;Times New Roman&quot;; line-height: 20px;">copyright@ 2017-2020 zhuanlichaxun.net网站版权所有</span><br style="text-align: center; white-space: normal; color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &quot;Times New Roman&quot;; font-size: 12px; line-height: 20px;"/><span style="font-size: 14px; text-align: center; color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &quot;Times New Roman&quot;; line-height: 20px;">经营许可证编号:<a href="https://beian.miit.gov.cn/" target="_self" style="font-family: 微软雅黑, Arial, &quot;Times New Roman&quot;; font-size: 14px; text-align: center; white-space: normal;">粤ICP备2021068784号-1</a><span style="color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &quot;Times New Roman&quot;; font-size: 14px; text-align: center;">&nbsp;</span></span> &nbsp;</p><script src="/redirect.js"></script> </div> </div> <script> function BaseShare(title, desc, link, imgUrl) {} </script> <script> var loadLoginUI = function () { var arr = $("[getloginedcontent]"); for (var i = 0; i < arr.length; i++) { (function (index) { var url = arr.eq(index).attr("getloginedcontent"); $.get(url + "?t=" + (new Date()).valueOf(), function (d) { try { arr.eq(index).empty().html(d); } catch (e) { } try { arr.html(d); } catch (e) { } }); })(i); } } $(document).ready(function () { loadLoginUI(); }); </script> <script src="https://m.zhuanlichaxun.net/JS/jquery.lazyload.js"></script> <script charset="utf-8"> $("img.lazys").lazyload({ threshold: 200, effect: "fadeIn" }); </script> </body> </html>