优化估计

2024-08-04

优化估计(通用7篇)

优化估计 篇1

运动估计算法软件实现的一个关键问题是运算复杂度和压缩性能之间的权衡。即使使用快速搜索算法,运动估计仍然是软件视频编解码器中计算最复杂、最耗时的操作,其执行速度根本性地决定了整个编码器的实时性能。针对H.263编码器,讨论软件实现提高运动估计算法效率的优化技术,通过实验验证新思想的有效性。

1 运动估计优化技术

1.1 残差块预先判零技术

视频图像相关性较大,补偿后的残差很小,大量的块在DCT和量化处理后成为全零块。通常的编码方案,对于全零块的判断是在DCT和量化后统计完成的。若能提供一个判决准则在DCT运算之前就进行全零块的判断,就能省去对其的DCT、量化、反量化和反DCT等处理操作,大幅度提高编码器的效率[1]。

经典的预先判零方案是在运动搜索之后、DCT之前进行的,并没有考虑如何利用全零块提前检测和运动搜索的结合来提高运动搜索的效率。文献[2]提出的基于全零块发现的运动搜索算法把预先判零技术和运动搜索相结合,从而在节省DCT和量化模块时间的同时,进一步提高了运动搜索模块的效率和速度。

1.2 基于SAD阈值的提前结束搜索

通过研究大量的弱活动性视频序列的运动搜索结果,可以发现视频序列很平滑,变化缓慢,最佳匹配块的运动矢量大都基于当前块的中心位置分布,50%的块运动矢量为零,高达80%的块运动矢量小于4,另一方面,在不同应用环境中,对视频质量和压缩速度的要求是不同的。对于视频质量要求不高而实时性高的应用场合,可以牺牲运动估计的精度来换取搜索速度的提高,即在搜索最优匹配点的过程中,若当前匹配块的失真度满足一定的门限,可以提前结束搜索,将当前匹配块作为最优匹配块。

对于以SAD作为匹配准则的运动搜索,SAD值反映了当前匹配块的匹配程度,当SAD<TH(TH为设定的门限)时,可以认为当前块为静止块或当前搜索块已满足匹配精度,可以作为最优匹配块,本文称此方法为基于SAD阈值的提前结束搜索算法。采用基于SAD阈值的提前结束搜索算法后,大量静止宏块的运动搜索只需进行一个匹配点的运算,而在非静止块的运动搜索中根据匹配块的失真度情况提前结束搜索,也能减少搜索点数,提高编码速度。

1.3 非匹配块的提前判定

基于预判零技术和基于SAD阈值的提前结束运动搜索算法都是对匹配宏块的一种提前判定,即当判定某搜索点满足匹配条件时,则停止对本宏块的匹配搜索运算而开始下一宏块的运动估计。而如果能够在运动搜索中提前判定当前搜索点对应的块为非匹配块,就可以跳过该搜索点后续的误差累计运算,加快搜索速度[3]。利用该思想提出基于MBD点的SAD值比较非匹配块的提前判定算法。

运动估计中广泛使用的SAD匹配准则是通过累加待编码块和待匹配块像素值之差的绝对值得到的,并把得到的和作为这两个数据块相关性的量度。对于H.263标准所定义的16×16宏块,计算一个搜索点的SAD值需要256次的加法和256次的求绝对值运算。可见,在运动搜索的过程中,对每个搜索点的匹配运算都需要相当大的运算量。然而,运动搜索目的是找到一个与当前宏块相关性最强的预测宏块,并不需要计算它与每个宏块的相关系数。在当前搜索点的SAD值的累加运算过程中,若判断此时的SAD值已大于前面搜索过的最小块误差(MBD)点的SAD值,则断定此点不是寻求的全局MBD点,即其所对应的块不是全局最优匹配块,停止本点的SAD值的后续计算而转向搜索窗中下一个搜索点的匹配计算,从而减少运动搜索的运算量,提高搜索效率。

1.4 重复搜索点的识别

基于模板的块匹配中,可能要多次重复使用模板,而模板在移动过程中必然会有重复点,若不在算法实现时加以识别,必然会造成不必要的重复搜索,增加搜索的时间复杂度。由块匹配运动估计的原理可知,当对一个16×16宏块进行匹配搜索时,一个搜索点的重复就意味着增加256次的加法和256次的求绝对值运算,造成大量的计算浪费。因此,提出一种简洁高效的位标识方法来避免搜索点的重复。取N×N(N≤32)的运动估计搜索窗,将搜索窗内的N×N个点都一一标识,在搜索某一点时查看它的标识,若标识无效,表示该点已搜索过,跳过此点;否则对此点进行搜索运算,并在匹配结束后将其标识置为无效。那么,如何标识搜索窗内的各点是一个关键问题。简单的想法是定义一个N×N的二维数组,将矩阵的元素与搜索窗内各点一一对应。但是这样每个数组元素只有0,1两种值,造成了一定的存储空间的浪费。因此,可以考虑定义一个无符号整数一维数组(unsigned int Flag[N]),每个数组元素依次对应搜索窗的1行,元素的每位数字依次对应搜索窗内该行的N个点。这种方法节省存储空间,对标识的置位与查询都是基于CPU的逻辑运算,所以快速而准确。

1.5 搜索模板中各点的搜索顺序优化

由于使用了一系列的提前结束搜索技术,搜索模板内的各点的搜索顺序同样影响搜索匹配的时间。根据运动矢量的分布规律合理地安排模板内各点的搜索顺序是很有必要的。分析发现,视频序列图像的运动矢量在时间、空间上具有中心倾向分布特性、运动相关性和SAD值的方向性。现有的一些经典运动估计搜索模板较好地利用了上述运动矢量分布特性,性能良好。但它们都认为运动矢量均匀分布于搜索中心的各个方向。

针对不同运动速度和背景的18个不同类型标准测试序列在15×15搜索窗范围的实验统计数据证明除(0,0)矢量之外运动矢量分布的非均匀性:水平方向概率最大,垂直方向其次,对角方向概率较小,称之为运动矢量分布方向性中心偏移特性。根据此特性,设置搜索模板内各点的搜索顺序,一般先搜索水平方向上的点,然后是垂直方向上的点,最后搜索对角方向上的点,当然对于一些特殊的序列,如垂直运动较多的Tennis序列,可以考虑先搜索垂直方向上的点。

2 源代码优化

优化代码和提高速度实际上是一对矛盾,一般地,适度代码优化能够提高执行速度,而过度优化可能会引起代码长度的膨胀,不但会造成运行速度的下降,还会增加编程工作量,从而有悖于优化的初衷。在代码优化过程中,必须掌握适度原则,寻找一个平衡点,力争以最小的代价换取最大的性能。

2.1 计算SAD的代码部分优化

由块匹配运动估计的原理可知,当对一个16×16宏块进行匹配搜索时,一个搜索点就意味着进行256次的加法和256次的求绝对值运算。要加快运动搜索速度,一方面可以在保持精度的前提下尽可能的减少搜索点数,另一方面考虑加快单个搜索点的处理时间。从软件编程的角度考虑,可以对计算SAD的这部分代码进行优化,尽可能提高CPU的利用率。

2.2 数据方面的优化

在数据方面的优化主要从以下几个方面进行:

(1) 数据结构的优化。

合理安排数据结构,减少不必要的数组定义和空间分配,应该尽量减少在函数内部定义临时数组。在数据类型上,应尽量使用短数据类型和整型类型,避免浮点类型。浮点数据运算时,可以以有限的误差作为代价;采用整型的数据格式进行处理时则采用整数运算,换取更快的运算速度。

(2) 数据的初始化。

在运动估计过程中,数据的初始化和复位是必须要进行的工作,虽然其占据的运行时间不会太长,但在运动估计过程中还是占据了一定的开销。对这一问题的解决方法,一是在申请空间时,尽量减少申请的次数,对于可以重复使用的地址空间,只需要申请1次重复利用;二是避免零散的内存分配,对于数据的读/写以及内存的分配是十分耗时的,所以尽可能给一个变量分配一个连续区域的内存;三是同时拷贝一块数据,而不是利用循环对每一个数据进行赋值,从而加快初始化或数据复位的速度。

(3) 数据存取。

对文件的访问是影响程序运行速度的一大因素,提高其速度的主要办法是采用内存缓冲。在数据读/写时,利用了缓冲,每一次尽可能多地将数据读入缓存区内以便数据运用,或等到缓冲区中的数据存入足够多时将数据一次性写入文件,这样可减少读写文件的次数,从而加快整个软件的运行速度。此外,数据的读取以一定长度如4个字节为单位、而不是以位为单位读取,然后通过移位的方法,得到需要的数据段。

2.3 其他方面的优化[4]

