CN110764774A - 一种基于dsp平台sift算法硬件加速方法 - Google Patents

一种基于dsp平台sift算法硬件加速方法 Download PDF

Info

Publication number
CN110764774A
CN110764774A CN201910836179.7A CN201910836179A CN110764774A CN 110764774 A CN110764774 A CN 110764774A CN 201910836179 A CN201910836179 A CN 201910836179A CN 110764774 A CN110764774 A CN 110764774A
Authority
CN
China
Prior art keywords
sift algorithm
data
pointer
image data
calculation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910836179.7A
Other languages
English (en)
Other versions
CN110764774B (zh
Inventor
赵海盟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guilin University of Aerospace Technology
Original Assignee
Guilin University of Aerospace Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guilin University of Aerospace Technology filed Critical Guilin University of Aerospace Technology
Priority to CN201910836179.7A priority Critical patent/CN110764774B/zh
Publication of CN110764774A publication Critical patent/CN110764774A/zh
Application granted granted Critical
Publication of CN110764774B publication Critical patent/CN110764774B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Image Processing (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种基于DSP平台SIFT算法硬件加速方法,其步骤包括:1)将SIFT算法重新编译为能在DSP平台上运行的C语言程序;2)转换图像数据类型,使得SIFT算法处理的图像数据最大限度地使用DSP平台硬件计算单元进行计算;3)通过对SIFT算法计算迭代段的优化以最大化使用DSP内核的软硬件资源。本发明可以高精度提取图像特征点信息的前提下,通过图像数据结构、图像函数重构和迭代计算优化实现了SIFT算法计算速度的提升。

Description

