Allen

写代码是热爱,写到世界充满爱

  • HomePage
  • Categories
  • Archives
  • Essay
  • Tags
总文章数 379
所有文章 友链 关于我

Allen

写代码是热爱,写到世界充满爱

  • HomePage
  • Categories
  • Archives
  • Essay
  • Tags

8-2-ADNI论文数据预处理

阅读数:312次 2023-09-02
字数统计: 8.7k字   |   阅读时长: 30分

文章导航

× 文章目录
  1. 1. 1: 基于深度神经网络的阿尔兹海默病分类算法研究
    1. 1.1. 1-数据集预处理
    2. 1.2. 2-算法
    3. 1.3. 3-创新点
    4. 1.4. 4-展望
  2. 2. 2: 基于卷积神经网络的阿尔茨海默病分类算法研究
    1. 2.1. 1-数据集预处理
    2. 2.2. 2-算法
    3. 2.3. 3-创新点
    4. 2.4. 4-展望
  3. 3. 3: 基于迁移学习的阿尔茨海默病早期诊断算法研究
    1. 3.1. 1-数据集预处理
    2. 3.2. 2-算法
    3. 3.3. 3-创新点
    4. 3.4. 4-展望
  4. 4. 4: 基于耦合的卷积-图卷积神经网络的阿尔茨海默病的磁共振诊断方法
    1. 4.1. 1-数据集预处理
    2. 4.2. 2-算法
    3. 4.3. 3-训练方法
    4. 4.4. 4-创新点
    5. 4.5. 5-展望
  5. 5. 5: 基于脑部特异子结构分析的阿尔兹海默症分类
    1. 5.1. 1-数据集预处理
    2. 5.2. 2-算法
  6. 6. 6: 基于双线性卷积神经网络模型的阿尔茨海默病自动诊断
    1. 6.1. 1-数据集预处理
    2. 6.2. 2-算法
  7. 7. 7: 基于卷积神经网络的阿尔茨海默病 MRI影像辅助诊断研究
    1. 7.1. 1-数据集预处理

Author: haoransun
Wechat: SHR—97

1: 基于深度神经网络的阿尔兹海默病分类算法研究

曲阜师范大学-计算机学院-崔秀明

1-数据集预处理

image

image

2-算法

基于迁移学习和深度残差网络的阿尔兹海默病分类算法

首先,本文根据CNN的参数共享性,引入迁移学习的思想,将在ImageNet中预训练好的ResNet模型迁移至本文中的sMRI数据集中进行微调,从而替代从头开始训练一个全新的模型。此外,还计算了所有s MRI切片的熵,并按熵大小对它们进行降序排列,仅选取信息熵较大的sMRI切片用于训练CNN模型,从而增强了模型的整体稳健性。最后基于挑选出的sMRI切片进行了AD/MCI、AD/NC、NC/MCI与AD/MCI/NC的分类实验,结果表明,该算法在可用性较小的医学图像数据集中取得了较好的分类结果,同时缩短了CNN模型的训练时间。

image

基于深层特征和非线性降维的阿尔兹海默病分类算法

首先,本文根据CNN的参数共享性,引入迁移学习的思想,将在ImageNet中预训练好的ResNet模型迁移至本文中的sMRI数据集中进行微调,从而替代从头开始训练一个全新的模型。此外,还计算了所有s MRI切片的熵,并按熵大小对它们进行降序排列,仅选取信息熵较大的sMRI切片用于训练CNN模型,从而增强了模型的整体稳健性。最后基于挑选出的sMRI切片进行了AD/MCI、AD/NC、NC/MCI与AD/MCI/NC的分类实验,结果表明,该算法在可用性较小的医学图像数据集中取得了较好的分类结果,同时缩短了CNN模型的训练时间。

image

3-创新点

本文主要提出了两个基于深度神经网络的AD分类算法。

  • 提出基于迁移学习和深度残差网络的阿尔兹海默病分类算法。在现实生活中,医学图像与自然图像的获取方式不同,使得医学图像的获取途径很狭窄,并且医学图像的图像质量不是很高,因此导致了用于阿尔兹海默病分类的医学图像可用性相对较小,不足以充分训练CNN网络。另外训练一个与深度ResNet一样大的CNN需要巨大的计算资源,并且需要数周的时间才能训练。因此提出了基于迁移学习和深度残差网络的阿尔兹海默病分类算法,该算法引入迁移学习解决了可用医学图像样本数量少的问题,缩短了CNN模型的训练时间;引入信息熵的概念用于选择训练集,增强了模型的整体稳健性。
  • 提出基于深层特征和非线性降维的阿尔兹海默病分类算法。医学图像存在一个固有的劣势,就是高维非线性,现存方法也曾尝试了使用降维方法对其进行降维,但是由于数据的非线性特性使得在降维过程中产生了很多损失,导致最后的分类效果不理想;另外,前人所做工作中使用的降维方法的算法复杂度非常高,浪费计算成本。因此,提出了基于深层特征和非线性降维的阿尔兹海默病分类算法,在算法中引入了非线性降维方法LargeVis,减少了线性降维方法在降维过程中损失的信息,并大大降低了计算成本。

4-展望

(1)本文实验中使用的都是2D CNN结构的变体,考虑到MRI数据集都是三维医学影像,未来可以尝试使用三维卷积神经网络(3D CNN)对上述数据集进行训练。

(2)本文在sMRI图像投入到实际应用之前,进行了一系列标准化的预处理流程,并未完全实现自动化提取特征。虽然sMRI数据在经过预处理后,在训练DNN时可以加快模型训练的收敛速度,降低对数据训练的需求,提高模型性能。但是神经影像数据的预处理步骤比较繁琐,因此,如何使用未经预处理的sMRI数据进行模型训练并获得良好的效果是未来需要研究的地方。

2: 基于卷积神经网络的阿尔茨海默病分类算法研究

      曲阜师范大学-计算机学院-刘汉磊

国内外专家学者使用比较成熟的方法都是以传统机器学习为主要算法进行AD、MCI和NC的分类和诊断,此类方法通常包含三个基本组成部分[26]:一是感兴趣区域(Re-gions of Interests,ROIs)的预先确定,二是图像特征的提取,三是分类模型的构建。根据结构磁共振成像(structure MRI,sMRI)中用于后续特征提取和分类器构建的ROI的尺度不同,可以将这些方法细分为基于体素、区域和Patch(内核kernel每次查看图像的一小块)级别的形态模式分析方法

1-数据集预处理

image

2-算法

基于特征重构和卷积神经网络的AD分类算法

将预处理好的MRI数据使用EDLT方法进行特征重构,构造了一个层数较浅的卷积神经网络结构,并利用迁移学习进行预训练,在ADNI数据集上进行了训练和测试评估。结果显示,所提方法要比单纯使用特征数据进行分类的传统机器学习方法的分类效果有所提高,表明使用特征重构的方法能够获得有意义的分类效果,迁移学习的使用能够降低在小样本数据集中的过拟合风险,也降低了计算成本。

基于迁移学习和密集连接网络的阿尔茨海默病分类算法

采用高斯滤波器进行图像增强,使用HEICA进行灰质分割,对AD、NC、MCI的三分类任务和两两分类任务进行了实验,实验数据基于ADNI数据库。结果显示,迁移学习的效果优于从头训练的效果,使用HEICA进行分割的效果优于未使用的效果。表明了在小样本数据集上使用迁移学习的必要性,以及使用图像增强和HEICA方法的有效性。

image

image

因为sMRI数据是由多张2D切片构成,每位受试者的NIFTI(Neuroimaging Informatics Technology Initiative)格式图像都包括256张切片。为了扩充数据集,我们选择对每位受试者的切片图像进行筛选扩充。一种简单的方法是随机选择多张图像,但这样的选择方法可能会遗漏一些关键信息。我们采用Hon等人[94]提出的图像熵选取切片的方法,该方法按照图像中包含信息的多少即熵的大小,将切片从大到小进行排列,我们对每位受试者的sMRI切片,选取熵值较高的前32个,这样既有利于扩充数据集,也有利于将信息少的图像排除在外。

image

使用MATLAB R2017a进行切片,颅骨剥离和图像分割。为了训练深度神经网络数据,我们使用PyTorch来进行训练和测试,GPU为英伟达精视GTX 1070,采用帕斯卡架构,16nm制程工艺,单精度浮点数达到了6.5Tflops,显存容量8GB GDDR5,核心频率为1683MHz,显存频率8000MHz