(1) 循环分支优化。首先,尽可能减少循环的出现;其次,尽可能减少循环语句的嵌套,在平衡了循环次数和代码长度后,将循环内部操作适当展开;第三,当相邻两个循环相关,且循环的次数也有一定的关联,可利用循环操作的并行性;第四,当条件分支与循环分支嵌套时,尽量将条件分支移出循环分支。

(2) 函数使用优化。由于函数的调用是一个跳转的过程,不仅要传递参数,还要保护现场,所以减少函数之间的相互调用以及传递参数也是必要的。对于一些操作简单、调用次数不多的函数,可将被调用到的函数体直接放到主调函数中,或用宏定义表示,或用内联函数;减少函数的传递参数,将运算的最后结果作为函数的返回值直接赋值。

(3) 用指针优化数组的寻址,特别是多维数组及连续访问数组中的元素时。

(4) 利用累加器,减少加法器使用,即多使用自加、自减指令和复合赋值表达式,生成高质量程序代码。

3 优化方案性能测试

为测试上述优化方案的性能,进行了优化前和采用上述优化方案后的DS算法性能的实验[5,6],统计了优化前后的运动估计整像素和半像素搜索点数、恢复图形的PSNR、平均每帧的编码码长和平均每帧的编码时间。表1给出了实验统计结果。从表1的实验结果可以看出,采用上述优化方案后,H.263编码器的恢复图像的PSNR稍有下降,但整像素和半像素搜索点数均有较大的减少,平均每帧的压缩时间大大缩短,而且平均每帧的编码码长也有不同程度的缩短。实验结果验证了上述一系列的运动估计算法软件实现优化方案的有效性。

4 结 语

运动估计作为软件视频编解码器中计算最复杂、最耗时的模块,其软件实现的效率决定着整个编解码器的性能。这里针对H.263编码器,研究了软件实现时提高运动估计算法效率的一些优化技术,详细总结了基于残差块预判零技术和SAD阈值的提前结束运动搜索方案,以及基于MBD点的SAD值比较的非匹配块的提前判定方法,给出了一种基于位标识的重复搜索点的识别方法,提出了根据运动矢量各向非均匀分布特性设置模板搜索点顺序的思想。各项实验结果验证了上述优化方案的有效性。

参考文献

[1]周漩,谭径微,余松煌.H.263中预先判别全零系数的新方法[J].上海交通大学学报,1998,32(9):107-109.

[2]兰军强,何芸,曹志刚.H.263中基于全零块发现的运动搜索方法[J].中国图像图形学报,2000,5(11):925-927.

[3]Iain E.G.Richardson.视频编解码器设计:开发图像与视频压缩系统[M].欧阳合,韩军,译.长沙:国防科技大学出版社,2005.

[4]徐丽琨,黄登山.基于H.263标准的视频压缩算法的优化及研发[J].电力系统通信,2005,26(153):31-34.

[5]魏星,蒋建国,齐美彬.基于选择预测的自适应运动估计算法[J].中国图像图形学报,2005,10(7):873-877.

[6]丁贵广,计文平,郭宝龙,等.Visual C++6.0数字图像编码[M].北京:机械工业出版社,2004.

[7]OH H S,LEE H K..Block-matching algorithm based onan adaptive reduction of the search area for motion estima-tion[J].Real-Time Imaging,2000,6(5):407-414

[8]徐丽琨,黄登山.基于H.263视频压缩的新钻石搜索算法[J].微计算机应用,2005,26(5):516-520.

[9]贾洪骏.视频编码中基于模板块匹配的运动估计快速算法研究[D].北京:清华大学,2004.

[10]徐华根.视频编码算法研究及其在DM642上的实现[D].杭州:浙江大学,2005.

优化估计 篇2

和现有的视频编码标准类似[3],HEVC保留混合编码的基本体系结构[4,5]。一个显著 的区别在 于用类似 四叉树( quadtree) 的结构替代了传统的宏块( macroblock)[6]。HEVC编码流程可分解为预测、变换、量化和熵编码4部分[7]。预测部分将对编码器性能产生很大的影响[1]。预测分为帧间预测( inter prediction) ,和帧内预测( intra prediction)[1],帧内预测消除视频序列的空间相关性,用于编码I帧图像[8,9],帧间预测消除视频序列的时间相关性,用于编码P帧图像[8,10]。其中,帧间预测的大致流程为: 输入像素块与前一帧参考帧进行运动估计后[11,12],先进行整像素运动估计、分像素内插和分像素运动估计,产生运动矢量,之后对已获得的运动矢量进行运动补偿得到预测数据块[1,13]。所以相比帧内预测,帧间预测消除的时间相关性对视频压缩的压缩比有很大的关联[14]。本文主要对整像素运动估计所采用的算法进行优化。

1 整像素运动估计优化算法

HEVC中快速运动的估计首先进行整像素运动估计,运用搜索模板找到最佳匹配的整像素点; 之后进行分像素内插,再进行分像素运动估计,在整像素运动估计所找到的最佳匹配点的周围进行,检测其1 /2和1 /4像素点,找到最佳匹配的分像素点,主要通过调用底层的函数来实现[16]。整像素运动估计得到的是运动矢量的整像素值,决定了运动矢量的大致方向,因此,对其进行优化是十分必要的。

本文主要针对整像素运动估计采用的EPZS算法进行优化。HEVC沿用了H. 264 /AVC的EPZS作为默认的快速运动估计算法。该算法主要由运动矢量选择、提前终止策略、运动矢量提取3部分组成。文献中测试显示,EPZS算法比全搜索算法加速比最大达6倍[15],且能保证良好的压缩性能和图像质量。HEVC整像素运动估计中采用的EPZS算法可以简述为: 在大小为64×64的搜索框中,使用步长( l) 从1开始,以2的指数递增的8点菱形搜索,当SAD小于设定的阈值时停止搜索,得到运动矢量。在快速算法中,不同类型和尺寸的搜索模板一定程度上决定了搜索的效果。根据视频序列的中心偏移性( MVD) ,其运动矢量分布通常集中在搜索窗的中心位置附近,即大多数图像序列的运动都是平稳和缓慢的。8点菱形搜索适合搜索步长适中的点,对于搜索步长较小的点或较大的点,得到的搜索效果并不理想。因此,应该更改开始和提前终止的策略,优化搜索模板。

为此,在提出运动矢量搜索优化算法之前,需要统计现实序列运动矢量的分布,根据统计结果进行类型划分和调整搜索模板,减少搜索次数和运动估计计算量。由于搜索终止步长分布可以间接反映运动矢量分布情况,且数据易于得到、统计方便,本文模板优化的依据为搜索终止步长的统计分布。

通过测试得到176×144( qcif) 测试序列搜索终止步长的统计分布和176×144( qcif) 测试序列搜索终止步长的统计分布,如表1和表2所示。

%

%

根据以上分析,提出一种EPZS优化算法及搜索模板,搜索模板见图1。搜索框尺寸保持默认值64,调整的EPZS搜索点为3类: 4点的菱形搜索,8点的菱形搜索和16点的菱形搜索。当步长小于2时使用4点菱形搜索模板,如图1a所示;当步长在2 ~ 4时使用8点菱形搜索模板,如图1b所示; 当步长大于8时使用精度大的16点菱形搜索模板,如图1c所示。开始整像素运动估计算法之后,从距离为1开始对起始搜索点附近的点进行搜索,每次搜索步长以2的幂次增长,每次搜索根据步长选择对应的模板。即4点菱形搜索只是搜索距离为1时的搜索模板,8点菱形搜索是搜索距离为2,4,8的时的搜索模板,16点菱形搜索是搜索距离为16,32,64的时候的搜索模板。

2 测试结果

根据优化算法,对测试模型HM进行优化,并使用不同格式的视频序列对优化后的编码器进行了测试,下面给出了尺寸为176×144( qcif) 和1 920×1 080( class E) 的几个视频序列的测试结果。

测试视频序列配置如下: 测试序列尺 寸为176×144( qcif) ,编码帧数为60帧,帧率为155 f/s( 帧/秒) ,序列比特深度为8; 测试视频序列尺寸为1 920×1 080( class E) ,编码帧数为5,帧率为25 f/s,序列比特深度为8。

表3显示了尺寸176×144( qcif) 测试视频序列优化前后比较结果,其中编码帧数60,帧率5 f/s,序列比特深度为8。

%

表4显示了尺寸1 920×1 080( class E) 测试视频序列优化前后比较结果,其中编码帧数60,帧率5 f/s,序列比特深度为8。

%

3 结束语

根据表3和表4,可以得到结论如下:

对于尺寸为176×144测试视频序列,优化后,对于视频质量的客观值,亮度分量Y平均下降0. 005 0 d B,色度分量U平均下降0. 043 4 d B,色度分量V平均下降0. 072 6 d B,编码后码流比特率最多上升2. 21% ,耗时最少下降3. 03% 。