一种基于DSP平台SIFT算法硬件加速方法
技术领域
本发明涉及一种基于DSP平台的特征点提取方法,具体是一种基于DSP硬件平台SIFT算法硬件加速方法。属于数字电路及芯片设计、嵌入式系统和数字图像处理领域。
背景技术
SIFT,即尺度不变特征变换(Scale-invariant feature transform),是第一个通过稳健的描述子将一定程度的不变量与尺度、旋转、光照和仿射变换联系起来描述局部特征的方法。SIFT算法的重要特征是计算密集。因此,计算平台的浮点、定点计算性能决定了算法的计算速度。
DSP,即数字信号处理器(Digital Signal Processor),是一种适用于密集运算和实时信号处理的微处理器。由于DSP平台内核计算过于复杂,使得SIFT算法在DSP平台上运行时,无法充分地发挥DSP平台的内核硬件性能。堆积硬件计算内核数量可以实现DSP端SIFT算法运行速度的提升。但是,这种方法通过EDMA(Enhanced Direct Memory Access)和IPC(Inter-Process Communication)模块实现多核之间的协同处理。此类研究聚焦于多线程实现速度提升,但是并没有充分发挥DSP内核硬件乘法器、累加器和双数据通道等硬件的性能,使得DSP内核算法的总体计算速度没有取得明显突破。
发明内容
针对上述问题,本发明的目的在于提供一种基于高性能DSP内核计算单元对SIFT算法进行硬件加速的方法,本发明依据算法程序可以高精度提取图像特征点信息的前提下,通过图像数据结构、图像函数重构和迭代计算优化实现了SIFT算法计算速度的提升。
本发明的步骤包括:1)将SIFT算法重新编译为可以在DSP平台上运行的C语言程序;2)转换图像数据类型,使得SIFT算法处理的图像数据可以更多地使用DSP平台硬件计算单元进行计算;3)通过对SIFT算法计算迭代段的优化以最大化使用DSP内核的软硬件资源。
所述步骤1)系统初始化后,将SIFT算法重新编译为C语言程序,使得预处理后的算法程序可以在DSP平台上运行,包括以下步骤:①约束非DSP平台运行的SIFT算法中的界面函数;②基于C语言对步骤①处理后的程序中的库函数重新编译;③基于C语言对②程序中的SSE(指令集)加速计算程序进行计算复原。
所述步骤2)转换图像数据类型,使得SIFT算法处理的图像数据可以更多地使用硬件计算单元进行计算,包括以下步骤:①根据DSP内核硬件乘法器的计算要求,重新构建图像数据结构,定义浮点型像素数据的存储结构。②重新分配SIFT算法中图像函数的数据存储空间,设置数据空间的指针为浮点型。DSP会根据数据的计算类型匹配计算方式,重构数据类型后DSP的浮点型硬件乘法器会自动参与float型乘法计算。
所述步骤3)优化计算迭代段以最大化使用DSP内核的软硬件资源,包括以下步骤:①减少SIFT算法中所调用的数据计算类函数内部指针的关联性以增强计算的并行能力;②将循环中子函数内嵌,使得程序编译器的优化器可以将子函数编排入pipeline(流水线管道)中;③简化和展开多重循环,使得计算可以更加充分地被编入pipeline中;④使用软件流水技术,缩短指令之间的执行间隔提升算法的计算速度。
与现有技术相比,本发明的积极效果为:
1、相对于其他平台运行的SIFT算法,本发明可以明显大幅提升算法的计算速度;
2、本发明在实现的过程中,对重要的图像数据结构、创建结构的函数进行重构,并对迭代计算段进行优化,使得DSP内核的软硬件资源和SIFT算法充分结合。
3、在DSP平台下,将SIFT算法进行可独立运行的模块化处理,为芯片的烧写提供很大的方便。
附图说明
图1为本发明的硬件加速优化流程图;
图2为图像数据结构转换流程图。
具体实施方式
下面结合附图和实施例对本发明进行详细的描述。
本发明的基于DSP平台SIFT算法硬件加速方法,包括以下步骤:
1、系统初始化后,将算法重新编译为C语言程序,使得预处理后的算法程序可以在DSP平台上运行,包括以下步骤:
1)约束非DSP平台运行的SIFT算法中的界面函数。
2)基于C语言对步骤1)处理后程序中的库函数重新编译。
非DSP平台的SIFT算法使用了大量的平台库函数,这些库函数在DSP平台上运行的效率非常低下,并且占用非常多的资源。因此,需要对非DSP平台的C语言函数库进行重新编译。
3)基于C语言对步骤2)处理后的程序中SSE加速计算程序进行计算复原。
由于DSP平台本身不支持SSE。因此需要将算法中采用SSE的计算过程进行复原,并进行C语言编译。
2、转换图像数据类型,使得SIFT算法处理的图像数据可以更多地使用硬件计算单元进行计算,包括以下步骤:
1)根据DSP内核硬件乘法器的计算要求,重新构建图像数据结构,定义浮点型像素数据的存储结构。为了使SIFT算法的单精度浮点型像素数据可以直接调用DSP内核的硬件乘法器参与计算,需要将存储在4个char型空间的float型数据重新存储到float型存储空间中。因此,在图像数据结构中新增float*imageData1指针。则图像gray32第row行的第col列像素点的float型像素数据val访问形式如公式1所示。
float val = *(gray32->imageData1+image->widthstep*row+col) (1)
式中gray32->imageData1为float*型指针,指向图像gray32的float型像素数据存储空间的起始地址。image->widthstep为gray32图像中一行像素数据占用的存储空间。
2)重新分配SIFT算法中图像函数的数据存储空间,设置数据空间的指针为浮点型。DSP会根据数据的计算类型匹配计算方式,重构数据类型后DSP的浮点型硬件乘法器会自动参与float型乘法计算。
当输入图像的像素数据类型为32位float型数据时,子函数ialloc开始分配储存空间并将返回的地址强制转换为float*型;然后,将得到的float*型地址传递到指针float*imageData1。具体的实现方式如下式所示。
img->imageData1=(float*)ialloc((size_t)img->imageSize) (2)
式中,img->imageSize为图像像素数据需要占据空间的大小(单位字节),由图像的行、列和像素点数据类型决定;img->imageData1为图像img的float型像素数据在图像结构中存储的起始地址;iallco为空间分配函数,并且,在完成空间分配后会返回void*型起始地址(该地址可以被强制转换为其他类型)。
3、优化计算迭代段以最大化使用DSP内核的软硬件资源,包括以下步骤:
1)减少算法中数据计算类函数内部指针的关联性以增强计算的并行能力
a)为了减少计算过程中输入数据指针和输出数据指针的关联性,在算法中数据计算类函数内部使用restrict、const关键字以声明函数中使用的非关联性指针不指向同一内存块。
b)当数据计算类函数的输入、输出指针存在关联性且在计算过程互相独立时,需要对程序的输出指针进行调整;建立过渡内存块,并将输出指针指向过渡内存块;SIFT算法中指针相关联的函数完成计算后,再将过渡内存块的内容拷贝到原始程序指定的内存块。
2)将循环中的子函数内嵌,使得优化器可以将子函数编排入pipeline中。
由于含有子函数的循环体无法通过优化器编排为一个pipeline。因此,需要将SIFT算法中迭代计算调用的子函数内嵌入SIFT算法主程序的循环体内。
3)简化和展开多重循环,使得计算可以更加充分地被编入pipeline中
由于编译器的循环优化只在循环的内层中形成一个pipeline。因此,需要对多重循环进行简化和展开,使得计算可以更加充分地被编排入pipeline。相互之间没有直接关联性的同类运算循环体,编译器会增加SIMD(Single Instruction Multiple Data)指令的使用次数,以增加运算的并行性能。
4)使用软件流水技术,缩短指令之间的执行间隔提升算法的计算速度。
编译器优化选项使用如下:
a)在编译器中声明程序没有使用alasing技术。
b)设置Optimization level(优化级别),使得编译器可以进行文件级别的优化。
c)启用Program mode compilation(程序模式编译)功能,以配合设定的优化级别实现程序级别的优化。
d)设置Optimize for code size(优化后的代码尺寸类型),以缩小代码的部分尺寸。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,本领域的技术人员应可理解,凡在本发明的精神和原则之内所作的任何修改、等同替换或改进等,均应包含在本发明的保护范围之内,保护范围以权利要求书所界定者为准。