3-创新点

本文提出了两种基于卷积神经网络的AD分类算法。

  • 基于特征重构和卷积神经网络的阿尔茨海默病分类算法。针对基于先验知识、使用标准处理流程获得的sMRI灰质体积一维张量数据,我们提出一种基于特征重构的CNN方法。首先使用EDLT方法将一维张量特征数据转换为合成矩阵形式,在数据中创建“人工相关性”,并对合成矩阵数据通过使用翻转和裁剪进行数据增强。同时针对小样本数据集的特点,我们构造了浅层卷积神经网络架构,于源域SVHN上预训练,然后迁移至目标域中进行微调。针对此算法,我们在796名受试者数据上进行训练和测试,结果表明该算法具有实际可行性,分类效果较好。当前针对AD分类问题,研究人员使用比较成熟的技术是将人工提取特征放入传统机器学习分类器中进行分类训练。而将数值化的图像特征用作CNN的输入来进行分类这方面的工作并不多。本文引入特征重构方法,将一维灰质数据重构为二维矩阵,构造了适合于小样本数据集的浅层CNN,在SVHN数据集上进行预训练,并迁移至重构数据集上进行学习,通过进行对比实验以及同其他文献中方法的比较,证明了该方法的科学性和有效性。
  • 基于迁移学习和密集连接网络的阿尔茨海默病分类算法。对于医学图像数据而言,图像中表达的信息比将信息量化为数据后的要全面。在本算法中,我们使用的是MRI数据。在预处理中,为了在颅骨剥离之前减少图像噪点,我们使用了高斯滤波器进行图像增强,在灰质分割时采用了HEICA的方法,使得灰质分割紧凑型强。分类所使用的框架为在ImageNet上预训练的DenseNet-BC网络,在迁移至目标域后,对其全连接层进行重新训练,其它层进行微调。切片图像选择我们使用了图像熵的办法,选取了每位受试者图像熵前32位的切片,这样有利于选择包含较多信息的图像进行训练,较少信息的图像排除在外,减少信息冗余。通过训练和测试,对比从头训练的网络和未进行图像增强的网络,发现所提算法的分类效果较好。医学图像的小样本问题和图像质量不高的问题,一直是研究人员进行医学图像分类的困扰。本文引入了高斯滤波器进行图像增强,使用HEICA进行灰质图像分割,得到了较为清晰的灰质图像;引入信息熵的概念用于选择切片图像,以增加数据集样本数量;选择DenseNet-BC网络作为分类模型,对其在ImageNet数据集上进行预训练,缩短了网络训练时间,降低了过拟合风险,通过进行对比实验以及同其他文献中方法的比较,证明了该方法的分类有效性。

4-展望

(1)多模态集成学习问题。本文中仅使用了sMRI数据,但多种诊断数据的结合,是提高疾病诊断正确率的方法之一。接下来可以结合fMRI、PET以及基因检测数据,进行集成学习,为AD分类提供更多信息,获得更好的分类结果。

(2)图像预处理问题。第四章中用到的sMRI数据,是经过一系列图像预处理步骤得到的,但是这些流程并不能在全自动的情况下进行,对于医生实际操作是一个挑战,下一步的工作就是将预处理步骤集成,使之处理起来更加方便。

(3)对于算法一中构建的浅层卷积神经网络,可以进一步去比较不同卷积层数以及不同卷积核的大小所引起的性能的差异,由此确定出更加适合的CNN架构。

3: 基于迁移学习的阿尔茨海默病早期诊断算法研究

曲阜师范大学-计算机学院-刘永林

轻度认知障碍(Mild Cognitive Impairmen,MCI)是一种认知性疾病,是AD的前驱阶段。研究表明,由MCI到AD的转化率已经高达10%到15%,这明显高于认知健康受试者1%到2%的转化率。在MCI患者中发现有一些MCI患者会转为AD,也会有其他的MCI患者保持稳定或甚至出现逆转,恢复至正常的状态。因此,将前者称为MCI转换(MCIconvert,MCIc),后者称为MCI非转换(MCInon-convert,MCInc),并将MCInc和MCIc之间的差异用于AD的早期检测。尽管现在医疗系统中治疗AD的药物十分有限,但早期的发现和治疗还是有助于减缓疾病的进展。因此,针对MCI开展预防和治疗对延缓痴呆发病,提高患者的生活质量具有重要作用

1-数据集预处理

image

image

2-算法

基于判别式迁移特征学习的AD早期诊断算法

基于判别式迁移特征学习的AD早期诊断模型主要包括三个步骤:数据预处理和特征提取,基于判别式迁移特征学习(DTFL)算法和SVM的分类预测。本章AD诊断算法框架如图3.1所示。

image

基于集成迁移学习的AD早期诊断算法

基于集成迁移学习的AD早期诊断模型主要包括三个步骤:数据预处理与特征提取、基于JDA的特征学习和基于集成学习的分类预测。本章结构框架图如图4.1所示。

image

3-创新点

(1)提出了基于判别式迁移特征学习的AD早期诊断算法

为充分利用辅助学习领域的相关知识,依据目标域(即MCI组)与辅助域(AD和NC组)数据的相关性合源域与目标域之间的分布差异,提出了TCA特征迁移算法;但是TCA算法中领域间分布差异度量方法忽略了各领域样本类别与样本特征之间的相关性,通过添加基于类内类间散度矩阵的判别优化项,来更好的使用样本之间的判别性信息,提出了基于判别式迁移特征学习(DTFL)的AD诊断算法,来实现样本领域间知识的迁移,提高样本类别的可分性。实验结果表明,从五个性能指标方面对分类结果进行分析,DTFL算法比其他对比方法都获得了更好的分类性能。

(2)提出了基于集成迁移学习的AD早期诊断算法

针对TCA特征迁移算法对样本的结构信息与标签信息利用不足的情况,采用了基于联

合分布自适应(JDA)的特征迁移算法,来缩小样本领域间的边缘分布差异与条件分布差

异,提取样本数据领域间的共享特征,实现数据领域间知识的迁移;同时,为了获得更为

精确的AD分类性能,提出将GBDT、XGBoost和Adaboost作为三个基分类器,利用特征子

集训练得到基分类器,通过对多个基分类器加权投票方法的集成输出得到最终的分类结

果,并且在标准数据集ADNI上验证了本文提出的集成迁移学习方法的有效性。结果表明,

基于集成迁移学习的AD早期诊断算法在AD分类研究中获得的较好的分类性能。

4-展望

(1)本文提出的迁移学习AD早期诊断算法是基于来自ADNI数据库的单模态(即MRI)数据,用AD和NC为单个辅助领域,来识别MCIc和MCInc患者。但是,在ADNI数据库中,许多受试者都具有多模态生物标志物。依据迁移学习的原理,只要这些多领域的学习任务与目标领域的学习任务具有相关性,就可以利用多个辅助领域知识进行迁移学习,如其他痴呆类型(血管性痴呆)的数据。在未来的工作中,我们可以研究添加多模态样本数据和多辅助域数据进一步改善算法的分类性能。

(2)迁移学习方法在测量源域与目标域之间的差异性度量方面,应该进一步研究和度量源数据集和目标数据集之间的局部差异程度,根据度量结果再选择合适的方法进行迁移学习。例如,如果差异较小,可以考虑基于样本的迁移,如果差异较大,则采用基于特征的方式或者只使用目标样本来优化,避免出现负迁移现象。

4: 基于耦合的卷积-图卷积神经网络的阿尔茨海默病的磁共振诊断方法

