糖尿病视网膜病变分级新方法:卷积网络做分割和诊断 + 大模型生成详细的测试和治疗建议

糖尿病视网膜病变分级新方法:卷积网络做分割和诊断 + 大模型生成详细的测试和治疗建议

    • 提出背景
    • 相关工作
      • 3.1 数据集
        • 3.1.1 病变分割
      • 3.1.2 图像分级
      • 3.1.3 大型语言模型(LLMs)
    • 解法 = 数据预处理 + 数据增强 + 网络架构 + 训练过程 + 测试过程
        • 子解法1:数据预处理
        • 子解法2:数据增强
        • 子解法3:网络架构
        • 子解法4:训练过程
        • 子解法5:测试过程

 


论文:https://arxiv.org/pdf/2401.02759

代码:https://github.com/Manoj-Sh-AI/Diabetic-Retinopathy-Detection-and-Clasification-System

卷积网络做分割和诊断,并通过大模型生成详细的测试和治疗建议,从而实现精准、高效的糖尿病视网膜病变检测和管理。

提出背景

糖尿病视网膜病变(DR)是糖尿病的一种严重并发症,通过破坏视网膜内的细小血管,威胁着视力,甚至可能导致失明。

该病经历四个不同阶段的发展:轻度非增殖性视网膜病变、中度非增殖性视网膜病变、重度非增殖性视网膜病变和增殖性糖尿病视网膜病变。

每个阶段都有其独特的特征,使诊断过程更加复杂,尤其是在早期阶段没有任何预警信号时。

严重性在于,及时的治疗和监测可以将新的DR病例减少约56%。

然而,准确识别疾病的早期阶段对临床医生来说是一项具有挑战性的任务,即使是那些训练有素的医生也是如此。

手工检查眼底图像以检测早期DR是一个复杂的过程,现有的诊断方法效率低下,导致眼科医生之间的意见不一致,并为研究提供了不准确的真实数据。

为应对这些挑战,各种算法已经出现,用于解决DR的检测问题。

最初,这些算法基于经典的计算机视觉方法。

然而,近年来,随着深度学习的兴起,卷积神经网络(CNN)在分类和目标检测任务(包括糖尿病视网膜病变的诊断)中展示了其强大的能力。

本研究论文介绍了一种新的方法来解决DR检测中的复杂问题。通过利用迁移学习,该方法使用一张眼底照片自动检测糖尿病视网膜病变的阶段。

值得注意的是,该方法旨在从一个有限且噪声较大的数据集中学习重要特征,呈现出作为自动解决方案中的一个有价值的DR阶段筛查工具的潜力。如图1所示,方法的有效性得到了强调。值得一提的是,提出的方法在APTOS 2019盲症检测竞赛中取得了可喜的排名,显示出其能力,获得了0.92546的高加权卡帕分数。本研究旨在显著推动DR检测方法的发展,特别是在自动化系统的背景下,解决早期诊断和干预糖尿病视网膜病变的关键需求。

轻度非增殖性视网膜病变:

  • 这是糖尿病视网膜病变的最早阶段。
  • 其特征是微动脉瘤的出现,对血管的影响有限,只有轻微的扭曲。

中度非增殖性视网膜病变:

  • 此阶段的进展伴随着血管因扭曲和肿胀而失去输送血液的能力。
  • 血管异常变得更加明显。扭曲和肿胀阻碍了正常的血液运输,影响了整体的视网膜健康。

重度非增殖性视网膜病变:

  • 导致视网膜供血不足。
  • 血管阻塞加剧了病情。
  • 视网膜发出信号,刺激新血管的生长,以补偿减少的血供。

增殖性糖尿病视网膜病变:

  • 标志着新血管的增殖。视网膜分泌的生长因子激活了新血管的增殖。
  • 这些血管沿着视网膜的内层生长,并延伸到填充眼球的玻璃体中。

可以参考类似的方法来检测另一种眼疾,如黄斑变性。假设研究使用类似的迁移学习与CNN相结合的方法,从视网膜图像中分类黄斑变性的阶段

。研究人员可以应用U-Net架构来分割视网膜层和特定于黄斑变性的病变,然后将这些输出与预训练模型结合起来,以分类疾病的严重程度。