对于尺寸为1 920×1 080测试视频序列,优化后,对于视频质量的客观值,亮度分量Y平均上升0. 008 1 d B,色度分量U平均下降0. 014 9 d B,色度分量V平均下降0. 047 7 d B,编码后码流比特率最多上升0. 40% ,耗时最少下降1. 25% 。

优化估计 篇3

关键词:运动估计,视频编码,UMHexagonS

由JVT制定的最新视频编码标准H. 264 /AVC[1],因其采用了很多新技术、新方法,特别是帧间预测中的可变化尺寸块运动估计、1 /4 像素精度的运动估计、多参考帧的使用,所以其比以往的视频标准有更高的编码质量,同时也有更高的复杂性。运动估计所需要的时间占整个编码器编码时间的60% ~ 80%[2]。为了提高编码速度,研究运动估计快速算法,也非常必要。

近年来,各国学者提出多种运动估计的快速算法,在保证编码质量基本不变的前提下,提高运动估计的效率。比如,三步法( TSS)[3]、四步法( FSS)[4]、六边形搜索法( HEXBS)[5]、钻石搜索法( DS)[6]、改进的预测式区域搜索算法( EPZS)[7]、非对称十字型多层次六边形格点搜索( UMHexagon S) 算法[2]。

本文基于UMHexagon S算法,根据运动情况,使用动态搜索窗口以及自适应的搜索模板,在图像质量和码率没有太大变化的情况下,降低了算法的复杂度,大大减少了运动估计的时间。

1 UMHexagon S算法描述

UMHexagonS搜索算法主要包括4个步骤[2]:

1)非对称的十字形搜索;

2) 5 × 5 小矩形搜索;

3)非均匀多层次六边形搜索;

4)扩展的六边形搜索。

算法流程如图1所示。

(搜索范围为16时,起始搜索点为(0,0))

在开始搜索之前,起始搜索点要根据当前块的运动情况,在原点预测值、中值预测值( MVpred_MP) 、上层预测值( MVpred_UP) 、相邻参考帧预测值( MVpred_NRP) 和时域对应块预测值( MVpred_CP) 这5 种预测模式中来进行选择。搜索范围的大小通过配置文件的search_range参数设置:search_range = 16 /32 /48 /64。在搜索的同时,UMHexagon S算法中还设定了提前终止搜索和跳转搜索步骤的阈值,这就大大减少搜索的点数,节省了搜索时间。

2 UMHexagon S算法的优化

2. 1 动态的搜索范围

最新的编码标准中,分块模式不再是单一的16 × 16。比如H. 264 /AVC标准有7 种分块模式,最大块为16 ×16,最小块4 × 4。虽然已经引入了动态搜索范围[8],但是并没有考虑到不同模式,比如会对4 × 4 的块增加额外的搜索。因此为了进一步优化搜索范围,可以利用MVpred_MP和MVpred_UP来针对非16 ×16( 该模式没有MVpred_UP) 模式,再计算一个新的搜索范围[9],取新的搜索范围与以前搜索范围中的最小值作为最后的搜索范围。动态搜索窗口的计算方法如图2 所示。

A是从配置文件获得的search_range; B是计算得出的新的动态搜索范围( new_search_range) ,由C和D构成;C是固定的搜索范围。D是动态范围。其中,MVpred_UPX,MVpred_UPY和MVpred_MPX,MVpred_MPY分别是MVpred_UP,MVpred_MP的X和Y分量。C,D两个搜索范围的计算公式定义如下

2.2搜索模板的改进

2.2.1十字模板的优化

原始的十字搜索模板要搜索24 个点,虽然是不对称的模板,但在某些情况下垂直方向上发现最优点的可能性要比水平方向大,如果使用同一个模板,不利于更快找到最优点。可以根据当前的预测运动矢量MVpred的X方向与Y方向的不同,选择以下不同的模板,如图3 所示。

模板是不对称的小十字模板,一个步长是2,一个步长是1。如果abs( MVpred_x) < abs( MVpred_y) 选用模板2;否则选用模板1。搜索方式是: 以当前点为中心,搜索周围四个点,直到最优点为中心点,停止搜索。实验结果显示,采用这种方法,平均每次搜索不到5个点。

2.2.2 5×5小矩形搜索的改进

由于运动矢量的最优点在13 点的菱形和25 点的小矩形出现的概率分布是80. 7% 和82. 6%[10],所以本文采用了13 点菱形来替代25 点的小矩形,如图4 所示。

2. 3 多层次多角度自适应模板

UMHexagon S中的非均匀多层次六边形搜索,为了有效避免陷入局部最优,每次需要检测4 ×16 个点。此步骤可以结合运动矢量分布的空间方向性[11],并结合MVpred_MP来简化搜索模板的层数。具体方法如下:

1) 当Num_Big_Hexagon ≥ 4 时

如果Mv_Big_Hexagon ≥ 12,则修改Num_Big_Hexagon = 4;

如果8≤Mv_Big_Hexagon <12,则修改Num_Big_Hexagon = 3;

其他情况,则修改Num_Big_Hexagon=2。

2)当3≤Num_Big_Hexagon<4时

如果Mv_Big_Hexagon ≥ 8,则修改Num_Big_Hexagon = 3;

如果6≤Mv_Big_Hexagon <8,则修改Num_Big_Hexagon = 2;

其他情况,则修改Num_Big_Hexagon=1。

3)当2≤Num_Big_Hexagon<3时

如果Mv_Big_Hexagon ≥ 6,则修改Num_Big_Hexagon = 2;

其他情况,则修改Num_Big_Hexagon=1。

4)当Num_Big_Hexagon≤1时

Num_Big_Hexagon=1。

其中,Mv_Big_Hexagon是MVpred_MP中X方向和Y方向的最大值; Num_Big_Hexagon为最后的搜索层次数,1即为图5 的单层,2 即为在单层的基础上,再向外扩展一层,搜索点坐标为单层的2 倍,3 层、4 层以此类推; Num_Big_Hexagon = new_search_range /4。

经过以上几步搜索后,可以利用当前获得的最佳运动矢量与上一帧对应位置块的运动矢量的偏离方向,确定自适应模板的搜索方向,既减少了搜索点数,又能准确地避免陷入局部最优。搜索方向的角度在第一/三象限,使用12,13,14,15,0,4,5,6,7,8 十点构成的模板; 角度在第二/四象限,使用0,1,2,3,4,8,9,10,11,12 十点构成的模板; X轴方向,即X轴方向不为0,Y轴方向为0 使用2,4,6,10,12,14 六点构成的模板; Y轴方向,使用1,5,0,1,7,8,9 六点构成的模板。模板的示意图如图5 所示。

3 实验结果和分析

3. 1 测试平台和配置

本文采用H.264/AVC的JM11.0 平台进行测试。实验所用计算机的硬件配置为:Intel( R) Core( TM) i5 - 2310 @2. 90 GHz,4 Gbyte内存,操作系统为Windows XP SP3。为了更好地评价本文算法,实验选取几组不同运动类型的、不同分辨率的标准测试序列,设定不同的搜索范围,序列格式为YUV 420,编码档次为Baseline Profile。实验所用到的编码参数及测试序列如表1 所示。

3. 2 测试结果和分析

对于运动估计搜索算法的复杂度,可以由搜索点的个数来评价。对于16 ×16 大小的块在搜索范围为16 时,UMHexagon S算法的搜索点个数至少为N1= step1 + step2 +step3 + step4 = 25 + 24 + 64 + 10 = 123 点,而本文改进算法的搜索点个数至少为N2= step1 + step2 + step3 + step4 =5 + 12 + 6 + 10 = 34 点。由上可知,本文的改进算法能有效地降低搜索点个数,相应地也极大地减少了运动估计时间,编码时间也会减少,所以从理论上可以证明本文算法的有效性。

测试中将本文改进的算法与原有的UMHexagon S算法进行了对比,实验数据如表2 和表3 所示,其中同一分辨率下的序列平均值就是统计表1 中同一分辨率的序列测试结果的平均值作为最终测试结果。

实验主要是将本文算法和UMHexagon S算法在不同搜索范围下的PSNR、码率、编码时间、运动估计时间等方面进行了比较。从实验结果来看,本文算法的PSNR与UMHexagonS算法比几乎相同,下降时的幅度也都在0.02 dB以内;本文算法的码率与UMHexagonS算法比,幅度变化不大;从表2可以看出,本文算法在简化运动估计方面有很大的优势,特别是对图像运动剧烈的序列,效果尤为明显。一般情况下,本文算法在PSNR和码率变化不大的同时,QCIF分辨率搜索范围设置为32,平均可节省32.64%的运动估计时间;由表3可知,随着搜索范围的扩大,本文算法在运动估计时间上优势就越明显,有时都能节省47.05%。