南方医科大学-生物医学工程学院-李青峰

   针对已有方法未利用大脑拓扑信息的问题,提出基于耦合的卷积-图卷积神经网络的疾病诊断模型,以实现对阿尔茨海默病及其前驱症状的精确诊断,为临床提供可靠的辅助诊断信息。

   方法根据ADNI数据库提供的信息,将MMSE评分在20**26分、同时CDR评分为0.5或1的被试的疾病标签标记为AD组;将MMSE评分在24**30分且CDR评分为0、无抑郁症状、无认知障碍、无焦虑症状的被试疾病标签标记为NC组。本文提出一种耦合的卷积-图卷积神经网络(CCGCN)模型,以组间比较获取的疾病相关区域作为输入,利用卷积神经网络,从大脑磁共振图像的不同区域提取疾病相关的特征,再使用图卷积网络,结合提取到的特征,对区域间拓扑结构进行建模,并在图卷积网络中嵌入图池化操作,从而自适应地学习大脑拓扑结构与疾病诊断任务之间的内在联系。利用ADNI数据集,获得CCGCN模型对阿尔茨海默病及其前驱症状的疾病诊断准确率、灵敏度和特异度,并进行模型结构的消融实验。

   结果该模型在阿尔茨海默病的诊断任务上取得了92.5%的准确率、88.1%的灵敏度和96.0%的特异度,诊断精度优于目前最先进的方法;同时在区分进行型轻度认知障碍患者和稳定型轻度认知障碍患者的任务上取得了79.8%的准确率、55.3%的灵敏度和83.7%的特异度;消融实验的结果显示了CCGCN模型各组成成分的有效性。结论基于耦合的卷积-图卷积神经网络的疾病诊断模型利用了原始图像的结构和拓扑信息,相比现有方法可以提供更加精确的阿尔茨海默病诊断结果,有望将其应用于临床的辅助诊断中。

目前取得较好效果的基于深度学习的AD诊断策略基本包括两步:从局部图像块提取特征;再将提取到的特征简单组合,进行进一步特征处理。但是,目前这些诊断策略的共同缺点是忽略不同图像块之间的拓扑关系。AD患者相比正常认知人群,其大脑sMRI中的图像块提取位置之间的空间位置关系必然是不同的。因此,这种拓扑结构可以提供大脑的结构信息,与图像的局部纹理信息结合,可以为AD的诊断提供更加可靠的依据。

1-数据集预处理

image

包括ADNI-1和ADNI-2数据集。根据ADNI数据库提供的信息[5],MMSE[23]评分在2026分、同时CDR[24]评分为0.5或1的被试的疾病标签标记为AD组;MMSE评分在2430分且CDR评分为0、无抑郁症状、无认知障碍、无焦虑症状的被试疾病标签标记为NC组;参考已有研究[2]的方法,根据MCI受试者是否会在首次扫描之后36月内转化为AD,进一步将ADNI-1和ADNI-2数据集中的MCI被试划分为稳定型MCI(即sMCI)和进行型MCI(pMCI)。

ADNI-1数据集中共有199例AD,167例pMCI,226例sMCI和229例NC被试;ADNI-2数据集中共有159例AD,38例pMCI,239例sMCI和200例NC被试,需注意的是,同时在ADNI-1和ADNI-2数据集中出现的被试已从ADNI-2数据集中移除。取以上被试的T1磁共振图像,作为实验数据。ADNI-1中的数据由1.5 T磁共振扫描仪获取,而ADNI-2的数据由3 T扫描仪获取。上述数据集中的被试分布见表1。

image

image

2-算法

基于耦合的卷积-图卷积神经网络的阿尔茨海默病的磁共振诊断方法

该模型主要有两个组成部分:图像块层级特征提取网络、b-GCN

  • 图像块层级特征提取网络:其作用是从对应的图像块中提取特征,其内部结构如图2。网络的输入为两个同尺寸不同尺度的图像块(如前述),输出为标签相关特征向量。为生成标签相关特征,网络对输入图像块采用7个卷积层进行特征提取,其中每个卷积层后均加入批标准化操作和线性整流单元(ReLU)。网络的层间连接采用残差连接[11](以跳层连接和特征图相加实现)和密集连接[12](以特征图复制和按通道连接实现),以促进层间特征交流,避免优化过程中的梯度消失,增强网络的特征提取能力。最后一个卷积层的输出特征图经全局平均池化层[13]压缩为向量,再有全连接层对特征进行进一步的整合处理,最终输出与疾病标签相关的特征向量(本实验每个图像块上提取到的特征向量的维度定义为128维)。
  • b-GCN:利用上文提到的特征点空间结构,可以构造图结构G(V,E),其中V为图结构的节点集合,E为图结构的节点间边的集合。将特征点定义为图的节点,节点间欧式距离值定义为图的边,每个特征点(记为k,特征点共有K=30个)处的图像块提取到的μ维特征向量(μ=128)定义为相应的节点处的特征向量λ^k

image

模型架构

image

3-训练方法

我们以一种部分-整体策略来训练CCGCN模型,利用从不同特征点位置提取的图像块,首先单独训练每个图像块层级特征提取网络。当图像块层级特征提取网络训练至收敛后,对于每个输入图像,可从图像上每个特征点对应的图像块上获取疾病标签相关的特征向量。接下来,利用这些特征向量,对全脑层级图卷积神经网络进行训练。以上的预训练过程的目的是降低接下来对CCGCN模型进行端到端训练的难度。在预训练结束后,利用预训练得到的参数来初始化CCGCN模型的相应参数,对整个模型执行端到端的训练,以促进各部分间特征交流,避免模型各个组成部分参数的局部最优。训练中,模型的优化采用自适应矩估计方法[16],使用Focal loss[17]作为损失函数,学习率设为10-4。

4-创新点

在我们提出的CCGCN模型中,以图卷积神经网络对大脑拓扑结构进行建模,并以此为依据,对卷积神经网络提取到的特征进行进一步处理,可以实现诊断性能的进一步提升。

将卷积神经网络与图卷积神经网路耦合为一个整体,利用卷积神经网络对局部图像块特征进行抽取、处理,再利用图卷积神经网络,以大脑的空间拓扑结构为依据,对卷积神经网络抽取到的特征进行进一步处理。实验证明本文方法可以提高AD及其前驱症状的诊断效果,且有较好的稳定性,为临床实现AD及其前驱症状的计算机辅助诊断提出了一种新的方法。

相比传统特征提取方法,作为一种自适应特征提取方法,深度学习可以分层次地从原始数据空间提取、融合特征,从而获得对于目标任务的更好的特征表示。大脑sMRI中疾病相关的特征,相对整幅图像而言非常稀疏,因此必须通过预定位,找到疾病影响最为显著的区域,进而使用神经网络(如CNN)在此区域进行特征提取。

然而,上述处理方法,相当于将完整的大脑图像视为局部图像块的组合,而忽略了这些图像快的空间位置分布状态,即全脑的拓扑结构,与疾病标签之间的关联。为解决这一问题,更好地利用原始图像所提供的信息,从而获得更好的疾病预测结果,我们将卷积神经网络与图卷积神经网路耦合为一个整体,利用卷积神经网络对局部图像块特征进行抽取、处理,再利用图卷积神经网络,以大脑的空间拓扑结构为依据,对卷积神经网络抽取到的特征进行进一步处理。实验证明本文方法可以提高AD及其前驱症状的诊断效果,且有较好的稳定性,为临床实现AD及其前驱症状的计算机辅助诊断提出了一种新的方法。

5-展望

