当前位置: 首页 > news >正文

白沙黎族自治县网站建设_网站建设公司_跨域_seo优化

建站推广公司,义乌建站,python基础教程电子书在线阅读,自建网站的步骤题目#xff1a;基于Transformer的无监督心电图#xff08;ECG#xff09;信号异常检测 摘要 异常检测是数据处理中的一个基本问题#xff0c;它涉及到医疗感知数据中的不同问题。技术的进步使得收集大规模和高度变异的时间序列数据变得更加容易#xff0c;然而#xff…题目基于Transformer的无监督心电图ECG信号异常检测 摘要 异常检测是数据处理中的一个基本问题它涉及到医疗感知数据中的不同问题。技术的进步使得收集大规模和高度变异的时间序列数据变得更加容易然而为了确保一致性和可靠性需要复杂的预测分析模型。随着收集数据的规模和维度的增加深度学习技术例如自编码器AE、循环神经网络RNN和长短期记忆LSTM受到越来越多的关注并被认为是最先进的异常检测技术。最近基于Transformer架构的发展被提出作为改进的注意力机制的知识表示方案。我们提出了一种无监督的基于Transformer的方法来评估和检测心电图ECG信号中的异常。模型架构包括两部分嵌入层和标准的Transformer编码器。我们在两个著名的数据集ECG5000和MIT-BIH Arrhythmia中引入、实现、测试和验证了我们的模型。根据实际和预测的ECG时间序列序列之间的损失函数结果来检测异常。我们发现使用Transformer编码器作为异常检测的替代模型能够在ECG时间序列数据中实现更好的性能。建议的模型在检测ECG信号中的异常方面具有显著的能力并在两个数据集上优于文献中的深度学习方法。在ECG5000数据集上该模型可以以99%的准确率、99%的F1分数、99%的AUC分数、98.1%的召回率和100%的精确度检测异常。在MIT-BIH Arrhythmia数据集上该模型的准确率为89.5%F1分数为92.3%AUC分数为93%召回率为98.2%精确度为87.1%。 引言 异常检测对许多当代应用来说至关重要并随着传感器使用的爆炸式增长而变得尤为重要。心电图ECG时间序列数据的异常检测近年来引起了相当大的关注因为它对控制ECG时间序列过程的质量和识别异常数据源行为有着重要的影响。在时间序列数据的异常检测过程中涉及使用复杂的算法和模型来检测在选定时间段内的异常数据。有效的异常检测器能够识别正常和异常时间序列数据之间的差异。  随着对实时异常检测的需求日益增长人们已经意识到需要智能、稳健和计算效率高的模型并且这种需求正在在大多数实时应用中受到更多关注。由于错误事件的不可避免性这些模型在大多数时间序列应用中发挥着关键作用。时间序列数据的特性对于选择合适的异常检测方法至关重要。成功的异常检测器通过测量时间序列数据的统计偏差来识别异常例如自回归移动平均ARIMA、累积和统计CUSUM和指数加权移动平均EWMA。然而另一方面传统的时间序列异常检测方法在模型的期望效率和准确性方面存在缺陷。 最近已经开发了几种用于异常检测的智能计算方法。其中深度学习和神经网络是准确高效的热门算法。然而从2000年代末开始人们对于在大量和高度变异的在线时间序列数据中识别异常的兴趣逐渐增长。除了常用的技术如自编码器AEs、循环神经网络RNNs、卷积神经网络CNN和长短期记忆LSTM当代深度神经架构通常用于异常检测和医疗预测。尽管这些方法已经发展以克服之前提出的技术但它们大多数在处理时间序列数据时具有固有的特性限制其使用。例如LSTM神经网络通过使用乘性门在特殊单元记忆单元的内部状态中施加常量误差流克服了RNN面临的梯度消失问题。此外LSTM网络不需要预先指定的时间窗口并且可以准确地建模复杂的多变量序列因为它们具有学习系列中长期相关性的能力。然而这些方法的主要目标是生成更真实的序列而不是提取有助于后续任务的有意义的特征。 目前在自然语言处理NLP中首次引入了遵循预测过程的Transformer架构作为对循环神经网络RNNs的高效替代方案。因此在这项工作中我们介绍了一种基于Transformer架构的异常检测模型用于检测人类心跳时间序列信号中的异常例如室性早搏PVC、室上性早搏SP或异位心搏EB以及其他心电图ECG异常。在这里我们使用中引入的Transformer编码器来开发新颖的无监督Transformer异常检测。该模型通过比较预测数据和原始数据之间的损失函数学习正常数据的分布模式并检测异常。提出的模型在检测ECG时间序列数据方面优于当前最先进的深度学习建模方法。 在接下来的文章中我们将在相关工作部分对心电图时间序列中的深度学习异常检测的现有文献进行调查。在材料和方法部分我们将介绍所提出的模型和使用的数据集。实验设置和结果分析将在结果和讨论部分展示。最后本文以结论结束。 相关工作 我们介绍一些用于心电图时间序列异常检测的现有深度学习模型。在[21]中作者使用LSTM单元神经网络架构构建了一个用于健康心电图信号的预测模型。使用LSTM网络的一个额外优势是ECG信号可以直接输入网络无需复杂的预处理。研究结果乐观并显示LSTM模型可能适用于检测心电图信号中的异常。此外在[18]中作者提出了基于LSTM网络的编码器-解码器框架用于学习重构正常时间序列行为并通过重构误差检测三个可预测时间序列数据集电力需求、航天飞机和心电图。结果显示该模型具有鲁棒性可以检测可预测、不可预测、周期性、非周期性和准周期性的时间序列。值得注意的是在[22]中作者将AE与LSTM相结合使用来自心肌梗死患者的心电图数据展示了该系统可以准确分类不规则波间隔。在[23]中堆叠LSTM网络用于时间序列的异常检测。该方法的有效性在四个数据集上得到了证明心电图、航天飞机、电力需求和多传感器发动机数据集。在[24]中作者专注于使用LSTM和GAN融合模型LSTM-GAN来识别时间序列数据中的异常。作者通过两组时间序列数据验证了算法的输出。实验结果表明与传统算法相比LSTM-GAN在处理时间序列数据方面表现出更优异的性能。Schlegl等人[25]开发了基于Anomaly Detection Generative Adversarial NetsAnoGAN模型的深度卷积生成对抗网络DC-GAN用于异常检测。作为无监督学习模型AnoGAN使用正常数据进行学习。通过将其与查询数据进行比较可以检测异常。在该方法中决策边界是主观的。因此需要根据条件进行多次实验以应用决策边界。LSTM还可用于无监督学习例如在[26]中作者使用MIT-BIH心律失常数据集以无监督学习方式检测心电图信号中的异常。 然而只有少数模型在时间序列异常检测中使用了基于Transformer的架构。在[27]中作者提出了一种基于Transformer和生成对抗网络GAN的时间序列数据异常检测方法。基于Transformer的生成器可以提取时间序列数据的上下文特征以提高性能。在训练和异常检测阶段作者使用了两个编码器和两个解码器的Transformer块。他们展示了该模型在异常检测方面比使用三个数据集Secure Water TreatmentSWaT、Water DistributionWADI和KDD Cup 1999的最先进的异常检测技术具有更好的性能。在[28]中作者在时间序列数据中使用了Transformer架构该模型包含三个编码器块和一个解码器块。输入的时间序列数据被分成训练序列和标签序列其中训练序列被输入到编码器而标签序列被输入到解码器。他们还用多分支注意力机制替换了原始的多头自注意力方法。对于WADI和SWaT数据集F1分数分别为0.84和0.91。 从以上讨论中我们意识到基于Transformer的异常检测方法在检测心电图异常方面具有巨大的潜力这是由于Transformer的高效性和同时获取长距离上下文数据的能力。我们将采用Transformer方法作为一种未经监督学习的模型来检测心电图时间序列数据中的异常这在此领域之前尚未被使用过。然而[29]等文献以及一些最近发表的论文考虑了需要大量标记的端到端学习方法这是监督学习的特点。对于时间序列数据标记数据可能并不总是可用的。我们的工作仅考虑了无监督学习以更好地适应输入信号。此外我们的模型与现有模型不同因为它由两个标准的编码器Transformer层组成没有解码器。因此在这项工作中我们将调查Transformer编码器在心电图时间序列异常检测方面的能力并将我们的发现与最先进的深度学习模型在准确性和F1分数上进行比较详细内容稍后说明。 数据与方法 ECG 时间序列是按照时间顺序组织的数据点的集合。通常时间序列是在连续的相似间隔时间点上采集的序列。在这项工作中我们使用了ECG5000数据集和MIT-BIH Arrhythmia数据集来验证所提出的模型。这两个数据集都属于心电图领域。 ECG500 在我们的实验中我们使用了一个包含5000个心电图ECG5000时间序列的数据集[30]。原始数据来自PhysioNet的BIDMC Congestive Heart Failure Database (CHFDB)。在两个处理过程中数据首先被预处理首先提取每个心跳并将每个心跳插值为相同的长度等于140个时间步长。根据图1有五种不同的心跳类型正常N、R-on-T VPCR-on-T、室性早搏PVC、室上性早搏SP或异位心搏EB以及未分类的心跳UB。 ECG5000数据集是通过从外推的心电图中选择5000个序列创建的其中2989个序列是正常心跳剩下的2011个序列是异常心跳。对于我们提出的模型数据被按照80:10:10的比例划分为三个集合——训练集、验证集和测试集。由于我们采用了无监督学习我们从训练集和验证集中排除了异常数据。在训练阶段模型学习了正常心跳的潜在空间。表1列出了每个数据集中序列的数量。 MIT-BIH Arrhythmia MIT-BIH Arrhythmia数据库是一种临床数据库其中包含了在贝斯以色列医院BIH心律失常实验室对48名患者进行的两通道心电图ECG记录。每个记录持续半小时。在本研究中选择了修改后的肢体导联Ⅱ信号。根据美国医学仪器协会AAMI[33]的建议将选择的心跳分为以下五类正常心跳N、室上性异位心跳S、室性异位心跳V、融合心跳F和未知心跳Q。根据AAMI的建议我们选择了48个记录中的44个用于我们的实验并移除了四个记录102、104、107和217因为它们质量较差。 信号预处理是一个重要的步骤特别是在处理生理数据如心电图ECG时需要考虑所有潜在的噪声来源比如运动伪影和电源干扰这些噪声可能会影响后续模型的性能。我们的预处理阶段包含两个步骤。首先我们应用滤波器来消除噪声然后提取心跳信号。我们尝试了不同的滤波器如巴特沃斯带通滤波器、带通滤波器和中值滤波器我们发现两个中值滤波器的效果更好。本研究中采用了以下预处理步骤 中值滤波器我们使用了一个滑动窗口为200毫秒的中值滤波器。然后我们使用一个600毫秒的窗口再次应用了第二个中值滤波器。原始信号的基线包含在第二个滤波器的输出中。将第二个滤波器的输出从未经处理的ECG数据中减去以消除基线漂移见图2。这一步增强了基线校正并消除了一些伪影。 心跳提取这涉及在每个心跳周围选择一个邻域。该间隔是通过在心跳前后±50毫秒处进行R峰标注来估计的。 在心跳提取之后正常序列的总数为72,722个而异常序列的总数为10,579个。由于正常序列的数量比异常序列大很多我们从中随机采样了18,824个序列。数据被划分为80%的训练数据和20%的测试数据。将训练数据再分为训练数据和验证数据其中只包含N心跳。表2总结了每个数据集中序列的数量。 提议的无监督Transformer架构 在本论文中我们介绍了一种基于Transformer的网络用于心电图信号的异常检测。整体模型架构由两个部分组成嵌入层和标准Transformer编码器见图3。所有正常的心电图信号时间序列数据形式为一个2D张量包含序列长度 × 特征数量首先被编码成嵌入序列然后输入到一个多层双向Transformer网络中生成对应的表示。最后的线性稠密层预测输入的心电图信号具有相同的输入序列长度。 引入了嵌入层用于将输入张量映射到更高维度的特征空间。由于输入维度与Transformer隐藏层的大小相关我们将该层分为两部分一个线性稠密层用于将输入投影到更高维度的向量以及一个Dropout层以避免过拟合。我们使用了正弦位置编码来对输入序列的顺序进行编码 其中pos表示位置i表示维度dmodel表示模型的嵌入大小即特征向量的维度。          在寻找最佳模型配置的过程中我们测试了使用一个和两个Transformer编码器块的情况。第一个Transformer编码器块创建了嵌入序列输入的等效隐藏表示。然后为了逐步生成更高层次的表示这些表示被作为输入传递给第二个Transformer编码器块。单个Transformer块如图3所示包括两个主要子层一个位置感知的全连接前馈网络和一个多头自注意层FFN。两个子层都采用残差连接和层标准化。如图4所示组成多头注意力层的h个并行缩放点积注意力层中的每一个被称为一个头。通过缩放点积注意力将查询向量和一组键值对转换成输出向量。 其中Q、K和V分别表示由多个查询、键和值向量组成的矩阵每个向量作为一行堆叠查询/键向量的维度为dk。在计算注意力之前多头注意力通过使用不同的线性稠密层将Q、K和V映射到各种较低维度的特征子空间。然后使用一个额外的稠密层将h个头的输出连接在一起并投影到最终的隐藏表示中如下所示 Transformer的自注意机制通过学习输入序列的内在关系。自注意机制中的查询、键和值向量都是相似的。换句话说在序列中的每个位置都会计算该位置与其他位置之间的注意力。因此每个观察值的隐藏表示捕捉了全局序列信息并通过对序列中所有位置的加权求和来强调第i个观察值周围的区域。 接着对每个位置的隐藏状态进行了位置感知的前馈网络FFN处理处理是独立且相同的。该前馈网络由两个线性变换组成它们之间有一个ReLU激活函数 其中xi是由多头注意力层产生的第i个隐藏状态W1和W2是权重矩阵b1和b2分别是内部和输出稠密层的偏差项。 异常分数和阈值 因为我们实现了一种无监督的模式模型仅在一个 N 心跳序列上进行训练。该模型预测输入序列的原始值。我们的模型的损失函数是平均绝对误差MAE其计算方式如下所示即方程7。在类似于的情况下通常使用均方根误差RMSE作为损失函数。然而我们发现MAE是最佳选择因为它表现更好。 MAE是每个信号实际值yi和模型预测值xi之间的总绝对差异。通过训练模型学习了正常信号的显著性和激活特征从而导致更低的损失预测误差。该模型通过计算预测的损失误差是否大于一个固定的阈值来检测测试数据中的异常。在本文中阈值等于训练正常数据的平均损失值加上两个标准偏差如下所示的方程式  在使用训练数据计算了阈值后该过程被转化为一个二元分类问题。在异常检测阶段通过比较预测误差来判断数据序列是正常还是异常而这个计算出的阈值起到了决定作用。使用测试数据时将一个特定的输入序列提供给模型然后将预测误差与计算得到的阈值进行比较。如果预测误差超过阈值那么该输入序列被归类为异常否则被归类为正常。 图5展示了我们的异常检测模型的图形化架构过程以便更清楚地理解。 结果与结论 实验配置 为了对我们的模型进行微调我们进行了许多实验尝试了不同数量的Transformer编码器块包含多头注意力层和接着的前馈层不同的隐藏状态大小和不同数量的注意力头。仅在第一个密集层上实施了0.2的丢弃率的Dropout。我们使用Adam优化器学习率为1e-4并使用了早停技术。模型最多训练70个epochs但在此之前所有实验都已经收敛。我们在批次大小为16个序列的情况下仅使用正常数据对模型进行了训练。所有实验均使用Pythonv3.7.6、Tensorflowv1.14.0和Kerasv2.3.1机器学习库进行实现。我们在Windows 10 Pro 64位操作系统上运行所有实验使用了AMD Ryzen 5 3600 6核处理器主频3.59 GHz、NVIDIA 185 GEFORCE RTX 2080 SUPERGPU以及32GB的内存。 性能指标 真正例True PositiveTP表示在二元分类器中被准确地预测为正例的值真负例True NegativeTN表示被正确地预测为负例的值。假正例False PositiveFP是负例的预期值但被错误地预测为正例而假负例False NegativeFN是正例的预期值但被错误地预测为负例。我们的模型的异常检测结果通过以下指标进行评估ROC曲线下面积AUC、准确度accuracy、精确率precision、召回率recall和F1得分F1-scores。  AUC曲线下面积AUC是通过构建基于假正例FP和真正例TP的接收者操作特征曲线ROC曲线来计算的。 ECG500 数据库实验结果 该提议的模型是在正常心跳上进行训练的因此学习了正常信号的分布。异常心跳不遵循这个分布因此当将它们输入模型时模型无法准确预测。为了直观地观察这一点我们使用测试数据集在图6中展示了输入时间序列和预测时间序列。该图显示实际和预测的正常心跳信号大致相同图6b。然而当输入是一个异常心跳信号时模型将其映射到连续的正常心跳的潜在空间如图6a所示这为异常检测提供了机会。尽管某些异常样本通常与它们的正常预测相似但局部差异可以帮助区分它们。 如表3所示我们训练了一系列无监督的Transformer网络来确定最佳的编码器块数量1或2、嵌入大小32、64、128或256和注意力头数量16或32。表现最佳的模型包含两个编码器块、128的嵌入大小和32的注意力头取得了令人印象深刻的结果F1分数为99%准确度为99%召回率为98.1%精确率为100%。计算得到的阈值为0.29。然而从表3中我们可以观察到较大的嵌入大小获得了更好的模型性能。由于我们的模型处理不同时间步的心跳信号因此更适用于顺序时间序列数据。图7展示了ROC曲线该曲线绘制了真正例率True Positive RateTPR与假正例率False Positive RateFPR在不同分类阈值下的变化以表示模型在区分正类和负类方面的能力。我们的模型实现了99%的AUC分数表明该模型是一个完美的分类器模型因为较高的AUC分数意味着更好的预测能力。 由于ECG5000数据集已经在之前的研究中被使用过将我们的模型与其他有监督和无监督方法进行比较对于了解其优劣势以及在异常检测领域的地位非常关键。在表4中展示了一些有监督和无监督算法在相同数据集上的结果。在[41]和[42]中数据集的划分为4500个心跳80%用于测试500个心跳20%用于训练和验证任务20%。在[41]中作者使用变分递归自编码器VRAE来表示数据然后应用聚类和Wasserstein距离来检测异常成功地在ECG5000数据集上实现了超越现有有监督和无监督方法的异常检测性能。同样地在[42]中作者使用相同的变分自编码器VAE方法结合局部相似度评分在我们的两个数据集上即ECG5000和MIT-BIH Arrhythmia在AUC方面取得了与文献中类似的结果。然而我们的模型在所有评估指标上都超过了这些深度学习模型具有99%的F1分数99%的准确率98.1%的召回率和100%的精确率。然而由于我们使用了不同的数据划分方法这种比较被认为是不公平的。因此我们将我们的结果与[43]和[44]最近获得的结果进行了比较因为数据的划分为80%的训练集、10%的验证集和10%的测试集与我们在这里所做的完全相同。[43]中的作者使用了Concat Attention AutoencoderCAT-AE、AE-without-Attention和VAE声称在异常检测中达到了最先进的准确率和精确率。另一方面[44]中的作者使用了无监督的LSTM自编码器。如表4所示我们的模型在使用相同数据划分方法的情况下超越了这些深度学习模型。 MIT-BIH Arrhythmia数据库实验结果 图8展示了异常和正常心跳的示例以及它们对应的预测结果。正常心跳在模型的预测下表现得相当准确如图8b所示。毫无疑问模型已经捕捉到了正常心脏周期模式的基本形态行为。模型可以尽量调整输出来适应正常的潜在空间同时不断努力最小化预测误差。模型试图仅使用心脏周期的正常属性来预测输入因此异常心跳被映射到一个正常心跳的潜在空间。正如预期的这导致了异常心跳的较低预测质量和较高的预测误差如图8a所示。  如表5所示我们训练了多个Transformer编码器网络来确定最佳的注意力-前馈块数量1或2、嵌入大小512或1024个神经元和注意力头数量16或32。从表5可以看出不同模型的Transformer编码器异常检测结果在MIT-BIH测试数据集上表现相近。然而表现最佳的模型配置包含两个块64的嵌入大小和32个注意力头。我们表现最好的Transformer编码器模型实现了89.5%的准确率92.3%的F1分数98.2%的召回率和87.1%的精确率。图9展示了最佳模型在测试集上的ROC曲线AUC得分为93%这意味着该模型在区分异常和正常信号方面表现相对良好。计算得到的阈值为0.12。 表6显示了我们的结果与其他使用MIT-BIH数据集的深度学习异常检测模型的比较。在[26]中作者使用堆叠LSTM并应用无监督训练因为在训练模型时不需要异常类别。数据集的划分为80%训练和20%测试。因此我们还将我们的模型与他们的模型进行了比较因为他们遵循了相同的训练过程和数据划分。我们的模型实现了92.3%的F1分数98.2%的召回率和87.1%的精确率而他们的模型报告了81%的F1分数87%的召回率和82%的精确率这表明我们的模型优于无监督的LSTM尝试。此外在[45]中作者使用了一种新颖的混合架构由LSTM单元和多层感知器MLP组成数据集的划分为70%训练和30%测试。他们在监督学习方式下实现了87%的F1分数和75%的灵敏度这也低于我们的结果然而更高的准确率可能归因于他们使用了监督学习。最后在[42]中作者使用了无监督的变分自编码器并采用AAMI数据集划分但其F1分数和准确率分别为76.55%和87.77%分别是最低的。与使用有监督或无监督深度学习模型的最新应用异常检测方法相比我们的模型表现更好。然而该模型在异常检测方面的性能仍然缺乏令人满意的F分数。 总结 我们提出了一种稳健有效的无监督Transformer异常检测模型用于处理时间序列数据。该模型被用于检测人类心跳时间序列信号中的异常例如早搏premature ventricular contractionPVC、室上性早搏supraventricular prematureSP和其他心电图异常。该模型的架构由Transformer编码器网络和线性密集解码器网络组成。心电图时间序列异常检测方法基于序列预测方法包含两个阶段模型训练在此阶段模型学习正常数据的分布异常检测在此阶段计算心电图时间序列的异常得分以识别异常情况。我们通过使用预先设定的阈值训练损失的均值加上两倍的标准差将异常检测方法调整为无监督框架。 我们已经展示了如何利用Transformer编码器进行心电图时间序列的异常检测。我们在ECG5000和MIT-BIH Arrhythmia数据集上的结果表明Transformer编码器在这个任务中是一个可行的替代方案。我们将Transformer编码器与几种最先进的深度学习模型进行了对比测试结果表明我们的模型在准确率、F1分数、召回率和精确率等方面表现优于其他模型。对于ECG5000心跳数据集我们实现了99%的准确率、99%的F1分数、100%的精确率、98.1%的召回率和99%的AUC得分展现了在确定ECG心跳信号异常方面的出色能力。此外我们的模型在MIT-BIH Arrhythmia数据集上表现良好具有92.3%的加权F1分数、89.5%的准确率、93%的AUC得分、98.2%的召回率和87.1%的精确率。此外我们提出的模型在使用MIT-BIH Arrhythmia数据集进行最近的ECG分析中表现出比其他深度学习模型更加稳健的性能。尽管本研究主要集中在将模型与深度学习异常检测方法进行比较但我们未来的工作目标是扩展对其他时间序列数据异常检测技术的研究。
http://www.ihoyoo.com/news/69383.html

