基于深度堆栈网络的心电信号识别

张锐 王茹 黄俊 曾鑫

摘 要:传统的心电信号识别算法依靠心电专家参与特征识别,费时费力,诊断成本高,心电信号形态复杂多样导致识别准确率低、适应性差。为解决上述问题,将栈式稀疏自编码器(SSAE,Stacked Sparse Autoencoder ),与Softmax分类器相结合形成深度堆栈网络(DSN, Deep Stacked Network)完成对心电信号的自动识别。通过3个稀疏自编码器堆叠的方式完成心电信号特征提取,逐层刻画心电信号的高维特征,由Softmax分类器完成心电信号识别。详细评估了深度堆栈网络的模型特性,确定了该网络模型的超参数,训练集样本和测试集样本源于MIT-BIH数据库。实验结果表明采用本文所提方法对心电信号进行识别,总识别率达到99.69%,验证了所提方法的有效性。

关键词:

栈式稀疏自编码器;特征提取;心电信号识别;稀疏参数

DOI:10.15938/j.jhust.2021.03.016

中图分类号:
TP183

文献标志码:
A

文章編号:
1007-2683(2021)03-0108-07

ECG Signal Recognition Based on Deep Stacked Network

ZHANG Riu1, WANG Ru1, HUANG Jun2, ZENG Xin1

(1.School of Automation,Harbin University of Science and Technology,Harbin 150080,China; 2.Chengdu East Road Traffic Technology Co., Ltd, Chengdu 610037, China)

Abstract:The traditional electrocardiogram (ECG) signal recognition algorithms rely on ECG experts to participate in feature recognition, which is time-consuming and laborious with high diagnostic cost. Complex and diverse ECG signal patterns result in low recognition accuracy and poor adaptability. To solve the above problems, the stack Sparse Autoencoder was combined with the Softmax classifier to form a Deep stack Network to realize automatic recognition of ECG signals. The feature extraction of ECG signals was completed by stacking three sparse autoencoders, and the high-dimensional features of ECG signals were depicted layer by layer, and the ECG signals were identified by Softmax classifier. Detailed assessment of the model characteristic of Deep stacked Network, determine the super parameter of the network model, sample training set and test set samples from MIT/BIH database. The experimental results show that the total recognition rate of the proposed method is 99.69%, which verifies the effectiveness of the proposed method.

Keywords:stacked sparse auto-encoder; feature extraction;  ECG signal recognition; sparse parameter

0 引 言

心血管疾病仍然是全球死亡的主要原因。心电图能提供心脏活动的信息,对各种心律失常的分析诊断具有极为重要的意义。心电信息是患者重要的临床资料,临床诊断需要医生具备高度的信息综合处理能力。但是心电特征具有一过性,所以临床上多用心电图仪对患者进行24 h甚至48 h的连续监控。传统的人工诊断面对庞大的数据困难极大,针对心电信号自动分类的智能算法变得尤为重要。

心电信号的自动分类过程通常包括心电信号采集、心电信号的预处理、心电信号的特征提取和分类。临床采集的心电信号是非常珍贵的,所以现在大多数心电信号的研究者研究所用的心电信号来源于4个国际权威的心电数据库,本次实验采用的是其中之一的MIT-BIH心律失常数据库。信号特征提取是整个过程的核心环节,病理信息体现在信号特征上,心电信号的特征提取也是过去几十年心电信号分类研究的关键,其中最重要的特征是R波、P波、T波的形态、位置和幅度,心电主要波形的检测是心电特征提取和分类的基础,为此小波变换[1]、小波变换与数学形态学相结合[2]、R波检测和心电数据压缩相结合[3]等算法不断被提出。以上文献在特定的数据集下虽都能取得较高的准确率,但是仍存在需要人工设计特征,构建模板甚至需要心脏专家的参与等诸多问题,这些问题导致时间、金钱成本的增加,还具有低适应性的缺陷。针对以上问题,随着深度学习技术的深入研究,无监督特征提取技术逐渐受到关注。