目标是创建一个自动化系统,能够准确预测和推荐必要的测试和治疗,从而改进患者护理和黄斑变性的管理,类似于在糖尿病视网膜病变研究中的做法。

相关工作

3.1 数据集

本研究中使用的图像数据来自不同的数据集。研究包括三个主要目标:病变分割、疾病/图像分级和治疗建议。

3.1.1 病变分割

病变分割使用的眼底图像来自印度马哈拉施特拉邦南德市一家眼科诊所的视网膜专家拍摄的IDRiD数据集。

从可用的数千次检查中,我们提取了516张图像形成我们的数据集,如图2(a)和(b)所示。

专家验证所有图像均具有足够的质量和临床相关性,没有图像重复,并且包含了代表糖尿病视网膜病变(DR)和糖尿病黄斑水肿(DME)的合理混合病变分层。

眼底相机规格
图像使用Kowa VX-10 alpha数字眼底相机拍摄,视野为50度,所有图像均集中在黄斑附近。

图像分辨率为4288×2848像素,以jpg格式存储,每张图像大小约为800KB。

像素级标注数据
为了评估与糖尿病视网膜病变(DR)相关的病变分割技术的有效性,提供了针对不同异常的二值掩码,包括微动脉瘤(MA)、硬性渗出物(EX)、出血(HE)和软性渗出物(SE)。数据集包括jpg格式的彩色眼底图像以及对应的tif格式的二值掩码。

数据集包含81张带有微动脉瘤二值掩码的图像、81张带有硬性渗出物的图像、80张带有出血的图像和40张带有软性渗出物的图像。

这些数字表示图像的数量,其中一些可能包含多种病变,从而增强了数据集在糖尿病视网膜病变病变分割技术研究和性能评估中的多样性。

3.1.2 图像分级

我们研究中使用的图像数据来自多个数据集,主要集中在Kaggle糖尿病视网膜病变检测挑战赛2015(EyePACs,2015)的一个公开数据集上,以预训练我们的卷积神经网络(CNN)。

该数据集被认为是最大公开可用的数据集,包含35,126张捕捉到美国公民左眼和右眼的眼底照片。

这些图像标注了糖尿病视网膜病变的各个阶段,从没有糖尿病视网膜病变(标签0)到增殖性糖尿病视网膜病变(标签4),如图3所示。

除了Kaggle数据集,我们还整合了其他较小的数据集,包括印度糖尿病视网膜病变图像数据集(IDRiD)(Sahasrabuddhe和Meriaudeau,2018),我们使用了其中的413张眼底照片,以及MESSIDOR(视网膜眼科学领域的分割和索引技术评估方法)(Decencière等人,2014)数据集,贡献了1,200张眼底照片。

为了确保一致性,我们使用了经过眼科医生小组重新标注的标准分级版本的MESSIDOR数据集(Google Brain,2018)。

我们在Kaggle APTOS 2019盲症检测(APTOS 2019)数据集上进行了模型评估,访问限制为训练部分。

完整的APTOS 2019数据集包括18,590张眼底照片,分为3,662张训练图像、1,928张验证图像和13,000张测试图像,按Kaggle竞赛组织者的安排进行。

所有数据集都展示了类似的类别分布,如图2所示。

我们保持了数据集的原始分布,没有进行下采样或过采样。所有数据集中最小的原生尺寸为640x480。图4展示了APTOS 2019的一个示例图像。

3.1.3 大型语言模型(LLMs)

在数据集部分,生成测试/治疗建议涉及与预训练的大型语言模型的集成,从分割图像中派生出广泛的输入。

这些输入包括针对各种病变的二进制指示符,包括血管分割、出血分割、硬性渗出物分割、微动脉瘤分割、光盘分割和软性渗出物分割。

每个病变在二进制输入中表示为存在(True)或不存在(False)。

此外,还从分类或图像分级模型生成字符串输入,提供糖尿病视网膜病变(DR)阶段的见解,分为0到4类。

二进制和字符串输入的组合形成了一个强大的数据集,由预训练的大型语言模型ChatGPT处理。ChatGPT解释并综合这些多样化的信息,生成详细的测试/治疗建议,贡献于一个复杂的决策支持系统,该系统同时考虑了详细的视觉分割特征和DR严重程度的临床分类。

 