本文提出的方法旨在对疾病标签进行预测,而未考虑其他因素(如年龄、性别、MMSE、CDR-SB等与疾病标签之间的内在联系。作为一种可行方案,未来将在模型结构中嵌入多任务策略,自适应地学习其他因素与疾病标签之间的关系,为进一步提升疾病标签预测任务的精度和稳定性提供一种方法。由于阿尔茨海默病及其前驱症状与多种生理指标相关,如糖代谢、脑功能连接等[25-26],而T1 sMRI主要提供脑的结构信息,增加其他成像模态,如静息态功能磁共振成像、正电子发射计算机断层成像以及扩散张量成像等,可以为疾病诊断提供更多信息,从而进一步提升诊断精度和稳定性。

实现了病变区域定位任务和疾病诊断任务的联合优化的文献:

  • Lian C,Liu M,Zhang J,et al.Hierarchical fully convolutional network for joint atrophy localization and alzheimer’s disease diagnosis using structural MRI[J].IEEE Transactions Pattern Analysis Machine Intellig,2018,39(2):1-10.
  • Li Q,Xing X,Sun Y,et al.Novel iterative attention focusing strategy for joint pathology localization and prediction of MCI progression[M].Springer:Med Image Comp Assisted Intervent, 2019:307-15.

5: 基于脑部特异子结构分析的阿尔兹海默症分类

四川大学-电子信息学院-印彪

阿尔兹海默症与脑部子结构的形态学密切相关,现有研究通常是直接选取海马体、杏仁体等医学分析上具有特异性的子结构进行探究,并没有全面地去进行特异性子结构筛选。为了探究AD与子结构特异性之间的相关性,主要做了以下2个方面的工作::**(1)提取脑部子结构的体积信息作为特征向量进行分类,并且通过机器学习决策树输出对分类起决定性作用的子结构。(2)以Res Net-3D为基础构建了网络,引入注意力子模块,过滤MRI图像中的冗余信息,同时将机器学习提取的特异性子结构的体积信息与高维特征信息进行融合,再进行分类。选用ADNI公开数据集上765名患者(正常(Cognitively Normal,CN)358名、AD患者407名)不同时期的2 294个脑部MRI图像进行了实验验证。实验结果表明,决策树中对分类起主要作用的子结构为海马体、杏仁体和鼻内嗅皮层这三个区域**,提出的方法,优于其他5种当前方法,可以作为一种很有前景的AD辅助诊断方法。

根据已有的工作,AD分类方法大致可以分为3类:

  • 基于体素
  • 基于感兴趣区域(ROI)
  • 基于区域块的(Patch)

在基于体素的方法中,简单地通过统计或选择体素来提取特征。Ju等人[13]提出利用深度学习结合脑网络和临床相关文本信息对阿尔茨海默病进行早期诊断。然而,基于体素的特征通常具有更高的维数和噪声,这可能与疾病无关。因此,需要通过平滑、降采样和特征选择等技术来降低基于体素的特征的维数,以提高分类器的效率。

[13] JU Ronghui,HU Chenhui,ZHOU Pan,et al.Early diagnosis of Alzheimer’s disease based on resting-state brain netw orks and deep learning[J].IEEE/ACM Transactions on Computational Biology and Bioinformatics,2017,16(1):244-257

在基于ROI的方法中,将大脑MRI图像分割成不同的组织ROI,然后使用基于ROI的特征向量或这些ROI之间的关系向量来描述MRI图像对AD患者进行分类。Ahmed等人[17]开发了一种利用海马视觉特征进行AD识别的自动分类框架。

[17] AHMED O B,BENOIS-PINEAU J,ALLARD M,et al.Classification of Alzheimer’s disease subjects from MRI using hippocampal visual features[J].M ultimedia Tools and Applications,2015,74(4): 1249-1266.

本文做的主要贡献如下:

(1)基于机器学习,提取在阿尔兹海默症诊断过程中起决定性因素的特征子结构。

(2)将特征子结构的体积信息与深度学习分类网络的高维信息融合,同时增加注意力模块,过滤MRI冗余信息。

1-数据集预处理

在ADNI数据集上均匀选取765名受试者及其MRI脑部影像2 294个;其中AD的受试者为407人,CN的受试者为358人;对于脑部MRI,AD占有1 223例,CN占有1 071例。研究根据受试者年龄、简易精神状态检查表(mini-mental state examination,MMSE)、临床痴呆评定量表(Clinical Dementia Rating,CDR)、临床痴呆综合汇总评定量表(CDR Sum Boxes,CDR-SB)的均值和方差,将受试者按照7:3的比例,均匀划分成训练集和测试集,其数据分布见表1。

image

本文提取脑部子结构采用的是Huo等人[21]的基于空间块地图的三维全脑分割网络,该方法将脑部MRI分成27个独立的块,然后通过3D完全卷积网络对高分辨率的MRI块进行全脑分割,每个网络学习固定空间中的分割信息,最后将分割后的子块融合,还原整个脑部MRI,完成全脑子结构分割。该方法可以将脑部分割成132个子结构,与多图谱分割的方法相比具有较好的分割性能,同时将计算时间从原来的30 h缩短到了15 min。

[21] 3D Whole Brain Segmentation using Spatially Localized Atlas Network Tiles

首先,对MRI图像进行MNI空间仿射配准,将配准后的MRI影像进行N4偏置场校正、强度归一化。然后,将预处理后的图像送入分割网络中,进行脑部子结构的分割与融合,得到分割后脑部子结构的掩模MRI。最后,将分割后的掩模文件反配准到原始空间,得到原始掩模。

2-算法

网络的主体是以3D ResNet进行的改进。过程中主要对3D ResNet的残差模块进行了修改,引入了残差注意力模块,减少了图像的冗余信息。

image

对于阿尔兹海默症分类的体积特异性子结构、对阿尔兹海默症诊断起决定性作用的子结构为海马体、杏仁体和鼻内嗅区,说明了在阿尔兹海默症患病的过程中,脑部子结构体积会存在相应的变化。深度学习将机器学习提取出来的特征子结构体积信息加入网络中进行特征的融合,进一步提高了分类的准确率,同时加入了注意力模块,去除了MRI影像中的冗余信息,提高了二分类的准确率。

6: 基于双线性卷积神经网络模型的阿尔茨海默病自动诊断

贵州医科大学-大健康学院-曾雷雷

1-数据集预处理

image

2-算法

image

7: 基于卷积神经网络的阿尔茨海默病 MRI影像辅助诊断研究

长春工业大学-计算机科学与工程学院-季鸿坤

image

1-数据集预处理

MRI成像及ADNI简介-MRI影像预处理:https://www.yuque.com/miluhuimilu/dglai6/hn81cf

  • 论文
  • Tools
  • 人工智能
  • 研究生课题-AD检测

扫一扫,分享到微信

微信分享二维码
8-3-UNet提取海马体
8-1-数据预处理工具
  1. 1. 1: 基于深度神经网络的阿尔兹海默病分类算法研究
    1. 1.1. 1-数据集预处理
    2. 1.2. 2-算法
    3. 1.3. 3-创新点
    4. 1.4. 4-展望
  2. 2. 2: 基于卷积神经网络的阿尔茨海默病分类算法研究
    1. 2.1. 1-数据集预处理
    2. 2.2. 2-算法
    3. 2.3. 3-创新点
    4. 2.4. 4-展望
  3. 3. 3: 基于迁移学习的阿尔茨海默病早期诊断算法研究
    1. 3.1. 1-数据集预处理
    2. 3.2. 2-算法
    3. 3.3. 3-创新点
    4. 3.4. 4-展望
  4. 4. 4: 基于耦合的卷积-图卷积神经网络的阿尔茨海默病的磁共振诊断方法
    1. 4.1. 1-数据集预处理
    2. 4.2. 2-算法
    3. 4.3. 3-训练方法
    4. 4.4. 4-创新点
    5. 4.5. 5-展望
  5. 5. 5: 基于脑部特异子结构分析的阿尔兹海默症分类
    1. 5.1. 1-数据集预处理
    2. 5.2. 2-算法
  6. 6. 6: 基于双线性卷积神经网络模型的阿尔茨海默病自动诊断
    1. 6.1. 1-数据集预处理
    2. 6.2. 2-算法
  7. 7. 7: 基于卷积神经网络的阿尔茨海默病 MRI影像辅助诊断研究
    1. 7.1. 1-数据集预处理

Related Issues not found

Please contact @JavaSsun to initialize the comment

© 2018-2024 Allen
Hexo Theme Yilia by Litten
本站总访问量70945次 | 本站访客数63744人
  • 所有文章
  • 友链
  • 关于我

tag:

  • Elasticsearch
  • 面试
  • MQ
  • Redis
  • Nginx
  • Docker
  • Git
  • Dubbo
  • 论文
  • MySql
  • Tools
  • 日志
  • Linux
  • 系统架构
  • Java
  • 源码解析
  • Hexo-yilia
  • Jvm
  • MyBatis
  • SpringBoot
  • Swagger2
  • 算法
  • 分布式
  • Photo
  • HTTP
  • Hystrix
  • SSL
  • ELK
  • IDEA
  • Jwt
  • 定时任务
  • BigData
  • Maven
  • Quartz
  • 人工智能
  • 地图坐标转换
  • 网络编程
  • Python
  • SpringCloud
  • 搬砖结晶
  • OpenCV
  • 推荐系统
  • 目标检测
  • SkLearn
  • 图神经网络
  • PyTorch
  • TensorFlow
  • 数据挖掘
  • 研究生课题-AD检测
  • 研究生成果

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • 研究生总结

    2024-05-09

    #论文#人工智能#搬砖结晶#图神经网络#研究生课题-AD检测#研究生成果

  • 12-ROI文件分析

    2023-11-22

    #Tools#人工智能#研究生课题-AD检测

  • 11-DTI预处理

    2023-11-16

    #Tools#人工智能#研究生课题-AD检测

  • 10-GRETNA处理fMRI

    2023-11-05

    #Tools#人工智能#研究生课题-AD检测

  • 9-(图)利用Matlab的spm12工具处理fMRI为ROI

    2023-10-28

    #Tools#人工智能#研究生课题-AD检测

  • 9-(文)利用Matlab的spm12工具处理fMRI为ROI

    2023-10-26

    #Tools#人工智能#研究生课题-AD检测

  • 8-7-FSL软件使用

    2023-10-20

    #Tools#人工智能#研究生课题-AD检测

  • 8-6-FreeSurfer软件使用

    2023-10-16

    #Tools#人工智能#研究生课题-AD检测

  • 8-5-SPM软件使用

    2023-10-10

    #Tools#人工智能#研究生课题-AD检测

  • 8-4-MRI预处理

    2023-09-16

    #Tools#人工智能#研究生课题-AD检测

  • 8-3-UNet提取海马体

    2023-09-10

    #人工智能#研究生课题-AD检测

  • 8-2-ADNI论文数据预处理

    2023-09-02

    #论文#Tools#人工智能#研究生课题-AD检测

  • 8-1-数据预处理工具

    2023-08-05

    #Tools#人工智能#研究生课题-AD检测

  • 7-2-GNN For AD

    2023-07-25

    #论文#人工智能#图神经网络#研究生课题-AD检测

  • 7-1-GNN For Medical Diagnosis

    2023-06-28

    #论文#人工智能#图神经网络#研究生课题-AD检测

  • 6-2-SCI一区论文精读

    2023-05-25

    #论文#人工智能#研究生课题-AD检测

  • 6-1-MRI成像及ADNI简介

    2023-05-10

    #人工智能#研究生课题-AD检测

  • 5-ADNI-实验数据筛选与下载

    2023-04-25

    #人工智能#研究生课题-AD检测

  • 4-AD文献的阅读记录

    2023-04-20

    #论文#人工智能#研究生课题-AD检测

  • 3-指标特征选择

    2023-04-05

    #人工智能#研究生课题-AD检测

  • 2-AD有关课题

    2023-03-25

    #人工智能#研究生课题-AD检测

  • 1-阿尔茨海默病

    2023-03-20

    #人工智能#研究生课题-AD检测

  • 7-SHAP

    2023-03-15

    #人工智能#数据挖掘

  • 6-模型的融合技术大总结与结果部署

    2023-02-25

    #人工智能#数据挖掘

  • 5-模型建立与调参

    2023-02-20

    #人工智能#数据挖掘

  • 4-特征工程

    2023-02-12

    #人工智能#数据挖掘

  • 3-数据清洗和转换技巧

    2023-02-09

    #人工智能#数据挖掘

  • 2-数据的探索性-EDA分析

    2023-02-06

    #人工智能#数据挖掘

  • 1-赛题理解

    2023-02-04

    #人工智能#数据挖掘

  • 0-零基础入门数据挖掘学习路径

    2023-02-03

    #人工智能#数据挖掘

  • 重温深度学习优化算法

    2023-01-28

    #人工智能

  • 重温归一化(MinMaxScaler)和标准化(StandardScaler)

    2023-01-20

    #人工智能

  • 重温Batch Normalization

    2023-01-15

    #人工智能

  • 交叉熵损失函数和平方损失的区别

    2023-01-12

    #人工智能

  • loss不下降的解决方法

    2023-01-10

    #人工智能

  • 重温Seq2Seq和Attention机制

    2023-01-05

    #人工智能

  • 重温LSTM和GRU

    2022-12-28

    #人工智能

  • 重温RNN

    2022-12-25

    #人工智能

  • pytorch_geometric离线安装

    2022-12-19

    #人工智能#图神经网络#PyTorch

  • pytorch_geometric安装

    2022-12-18

    #人工智能#图神经网络#PyTorch

  • 生成式对抗网络GAN的工作原理

    2022-12-13

    #人工智能

  • Ubuntu查看cuda-cudnn等版本命令

    2022-12-10

    #Tools#人工智能

  • CUDA和CuDNN安装

    2022-12-08

    #Tools#人工智能

  • GPU之nvidia-smi命令详解

    2022-12-05

    #Tools#人工智能

  • 1-TensorFlow简介及安装

    2022-12-01

    #人工智能#TensorFlow

  • 入门图神经网络

    2022-11-25

    #人工智能#图神经网络

  • 10-模型的保存加载-模型微调-GPU使用及Pytorch常见报错

    2022-11-06

    #人工智能#PyTorch

  • 9-正则化与标准化大总结

    2022-10-28

    #人工智能#PyTorch

  • 8-Tensorboard可视化与Hook机制

    2022-10-25

    #人工智能#PyTorch

  • 7-优化器和学习率调整策略

    2022-10-23

    #人工智能#PyTorch

  • 6-模型的权值初始化与损失函数介绍

    2022-10-20

    #人工智能#PyTorch

  • 5-nn各网络层介绍

    2022-10-17

    #人工智能#PyTorch

  • Pytorch提取神经网络层结构-层参数及自定义初始化

    2022-10-14

    #人工智能#PyTorch

  • 4-模型创建Module-模型容器Containers及AlexNet网络搭建

    2022-10-12

    #人工智能#PyTorch

  • 3-Pytorch数据读取机制(DataLoader)与图像预处理模块(transforms)

    2022-10-09

    #人工智能#PyTorch

  • 2-Pytorch的动态图-自动求导及逻辑回归

    2022-10-02

    #人工智能#PyTorch

  • 1-Pytorch的数据载体张量与线性回归

    2022-09-28

    #人工智能#PyTorch

  • Pytorch与词向量

    2022-09-25

    #人工智能#PyTorch

  • Pytorch基础理论和简单的神经网络实现

    2022-09-23

    #人工智能#PyTorch

  • Windows下的Pytorch环境搭建

    2022-09-20

    #人工智能#PyTorch

  • 图卷积网络-GCN

    2022-09-15

    #人工智能#图神经网络

  • GCN使用的数据集Cora等

    2022-09-10

    #人工智能#图神经网络

  • 图网络属性介绍

    2022-09-08

    #人工智能#图神经网络

  • 图神经网络理论基础

    2022-09-05

    #人工智能#图神经网络

  • 5-AI上推荐之AutoRec与Deep Crossing模型(改变神经网络的复杂程度)

    2022-08-28

    #人工智能#推荐系统

  • 4-AI上推荐之FM和FFM(九九归一)

    2022-08-17

    #人工智能#推荐系统

  • 梯度提升树GBDT的理论学习与细节补充

    2022-08-05

    #人工智能#推荐系统

  • 梯度下降算法的细节补充(凸函数, 导数, 偏导数,梯度, 方向导数以及负梯度下降最快背后的泰勒身影)

    2022-07-28

    #人工智能#推荐系统

  • 逻辑回归、优化算法和正则化的幕后细节补充

    2022-07-24

    #人工智能#推荐系统

  • 3-AI上推荐之逻辑回归模型与GBDT+LR(特征工程模型化的开端)

    2022-07-20

    #人工智能#推荐系统

  • 奇异值分解(SVD)的原理详解及推导

    2022-07-13

    #人工智能#推荐系统

  • 2-AI上推荐之隐语义模型(LFM)和矩阵分解(MF)

    2022-07-10

    #人工智能#推荐系统

  • 1-AI上推荐之协同过滤

    2022-07-02

    #人工智能#推荐系统

  • R-CNN and Fast R-CNN and Faster R-CNN and SPP

    2022-06-15

    #人工智能#目标检测

  • 10-Harris和Shi-Tomas算法

    2022-06-06

    #人工智能#OpenCV

  • 9-角点特征

    2022-06-03

    #人工智能#OpenCV

  • 8-图像变换-傅里叶变换

    2022-05-29

    #人工智能#OpenCV

  • 7-模板匹配与霍夫变换

    2022-05-15

    #人工智能#OpenCV

  • 6-边缘检测

    2022-05-08

    #人工智能#OpenCV

  • 5-直方图

    2022-04-28

    #人工智能#OpenCV

  • 4-图像平滑

    2022-04-26

    #人工智能#OpenCV

  • 3-形态学操作

    2022-04-22

    #人工智能#OpenCV

  • 2-几何变换

    2022-04-20

    #人工智能#OpenCV

  • 1-图像的基础操作

    2022-04-18

    #人工智能#OpenCV

  • 0-OpenCV简介

    2022-04-15

    #人工智能#OpenCV

  • Ubuntu18.04下安装OpenCV3.4

    2022-04-01

    #人工智能#OpenCV

  • 后 R-CNN时代, Faster R-CNN、SSD、YOLO 各类变体统治下的目标检测综述:Faster R-CNN系列胜了吗?

    2022-03-28

    #人工智能#目标检测

  • SKLearn学习总结

    2022-03-20

    #人工智能#SkLearn

  • 详细了解PyCharm支持的4种Python Interpreter和配置方法

    2022-03-02

    #Tools

  • Pycharm远程连接

    2022-02-26

    #Tools

  • JupyterLab学习总结

    2022-02-19

    #Tools#人工智能

  • Anaconda学习总结

    2022-02-13

    #Tools#人工智能

  • Ubuntu下安装lrzsz工具

    2022-02-08

    #Tools

  • 13-RNN

    2022-02-05

    #人工智能

  • 12-加速深度学习的算法和硬件-讲座

    2022-01-10

    #人工智能

  • 11-深度学习硬件算力基础-GPU与TPU与英特尔神经棒

    2021-12-26

    #人工智能

  • 10-经典卷积神经网络架构案例分析

    2021-12-16

    #人工智能

  • 9-迁移学习与fine-tuning

    2021-12-11

    #人工智能

  • 8-CNNS in Practice-卷积神经网络工程实践技巧

    2021-11-28

    #人工智能

  • 7-训练神经网络-下

    2021-11-09

    #人工智能

  • 6-训练神经网络-上

    2021-11-05

    #人工智能

  • 5-可视化并理解卷积神经网络

    2021-10-25

    #人工智能

  • 4-Convolutional-Neural-Networks

    2021-10-18

    #人工智能

  • 3-神经网络与反向传播

    2021-10-10

    #人工智能

  • 2-损失函数和梯度下降

    2021-09-25

    #人工智能

  • 1-KNN&线性分类器

    2021-09-20

    #人工智能

  • 0-机器学习基础

    2021-09-15

    #人工智能

  • 入门人工智能算法工程师-先来碗毒鸡汤

    2021-07-30

    #人工智能

  • 3-如何高效阅读机器学习顶会论文

    2021-07-15

    #论文

  • 2-论文ABC类与一二区的区别

    2021-06-10

    #论文

  • 1-学术小白

    2021-06-06

    #论文

  • 领域驱动设计在互联网业务开发中的实践

    2020-09-13

    #系统架构

  • 领域驱动设计

    2020-07-12

    #系统架构

  • DDD模式-从天书到实践

    2020-06-28

    #系统架构

  • DDD-马什么梅

    2020-06-14

    #系统架构

  • FaaS-又一个为未来

    2020-05-17

    #系统架构

  • 分布式ID的花拳绣腿

    2020-04-19

    #面试#系统架构#分布式

  • 4-Dockerfile上

    2020-04-08

    #Docker

  • 3-Docker存储卷

    2020-04-07

    #Docker

  • 2-Docker容器网络

    2020-04-06

    #Docker

  • 1-安装_使用Docker

    2020-04-05

    #Docker

  • 45-自增ID用完怎么办

    2020-03-11

    #MySql

  • 44-一些常见问题

    2020-03-09

    #MySql

  • 43-要不要使用分区表

    2020-03-08

    #MySql

  • 42-grant之后要跟着flush privileges吗

    2020-03-07

    #MySql

  • 41-如何最快的复制一张表

    2020-03-06

    #MySql

  • 40-insert语句的锁为什么这么多

    2020-03-04

    #MySql

  • 39-自增主键为什么不是连续的

    2020-03-03

    #MySql

  • 38-都说InnoDB好_那还要不要使用Memory引擎

    2020-03-02

    #MySql

  • 37-什么时候会使用内部临时表

    2020-03-01

    #MySql

  • SpringBoot_RabbitMQ配置参数详解

    2020-02-26

    #MQ

  • RabbitMQ安装

    2020-02-26

    #MQ

  • ELK日志平台-中

    2020-02-11

    #日志#ELK

  • ELK日志平台-上

    2020-02-10

    #日志#ELK

  • Java8新特性

    2020-02-08

    #Java

  • 1-Hystrix知多少

    2020-01-01

    #面试#Hystrix

  • 25-Nginx变量原理-应用

    2019-12-13

    #Nginx

  • 24-详解HTTP过滤模块

    2019-12-12

    #Nginx

  • 23-详解HTTP请求的11个阶段

    2019-12-11

    #Nginx

  • 22-如何找到处理请求的Server指令块

    2019-12-10

    #Nginx

  • 21-Nginx中的正则表达式

    2019-12-09

    #Nginx

  • 20-处理HTTP请求头部流程

    2019-12-09

    #Nginx

  • 19-Nginx中Listen指令用法

    2019-12-08

    #Nginx

  • 18-Nginx冲突的配置指令以谁为准

    2019-12-08

    #Nginx

  • 17-Nginx动态模块

    2019-12-07

    #Nginx

  • 16-Nginx容器

    2019-12-06

    #Nginx

  • 15-Worker集成协同工作的关键

    2019-12-06

    #Nginx

  • 14-Nginx连接池处理网络请求-内存池对性能的影响

    2019-12-05

    #Nginx

  • 13-Nginx模块

    2019-12-04

    #Nginx

  • 12-网络收发与Nginx事件模型

    2019-12-03

    #Nginx

  • 11-Nginx架构_相关流程

    2019-12-02

    #Nginx

  • LinkedHashMap实现原理_探险

    2019-11-28

    #Java#源码解析

  • HashTable实现原理_探险

    2019-11-22

    #Java#源码解析

  • HashMap实现原理_探险

    2019-11-20

    #Java#源码解析

  • LinkList实现原理_探险

    2019-11-17

    #Java#源码解析

  • ArrayList实现原理_探险

    2019-11-16

    #Java#源码解析

  • 10-OpenResty用Lua语言实现简单服务

    2019-11-12

    #Nginx

  • 9-SSL-Nginx

    2019-11-11

    #Nginx#SSL

  • 8-Nginx配置文件简易解析

    2019-11-10

    #Nginx

  • 7-Nginx安装详解

    2019-11-09

    #Nginx

  • 6-GoAccess实现可视化并实时监控access日志

    2019-11-08

    #Nginx#Tools#日志

  • 5-Nginx搭建具备缓存功能的反向代理

    2019-11-05

    #Nginx

  • 4-Nginx搭建静态资源Web服务器

    2019-11-01

    #Nginx

  • SpringBoot中jar为什么可以直接运行

    2019-10-30

    #面试#SpringBoot

  • SpringBoot全局异常处理

    2019-10-29

    #面试#SpringBoot

  • SpringBoot事件和监听器

    2019-10-29

    #面试#SpringBoot

  • SpringBoot启动原理

    2019-10-29

    #面试#SpringBoot

  • 36-为什么临时表可以重名

    2019-10-28

    #MySql

  • 35-join语句如何优化

    2019-10-27

    #MySql

  • 34-到底可不可以使用join

    2019-10-26

    #MySql

  • 33-我查这么多数据_会不会把数据库内存打爆

    2019-10-24

    #MySql

  • 32-为什么有kill不掉的语句

    2019-10-23

    #MySql

  • 31-误删数据后除了跑路_还能怎么办

    2019-10-22

    #MySql

  • 3-Nginx命令行演示-重载-热部署-切割

    2019-10-20

    #Nginx

  • 2-Nginx配置语法

    2019-10-17

    #Nginx

  • 1-Nginx的前世今生

    2019-10-15

    #Nginx

  • 0-Nginx访问日志配置及信息详解

    2019-10-11

    #Nginx

  • 分布式事务

    2019-09-19

    #面试#系统架构#分布式

  • 分布式锁

    2019-09-18

    #面试#系统架构#分布式

  • 分布式锁与事务

    2019-09-16

    #面试#系统架构#分布式

  • 数据结构与算法第四阶段学习图

    2019-09-16

    #算法

  • 数据结构与算法第三阶段学习图

    2019-09-16

    #算法

  • 数据结构与算法第二阶段学习图

    2019-09-16

    #算法

  • 数据结构与算法第一阶段学习图

    2019-09-16

    #算法

  • 2018-2019工作总结

    2019-09-15

    #搬砖结晶

  • 开发常见问题

    2019-09-14

    #Java

  • 52-算法实战(五)_如何用学过的数据结构和算法实现一个短网址系统

    2019-09-14

    #算法

  • 30-用动态的观点看加锁

    2019-09-13

    #MySql

  • 29-如何判断一个数据库是不是出问题了

    2019-09-12

    #MySql

  • 28-读写分离有哪些坑

    2019-09-11

    #MySql

  • 51-算法实战(四)_剖析微服务接口鉴权限流背后的数据结构和算法

    2019-09-09

    #算法

  • 50-算法实战(三)_剖析高性能队列Disruptor背后的数据结构和算法

    2019-09-06

    #算法

  • 49-算法实战(二)_剖析搜索引擎背后的经典数据结构和算法

    2019-09-02

    #算法

  • 27-主库出问题了_从库怎么办

    2019-08-29

    #MySql

  • 26-备库为什么会延迟好几个小时

    2019-08-28

    #MySql

  • 25-MySQL是怎么保证高可用的

    2019-08-27

    #MySql

  • 24-MySQL是怎么保证主备一致的

    2019-08-26

    #MySql

  • 48-算法实战(一)_剖析Redis常用数据类型对应的数据结构

    2019-08-25

    #算法

  • 47-并行算法_如何利用并行处理提高算法的执行效率

    2019-08-20

    #算法

  • 46-索引_如何在海量数据中快速查找某个数据

    2019-08-16

    #算法

  • 45-搜索_如何用A*搜索算法实现游戏中的寻路功能

    2019-08-13

    #算法

  • 44-B+树_MySQL数据库索引是如何实现的

    2019-08-10

    #算法

  • 43-向量空间_如何实现一个简单的音乐推荐系统

    2019-08-08

    #算法

  • 42-概率统计_如何利用朴素贝叶斯算法过滤垃圾短信

    2019-08-05

    #算法

  • 41-位图_如何实现网页爬虫中的URL去重功能

    2019-08-02

    #算法

  • 40-最短路径_地图软件是如何计算出最优出行路径的

    2019-07-28

    #算法

  • 39-拓扑排序_如何确定代码源文件的编译依赖关系

    2019-07-24

    #算法

  • 38-动态规划实战_如何实现搜索引擎中的拼写纠错功能

    2019-07-20

    #算法

  • 23-MySQL是如何保证数据不丢的

    2019-07-19

    #MySql

  • 22-MySQL有哪些“饮鸩止渴”提高性能的方法

    2019-07-18

    #MySql

  • 21-为什么我只改一行的语句_锁还这么多

    2019-07-17

    #MySql

  • 20-幻读是什么_幻读有什么问题

    2019-07-16

    #MySql

  • 19-只查一行的语句为何执行这么慢

    2019-07-15

    #MySql

  • 37-动态规划理论_一篇文章带你彻底搞懂最优子结结构_无后效性_重复子问题

    2019-07-13

    #算法

  • 36-初识动态规划_如何巧妙解解决“双十一”购物时的凑单问题

    2019-07-09

    #算法

  • 35-回溯算法_从电影《蝴蝶效应》中学习回溯算法的核心思想

    2019-07-06

    #算法

  • 34-分治算法_谈一谈大规模计算框架MapReduce中的分治思想

    2019-07-04

    #算法

  • 33-贪心算法_如何用贪心算法实现Huffman压缩编码

    2019-07-01

    #算法

  • 32-AC自动机_如何用多模式串匹配实现敏感词过滤功能

    2019-06-25

    #算法

  • 18-SQL语句逻辑相同_性能却为何差异巨大

    2019-06-23

    #MySql

  • 17-如何正确的显示随机消息

    2019-06-22

    #MySql

  • 16-MySQL中order by是如何工作的

    2019-06-20

    #MySql

  • 15-日志和索引有关问题

    2019-06-18

    #MySql

  • RocketMQ探索

    2019-06-17

    #MQ

  • 14-count(\*)为什么这么慢

    2019-06-16

    #MySql

  • 13-为什么表数据删掉一半而表文件大小不变

    2019-06-15

    #MySql

  • 12-为什么我的MySQL会“抖”一下

    2019-06-13

    #MySql

  • 11-怎么给字符串字段加索引

    2019-06-12

    #MySql

  • 10-MySQL为什么有时候会选错索引

    2019-06-11

    #MySql

  • 3-3-Docker容器用法

    2019-06-10

    #Docker

  • RabbitMQ详解

    2019-06-08

    #MQ

  • 5-分布式会话_锁_事务_高并发系统设计

    2019-06-07

    #面试

  • 3.2-Docker镜像用法

    2019-06-05

    #Docker

  • 4-Zookeeperer使用场景

    2019-06-04

    #面试

  • Dubbo知多少

    2019-06-03

    #面试#Dubbo

  • 3-分布式系统中接口调用顺序性如何保证

    2019-06-03

    #面试#Dubbo

  • 2-分布式系统中接口的幂等性该如何保证_比如不能重复扣款

    2019-06-02

    #面试#Dubbo

  • 1-分布式系统连环炮_Dubbo有关知识点

    2019-06-01

    #面试#Dubbo

  • 9-普通索引和唯一索引如何选择

    2019-05-30

    #MySql

  • 8-事务到底是隔离的还是不隔离的

    2019-05-29

    #MySql

  • 7-行锁功过_怎么减少行锁对性能的影响

    2019-05-28

    #MySql

  • 6-全局锁和表锁_给表加个字段怎么有这么多阻碍

    2019-05-27

    #MySql

  • 5-深入浅出索引(下)

    2019-05-26

    #MySql

  • 4-深入浅出索引(上)

    2019-05-25

    #MySql

  • 3.1-Docker用法

    2019-05-24

    #Docker

  • 2.2-Docker启动报错

    2019-05-23

    #Docker

  • 3-事务隔离_为什么你改了我还看不见

    2019-05-21

    #MySql

  • MySQL重要日志

    2019-05-20

    #面试#MySql

  • 2-日志系统_一条SQL更新语句是如何执行的

    2019-05-20

    #MySql

  • 1-基础架构_一条SQL查询语句是如何执行的

    2019-05-19

    #MySql

  • 2.1-Docker安装与部署

    2019-05-18

    #Docker

  • 1-Docker缘由

    2019-05-12

    #Docker

  • 0-Docker配置国内免费registry_mirror

    2019-05-08

    #Docker

  • 5-分布式搜索引擎如何部署

    2019-04-26

    #Elasticsearch#面试

  • 4-ES如何在几十亿数据场景下优化查询性能

    2019-04-23

    #Elasticsearch#面试

  • 3-ES读写数据的工作原理

    2019-04-22

    #Elasticsearch#面试

  • 2-分布式搜索引擎的架构是如何设计的

    2019-04-21

    #Elasticsearch#面试

  • 1-面试官对分布式搜索引擎的4个连环炮

    2019-04-20

    #Elasticsearch#面试

  • 8-如何设计一个消息队列

    2019-04-10

    #面试#MQ

  • 7-消息队列如何解决延迟_过期失效_积压消息等问题

    2019-04-10

    #面试#MQ

  • JWT学习

    2019-04-09

    #Java#Jwt

  • 6-消息队列如何保证消息的顺序性

    2019-04-08

    #面试#MQ

  • 5-消息队列如何保证可靠性传输(消息丢了怎么办)

    2019-04-07

    #面试#MQ

  • 4-消息队列消费到重复数据怎么办

    2019-04-06

    #面试#MQ

  • 3-消息队列如何保证高可用性

    2019-04-03

    #面试#MQ

  • 2-消息队列引入原原因_优缺点_应用场景_技术选型

    2019-04-02

    #面试#MQ

  • 1-面试官对消息队列的10个连环炮

    2019-04-01

    #面试#MQ

  • Git常见200+条命令

    2019-03-28

    #Git

  • 8-GitLab简单操作

    2019-03-25

    #Git

  • 31-Trie树_如何实现搜索引擎的搜索关键词提示功能

    2019-03-12

    #算法

  • 7-基于GitHub进行团队协作

    2019-03-09

    #Git

  • 30-字符串匹配基础下_如何借助BM算法轻松理解KMP算法

    2019-03-06

    #算法

  • 29-字符串匹配基础中_如何实现文本编辑器中的查找功能

    2019-03-03

    #算法

  • 28-字符串匹配基础上_如何借助哈希算法实现高效字符串匹配

    2019-03-01

    #算法

  • 6-GitHub的认识与使用

    2019-02-25

    #Git

  • 5-Git集成使用禁忌

    2019-02-15

    #Git

  • 27-深度和广度优先搜索_如何找出社交网络中的三度好友关系

    2019-02-13

    #算法

  • 26-图的表示_如何存储微博微信等社交网络中的好友关系

    2019-02-10

    #算法

  • 国内地图坐标系转换

    2019-02-08

    #地图坐标转换

  • 4-Git多人单分支集成协作时的常见场景

    2019-02-08

    #Git

  • 微服务架构-下篇

    2019-02-06

    #系统架构

  • 微服务架构-中篇

    2019-02-03

    #系统架构

  • 微服务架构-上篇

    2019-02-01

    #系统架构

  • Python数据分析工具

    2019-01-30

    #Python

  • Python高级篇

    2019-01-29

    #Python

  • Python中级篇_下

    2019-01-28

    #Python

  • Python中级篇_上

    2019-01-27

    #Python

  • Python初级篇

    2019-01-26

    #Python

  • Python前世今生

    2019-01-25

    #Python

  • 源码分析-MyBatis数据源与连接池

    2019-01-23

    #MyBatis

  • MyBatis初始化做了什么

    2019-01-21

    #MyBatis

  • 3-Git与GitHub简单同步

    2019-01-20

    #Git

  • 2-Git常用场景

    2019-01-18

    #Git

  • 1-Git安装及简单操作

    2019-01-15

    #Git

  • SpringCloud探索与实战

    2019-01-13

    #SpringCloud

  • MyBatis架构与原理

    2019-01-09

    #MyBatis

  • MyBatis原理概括

    2019-01-08

    #MyBatis

  • MyBatis多数据源配置

    2019-01-07

    #MyBatis

  • JVM(八):Jvm知识点概览

    2019-01-06

    #Jvm

  • JVM(七):Jvm调优-工具

    2019-01-05

    #Tools#Jvm

  • JVM(六):Java服务GC参数调优案例

    2019-01-03

    #Jvm

  • JVM(五):GC分析

    2019-01-02

    #Jvm

  • JVM(四):Jvm调优-命令

    2019-01-01

    #Jvm

  • JVM(三):GC算法_垃圾收集器

    2019-01-01

    #Jvm

  • 25-堆的应用_如何获取Top10最热门的搜索关键词

    2018-12-30

    #算法

  • 24-堆和堆排序_为什么说堆排序没有快速排序快

    2018-12-29

    #算法

  • 23-递归树_如何借助树来求解递归算法的时间复杂度

    2018-12-27

    #算法

  • 22-红黑树下_实现红黑树的技巧

    2018-12-25

    #算法

  • 21-红黑树上_为什么工程中都用红黑树这种二叉树

    2018-12-23

    #算法

  • 应用架构演变过程

    2018-12-20

    #Photo

  • MyBatis常用插件

    2018-12-14

    #MyBatis

  • JVM(二):Jvm内存结构

    2018-12-11

    #Jvm

  • JVM(一):Java类加载机制

    2018-12-10

    #Jvm

  • Map-Reduce学习

    2018-11-20

    #BigData

  • 20-二叉树基础下_有了如此高效的散列表—_为什么还需要二叉树

    2018-11-18

    #算法

  • 19-二叉树基础上_什么样的二叉树适合用数组来存储

    2018-11-16

    #算法

  • 18-哈希算法下_哈希算法在分布式系统中有哪些应用

    2018-11-15

    #算法

  • 17-哈希算法上_如何防止数据库中的用户信息被脱库

    2018-11-13

    #算法

  • Hadoop学习

    2018-11-10

    #BigData

  • 16-散列表下_为什么散列表和链表经常一起使用

    2018-11-09

    #算法

  • 15-散列表中_如何打造一个工业级水平的散列表

    2018-11-09

    #算法

  • 14-散列表上_Word文档中的单词拼写检查功能如何实现

    2018-11-08

    #算法

  • 13-跳表_为什么Redis一定要用跳表来实现有序集合

    2018-11-06

    #算法

  • 12-二分查找下_如何快速定位IP对应的省份地址

    2018-11-04

    #算法

  • 11-二分查找上_如何用最省内存的方式实现快速查找功能

    2018-11-02

    #算法

  • 10-排序优化_如何实现一个通用的高性能的排序函数

    2018-11-01

    #算法

  • 9-线性排序_如何根据年龄给100万用户数据排序

    2018-10-28

    #算法

  • 8-排序下_如何用快排思想在O(n)内查找第K大元素

    2018-10-24

    #算法

  • 7-排序上_为什么插入排序比冒泡排序更受欢迎

    2018-10-22

    #算法

  • 6-递归_如何用三行代码找到最终推荐人

    2018-10-20

    #算法

  • 高性能队列-Disruptor

    2018-10-18

    #MQ#Java

  • 5-队列_队列在线程池等有限资源池中的应用

    2018-10-16

    #算法

  • 4-栈_如何实现浏览器的前进和后退功能

    2018-10-13

    #算法

  • Quartz学习

    2018-10-09

    #Java#定时任务#Quartz

  • 3-链表下_如何轻松写出正确的链表代码

    2018-10-06

    #算法

  • 2-链表上_如何实现LRU缓存淘汰算法

    2018-10-06

    #算法

  • 1-数组_为什么很多编程语言中数组都从0开始编号

    2018-10-02

    #算法

  • 复杂度分析-下部

    2018-09-29

    #算法

  • 复杂度分析-上部

    2018-09-28

    #算法

  • 数据结构与算法概览

    2018-09-26

    #算法

  • 请求与响应

    2018-09-17

    #HTTP

  • TextRank基本了解

    2018-09-01

    #算法

  • (5)Hexo踩坑_主题优化

    2018-08-21

    #Hexo-yilia

  • (4)Hexo撰写文章

    2018-08-19

    #Hexo-yilia

  • (3)Hexo常用命令详解

    2018-08-19

    #Hexo-yilia

  • (2)Hexo配置文件详解

    2018-08-17

    #Hexo-yilia

  • 关于Firewalld二三事

    2018-08-15

    #Linux

  • (1)Hexo博客搭建

    2018-08-11

    #Hexo-yilia

  • 修改Vim_tab为4个空格

    2018-08-06

    #Linux

  • CentOs7防火墙开端口测试

    2018-08-01

    #Linux

  • 10-Redis的并发竞争问题及生产环境集群部署架构

    2018-07-30

    #面试#Redis

  • 9-如何保证缓存与数据库双写时的数据一致性

    2018-07-29

    #面试#Redis

  • 8-如何应对缓存雪崩及穿透问题

    2018-07-28

    #面试#Redis

  • 7-Redis集群模式原理

    2018-07-26

    #面试#Redis

  • Redis所需安装包及各种依赖

    2018-07-25

    #Redis

  • 6-Redis挂掉重启后数据如何进行恢复

    2018-07-24

    #面试#Redis

  • 5-Redis高并发高可用有关问题

    2018-07-21

    #面试#Redis

  • 4-Redis过期策略_手写LRU

    2018-07-19

    #面试#Redis

  • 3-Redis常用数据类型及使用场景

    2018-07-18

    #面试#Redis

  • 2-Redis线程模型_单线程效率高的原因

    2018-07-17

    #面试#Redis

  • 1-项目中缓存如何使用

    2018-07-16

    #面试#Redis

  • AWK三剑客

    2018-07-15

    #Linux

  • Maven插件-assembly插件基本使用

    2018-06-28

    #Java#Maven

  • Maven知多少

    2018-06-27

    #Java#Maven

  • 1-分库分表知多少

    2018-06-25

    #面试#MySql

  • MySQL基本用法

    2018-06-21

    #MySql

  • MySQL安装

    2018-06-20

    #MySql

  • Swagger2学习与集成

    2018-05-20

    #SpringBoot#Swagger2

  • SpringBoot面试

    2018-05-16

    #面试#SpringBoot

  • SpringBoot+Docker简单配置

    2018-05-15

    #Docker#SpringBoot

  • Java定时任务

    2018-05-13

    #Java#定时任务

  • Netty知多少

    2018-05-05

    #网络编程

  • Java编程瞎侃

    2018-04-18

    #Java

  • Vim常用操作

    2018-03-25

    #Linux

  • Linux定时任务Crontab详解

    2018-03-23

    #Linux

  • Linux常用插件及乱码

    2018-03-20

    #Linux

  • Linux安装常用软件

    2018-03-19

    #Linux

  • Idea常用插件及个性化配置

    2018-03-18

    #Tools#IDEA

  • Host-Vm相互ping不同到的解决办法

    2018-03-16

    #Linux

  • GitHub
  • 廖雪峰
  • 纯洁的微笑
  • 我没有三颗心脏
  • 阿里巴巴开源镜像网站
一个脱离了高级趣味的人!