自编码器是深度学习的重要组成部分,深度学习也称为特征学习[4],是从输入数据中自动学习一个好的特征表示的算法,典型的深度學习架构包括深信念网络,堆叠自动编码器,卷积神经网络[5,9],与传统浅层构架相比,深度学习在许多方面表现的更出色,如图像分类[10],对象识别[11],人脸识别[12],医学图像分析[13]等。Hassan等[14]采用深度信念网络从电皮活动,光体积描记图和Z肌肌电图传感器信号的融合观测中提取深度级别特征,结合支持向量机分类五种基本情绪。Yu Dong等[15]使用13层的卷积神经网络提取水果图像的特征,以高准确率实现水果的分类。Rahhal等[16]使用堆叠的去噪自编码器学习特征并在迭代时结合人工专家标记最相关和不确定的心电信号节拍实现心电信号的主动分类。刘胜辉等[17]使用小波包分析方法对原始数据进行数据降噪,实现特征提取,将得到监控数据的熵值化结果作为预测模型的输入,训练和测试深度神经网络,完成刀具剩余寿命的预测。

本文主要针对心电信号的分类问题提出一种基于深度堆栈网络完成心电信号的识别方法,该方法堆叠三个稀疏自编码器的中间层利用无监督训练提取心电信号深层特征,然后根据所提取信号特征通过Softmax分类器进行有监督训练,最后以判别心电类型的估计概率值的方式完成心电信号类型的识别。通过实验分析得到深度堆栈网络算法能提高心电信号识别的准确率。

1 心电信号识别流程

本文基于深度堆栈网络的心电信号分类流程如图1所示。

首先输入含噪声的原始信号,然后进行心电信号预处理,对心电信号进行降噪,并检测QRS波进行心拍截取,完成数据的预处理,最后基于处理后的心电数据建立深度堆栈神经网络进行训练,获得心电信号的特征与Softmax分类器结合,最终完成心电信号的分类。

2 心电信号预处理

受到外部环境以及人体自身活动的影响,采集到的心电信号包含大量的噪声,需要去除的主要噪声分别为机体活动产生的肌电干扰、心电信号采集设备的电极与体表接触不良致使的基线漂移及该设备受附近电网影响形成的工频干扰三种噪声。传统的去噪方法主要包括中值滤波法、数字滤波器技术、自适应滤波法、小波变换以及现在的高斯滤波法。数字滤波具有简单、系统可靠性强等优点,在心电信号预处理阶段应用广泛。

按照文[18]的降噪处理方法,先对原始信号进行200 ms中值滤波处理,去除QRS波和P波,再用600 ms的中值滤波去除T波,然后用原始信号减去以上两个滤波后的信号就可得到消除掉基线漂移的心电信号,最后使用12-tap、3 dB点的截止频率为35 Hz的低通滤波器去除基线校正后的工频噪声和肌电噪声,滤波后的心电信号可用于所有后续处理。

对去噪后的心电信号进行带通滤波,通带为15~25 Hz,此频率区间主要为QRS波频段,主要目的是消除噪声,削弱P波和T波。然后按照Wang Y等[19]提出的双斜率处理方法,主要思想是在某个点左右两侧的设定区间0.015~0.060 s内分别寻找其最大平均斜率和最小平均斜率,再分别求右侧最大斜率和左侧最小斜率的差以及左侧最大斜率和右侧最小斜率的差,然后利用它们中的最大值进行截止频率为5 Hz的低通滤波,利用滑动窗口积分增大幅值,进一步平滑波形,至此心电信号的波形模式变得单一,方便后续波形检测。

为了对心电信号进行心拍截取,采用双阈值算法进行R峰确定,根据信号特点设定两个不同的阈值,若当前检测峰值高于所设定低阈值,可判断此检测波形为R峰。

3 心电信号心拍截取

本文选取4种形态的心电信号,然而同种形态的心电信号之间也具有一定的差异,因为本文所用的自编码器算法鲁棒性较强,所以无需对心电信号精确截取。自编码器的输入层为固定数目节点,心拍截取方式是以检测到的R峰为基准,左右两侧分别取100个点和150个点,最终得到的单个心拍时长为0.7 s左右。

4 心电信号的特征学习与识别

栈式自编码器是由输入层、输出层和多个中间层组成,其特征在于能够挖掘出数据浅层特征中存在的深层特征,从而得到心电信号的本质信息。本文所构建的心电信号识别模型结构如图2所示。

DSN模型主要分为特征提取和识别两个阶段。特征提取阶段堆栈多个稀疏自编码器搭建成SSAE网络挖掘心电信号中的深层特征,计算得出特征矩阵,信号识别阶段则将该特征矩阵输入softmax分类器完成判别。