4小结

优化估计 篇4

1.1静态功耗

静态功耗是电路维持在某个逻辑状态时所需的功耗,也指漏电流引起的功耗。漏电流主要包括三个部分:(1)栅极漏电流,随着栅极氧化层厚度Tox的减小变得越来越突出[2]。(2)亚阈漏电流,当电路处于静态时源级和漏极之间的电流,常用BSIM模型可以对晶体管的亚阈漏电流进行精确建模[3];(3)源漏级反偏漏电流,当反偏的P-N结之间形成强大的电场时,会形成较强的漏电流。随着器件尺寸减小,栅极氧化层厚度降低,器件总漏电流增加,静态功耗随之增加。

1.2静态功耗优化技术

静态功耗主要取决于工艺方面的参数影响。主要优化技术包括:(1)工艺控制法:通过控制晶体管的沟道长度L、氧化层厚度tox、结深等结构参数来减小漏电流的影响[1]。(2)阈值电压控制法:阈值电压的大小影响着亚阈电流的大小。有多阈值法、双阈值法及可变阈值法等,其中多阈值法较为普遍。即在电路的非关键路径上使用较高的阈值电压,而在关键路径上使用低阈值,这样既降低静态功耗,又不影响整个电路的性能[4]。(3)输入向量控制法:漏电流大小易受输入状态影响的特性,对电路输入进行适当控制以降低功耗。但该方法通常只对小规模电路有较明显的优化效果[5]。

2 CMOS静态功耗估计方法

在设计过程中如果没有精确的功耗估计方法就不可能完成低功耗的设计任务。就功耗估计技术而言,它与系统的电路规模及具体的输入序列有关,并且存在着计算量大、精度有限的问题。以下主要介绍CMOS静态功耗的几种估计方法。

2.1静态功耗查表法估计

基于静态功耗的堆栈效应的一种快速查表的静态功耗估计方法[6]。具体步骤为:(1)抽取电路的标准逻辑单元;(2)在晶体管级对这些标准单元进行建模;(3)利用漏电流模型可精确计算出各逻辑门在不同输入下各种漏电流值的一个映射表;(4)对于较大规模电路,其漏电流与输入密切相关,同时漏电流又与电路的拓扑结构有很大关系。即同一功能的不同实现方式也会导致漏电流不同。因此需要模拟出电路在某一输入下各种逻辑门所处的状态,然后通过查表法对所有逻辑门的漏电流求和。通过以上步骤可以估计出某种工艺下特定电路的漏电流值。与HSPICE等工具相比,速度上有所提升,并且相对误差不超过5%。以此为背景可对静态功耗有更深入的研究。

2.2最值静态功耗估计

最值静态功耗估计中最大静态功耗直接关系着整体功耗,同时还影响着电路在一定电源下的使用寿命及漏电流测试技术;而最小静态功耗反映了在一定工艺条件下通过高层低功耗设计技术能达到的极限。

2.2.1最大功耗估计

当系统处于空闲时,其消耗的最大功耗主要取决于最大漏电流所产生的功耗。基于对漏电流模拟,研究者提出了一种利用遗传算法进行最大漏电流的估计方法,逐步逼进最优解,由于其内在的并行性,算法适合于大规模并行求解。图1说明了遗传算法的一般流程[7]。

2.2.2最小功耗估计

最小功耗估计对静态功耗研究有着重要意义,较典型的应用就是最小漏电向量的产生。当电路进入空闲状态后,如果给输入一个向量值使得电路消耗最小的漏电流。这就是最小漏电向量在功耗优化方面的应用。对于组合电路来说,该向量为所有输入状态,而对时序电路而言,时序电路的最小漏电向量为所有输入和触发状态[6]。该方法在实现上较为简便,同时也给出了一个漏电流的区间,这比在一般方法中仅给出平均和最大值更有优越性。

2.3静态功耗的压缩估计

对于某些向量,在进行功耗模拟前就可根据电路结构信息预估它所带来的功耗值,然后到较高精度的模拟器上获得准确的功耗值,从而提高功耗计算速度。

静态功耗压缩估计的原理:利用上一设计层次的静态功耗信息对待测向量进行一次筛选,从而得到保持功耗特征的少数压缩向量,再用较低层次的功耗估计方法进行模拟,即可同时获得近似上一层次的模拟速度及下一层次的精度。这种压缩方法可用于利用门级功耗信息来加速电路级功耗模拟或利用RTL信息加速门级的功耗估计等。

3结论

利用以上的压缩模拟法、查找表模拟法对比传统的HSPICE高精度模拟及统计法[6]。得出统计法速度最快,依次是查表法、压缩估计法及高精度模拟。相对于HSPICE,压缩估计的精度较高,其次为查表法、统计法。由于统计法精度最差,仅适用于平均静态功耗估计,无法进行最值估计和特定向量下的估计。此外的方法均基于模拟,可用于最值估计和特定向量下的估计。由于各方法速度及精度各不相同,因此选择哪种方法应根据这两个参数及不同的应用需求而进行折中考虑。

摘要:随着集成电路工艺水平的提高,静态功耗成指数级增加。尤其在进入深亚微米及纳米阶段后,静态功耗在总功耗中占据主要地位[1]。因此,相应的静态功耗优化技术已经成为研究热点。本文归纳分析了几种CMOS静态功耗的估计方法,并与HSPICE高精度模拟法在速度与精确度上进行了对比。

关键词:CMOS,低功耗,功耗估计

参考文献

[1]徐懿.纳米集成电路静态功耗机理及低功耗设计技术[J].微电子学与计算机,2007.05:54-58.

[2]吴训威.CMOS电路的功耗分析及基于PSPICE模拟的功耗估计[J].浙江大学学报,2000,03:212-221.

[3]何进,陈文新.BSIM模型的研究和最近进展[J].半导体学报,2006,03:388-396.

[4]张慧熙.基于多阈值技术的低功耗CMOS电路设计[D].浙江:浙江大学,2005.

[5]常晓涛,范东睿.应用输入向量控制技术降低漏电功耗的快速算法[J].计算机研究与发展,2006,05:946-952.

[6]徐勇军.集成电路功耗估计及低功耗设计[D].北京:中国科学院研究生院,2006.

优化估计 篇5

关键词:AVS,SAD,运动估计,子像素

0 引 言

AVS (Audio Video Coding Standard) 是由我国自主制定, 拥有自主知识产权的音视频编码技术标准。其与H.264/AVC视频编码标准相比, 在保持性能的前提下, 大大降低了运算复杂度。AVS技术标准包括系统、视频、音频, 数字版权管理等4个主要技术标准和一致性测试等支撑标准。视频编码部分使用的主要技术包括帧间预测、帧内预测、变换和量化、熵编码、环路滤波器、缓冲区管理等。其中, 帧间预测的作用是在参考帧中搜索与当前编码块最匹配的块, 尽可能多地消除帧间冗余, 使得需要编码的信息量达到最少, 从而提高编码效率。帧间预测的核心是运动估计, 其运算性能直接决定了视频编码器的性能, 所以一直以来都是一个研究热点。

为了提高运动估计的精度, 在AVS的帧间预测方案中, 对于亮度块在整像素运动估计的基础上还提供了1/4像素精度的运动估计。由于帧图像中只存在整像素点的值, 所以AVS要先对子像素点进行插值, 然后, 再对子像素点进行运动搜索, 查找最匹配的块。这部分运算量较大, 运行时间长, 有进一步改进的必要。本文通过对AVS视频编码标准中子像素运动估计算法的分析, 针对子像素运动估计算法运算量较大的问题, 提出了一种新的基于整像素SAD的快速子像素运动估计算法, 它对现有的AVS技术标准子像素运动估计算法进行了较大的改进与优化。实验结果证明该方法在保持相同性能的前提下, 较大程度地降低了AVS技术标准运动估计算法的复杂度。

1 AVS中的运动估计算法

AVS视频编码的运动估计算法主要由3个部分组成:宏块划分模式, 各种块模式下的整像素运动估计, 精确到1/4像素的子像素运动估计。在4∶2∶0视频格式下, 一个宏块包括一个16×16的亮度块与2个8×8的色度块 (1个Cb, 1个Cr) , 这里仅考虑亮度块。

1.1 宏块的划分

AVS视频编码运动估计算法可以将一个16×16宏块分成16×16, 16×8, 8×16与8×8共4种模式, 如图1所示。它摒弃了H.264中所采用的4×8, 8×4和4×4宏块划分模式。通过精简宏块划分方式, 使其能更好地刻画物体运动, 提高运动估计的准确性。

1.2 子像素运动估计