目的:通过先进的模式识别方法,检测和分类糖尿病视网膜病变(DR),以实现早期诊断和及时干预,从而改善患者预后。

解法 = 数据预处理 + 数据增强 + 网络架构 + 训练过程 + 测试过程

这篇论文的亮点包括:

  1. 利用迁移学习进行自动检测

    • 通过迁移学习和卷积神经网络(CNN),实现了单张眼底照片的自动糖尿病视网膜病变(DR)检测。
  2. 高效的DR检测性能

    • 在APTOS 2019盲症检测竞赛中取得了0.92546的高加权卡帕分数,展示了所提方法的高效性和准确性。
  3. 综合性方法

    • 方法涵盖了数据预处理、数据增强、U-Net神经网络架构的使用,充分展示了从数据准备到模型训练和评估的完整流程。
  4. 分割图像输入与预训练大型语言模型的集成

    • 强调了将分割图像结果与预训练的大型语言模型(如ChatGPT)相结合,用于生成测试和治疗建议。这种集成增强了系统的实用性和临床相关性。
  5. 填补研究空白

    • 识别并探索现有文献中的研究缺口,特别是在整合预训练的大型语言模型与分割图像输入生成建议方面的不足,以及理解这些集成组件在网络应用中的动态交互。
  6. 提升诊断和干预能力

    • 研究结果显示,该方法在分割视网膜结构(如血管、硬性和软性渗出物、出血、微动脉瘤和视盘)方面表现出色,具有高Jaccard、F1、召回率、精确度和准确度,证明了其在提高视网膜病理评估诊断能力方面的潜力。
  7. 对医疗影像分析的贡献

    • 研究成果对医疗影像和自动诊断领域有重要贡献,特别是在改善糖尿病视网膜病变患者预后方面,展示了其在医学图像分析领域的显著应用价值。
子解法1:数据预处理

之所以用数据预处理子解法,是因为需要将原始数据转换为适合模型输入的格式,提高模型的训练效率和效果。

  1. 定义自定义数据集类
    • 之所以用自定义数据集类,是因为需要简化数据加载和预处理的过程,提高代码的模块化和可维护性。
    • 实现__init__方法:初始化数据集,存储图像和掩码的路径。
    • 实现__getitem__方法:读取和预处理每个样本,包括图像标准化和维度调整。
    • 实现__len__方法:返回数据集中样本的总数。
子解法2:数据增强

之所以用数据增强子解法,是因为可以增加数据集的多样性,防止模型过拟合,提高模型在实际应用中的泛化能力。

  1. 定义数据增强函数
    • 之所以用数据增强函数,是因为需要系统化地对图像和掩码进行多种变换,模拟实际场景中的不同情况。
    • 实现水平翻转、垂直翻转和旋转。
    • 调整掩码以匹配增强后的图像。
    • 将增强后的图像和掩码保存到指定目录。
子解法3:网络架构

之所以用U-Net网络架构子解法,是因为其编码器-解码器结构和跳跃连接有助于有效地捕捉高层和低层特征,实现精准的图像分割。

  1. 构建U-Net模型
    • 之所以用U-Net模型,是因为它在医学图像分割任务中表现优异,能够同时处理全局和局部特征。
    • 编码器部分:卷积层+批归一化+ReLU激活+最大池化。
    • 瓶颈层:卷积层。
    • 解码器部分:转置卷积+跳跃连接+卷积层。
    • 分类器:1x1卷积层输出单通道。
子解法4:训练过程

之所以用训练过程子解法,是因为需要通过迭代优化模型参数,使模型能够准确地进行分割任务。

  1. 预训练

    • 之所以用预训练,是因为设置合适的超参数和数据准备有助于模型的初始收敛。
    • 配置超参数:图像尺寸、批量大小、训练轮数、学习率等。
    • 加载数据集:使用自定义数据加载器。
    • 初始化优化器和损失函数。
  2. 主训练

    • 之所以用主训练,是因为需要在多个轮次中优化模型,确保模型能够有效地学习数据中的模式。
    • 迭代训练:最小化损失函数,评估验证集上的性能。
    • 保存最佳模型检查点。
  3. 训练后

    • 之所以用训练后步骤,是因为需要总结训练结果并准备模型进行部署或进一步分析。
    • 选择最佳模型:基于验证集上的最低损失。
    • 提供训练损失、验证损失和训练时间等关键指标。