4.1 心电信号特征学习模型

深层特征提取的过程主要分为编码和解码两个阶段,由编码过程完成数据从SSAD网络的输入层到中间层的非线性映射计算,解码过程则完成特征从中间层到输出层的非线性映射计算,具体如式(1)所示:

Xc=σac(Wac·Xc-1+bac)

Xc=σsc(Wsc·Xc-1+bsc)

X0=x(1)

其中:中间层序号为c,c∈{1,2,…,C};激活函数为σac(·),为分析阶段第c中间层映射计算的激活函数;σsc(·)表示合成阶段第c中间层映射计算的激活函数;Wac,bac分别为第c中间层分析阶段的网络参数;Wsc,bsc分别为第c中间层合成阶段的网络参数;第c中间层的输出值Xc为该层输入Xc的预测估计值;深层特征提取阶段的激活函数选择Sigmiod函数,其表达式为

σ(α)=11+e-α(2)

4.2 心电信号识别模型

将特征学习模型计算得到的心电信号深层特征输入Softmax分类器网络进行心电信号形态判别。对整个深度堆栈网络进行有监督微调,迭代计算使得网络输出值和真值之间的损失近似于零。该阶段网络以心电信号形态的概率估计值为输出,表达为:

y=Softmax(s,θ)=[y1,y2,…,yk,…yK]

yk=P(z=k|s,θk)=e(s·θk)∑Kj=1e(s·θk)(3)

式中:yk为第k种心电信号形态的预测概率;k为心电信号类别数量;θk为Softmax分类器的第k个输出矩阵的权重向量;s为中间层输出的特征矩阵向量,输入Softmax分类器进行下一步计算,中间层输出的单个样本的特征经过网络的参数向量θ计算得到k个值,最后输出k个心电信号类别估计概率,通过最小化对应标签的损失值进行迭代训练。

4.3 深度堆栈网络学习算法

深度堆栈网络训练分为参数初始化过程和精调过程,参数初始化过程的核心是采用无监督训练方式对心电信号进行深层特征学习,即在未分类的心电信号数据集上获得优化目标函数。先训练第1个自编码器,然后舍弃解码部分,保留编码部分,以中间层作为第2个自编码器的输入进行训练,以此类推,进行迭代训练。精调过程,以参数初始化过程得到的网络参数作为该过程初始值,依据softmax分类器的损失,以有监督训练方式结合反向传播算法在有标签训练集上更新整个深度堆栈网络(包括SSAE和Softmax分类器)的参数(W,b,θ),训练完成后的概率估计值作为深度堆栈网络的输出,实现心电信号的判别。

依据能量损失准则给出深度堆栈网络参数初始化阶段的优化目标函数:

J(W,b)=1N∑Ni=112‖xi-xi‖2+

β∑pj=1KLρc‖X-jc(4)

其中:xi为输入xi的估计值;KL(ρc‖X-jc)称为相对熵,利用相对熵引入稀疏性约束,构造的稀疏正则项为

KL(ρc‖G-jc)=ρclog(ρcG-jc)+(1-ρc)log(1-ρc1-G-jc)(5)

G-jc=1N∑Nn=1σac(Wac,jxn+bac,j)(6)

其中:G-jc为第c层第j个节点的的平均激活度;ρc为平均激活度的目标值;KL(ρc‖G-jc)表示了通过更新参数(Wa,ba)获得的G-jc与ρc之间的差异。

利用多目标优化原则构造深度堆栈网络精调阶段的优化目标函数:

minJ(R)=-1λ∑λi=1loss(y(i),y(i))+ξ2∑λi=1∑μj=1θ2ij(7)

loss(y,y)=-∑μl=1δ(yl-1)·logesiθl∑μl=1esiθl(8)

其中:第l類心电信号目标向量为l=[0,…,1,…,0],yl=1;λ为中间层输出样本数;μ为心电信号类别数;ξ为权重衰减系数;ξ2∑λi=1∑μj=1θ2ij为引入的惩罚项,旨在防止梯度消失,可以快速找到全局最优解。

4.4 性能指标

为验证模型的可靠性,以总体准确率(total classification accuracy,TCA)和阳性预测值(positive predictive value,PPV)为评价指标对深度堆栈网络进行性能评估,指标的具体表达为:

TCA=TP+TNTP+FP+FN+TN(9)

PPV=TPFP+TP(10)

其中:TP为表示为被准确识别出该类型的心拍数;TN为准确识别出的不属于该类型的心拍数;FP为错误的识别为该类型的心拍数;FN为没有识别出该类型的心拍数。

5 实验结果分析

5.1 实验数据

实验数据选择MIT-BIH心律失常数据库数据,该数据库每条心电信号记录的采集时长约为30min,采样频率为360Hz。实验选取4种形态目标,分别为“左束支阻滞(LBBB)”形态、“右束支阻滞(RBBB)”形态、 “正常(NORM)”形态、“室性早搏(PVC)”形态, 其形态如图3所示。在保证心电信号形态完整的情况下,统一输入为250个采样点。不同类型的训练集和测试集如表1所示。

5.2 SSAE参数对分类效果的影响

SSAE模型中稀疏参数的选则极大程度上影响了识别准确率,当前研究阶段栈式自编码器的稀疏参数一般通过人工经验选取,为分析心电信号识别中稀疏参数ρ和β对深度堆栈网络判别准确率的影响,分别改变稀疏参数ρ和β进行心电信号识别实验,以模型准确率为评价标准验证SSAE的稀疏参数对识别正确率的影响。实验设置栈式稀疏自编码器中间层数为3,各中间层的节点数依次设为150节点,50节点和10节点,输入层节点设置为单个心拍长度即250节点,输出层对应四种形态心拍设定节点数为4节点。实验结果如表2、表3所示。

由表2所示,心电信号识别准确率随稀疏参数β的增大呈现先升高后降低的趋势,当参数β过小时,深度堆栈网络提取到的特征缠绕在一起,准确率较低,参数β过大时,深度堆栈网络得到的特征则过于稀疏,实验证明,针对本文构建的深度堆栈网络的稀疏参数β选为3时准确率最高,结果最优,β过大或过小,深度堆栈网络均不能实现最优结构;

由表3所示,心电信号识别准确率随稀疏参数ρ的增大呈现先升高后稳步降低趋势,本次实验中,设定稀疏参数ρ过小时,会弱化心电信号中的部分关键特征,进而导致特征提取能力下降,识别准确率较低。稀疏参数ρ选取0.01时深度堆栈网络的识别准确率最高,从而实现最优网络结构。

5.3 栈式稀疏自编码器结构分析

5.3.1 网络中间层数对分类效果的影响

栈式稀疏自编码器模型的中间层数直接影响特征挖掘能力,分别构建含有1~6层中间层的栈式稀疏自编码器,顶层叠加Softmax分类器的深度堆栈网络,每个中间层统一设定为200个节点,从单中间层结构开始依次增加中间层数搭建深度堆栈网络,为降低实验偶然性,每个层级进行10次重复实验,以训练集和测试集识别准确率为标准。本次实验结果如图4所示。

由图4曲线看出:深度堆栈网络在训练集和测试集的识别准确率均呈现先快速增大后逐渐减小的趋势。单中间层使得网络结构过于简单,特征提取能力不强,中间层数过多则造成网络结构冗余,同时增加训练复杂度,针对心电信号识别搭建的深度堆栈网络,中间层数选为3时识别准确率最高,模型最佳。

5.3.2 中间层节点数对分类效果的影响

设定自动编码器的中间层节点数小于输入层从而稀疏高维的特征,特征映射后的特征表达与中间层节点数高度相关,构建含有1个中间层的栈式稀疏自编码器模型,改变中间层节点数,从50个节点数开始逐渐增加,分别在训练集和测试集上重复进行10次实验,以Softmax分类器的准确率为标准,得到的结果如图5所示。

由图5可得结论:在节点数为150时,分类效果最佳。中间层节点数过多造成心电信号的特征冗余,无法提取心电信号中的本质特征,从而使深度堆栈网络的识别准确率下降;中间层节点数太少则会致使特征过于稀疏,损失部分重要特征,降低心电信号的识别准确率。

确定中间层节点数的基本原则是在满足精度的前提下,取尽可能紧凑的结构,即取尽可能少的中间层节点数。根据此原则,最终深度堆栈网络各中间层节点数以不超过前一层节点数为基础,多次试验,选取最佳网络结构。