AVS和H.264都采用了精确到1/4像素精度的运动补偿技术。子像素的内插值, H.264采用6抽头滤波器得到, 而AVS通过4抽头滤波器得到。在保持性能的前提下, AVS减少了插值所需要的参考像素点, 减小了数据存取的带宽要求[2]。

1.3 AVS中运动估计的流程

与H.264类似, 在AVS视频编码的运动估计中, 将一帧图像划分为若干宏块, 分别对每个宏块作运动估计。整像素运动估计是对每种宏块划分模式, 首先在参考帧中搜索与当前块最匹配的块。这里的匹配准则选用绝对误差和SAD (Sum of Absolute Difference) , 其定义如下:

SAD (i, j) =m=1Μn=1Ν|Ρk (m, n) -Ρk-1 (m+i, n+j) | (1)

其中:Pk (m, n) , Pk-1 (m+i, n+j) 可看成是当前数据块和参考数据块中相应点的像素值。然后, 比较每种宏块划分模式下整个宏块的总SAD值, 最小的那个模式, 作为最佳宏块划分模式, 其对应的运动矢量作为整像素运动搜索最佳运动矢量。接着再进行1/2像素精度的运动估计, 寻找1/2像素精度的运动矢量。然后在1/2像素精度的运动估计的基础上做1/4像素精度的运动估计, 在1/4像素精度上选择最优的匹配块, 得到最终的运动矢量。

1.4 现有算法的不足

采用精确至1/4像素精度的运动估计和使用4种不同大小的块匹配模式, 使得AVS具有极好的压缩性能。但是, 复杂的编码模式也增加了算法的复杂度, 大大增加了计算时间。我们运用Intel Vtune性能分析软件对AVS参考代码进行了分析, 发现采用多种块模式进行匹配、做1/2和1/4像素精度运动估计是AVS视频编码过程中耗时较大的环节。对于每一种块匹配模式, 依次进行整像素精度、1/2和1/4像素精度的运动估计, 这需要进行大量的计算。而采用4种不同尺寸的数据块进行块匹配, 更使运动估计所需要的计算量成倍增加。因此, 必须进行优化, 以减少计算量, 而其中的关键就是对运动估计算法的优化。

2 AVS中的运动估计算法优化

2.1 整数像素运动估计的优化

在AVS公布的参考代码 (RM5.2) 中, 整数像素运动估计采用全搜索算法, 全搜索法对搜索范围内的搜索点进行遍历, 寻找使得SAD最小的匹配块, 过程简单可靠。然而, 全搜索法运算量太大, 我们在对H.264参考代码的优化中发现, 类似DS (钻石法) , 4SS (四步法) , NTSS (新三步法) 等快速搜索算法都能在保持性能或性能下降在可接受范围内的情况下大幅度减少编码时间。其中, DS算法针对高清或标清序列的编码效果都要优于其他一些算法。另外考虑到我们下节对于子像素运动估计算法改进的需要, 我们对整像素运动估计的优化中采用DS算法。DS算法的两种搜索模式如图2所示 (实心点为搜索点) 。在搜索时采用了大菱形搜索模式 (LDSP) 和小菱形搜索模式 (SDSP) 。大菱形搜索模式有9个搜索点 (中心点及周围按菱形分布的8个围绕点) , 小菱形搜索模式有5个点 (中心点及与中心点垂直, 水平相邻的4个点) 。DS方式搜索时, 先以预测到的搜索中心为中心, 进行大菱形搜索, 计算9个点, 如果9个点中的最优点不在大菱形的中心, 则将大菱形的中心移至该点, 重复大菱形搜索, 直到最优点处于大菱形中心为止。然后在该点切换到小菱形搜索模式, 搜索5个点得到最终的搜索结果作为运动估计的最优匹配点[3]。

2.2 子像素运动估计算法的改进与优化

如何利用整像素运动估计中已得的SAD来简化子像素SAD的计算方法并预先排除某些子像素点成为最佳匹配点的可能性从而减少计算量, 是我们进行改进和优化的出发点。在此, 我们提出了利用已得整像素SAD值来估算1/2和1/4像素点SAD的方法。子像素运动估计的传统流程首先是利用整像素点的像素值对子像素点进行插值, 得到子像素点像素的基础上再与待编码图像相减得到SAD。但是, 在实际的计算中, 对于如图3中内插1/2像素点k的SAD, 可以表示为下式:

d (k) =i=1mj=1n|ΡijA+ΡijB+ΡijC+ΡijD) /4-Sij| (2)

其中:Sij表示当前待编码数据块的像素值;Pij是与A点相邻的整像素点像素值;m, n代表数据块的纵向和横向尺寸。从式 (2) 可以看出, 由于整像素值和1/2像素点像素值之间的相关性, 可以由整像素点已知的SAD值来估算相邻1/2像素点的SAD值。同样, 对于1/4精度像素点的SAD的计算, 也可以采用整像素点已知的SAD值来估算。通过对视频序列进行统计, 可以看到内插像素点的SAD与周围整像素点的已知SAD值具有如下关系:

d (a) =0.970× (3/4×d (A) +1/4×d (B) ) d (c) =0.970× (1/4×d (A) +3/4×d (B) ) d (b) =0.960× (1/2×d (A) +1/2×d (B) ) (3)

类似地, 像素d, h, l的SAD具有相似的表达式, 如式 (4) 所示:

d (e) =0.925× (9/16×d (A) +3/16×d (B) +3/16×d (C) +1/16×d (D) ) d (f) =0.925× (3/8×d (A) +3/8×d (B) +1/8×d (C) +1/8×d (D) ) d (j) =0.925× (3/8×d (A) +1/8×d (B) +3/8×d (C) +1/8×d (D) ) (4)

同样地, 中间像素g, i, k, m, n, o的SAD也可以用相似的表达式由点A, B, C, D进行预测。

对于上述子像素SAD的计算来说, 需要知道子像素点周围全部4个整像素点, 为了进一步简化算法, 我们通过对各匹配点的权值进行调整, 利用周围3个已知整像素点的SAD值来简单地计算子像素点的SAD值。这样在整像素运动估计采用DS算法时, 我们就能很方便地通过相邻3个整像素点SAD来预测其内插子像素点SAD, 对视频序列foreman, Akiyo, mother_daughter等进行统计[4], 得到如下公式:

d (e) =0.945× (10/16×d (A) +3/16×d (B) +3/16×d (C) ) d (f) =0.950× (7/16×d (A) +7/16×d (B) +2/16×d (C) ) d (g) =0.975× (4/16×d (A) +11/16×d (B) +1/16×d (C) ) d (j) =0.960× (1/3×d (A) +1/3×d (B) +1/3×d (C) ) d (k) =0.990× (1/4×d (A) +1/2×d (B) +1/4×d (C) ) d (b) =0.945× (2/16×d (A) +7/16×d (B) +7/16×d (C) ) (5)

利用已知的整像素点SAD值对子像素点的SAD值进行估算, 省略了子像素的运动估计和内插, 有助于提高计算速度。但是在有些情况下, 估算寻找到的SAD最优点可能并不是真正最优匹配点, 这将会导致重建的图像质量变差。

以上我们简化了子像素点SAD的获取方法, 接着我们利用整像素点的已得SAD值来预排除某些子像素点成为最优匹配点的可能性。如图4所示, 中心点和周围4个邻点的SAD值 (SADC, SADH1, SADH2, SADV1, SADV2) 已知。计算步骤如下:

1) 步骤1:通过比较, 先找出V1, V2, H1, H2中SAD值最小的点 (如H1) , 它与C点之间的1/2像素点作为一个候选1/2像素最优匹配点, 记为P1;

2) 步骤2:找出剩余3个SAD中值最小的点, 如与步骤1中的候选点在同一个方向上 (如H2) , 则直接进入步骤4;如在垂直方向上 (如V1) , 进入步骤3;

3) 步骤3:选择与上两步中的两个方向 (C-H1和C-V1) 夹角为45°的1/2像素点作为另一个候选像素点, 记为P2, 运用上边介绍的基于整像素SAD的1/2像素SAD插值算法得到P2点的SAD;

4) 步骤4:比较P1, P2点的SAD, SAD较小的即为1/2像素的最优匹配点。如只有P1点, 则P1点即为最优点。

对于1/4像素点的估计, 则以找到的1/2像素的最优匹配点为基础, 运用上面我们介绍的基于整数SAD的1/2像素SAD插值算法, 对最优匹配点和周围4个1/2像素相邻点的SAD值进行计算, 然后通过上述的4步, 运用比较方法, 得到最佳1/4像素匹配点。在文献[5]中, 也有类似的子像素运动估计快速算法。但是, 本文在计算子像素SAD的算法上又做了进一步的改进, 减少了计算复杂度, 与整像素DS算法配合得到更好的性能。另外, 文献[5]的算法在确定子像素最优点时, 要计算P1和P2点的SAD来判定最优匹配点, 这和其算法采用传统的先像素插值后计算SAD的方法有关。我们通过改进, 提出了简化的判断条件 (步骤2) , 通过观察相邻整像素点的SAD来判断P1和P2点的最优匹配性。