子解法5:测试过程

之所以用测试过程子解法,是因为需要评估模型在独立数据集上的性能,以确保其在实际应用中的有效性。

  1. 加载测试数据集

    • 之所以用加载测试数据集,是因为需要评估模型在未见过的数据上的表现。
    • 预处理测试图像和掩码。
  2. 评估模型性能

    • 之所以用评估模型性能,是因为需要量化模型的分割准确性和效率。
    • 计算评估指标:Jaccard指数、F1评分、召回率、精确度和准确度。
    • 计算每秒帧数(FPS):评估模型的实时处理能力。

 

目的:通过先进的模式识别方法,检测和分类糖尿病视网膜病变(DR),以实现早期诊断和及时干预,从而改善患者预后。

子解法1:数据预处理
之所以用数据预处理子解法,是因为需要将原始数据转换为适合模型输入的格式,提高模型的训练效率和效果。

  1. 定义自定义数据集类
    • 之所以用自定义数据集类,是因为需要简化数据加载和预处理的过程,提高代码的模块化和可维护性。
    • 实现__init__方法:初始化数据集,存储图像和掩码的路径。
    • 实现__getitem__方法:读取和预处理每个样本,包括图像标准化和维度调整。
    • 实现__len__方法:返回数据集中样本的总数。

子解法2:数据增强
之所以用数据增强子解法,是因为可以增加数据集的多样性,防止模型过拟合,提高模型在实际应用中的泛化能力。

  1. 定义数据增强函数
    • 之所以用数据增强函数,是因为需要系统化地对图像和掩码进行多种变换,模拟实际场景中的不同情况。
    • 实现水平翻转、垂直翻转和旋转。
    • 调整掩码以匹配增强后的图像。
    • 将增强后的图像和掩码保存到指定目录。

子解法3:网络架构
之所以用U-Net网络架构子解法,是因为其编码器-解码器结构和跳跃连接有助于有效地捕捉高层和低层特征,实现精准的图像分割。

  1. 构建U-Net模型
    • 之所以用U-Net模型,是因为它在医学图像分割任务中表现优异,能够同时处理全局和局部特征。
    • 编码器部分:卷积层+批归一化+ReLU激活+最大池化。
    • 瓶颈层:卷积层。
    • 解码器部分:转置卷积+跳跃连接+卷积层。
    • 分类器:1x1卷积层输出单通道。

子解法4:训练过程
之所以用训练过程子解法,是因为需要通过迭代优化模型参数,使模型能够准确地进行分割任务。

  1. 预训练

    • 之所以用预训练,是因为设置合适的超参数和数据准备有助于模型的初始收敛。
    • 配置超参数:图像尺寸、批量大小、训练轮数、学习率等。
    • 加载数据集:使用自定义数据加载器。
    • 初始化优化器和损失函数。
  2. 主训练

    • 之所以用主训练,是因为需要在多个轮次中优化模型,确保模型能够有效地学习数据中的模式。
    • 迭代训练:最小化损失函数,评估验证集上的性能。
    • 保存最佳模型检查点。
  3. 训练后

    • 之所以用训练后步骤,是因为需要总结训练结果并准备模型进行部署或进一步分析。
    • 选择最佳模型:基于验证集上的最低损失。
    • 提供训练损失、验证损失和训练时间等关键指标。

子解法5:测试过程
之所以用测试过程子解法,是因为需要评估模型在独立数据集上的性能,以确保其在实际应用中的有效性。

  1. 加载测试数据集

    • 之所以用加载测试数据集,是因为需要评估模型在未见过的数据上的表现。
    • 预处理测试图像和掩码。
  2. 评估模型性能

    • 之所以用评估模型性能,是因为需要量化模型的分割准确性和效率。
    • 计算评估指标:Jaccard指数、F1评分、召回率、精确度和准确度。
    • 计算每秒帧数(FPS):评估模型的实时处理能力。