Claims (9)

1.一种基于DSP平台SIFT算法硬件加速方法,其步骤包括:
1)将SIFT算法重新编译为能在DSP平台上运行的C语言程序;
2)转换图像数据类型,使得SIFT算法处理的图像数据最大限度地使用DSP平台硬件计算单元进行计算;
3)通过对SIFT算法计算迭代段的优化以最大化使用DSP内核的软硬件资源。
2.如权利要求1所述的方法,其特征在于,将SIFT算法重新编译为C语言程序的方法为:
①约束SIFT算法中运行的界面函数;②基于C语言对步骤①处理后的SIFT算法中的库函数重新编译;③基于C语言对②处理后的SIFT算法中的SSE加速计算程序进行计算复原。
3.如权利要求1所述的方法,其特征在于,步骤2)的处理方法为:①根据DSP内核硬件乘法器的计算要求,重新构建图像数据结构,定义浮点型像素数据的存储结构;②重新分配SIFT算法的图像函数中的数据存储空间,设置数据空间的指针为浮点型。
4.如权利要求1或3所述的方法,其特征在于,步骤2)的处理方法为:首先根据DSP内核硬件乘法器的计算要求,重新构建图像数据结构,定义浮点型像素数据的存储结构;然后创建float型存储空间,并在图像数据结构中新增float*imageData1指针指向float型存储空间的首地址;然后将SIFT算法处理的图像数据存储在4个char型空间的float型数据存储到float型存储空间中;然后重新分配SIFT算法的图像函数中的数据存储空间,设置数据空间的指针为浮点型,当输入图像数据的像素数据类型为32位float型数据时,SIFT算法的子函数ialloc开始分配储存空间并将返回的地址转换为float*型,将得到的float*型地址传递到指针float*imageData1。
5.如权利要求4所述的方法,其特征在于,图像数据gray32中第row行的第col列像素点的float型像素数据val访问形式为:float val=*(gray32->imageData1+image->widthstep*row+col);式中gray32->imageData1为float*型指针,指向图像数据gray32的float型像素数据存储空间的起始地址,image->widthstep为图像数据gray32中一行像素数据占用的存储空间。
6.如权利要求1所述的方法,其特征在于,步骤3)的实现方法为:①减少SIFT算法中所调用的数据计算类函数内部指针的关联性以增强计算的并行能力;②将SIFT算法内涉及的循环中子函数内嵌,使得程序编译器可以将子函数编排入流水线管道pipeline中;③简化和展开SIFT算法内的多重循环;④使用软件流水技术,缩短指令之间的执行间隔提升算法的计算速度。
7.如权利要求6所述的方法,其特征在于,减少SIFT算法中所调用的数据计算类函数内部指针的关联性以增强计算的并行能力的方法为:a)在数据计算类函数内部使用restrict、const关键字以声明数据计算类函数中使用的非关联性指针不指向同一内存块;b)当数据计算类函数的输入、输出指针存在关联性且在计算过程互相独立时,对输出指针进行调整;建立过渡内存块,并将输出指针指向过渡内存块;SIFT算法中指针相关联的函数完成计算后,再将过渡内存块的内容拷贝到原始程序指定的内存块。
8.如权利要求6所述的方法,其特征在于,将SIFT算法内涉及的循环中子函数内嵌的方法为:将SIFT算法中迭代计算调用的子函数内嵌入SIFT算法主程序的循环体内。
9.如权利要求6所述的方法,其特征在于,简化和展开SIFT算法内的多重循环后,程序编译器的优化器对于相互之间没有直接关联性的同类运算循环体,增加SIMD指令的使用次数,以增加运算的并行性能。
CN201910836179.7A 2019-09-05 2019-09-05 一种基于dsp平台sift算法硬件加速方法 Active CN110764774B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910836179.7A CN110764774B (zh) 2019-09-05 2019-09-05 一种基于dsp平台sift算法硬件加速方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910836179.7A CN110764774B (zh) 2019-09-05 2019-09-05 一种基于dsp平台sift算法硬件加速方法