3 实现与验证

我们的改进和优化基于AVS组织公布的参考软件RM5.1。实验验证时, 帧率为30帧, 编码50帧, 除第一帧是I帧, 其他都是P帧, 参考帧为1帧, 进行RD优化, 熵编码采用CAVLC。量化因子QP分别取22, 28, 32。我们分别对qcif序列glassgow和salesman以及cif序列mobile和claire做了验证。对于qcif序列和cif序列, 运动搜索范围分别设为16和24。验证环境:Pentium-M 1.4 GHz, 512 MB, VC++6.0。验证结果见表1。

注:表中FS代表整像素和子像素均采用全搜索算法 (Full Search) ;DS代表整像素采用菱形算法 (Diamond Search) , 子像素仍采用原参考软件的全搜索算法;DS+NSS代表整像素采用菱形算法, 而子像素采用我们改进后的快速子像素运动估计算法NSS (Novel Sub-pixel Search) 。

4 结束语

通过实验验证, 我们看到本文提出的改进的子像素运动估计快速算法配合整像素运动估计的DS算法, 运用到AVS视频编码中, 比起子像素采用全搜索算法, 较大程度地降低了运动估计的处理复杂度, 减少了编码时间, 而平均SNR (Y分量) 只有微小的降低, 基本保持了原算法的性能, 从而保证了编码图像的质量。

参考文献

[1]虞露.AVS-视频技术概述[J].中国多媒体视讯, 2004, 12 (2) :34-35.

[2]数字视音频编解码技术标准化工作组.GB/T 200090.2[S].北京:中国标准出版社, 2006.

[3]智西湖, 智艾娣.基于H.264编码的运动估计快速搜索算法[J].计算机应用, 2004, 24 (4) :72-74.

[4]EROL B, KOSSENTINI F, ALNUWEIRI H.Efficient codingand mapping algorithms for software-only real-time video cod-ing at low bit rates[J].IEEE Transactions on Circuits andSystems for Video Technology, 2000, 10 (6) :843-856.

优化估计 篇6

关键词:运动估计,运动复杂度,PSNR

H.264是ITU-T和ISO/IEC联合制定的视频编码新标准。H.264的优越的性能主要体现在同样的重建图像质量下, 它能提供比MPEG-4, H.263标准更高的压缩性能, 使图像的数据量减少50%。但H.264卓越的编码性能是以提高编码复杂度为代价。在编码过程中消耗时间主要集中在运动估计部分, 因此, 研究快速运动估计算法成为提高编码速度的一个重要途径。

1 运动估计技术

视频编码中, 将图像序列的每一帧分成多个大小为M*N的宏块, 再对各块独立进行编码, 运动估计就是在帧间预测时, 找到当前帧的像素是从上一帧图像的什么位置移动过来的。

块匹配法是目前最常用的运动估计方法, 主要思想是对当前每一帧中的每一块根据一定的匹配准则在参考帧某一给定搜索范围内找出与当前块最相似的块, 即匹配块。由匹配块与当前块的相对位置算出运动位移, 即运动矢量。

块匹配准则, 是影响图像质量的一个重要因素。本文采用RD代价函数J (m, λMOTION) 。

是两个块的绝对误差和, s, c分别表示原始图像和参考图像, B1, B2为块尺寸。MV_COST (m, MOTION) MOTION.R (m p) 表示用于编码运动矢量的比特数, m (m x, my) T, p (px, py) T分别是实际矢量和预测矢量, λMOTION为拉格朗日乘数因子, R (m-p) 为运动信息。J (m, λMOTION) 兼顾了图像质量和编码速率这两个方面的要求, 将这两个要求的折中而不是其他匹配准则仅顾及图像内容的匹配程度, 这有助于提高编码的整体性能。

2 H.264参考模型运动估计优化方案

典型的快速运动搜索方法主要有:三步搜索算法、新三步法、六边形搜索法、钻石形搜索法等等。这些快速搜索算法都以性能不同程度的下降来换取处理速度的大幅提高。但搜索范围小、运动平缓的时候, 效果较好。

而现在预测运动估计算法在视频编码中已经越来越得到广泛的应用。这类算法主要是以对几个可能性较大的矢量来预测最佳运动矢量以及可提前终止搜索来提高效率。

2.1 UMHexagon S算法

UMHexagon S算法包含四种搜索模式:即不对称的十字交叉搜索;非均匀多层次六边形格点搜索;六边形搜索;小钻石搜索。算法要点如下:

2.1.1 预测矢量

该算法集定义了一个矢量集, 分别是中值矢量, 上层模式的运动矢量和时间域邻近参考帧的运动矢量。

H264采用的分块模式如图1所示, 各模式之间的上下层关系如下:

2.1.2 搜索路径

采用非对称十字搜索, 步骤2中水平和垂直搜索范围为W和W/2, 两个搜索点的距离为2。该步骤得到的最佳矢量点可精确作为下一步的开始搜索点。

2.2 基于速度的三步搜索算法

2.2.1 基于速度的三步搜索算法的提出

通过上面的研究, 发现如果先根据图像的相关性对搜索块的运动范围提前加以判断并进行更优针对性的搜索则可以减少进一步计算冗余, 提高搜索效率。在这个基础上提出了基于速度的搜索算法, 这种算法增加了阈值判决机制, 即通过设定帧序列中物体的运动速度阈值, 将运动块分为微量运动块、中等运动块、大运动块, 分别采用菱形搜索算法、六边形搜索算法、UMHexagon S搜索算法, 使得在保持编码器的性能的前提下提高编码速度。

2.2.2 基于速度的搜索算法的过程

Step 0:计算可能性较大的预测矢量点和零矢量点;

Step1:若J (m, λMOTION) 最小点为零矢量点, 则以菱形搜索得到最佳运动矢量;

Step2:若不满足step1, 由阈值判定为中等运动块, 则以六边形和菱形搜索相结合来检测最佳运动矢量;

Step3:若不满足step2, 由阈值判定为大运动块, 则以UMHexagon S算法结合中等运动算法一起检测最佳运动。

2.2.3 算法特点分析

搜索点数的多少是评价算法运算复杂度的一个重要指标。图2所示的UMHexagon S算法的主要部分使用了六边形搜索算法, 其中非均匀多层次六边形格点搜索点数为N1=16*4=64, 扩展的六边形格点的搜索点数为N2=7+3*n+4。而菱形格点的搜索点数N3=9+n (3, 5) +4。可见相比UMHexagon S算法菱形搜索的搜索点数较少。

3 实验结果比较及分析

首先在VC6.0的平台上将改进算法用C语言实现, 将其集成到H.264标准测试软件JM10.1中。程序配置如下:编码帧结构为IPPP…, 以30帧为一个帧组, 总帧数为100帧。搜索范围为 (-16, 16) , 量化值为28。试验用Carphone序列属于低运动复杂度的序列, Foreman序列和Coast序列分别属于中和高运动复杂度的序列。实验统计数据见表1。

(1) PSNR是评价图像的客观标准, 本算法在PSNR方面相对于全搜索法降低约0.04d B左右, 这对于人肉眼观察, 可以忽略;而在编码速度方面则各类视频序列对FS算法和UMHexagon S算法平均节省分别为83.6%和40.5%左右。可以看出本算法可以在图像质量基本不变的前提下, 大大提高了编码的时间。

(2) 本算法对于序列细节变化的剧烈程度比较敏感。而且可以从表中看出, 本算法对各类序列的编码速度都有较大提高, 适应性很好。

(3) 其中Foreman序列, UMHexagon S算法的PSNR比全搜索法的高出0.02d B左右, 这是由匹配准则所决定的, 该准则是编码速率和图像匹配程度程度的综合反映, 但是PSNR反映的是图像匹配度, 所以全搜索法的最好但是可以看出PSNR稍差了一些。

4 结论

H264在有效提高编码效率的同时, 使运动估计模块的计算复杂度随之成块增加, 极大增加了H264的计算量, 本文对H264中运动估计UMHexagon S算法进行了分析, 然后在此基础上提出了基于块运动范围分类搜索的运动估计算法。并且通过几个典型序列的实验可知, 本算法对不同运动复杂度的视频序列在保持图像恢复质量基本不变的前提下都能具有较高程度的编码速度提高, 具有良好的实用性和适应性。

参考文献