目的:通过先进的模式识别方法,检测和分类糖尿病视网膜病变的不同阶段,实现早期诊断和及时干预。

  1. 数据预处理:定义自定义数据集类,进行图像标准化和尺寸调整。

    • 定义自定义数据集类:存储眼底图像及其对应的标签路径。
    • 图像预处理:标准化、调整尺寸,以适应模型输入要求。
  2. 数据增强:实现数据增强函数,进行图像旋转、翻转和缩放。

    • 实现数据增强函数:对图像进行水平翻转、垂直翻转和旋转。
    • 调整图像标签以匹配增强后的图像。
  3. 网络架构:构建ResNet或DenseNet模型,结合U-Net架构用于图像分割和分类。

    • 构建ResNet或DenseNet模型:用于提取特征和分类。
    • 结合U-Net架构:进行图像分割,识别不同的病变区域。
  4. 训练过程:预训练和主训练模型,使用合适的超参数,保存最佳模型检查点。

    • 预训练阶段:配置超参数,准备训练和验证数据集。
    • 主训练阶段:在多个轮次中迭代优化模型参数,评估验证集性能。
    • 保存最佳模型检查点:基于最低验证损失选择最佳模型。
  5. 测试过程:加载测试数据集,计算模型在独立数据集上的性能指标,评估实时处理能力。

    • 加载测试数据集:预处理测试图像和标签。
    • 评估模型性能:计算Jaccard指数、F1评分、召回率、精确度和准确度,评估每秒帧数(FPS)。

这种解法通过逐步细化每个步骤,确保系统在糖尿病视网膜病变分级任务中具备高效性和准确性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/19270.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【408真题】2009-25