5.4 深度栈式网络性能分析

深度栈式网络由栈式稀疏自编码器和Softmax分类器构成。栈式稀疏自编码器的各层单元数结构为{250-150-50-10-4},输入为第一层250个节点,第5层4个节点为输出层对应心电信号形态类别,训练次数为50,批次大小为200。稀疏参数ρ为0.01,稀疏权重β为3,分类器的衰减系数ξ为0.0001。将构建的深度栈式网络与多层感知器模型(multilayer perceptron,MLP),栈式自编码器模型(stack automatic encoder,SAE),主成分分析算法(principal component analysis,PCA)的特征提取能力通过实验进行对比分析。

基于栈式稀疏自编码器的识别总准确率为99.69%。其中LBBB、RBBB、NORM、PVC的阳性预测值分别为98.87%、98.40%、99.78%、98.38%。结果如图6所示,表明本文方法在心电信号自动诊断方面适应性强。

根据Softmax分类器分类原则,深度堆栈网络模型在4种测试数据集上随机选择样本的识别结果如表4所示。Softmax分类器的输出为归一化的每个心电类型的概率,从表4可以明显看出每类心电信号的概率值,故样本1、样本2、样本3、样本4分别对应的心电类型是LBBB、RBBB、NORM、PVC。

本次实验在表1的测试集上对所有模型进行对比实验,以总体分类精度为评价标准,各模型的总体分类精度如表5所示。

从表中可以看出,DSN较MLP、SAE和PCA,表现出较高的识别准确率。SAE模型的分类准确率也达到了97.63%,证明稀疏自编码器在特征选择上比MLP和PCA要准确。栈式稀疏自编码器能够自动提取心电信号的高维有效特征,并将此特征作为Softmax分类器的输入,模型的准确率明显提高。深度堆栈网络结构相对于其他实验模型更加复杂,但通过多层次地学习获得了更有利的分类特征,且总体的运算时间控制在合理范围内。证明了所提方法对心电信号诊断的准确率更高,适用性更强。

6 结 语

针对大量数据的诊断难问题,本文将栈式稀疏自编码器与Softmax分类器结合构建了深度堆栈网络用于心电信号识别。利用了稀疏自编码器的稀疏性,集中了信号特征的表达,在提高网络学习能力的同时也提高了网络泛化能力,多个中间层的堆叠实现了对信号特征从低维到高维的深度挖掘。討论了深度堆栈网络的结构及影响稀疏性的重要参数,并给出了相应的结论。与多层感知器模型、栈式自编码器模型、主成分分析算法相比大大提高了心电信号识别的准确率,证明了本文所提算法的有效性。

参 考 文 献:

[1] 张金玲,崔彤,刘为斌.基于自适应时间窗函数优化的心电特征波形识别[J].北京邮电大学学报,2019,42(4):82.

ZHANG Jinling, CUI Tong, LIU Weibin. Feature Waveform Recognition of ECG Based on Adaptive Time Window Function Optimization[J]. Journal of Beijing University of Posts and Telecommunications, 2019,42(4):82.

[2] 刘少颖, 卢继来, 郝丽, 等. 基于数学形态学和小波分解的QRS波群检测算法[J]. 清华大学学报(自然科学版), 2004,44(6):852.

LIU Shaoying, LU Jilai, HAO Li, et al. QRS Complex Detection Algorithm Based on Mathematical Morphology and Wavelet Decomposition[J]. Journal of Tsinghua University(Science and Technology), 2004, 44(6):
852.

[3] DEEPU C J, LIAN Y. A Joint QRS Detection and Data Compression Scheme for Wearable Sensors[J]. IEEE Transactions on Biomedical Engineering, 2014, 62(1):
165.

[4] HINTON G E, SALAKHUTDINOV R R. Reducing the Dimensionality of Data with Neural Networks[J]. Science, 2006, 313(5786):
504.

[5] 王万良,杨小涵,赵燕伟,等.采用卷积自编码器网络的图像增强算法[J].浙江大学学报(工学版), 2019,53(9):1728.

WANG Wanliang, YANG Xiaohan, ZHAO Yanwei, et al. Image Enhancement Algorithm Using Convolutional Autoencoder Network[J]. Journal of Zhejiang University (Engineering Edition), 2019,53(9):1728.