[1]白世军, 吴晓军, 卢文涛.基于H.264视频编码的运动估计算法优化[J].电子学报, 2009, 37:1-6.

[2]毕厚杰.新一代视频压缩编码标准——H.264/AVC[S].北京:人民邮电出版社, 2005.

优化估计 篇7

统计过程控制 (statistics process control, SPC) 是监控制造过程异常, 辅助维护过程稳定进而保证产品质量的有效手段。然而, 传统SPC方法单纯采用控制图发现产品质量特性的异常波动, 而不能诊断出关于异常的具体信息[1], 如常用的均值控制中, 检测到均值发生异常时, 偏移幅度究竟有多大无法直接获知, 而这种信息对异常诊断和过程改进都极其重要。针对这一问题, 学术界开展了将机器学习方法与传统SPC相结合进行过程异常智能诊断的研究。目前, 研究最多的是基于人工神经网络 (artificial neural network, ANN) 的方法[2-4]。

近年来, 基于统计学习理论的支持向量机 (support vector machine, SVM) [5]被提出并得到迅速发展, 其在学习能力、泛化能力以及实用性方面比ANN更具有优越性。在SPC领域也有了SVM的应用研究, 其中, 支持向量回归 (supportvector regression, SVR) 作为SVM在回归领域的延伸, 开始被用于对过程异常幅度的预测和估计。如Cheng等[6]提出用径向基核函数型SVR估计过程均值偏移量, 并通过仿真实验证实了该方法比ANN方法估计精度更高。

按照SVR原理, 原始空间非线性分布的数据通过核函数的作用被映射到高维特征空间中, 变得近似服从线性分布, 故而可以进行线性回归[7]。因此, 核函数是决定SVR性能的关键因素, 且不同的应用情况本质上要求有与之相匹配的核函数, 才能实现最合理的空间映射。然而, 在实际应用中, 核函数的构造和选取至今没有完善的理论依据, 常用的几种基本核函数具有不同映射特性, 针对不同应用场合表现出较大性能差异。只采用单个核对未知分布的样本进行处理并不合理, 因此, 近年来出现了多核学习方法的研究[8-10]。多核的基本思想即是将多种基本核函数进行集成, 以发挥各自的优势, 以增强决策函数的可解释性[11]。

为更加准确地对制造过程中监控的质量特性均值变量的偏移幅度进行估计, 以提高异常在线诊断能力, 本文提出一种采用粒子群优化 (PSO) 算法对多个简单核函数进行优化组合而实现的多核SVR (PSOMK-SVR) , 它通过PSO算法对各核参数、组合权重系数以及SVR的惩罚系数进行联合优化而得到, 再用于对过程均值偏移的回归估计。

1 支持向量回归数学模型

SVR是对SVM基本原理的推广, 用于解决非线性回归估计问题。SVR解决的问题可描述为[12]:对样本集T= { (xi, yi) |i=1, 2, …, l}, 其中, xi∈Rn, 为n维输入变量, yi∈R, 为xi对应输出值, l为样本数, 寻求样本最优拟合函数f ∈F= {f|f:Rn→ R}, 使之对非样本输入也能精确估计输出。针对该问题, SVR通过非线性映射φ:Rn→ Rm (m ≥n) 将原始的样本数据从输入空间 (n维) 映射到高维特征空间 (m维) , 使样本数据转化为易于进行线性拟合的高维数据, 再构造出线性拟合超平面:

式中, ω 为超平面法向量;b为超平面偏置量;〈·, ·〉表示特征空间中的内积运算。

SVR寻求最优拟合超平面等效于求解SVM的最大间隔问题, 并引入松弛变量使拟合具有一定的柔性, 得到如下优化问题:

其中, ξi和ξi*是表征系统上下限的松弛变量;ε为不敏感系数;C是取值为正常数的惩罚因子, 用于在拟合精度与泛化性能间取得平衡;|y- 〈ω, φ (x) 〉-b|是ε线性不敏感损失函数, 定义如下:

引入拉格朗日乘子αi、αi*、λi、λi*, 利用Wolfe对偶技巧, 建立原问题的拉格朗日对偶问题:

在式 (4) 中引入核函数K (xi, xj) = 〈xi·xj〉, 并利用KKT条件算出参数αi、αi*、b值, 最后得到SVR回归拟合函数为

2 多核学习原理及PSOMK-SVR构建方法

2.1 核函数类型及性质

从SVR的基本原理可知, 核函数是决定其回归性能的关键因素。核函数是满足Mercer条件的对称函数, 几种常用基本核函数如表1所示。

表1中, u和v为输入空间向量。根据核函数的定义可推出其具有如下基本性质[12]:① 若K1和K2是两个核, α1和α2是两个正实数, 则K =α1K1+α2K2也是核;② 若K1和K2是两个核, 则K = K1K2也是核;③ 若K1是核, 则K1的指数K (u, v) =exp (K1) 也是核。

2.2 多核学习原理及凸组合核

从本质上讲, 核函数对内积具有什么样的计算 (运算形式以及系数取值) , 就会形成什么样的特征空间。选择一种核函数即确定了从样本空间到特征空间的映射形式, 也就决定了SVR不同的回归拟合精度以及泛化能力。一般说来, 线性核具有全局特性, 相距很远的数据点都能影响到核函数值, 易获得较好泛化能力;径向基核具有局部特性, 只有相距很近的数据点对核函数值才有影响, 具有较好的学习能力。而一个学习模型性能的好坏通常由学习能力和泛化能力两方面决定, 因此可考虑对多种核函数进行集成, 综合其优势。前述核函数基本性质为此提供了思路, 多核学习正是利用这些性质集成多个核函数, 其中, 最直接的多核构建方法即将基本核函数按下式进行凸组合:

其中, K*为组合核函数, Ki、ωi分别为第i核函数及其权重, 满足ωi∈[0, k], 。

由此构建的多核函数综合了各基本核的特征映射能力, 将不同核函数形成的多个特征空间进行组合, 使数据在新的特征空间中得到更好表达[11]。

2.3 利用粒子群算法构建优化多核函数

本文按照式 (6) 构建多核函数, 选取表1所示3种基本核进行组合, 现要解决的首要问题就是确定组合权重系数。此外, 还需确定各基本核函数自身核参数的取值。核参数很大程度上决定了基本核发挥其映射特性的程度, 例如径向基核的局部映射能力与其核宽度参数γ具有密切联系, 不同参数可能导致映射结果出现极大差异。同时, SVR的惩罚系数C也是决定其泛化性能的关键参数。要获得性能良好的多核SVR, 需要这几类参数同时取得合适的值。为此, 本文引入粒子群优化算法[13]对这几类参数进行联合优化, 构建多核SVR。

PSO算法具有参数少、效率高等优点, 它以粒子Xi代表d维空间里具有记忆能力的点Xi= (xi1, xi2, …, xid) 。迭代过程中每个粒子根据之前的种群最优和个体最优位置信息调整自身位置, 调整公式为

式中, r1、r2为区间[0, 1]上的随机数;Vi(k)、Xi(k)分别为Xi第k次迭代时的速度和位置;Pi(k)为Xi第k次迭代中的最优位置;Pg(k)为k次迭代中所有粒子的最优位置;ω为惯性权重因子;c1、c2为加速度因子。

本文的PSO粒子编码为 (λ, coef, γ, C, ω1, ω2) 。λ∈ [0, 1.0], coef ∈ [0, 3.0], γ∈ [0, 1], 分别为多项式核和径向基核参数 (为简化计算, 多项式核固定为3次多项式, 即d=3) ;C∈ [1, 200];ω1∈ [0, 3]、ω2∈ [0, 3], 分别为线性核和多项式核权重, 径向基核权重ω3=3-ω1-ω2。为准确评价多核SVR的泛化估计能力, 引入五折交叉验证, 并采用决定系数R2作为精度指标。R2为估计值与真实值相关系数的平方, 在[0, 1]之间取值, 越接近1表明估计精度越高, 定义如下[13]:

式中, l为测试样本个数;yi为样本i真实值;^yi为样本i估计值。

利用PSO构建优化多核函数的过程如图1所示。

3 基于PSOMK-SVR的过程均值异常监测模型

为将PSOMK-SVR用于制造过程均值异常幅值估计, 将累积和 (CUSUM) 控制图与

该监测模型由两大模块构成:①用于训练出PSOMK-SVR结合, 构建如图2所示的监测模型。其中, CUSUM图基于序贯分析原理, 具有累积效应, 对过程均值的微小偏移表现得比图更灵敏, 利于更早发现过程异常, 也更早估计出偏移幅值。

PSOMK-SVR的离线学习模块;②制造过程均值变量异常在线监测模块。离线学习包括如下步骤:

(1) 根据采集的大量过程变量历史数据统计出其分布参数 (本文考察的均值变量, 根据中心极限定理其近似服从正态分布, 分布参数为均值μ和标准差σ) 。

(2) 以蒙特卡洛仿真方法生成训练与测试样本。幅值估计的原始样本向量定义为Xs= (xt*-w/2, xt*-w/2+1, …, xt*-1, xt*, xt*+1, …, xt*+w/2-2, xt*+w/2-1) T, 其中w为观测窗口宽度, t*代表CUSUM控制图检出偏移异常的观测点, Xs包括以t*为中心的连续w个观测值 (t*位于窗口中央) 。对应每个样本向量, 以发生偏移异常时变量幅值的实际偏移量作为目标值。

(3) 对原始样本向量依次进行标准化、特征融合与归一化处理得到训练与测试样本。标准化处理使得训练出的学习器独立于具体过程参数, 具有普遍适用性;特征融合能更好地刻画样本特征, 提高估计精度, 为此提取了经标准化处理的原始样本向量的6种统计特征[14] (均值 (mean) 、标准差 (SD) 、偏度 (skewness) 、峰度 (kurtosis) 、均方值 (mean-square value) 、自相关量 (autocorrela-tion) ) , 并与标准化处理的原始样本向量串联融合;归一化处理将数据统一到同一尺度范围内, 利于提高计算效率。最终计算样本向量为:X′t*= (x′t*-w/2, x′t*-w/2+1, …, xt*-1, x′t*, xt*+1, …, x′t+*w/2-2, x′t+*w/2-1, x′mean, …, x′autocorr) T。

(4) 随机选取部分训练样本, 利用前述PSO方法对参数 (包括核参数、权重系数和SVR惩罚系数) 进行优化, 最后以全部训练样本训练出有效的PSOMK-SVR, 并以测试样本集进行测试。

在线异常监测包括两个环节, 首先由CUSUM控制图对均值进行监控, 即通过在线提取新的均值计算CUSUM统计量, 与控制限值比对以判断是否出现异常。CUSUM统计量计算如下[15]:

其中, Ci+和Ci-为上下单侧累积和, 初值C0+=C0-=0;K为参考值;μ0为均值期望。当Ci+或Ci-超过控制限H时, 判定过程异常。 然后由PSOMK-SVR构成的偏移幅值估计环节在过程出现失控后, 再等待半个窗口宽度的观测点, 提取出原始样本向量, 并经过与生成训练样本时相同的标准化、特征融合及归一化处理后, 输入到PSOMK-SVR中估计出当前过程均值的偏移量值。

4 仿真实验验证

仿真实验在MATLAB7.11 软件中进行, SVR采用LIBSVM工具箱。 硬件环境为CPU2.2GHz, 内存2GB, 操作系统为WindowsXP3.2。

4.1 实验数据生成

利用蒙特卡洛仿真生成训练与测试样本, 仿真模型如下:

X (t) =μ0+r (t) σ0+bδσ0 (11)

其中, X (t) 为t观测点的均值变量值, μ0为均值变量期望, σ0为均值变量标准差, r (t) ~ N (0, 1) ;δ表示均值偏移幅值为σ0倍数, b为开关变量, 在异常前后分别取值0和1。

设μ0=80, σ0=5, δ∈{-3.5, -3.0, …, -0.5, 0.5, …, 3.0, 3.5}, 将δ的每种取值代入式 (11) 中生成长度为1000的数据流, 且设定在t=25时发生异常, 即使b从0变为1。CUSUM控制图参数定义如表2所示, 将生成的数据流输入到CUSUM控制图中, 当检测到异常时, 以当前数据点xt*为中心提取观测窗口w =8个均值数据构成原始样本向量。然后对原始样本向量进行标准化、特征融合及归一化处理得到训练和测试样本向量。生成训练样本共10×14=140个, 测试样本共10×14=140个。

4.2 PSOMK-SVR生成

SVR不敏感系数取为经验值, ε=0.01;PSO粒子取值范围为:λ∈ [0, 1.0], coef ∈ [0, 3.0], γ∈ [0, 1], C ∈ [1, 200], ω1∈ [0, 3], ω2∈ [0, 3];PSO的种群规模为20, 最大迭代次数为100, 加速度因子c1=c2=1.5;为更好地平衡全局搜索和局部搜索能力, 惯性权重按如下二次曲线动态调整[13]:

式中, ωstart=0.9, 为初始值;ωend=0.4, 为结束值;T为当前迭代次数;Tmax为最大迭代次数。

迭代得最优参数λ=0.72, coef =0.74, γ=1.0, C=126, ω1=1.86, ω2=0.075, 迭代过程如图3所示。代入获得的最优参数, 并以全部训练样本作为输入训练出PSOMK-SVR。

4.3 结果与讨论

为验证PSOMK-SVR估计过程均值偏移幅度的有效性和准确性, 将其与BP神经网络及通常认为效果最好的径向基核函数 (RBF) 型SVR (RBF-SVR) 进行对比。其中, BP网络为单隐层结构, 隐层激发函数tansig, 输出层激发函数logsig, 最大迭代次数1000, 训练精度0.001, 学习速率0.1, 采用有动量加自适应学习速率的梯度下降法训练;RBF-SVR通过网格搜索和五折交叉验证法进行参数整定。三者都用生成的训练样本集进行训练, 并作用于相同的测试样本集。比较的指标包括对全部测试样本估计的均方误差ΔMSE、决定系数R2, 以及每种偏移幅度的平均绝对百分误差ΔMAPE, 结果如图4所示。

图4a~图4c分别给出了三者对全部测试样本的估计情况, 从图上直观看出, PSOMK-SVR的估计值与真实值的重合度最高, 根据指标ΔMSE和R2量值看来, PSOMK-SVR的ΔMSE值最小, R2值最大。图4d中给出了ΔMAPE的对比情况, 可清晰地看出PSOMK-SVR的估计误差明显比BP神经网络的估计误差小, 也小于RBF-SVR, 尤其在偏移幅度本身较小情况下优势更明显。可见, SVR在小样本条件下回归估计性能明显好于神经网络;经过对多种核函数进行参数及权重系数寻优得到的优化多核SVR相对于单个核函数的SVR, 回归估计性能得到进一步提高。

5 应用验证

为进一步验证PSOMK-SVR的有效性和实用性, 以它为基础开发了过程异常在线监测软件, 对某型汽车变速箱输出一挡齿轮齿坯内孔 (图5) 精车工序进行应用验证。该工序属齿轮自动加工线的组成部分, 由车削中心以内圆车刀加工完成, 并通过线边检测台进行在线测量。根据前期累积的大量历史数据统计得到该齿坯孔径尺寸均值, 标准差, 以此作为过程基本参数建立图和CUSUM控制图。鉴于PSOMK-SVR的生成过程已经对训练样本作了标准化处理, 因此可将训练好的模型直接集成到监测软件中使用。

软件以容量为5的采样子组对该尺寸测量值进行获取, 并计算出子组均值记录到图中, 如图6所示, 同时通过CUSUM图进行异常判别。程序在第52号观测点即被检测出向下偏移异常,

在等待4个观测点 (即半个观测窗口宽度) 后, 提取49~56号观测点数据到PSOMK-SVR中, 进行偏移幅度估计, 得到δ=-1.74, 与子组均值标准差相乘得到估计的偏移量 Δ =-0.0012mm。为检验软件的估计效果, 没有立即对过程进行干预, 继续加工直到获取更多的X值 (一共获取了62组观测值) 。然后计算52号观测点到62号观测点间共11个X值的均值, 并与值作差, 得到实际发生偏移量 Δ′ =-0.0013mm。Δ与 Δ′ 相对误差为8.3%, 由此证明PSOMK-SVR能对实际制造过程变量的偏移幅值进行较为准确的估计, 具有一定实用性。

6 结论

传统SPC控制图不能直接提供过程变量发生异常的幅度, 不利于异常的诊断及过程的改进。通过机器学习方法对过程异常幅度进行智能估计能有效解决这一问题, 其中, 基于ANN以及基于单核函数SVR的过程异常参数估值方法已被证明是有效手段。

本文提出一种对多个不同特性的基本核函数进行凸组合构建SVR, 并通过PSO对包括核函数参数、组合权重系数和SVR惩罚系数的全部参数进行联合优化的方法。该参数寻优过程以五折交叉验证计算训练样本的决定系数均值作为PSO的粒子适应度值, 将寻优目标导向为使SVR具有更好的拟合精度和泛化能力。

【优化估计】推荐阅读:

密度估计05-29

背景估计06-03

稀疏估计06-15

精度估计07-12

转速估计07-29

安全估计08-05

时间估计08-10

在线估计08-13

误差估计08-28

分布估计09-10

上一篇:农田林网下一篇:创新调查框架论文