相关文章:

  • 家庭网络做网站大兴安岭网站建设
  • php网站绑定域名怎么创建自己的网站
  • dede网站 地图什么做上海远程教育网站设计与开发公司
  • 内江市规划建设教育培训 网站网站如何买空间
  • 帝国网站增加流量专业制作网站公司吗
  • 做好网站维护滨州区建设局网站
  • 贵阳市做网站公司山东住建局和城乡建设厅官网
  • 北京建网站的公司哪个比较好邢台企业做网站的公司
  • 学术网站怎么做域名网站建设教程
  • 小说推广怎么做青岛谁优化网站做的好
  • 学校网站框架网站搭建合同
  • 鞍山市做网站公司关于网站建设的好处
  • 阿里云这么建设网站石家庄业之峰装饰公司怎么样
  • 网站建设中++模板辽宁建设工程信息网中标通知书
  • 深圳罗湖企业网站建设网站建设推广服务商
  • 专业做书画推广的网站个人网站源码模板
  • 做网站比特币钱包西部数码网站管理助手 2008
  • 企业网站开发需求分析网络设计采用的方法和原则
  • 网站推荐几个长沙新闻
  • 科技微网站wordpress+培训模板下载
  • 查询网站内页关键词排名天津网站建设制作
  • 百度网站制作网络营销方式介绍
  • 排名好的网站关键词优化企业网上快速学做网站
  • 网站建设设计合同书旅游兼职网站建设
  • 有域名之后怎样进行网站建设厦门酒店网站建设
  • 徐州网站制作哪家好承德网站建设公司
  • 做外贸网站哪家效果好用织梦做的网站好用吗
  • asp网站用什么数据库给网站做认证
  • 松江叶榭网站建设江苏建设工程网站
  • 网站建设国内外研究进展哪种网站名称容易通过备案审核