[6] WANG S, CHEN H, WU L, et al. A Novel Smart Meter Data Compression Method Via Stacked Convolutional Sparse Auto-encoder[J]. International Journal of Electrical Power & Energy Systems, 2020, 118:
105761.

[7] ZHOU P, HAN J, CHENG G, et al. Learning Compact and Discriminative Stacked Autoencoder for Hyperspectral Image Classification[J]. IEEE Transactions on Geoscience and Remote Sensing, 2019, 57(7):
4823.

[8] LI J C, NG W W Y, YEUNG D S, et al. Bi-firing Deep Neural Networks[J]. International Journal of Machine Learning and Cybernetics, 2014, 5(1):
73.

[9] ZHANG J, DING S, ZHANG N, et al. Incremental Extreme Learning Machine Based on Deep Feature Embedded[J]. International Journal of Machine Learning and Cybernetics, 2016, 7(1):
111.

[10]HAYAT M, BENNAMOUN M, AN S. Deep Reconstruction Models for Image Set Classification[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2014, 37(4):
713.

[11]BAI J, WU Y, ZHANG J, et al. Subset Based Deep Learning for RGB-D Object Recognition[J]. Neurocomputing, 2015, 165:
280.

[12]HUANG Z, WANG R, SHAN S, et al. Face Recognition on Large-scale Video in the Wild with Hybrid Euclidean-and-Riemannian Metric Learning[J]. Pattern Recognition, 2015, 48(10):
3113.

[13]BROSCH T, TAM R. Efficient training of Convolutional Deep Belief Networks in the Frequency Domain for Application to High-resolution 2D and 3D Images[J]. Neural Computation, 2015, 27(1):
211.

[14]HASSAN M M, ALAM M G R, UDDIN M Z, et al. Human Emotion Recognition Using Deep Belief Network Architecture[J]. Information Fusion, 2019, 51:
10.

[15]ZHANG Y D, DONG Z, CHEN X, et al. Image Based Fruit Category Classification by 13-layer Deep Convolutional Neural Network and Data Augmentation[J]. Multimedia Tools and Applications, 2019, 78(3):
3613.

[16]Al Rahhal M M, BAZI Y, AlHICHRI H, et al. Deep Learning Approach for Active Classification of Electrocardiogram Signals[J]. Information Sciences, 2016, 345:
340.

[17]劉胜辉,张人敬,张淑丽,等.基于深度神经网络的切削刀具剩余寿命预测[J].哈尔滨理工大学学报,2019,24(3):1.

LIU Shenghui, ZHANG Renjing, ZHANG Shuli, et al. Prediction of Cutting Tool Remaining Life Based on Deep Neural Network[J]. Journal of Harbin University of Science and Technology,2019,24(3):1.

[18]DE Chazal P, O′DWYER M, REILLY R B. Automatic Classification of Heartbeats Using ECG Morphology and Heartbeat Interval Features[J]. IEEE Transactions Onbiomedical Engineering, 2004,51(7):1196.

[19]WANG Y, DEEPU C J, LIAN Y. A Computationally Efficient QRS Detection Algorithm for Wearable ECG Sensors[C]//2011 Annual International Conference of the IEEE Engineering in Medicine and Biology Society. IEEE, 2011:
5641.

(编辑:王 萍)

猜你喜欢 电信号分类器编码器 我和哆啦A梦过一天阅读(中年级)(2021年6期)2021-08-09外部干扰所致的音频噪声防治演艺科技(2019年3期)2019-03-25探究导体结构对于电信号的影响中国科技纵横(2019年2期)2019-03-25编码器反馈信号对变频调速系统地影响科学与财富(2018年34期)2018-01-15机电工程中存在问题之我见科学与财富(2016年36期)2017-07-09基于AdaBoost算法的在线连续极限学习机集成算法软件导刊(2017年4期)2017-06-20一种统计分类方法的学习高中生学习·高三版(2017年6期)2017-06-12基于TMS320F28335的绝对式光电编码器驱动设计科技与创新(2017年5期)2017-03-28企业财务危机预警集成预测模型比较分析研究科学与财富(2016年15期)2016-11-24一种心电信号采集放大电路的简单设计方法现代电子技术(2009年7期)2009-06-25

推荐访问:堆栈 深度 识别