Publications (2)

Publication Number Publication Date
CN110764774A true CN110764774A (zh) 2020-02-07
CN110764774B CN110764774B (zh) 2023-03-28

Family

ID=69329424

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910836179.7A Active CN110764774B (zh) 2019-09-05 2019-09-05 一种基于dsp平台sift算法硬件加速方法

Country Status (1)

Country Link
CN (1) CN110764774B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111967475A (zh) * 2020-06-28 2020-11-20 北京大学 一种基于遥感影像sift处理的软件硬件化方法
CN113885029A (zh) * 2021-09-28 2022-01-04 理工雷科电子(西安)有限公司 一种基于DSP实现Sar成像中提高精度和时效性的方法
CN113947185A (zh) * 2021-09-30 2022-01-18 北京达佳互联信息技术有限公司 任务处理网络生成、任务处理方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060245642A1 (en) * 2005-04-29 2006-11-02 Stmicroelectronics S.R.L. Software implemented image generating pipeline using a dedicated digital signal processor
CN102650860A (zh) * 2011-02-25 2012-08-29 西安邮电学院 一种新型数据流dsp中信号处理硬件的控制器结构
CN104732221A (zh) * 2015-03-30 2015-06-24 郑州师范学院 一种基于OpenCL并行加速的SIFT特征匹配方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060245642A1 (en) * 2005-04-29 2006-11-02 Stmicroelectronics S.R.L. Software implemented image generating pipeline using a dedicated digital signal processor
CN102650860A (zh) * 2011-02-25 2012-08-29 西安邮电学院 一种新型数据流dsp中信号处理硬件的控制器结构
CN104732221A (zh) * 2015-03-30 2015-06-24 郑州师范学院 一种基于OpenCL并行加速的SIFT特征匹配方法

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
JINGMING DONG等: ""Domain-size pooling in local descriptors:DSP-SIFT"", 《2015 IEEE CONFERENCE ON COMPUTER VISION AND PATTERN RECOGNITION (CVPR)》 *
SHIH-AN LI等: ""FPGA-Based Hardware Design for Scale-Invariant Feature Transform"", 《IEEE ACCESS》 *
丁帅帅等: "基于HLS的SURF特征提取硬件加速单元设计与实现", 《微电子学与计算机》 *
刘刚等: "基于DSP的交通视频稳像算法设计与实现", 《微型机与应用》 *
杨阳: ""一种增强现实几何一致性算法的优化研究"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
王毅等: "多分辨图像融合算法在DSP系统中的实现", 《北京理工大学学报》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111967475A (zh) * 2020-06-28 2020-11-20 北京大学 一种基于遥感影像sift处理的软件硬件化方法
CN113885029A (zh) * 2021-09-28 2022-01-04 理工雷科电子(西安)有限公司 一种基于DSP实现Sar成像中提高精度和时效性的方法
CN113947185A (zh) * 2021-09-30 2022-01-18 北京达佳互联信息技术有限公司 任务处理网络生成、任务处理方法、装置、电子设备及存储介质
CN113947185B (zh) * 2021-09-30 2022-11-18 北京达佳互联信息技术有限公司 任务处理网络生成、任务处理方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN110764774B (zh) 2023-03-28