“接”是针对题目进行必要的分析,比较简略; “化”是对题目中所涉及到的知识点进行详细解释; “发”是对此题型的解题套路总结,并结合历年真题或者典型例题进行运用。 涉及到的知识全部来源于王道各科教材(2025版&…

【数据结构与算法 | 队列篇】力扣102, 107

1. 力扣102 : 二叉树的层序遍历 (1). 题 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[[3]…

STM32FLASH闪存

文章目录 前言首先来回顾一下存储器映像FLASH简介闪存模块组织Flash基本结构(关系)图Flash解锁使用指针访问存储器FLASH操作Flash全擦除Flash页擦除Flash写入 选项字节选项字节操作选项字节擦除选项字节写入 器件电子签名注意闪存控制寄存器一览 前言 本…

[leetcode hot 150]第一百九十一题,位1的个数

题目: 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中设置位的个数(也被称为汉明重量)。 这道题比较简单,直接对最后一位进行与1的与操作,然…

RTPS协议之Messages Module

目录 Messages ModuleType定义RTPS消息结构RTPS消息头子消息结构 RTPS消息接收者SubmessageElementsRTPS HeaderRTPS Submessages Messages Module RTPS Writer和RTPS Reader之间的交换数据的消息。 Type定义 TypePurposeProtocolId_tSubmessageFlagsub msg flagSubmessageK…

第16章-超声波跟随功能 基于STM32的三路超声波自动跟随小车 毕业设计 课程设计

第16章-超声波跟随功能 无PID跟随功能 //超声波跟随if(HC_SR04_Read() > 25){motorForward();//前进HAL_Delay(100);}if(HC_SR04_Read() < 20){motorBackward();//后退HAL_Delay(100);}PID跟随功能 在pid.c中定义一组PID参数 tPid pidFollow; //定距离跟随PIDpidFol…

越来越多的连锁企业选择开源连锁收银系统

连锁企业的收银系统作为其信息化的基础&#xff0c;随着运营的复杂化&#xff0c;越来越多的连锁企业选择开源连锁收银系统来满足其日常经营需要。商淘云为大家分享连锁企业选择开源连锁收银系统的三大原因&#xff0c;大家点赞收藏。 首先是灵活性和定制性强&#xff0c;连锁企…

网络故障与排除(一)

一、Router-ID冲突导致OSPF路由环路 路由器收到相同Router-ID的两台设备发送的LSA&#xff0c;所以查看路由表看到的OSPF缺省路由信息就会不断变动。而当C1的缺省路由从C2中学到&#xff0c;C2的缺省路由又从C1中学到时&#xff0c;就形成了路由环路&#xff0c;因此出现路由不…

登录安全分析报告:小米官网注册

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞 …

重学java 51.Collections集合工具类、泛型

"我已不在地坛&#xff0c;地坛在我" —— 《想念地坛》 24.5.28 一、Collections集合工具类 1.概述:集合工具类 2.特点: a.构造私有 b.方法都是静态的 3.使用:类名直接调用 4.方法: static <T> boolean addAll(collection<? super T>c,T... el…

Nginx教程(持续更新中~)

浏览器优先查看host文件中的映射&#xff0c;如果host中没有就会从网上CDN找该域名对应的ip,但是目前使用的www.123.com是外卖假设的&#xff0c;CDN中并没有&#xff0c;所以就采用host中填写 第二种weight: 第三种 ip_hash: 第四种 fair: ​​​​​​

常见webshell工具及特征分析

前言 在工作中经常会遇到各种websehll&#xff0c;黑客通常要通过各种方式获取 webshell&#xff0c;从而获得企业网站的控制权&#xff0c;识别出webshell文件或通信流量可以有效地阻止黑客进一步的攻击行为&#xff0c;下面以常见的四款webshell进行分析&#xff0c;对工具连…

检测头篇 | YOLOv8改进之添加小目标检测头 / 添加大目标检测头 / 减少检测头

前言:Hello大家好,我是小哥谈。本文首先给大家展示原始YOLOv8的网络结构图,然后再对其进行改变,即增加小目标检测头、增加大目标检测头和减少检测头。🌈 目录 🚀1.网络结构图

金融行业专题|超融合对国密卡和国产加密技术的支持能力如何?

目前&#xff0c;不少金融机构都使用国密卡&#xff08;满足国密算法要求的加密卡&#xff09;和国产密码解决方案保障金融信息安全。而在传统虚拟化架构下&#xff0c;单块加密卡通常只能服务一个系统&#xff0c;经常会出现资源利用率低、加密处理性能不足等问题&#xff0c;…

第十五讲:C语言内存函数

第十五讲&#xff1a;C语言内存函数 1.memcpy函数的使用和模拟实现1.1函数原型1.2函数的使用1.3函数使用的注意事项1.4memcpy函数的模拟实现 2.memmove函数的使用和模拟实现2.1函数原型2.2函数使用2.2.1使用函数处理整形数据2.2.2使用函数处理重叠类型&#xff08;源空间和目标…

python探索时钟模拟之旅:从设计到实现

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言 二、设计时钟类 三、代码实现 四、扩展功能&#xff1a;指定步数后自动停止 五…

开一个抖音小店可以经营几个类目?经营几个类目最合适?

大家好&#xff0c;我是喷火龙。 抖音小店的商品类目和商品数量是没有限制的&#xff0c;只要是在营业执照的经营范围之内的类目都能入驻抖音小店&#xff0c;但是选择的主营类目不能超过三个。 有些商家可能会想&#xff0c;自己经营多个类目&#xff0c;做多种商品种类&…

VMware安装Ubuntu系统(超详细)

一.Ubuntu官网下载镜像 Ubuntu官网&#xff1a;Enterprise Open Source and Linux | Ubuntu 二.安装Ubuntu系统 选择文件->创建虚拟机新建虚拟机&#xff08;ControlN&#xff09;&#xff0c;这里直接选择典型即可 选择稍后安装系统 选择linux Ubuntu 64位 填写虚拟机名称…

R语言入门 | 使用 dplyr 进行数据转换

3.1简介 3.1.1准备工作 3.1.2 dplyr 基础 • 按值筛选观测&#xff08; filter() &#xff09;。 • 对行进行重新排序&#xff08; arrange() &#xff09;。 • 按名称选取变量&#xff08; select() &#xff09;。 • 使用现有变量的函数创建新变量&#xff08; …

数字孪生3D智慧园区可视化能耗管控平台

智慧园区是园区与互联网的完美融合。通过整合信息技术和各类资源&#xff0c;我们实现了园区内各个服务的数字化运营&#xff0c;不仅降低了企业的运营成本&#xff0c;更提高了管理效率 智慧园区3D互动大屏系统利用web3d开发、三维可视化、模拟仿真和数字孪生技术&#xff0c;…