Similar Documents

Publication Publication Date Title
Rossi et al. Vega: A ten-core SoC for IoT endnodes with DNN acceleration and cognitive wake-up from MRAM-based state-retentive sleep mode
CN110764774B (zh) 一种基于dsp平台sift算法硬件加速方法
Dolbeau et al. HMPP: A hybrid multi-core parallel programming environment
Liu et al. Speculative segmented sum for sparse matrix-vector multiplication on heterogeneous processors
WO2019205617A1 (zh) 一种矩阵乘法的计算方法及装置
Bodin et al. Heterogeneous multicore parallel programming for graphics processing units
Yu et al. Instruction driven cross-layer cnn accelerator for fast detection on fpga
Bruschi et al. Enabling mixed-precision quantized neural networks in extreme-edge devices
CN112446471B (zh) 基于异构众核处理器的卷积加速方法
Breitbart et al. OpenCL-an effective programming model for data parallel computations at the cell broadband engine
CN1347525A (zh) 虚拟机指令的优化字节码解释器
US20030126589A1 (en) Providing parallel computing reduction operations
Yousefzadeh et al. Energy-efficient in-memory address calculation
Haaß et al. Automatic custom instruction identification in memory streaming algorithms
Ji Hg-caffe: Mobile and embedded neural network gpu (opencl) inference engine with fp16 supporting
CN115170381A (zh) 一种基于深度学习的视觉slam加速系统及方法
US11106438B2 (en) Integration of automated complier dataflow optimizations
Tseng et al. Automatic data layout transformation for heterogeneous many-core systems
Kim et al. Demand paging techniques for flash memory using compiler post-pass optimizations
Kaouane et al. SysCellC: Systemc on cell
Kang AI Drives Domain Specific Processors
Moon et al. A 32-bit RISC microprocessor with DSP functionality: Rapid prototyping
Sung et al. OpenCV Optimization on Heterogeneous Multi-core Systems for Gesture Recognition Applications
TWI776465B (zh) 設置於圖形處理器中的二次卸載裝置和方法
CN117150194A (zh) 一种面向异构处理器的批处理矩阵乘优化实现方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant