SE-Net模型实现猴痘病识别

news2024/11/28 7:43:50

关于深度实战社区

我们是一个深度学习领域的独立工作室。团队成员有:中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等,曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万+粉丝,拥有2篇国家级人工智能发明专利。

社区特色:深度实战算法创新

获取全部完整项目数据集、代码、视频教程,请进入官网:zzgcz.com。竞赛/论文/毕设项目辅导答疑,v:zzgcz_com


1. 项目简介

该深度学习项目旨在利用卷积神经网络(CNN)对图像进行分类。项目中使用了经过优化的DenseNet模型,并结合了SE模块(Squeeze-and-Excitation)来增强模型的通道注意力机制,从而提升特征提取能力。整个项目采用了PyTorch作为主要框架,主要应用场景是图像分类任务,能够识别多种类别的图像,并且通过自定义数据增强策略、分层特征提取、模型压缩等手段提高模型的训练效率与准确性。训练数据来自本地的图像文件夹,通过数据增强处理(如调整尺寸、归一化、水平翻转等)后,送入模型进行训练和验证。模型经过Dense Block和Transition层的交替堆叠,最终使用全局自适应平均池化和线性层进行分类预测。项目目标是在不牺牲模型性能的情况下,提升计算效率,并且通过模块化设计,能够方便地扩展到其他场景,如图像分割、目标检测等。本项目适用于学术研究和工业应用场景,能够在小数据量的情况下有效地完成图像分类任务,并输出高质量的分类结果。

2.技术创新点摘要

  1. DenseNet与SE模块的结合:项目使用了DenseNet网络结构,并在每个Dense Layer中集成了SE模块(Squeeze-and-Excitation)。DenseNet通过稠密连接的方式,将前面层的所有特征映射传递给后续层,从而避免了梯度消失问题,并实现了高效的特征复用。而SE模块则通过全局自适应池化和通道权重的重新分配,增强了模型对重要特征的关注度。这种结合可以提升模型在处理复杂图像数据时的表征能力和分类效果。
  2. 使用自定义的层设计与Efficient Memory机制:项目通过自定义了Dense Layer和Transition模块的构建,并在关键层次中引入了内存效率优化机制(Efficient Memory)。这种设计允许模型在计算过程中动态分配内存资源,尤其在处理大规模数据集时,可以显著减少内存消耗,从而保证模型的稳定性与高效性。
  3. 自适应模块化设计:模型通过参数化的方式设置了多个Dense Block和Transition层的堆叠,能够根据不同数据集和任务需求进行自由组合与调整。同时,每个Dense Block的输入特征维度、增长率(Growth Rate)和压缩率(Compression Ratio)均可根据实际情况灵活配置,使得模型在保持较高精度的同时能够适配不同规模的计算资源。
  4. 数据增强策略与优化:项目采用了一套完整的数据预处理与增强策略,包括调整图像尺寸、归一化以及随机水平翻转等,使得模型在数据量较少的情况下仍能保持良好的泛化能力。此外,通过引入学习率调度器和交叉熵损失函数,并结合Adam优化器对模型进行训练,确保了模型的快速收敛和稳定的性能输出。
  5. 多层次的SE-Block应用与分类层设计:在模型的特征提取和分类阶段,项目在每个Dense Layer中引入了SE模块,用以强化局部特征的重要性,并最终通过全局自适应池化层和线性分类器进行输出。该设计能够在多个层次上优化特征权重分配,使得模型对不同类别的判别能力更为精细。

在这里插入图片描述

3. 数据集与预处理

本项目使用的图像数据集来源于本地文件夹,按类别进行组织和存储。每个类别的图像分别存储在不同的文件夹中,这种结构方便使用torchvision.datasets.ImageFolder进行数据加载与标签生成。数据集包含多个不同类别的图像,经过项目中的预处理策略后被划分为训练集和测试集。项目在数据加载时,将80%的数据用于训练,20%用于测试,以确保模型在训练阶段有足够的样本量,同时能够在测试集上评估模型的泛化能力。

数据预处理流程

  1. 图像归一化与尺寸调整:所有输入图像都被统一调整到224x224像素的尺寸,确保模型能够接受大小一致的输入。接着对图像进行归一化处理,使其像素值被标准化到[0,1]范围内。标准化过程中使用了预定义的mean([0.485, 0.456, 0.406])和std([0.229, 0.224, 0.225])参数,这些参数基于通用图像分类数据集(如ImageNet)计算得出,有助于模型更快地收敛。
  2. 数据增强策略:为了提升模型的泛化能力和应对小样本数据集的过拟合问题,项目在训练集中引入了数据增强策略。常用的数据增强方法包括随机水平翻转(提高模型对图像左右变化的鲁棒性)、随机裁剪(模拟不同视角下的场景)等。数据增强在仅使用基本图像数据的情况下,能够有效增加数据的多样性,使模型在训练过程中能够学习到更多潜在的特征。
  3. 特征工程:项目中并未使用显式的特征工程,而是依赖模型自身的深度学习网络结构(DenseNet与SE模块)进行自动特征提取和学习。通过引入通道注意力机制,模型可以动态分配不同通道特征的重要性,从而提升特征提取的有效性。

4. 模型架构

  1. 模型结构逻辑

本项目使用了改进版的DenseNet网络,并在Dense Layer中加入了SE模块。DenseNet模型由多个DenseBlockTransition层级联而成,通过稠密连接机制实现高效的特征传递与复用,从而提升模型的特征表示能力。以下是模型各层结构及其数学公式:

  1. 输入层

    1. 输入图像尺寸:(Batch_Size, 3, 224, 224)
    2. 输入通道数为3(RGB通道),经过卷积层(conv0)后转为num_init_features(初始通道数为64)的特征映射。
  2. Dense Block

    1. 每个DenseBlock由多个稠密层(Dense Layer)堆叠组成。
    2. 在每个稠密层中,输入特征 x_l 经过如下操作(公式):
    3. H l = W 2 ⋅ ReLU ( BN ( W 1 ⋅ ReLU ( BN ( x l ) ) ) ) H_l = W_2 \cdot \text{ReLU}(\text{BN}(W_1 \cdot \text{ReLU}(\text{BN}(x_l)))) Hl=W2ReLU(BN(W1ReLU(BN(xl))))
  • 其中,BN表示Batch Normalization,ReLU为激活函数,W_1为第一个1x1卷积核,W_2为3x3卷积核。H_l为该稠密层生成的新特征映射。

    • 所有前面层输出的特征映射被级联传递给当前层,使得当前层的输入为所有前层输出的级联(Concat(x_1, x_2, ..., x_(l-1)))。
  1. SE模块(Squeeze-and-Excitation Block)

    1. SE模块引入了通道注意力机制,通过全局池化和通道间自适应权重的分配来增强特征的表达能力。其公式如下:
    2. s = F s q ( x ) = 1 H × W ∑ i = 1 H ∑ j = 1 W x i , j s = F_{sq}(x) = \frac{1}{H \times W} \sum_{i=1}^{H} \sum_{j=1}^{W} x_{i,j} s=Fsq(x)=H×W1i=1Hj=1Wxi,j
  • 其中,F_{sq}为全局平均池化操作,将输入特征图 x 的通道维度进行全局压缩。之后通过全连接层(FC)、ReLU和Sigmoid函数得到通道权重,并通过以下公式重新分配特征权重:
  • x ^ = x ⋅ σ ( W 2 ⋅ ReLU ( W 1 ⋅ s ) ) \hat{x} = x \cdot \sigma(W_2 \cdot \text{ReLU}(W_1 \cdot s)) x^=xσ(W2ReLU(W1s))
  • 其中,W_1W_2为FC层的权重矩阵,σ为Sigmoid函数,s为全局特征权重。
  1. Transition Layer

    1. 每个Dense Block之间使用Transition Layer进行特征压缩,防止特征维度过高。其具体操作为:
    2. x o u t = AvgPool ( ReLU ( BN ( W t r a n s ⋅ x ) ) ) x_{out} = \text{AvgPool}(\text{ReLU}(\text{BN}(W_{trans} \cdot x))) xout=AvgPool(ReLU(BN(Wtransx)))
  • 其中,W_{trans}为1x1卷积层,AvgPool为2x2平均池化层。
  1. 分类层

    1. 最后通过全局自适应平均池化(Adaptive Average Pooling)将特征映射压缩为1x1大小,再通过一个全连接层(Linear Layer)完成分类:
    2. y = softmax ( W f c ⋅ x f l a t t e n ) y = \text{softmax}(W_{fc} \cdot x_{flatten}) y=softmax(Wfcxflatten)
  • 其中,W_{fc}为线性层的权重矩阵,x_{flatten}为展平后的输入特征。
  1. 模型的整体训练流程与评估指标

训练流程

  1. 数据加载与预处理:将输入数据按80%与20%比例划分为训练集和测试集。图像数据经过归一化和数据增强(包括图像缩放、随机水平翻转等)处理后,以批量形式输入模型。

  2. 模型初始化与参数设置:模型使用DenseNet结构,通过设定初始通道数、Dense Block层数、增长率(Growth Rate)等参数进行初始化。采用了Adam优化器,初始学习率设定为1e-4

  3. 训练与反向传播

    1. 在每个训练周期(Epoch)中,模型逐批读取数据,经过前向传播计算预测结果。
    2. 使用交叉熵损失(CrossEntropyLoss)函数计算预测值与真实标签之间的差距,并进行反向传播(Backpropagation)更新模型权重。
  4. 评估与模型保存

    1. 每个Epoch结束后,在测试集上进行验证,计算准确率(Accuracy)与损失(Loss)。
    2. 记录最佳模型(以测试集准确率为评判标准),并保存最佳模型参数。

评估指标

  1. 训练准确率与测试准确率(Training & Test Accuracy) :衡量模型在训练集和测试集上的分类能力。其公式为:

Accuracy = Number of Correct Predictions Total Number of Predictions \text{Accuracy} = \frac{\text{Number of Correct Predictions}}{\text{Total Number of Predictions}} Accuracy=Total Number of PredictionsNumber of Correct Predictions

  1. 训练损失与测试损失(Training & Test Loss) :衡量模型在训练集和测试集上的损失值,使用交叉熵损失(Cross Entropy Loss)计算:

CrossEntropyLoss = − ∑ i = 1 C y i log ⁡ ( y i ^ ) \text{CrossEntropyLoss} = -\sum_{i=1}^{C} y_i \log(\hat{y_i}) CrossEntropyLoss=i=1Cyilog(yi^)

其中,y_i为实际类别的one-hot编码,hat{y_i}为模型预测的概率分布。

  1. 学习率(Learning Rate) :每个Epoch结束时记录当前学习率,以确保学习率在优化过程中动态调整。

5. 核心代码详细讲解

1. 数据预处理与加载
train_transforms = transforms.Compose([
    transforms.Resize([224, 224]),  将输入图片resize成统一尺寸224x224像素
    transforms.ToTensor(),  将PIL Image或numpy.ndarray转换为tensor,并归一化到[0,1]之间
    transforms.Normalize(  对图片的每个通道进行标准化处理
        mean=[0.485, 0.456, 0.406],  每个通道的均值
        std=[0.229, 0.224, 0.225])  每个通道的标准差
])
  • transforms.Resize([224, 224]): 将所有输入的图片统一调整到224x224的分辨率,保证模型输入尺寸一致。
  • transforms.ToTensor(): 将图像数据从PIL格式转换为Tensor格式(即张量格式),并将像素值归一化到[0, 1]范围内,为模型训练做好数据格式转换。
  • transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]): 使用给定的均值和标准差对图像的每个通道(RGB三通道)进行标准化处理。这样做能够让数据服从标准正态分布,从而提高模型的收敛速度和稳定性。
2. 自定义DenseNet结构与SE模块集成
class SE_Block(nn.Module):def init(self, ch_in, reduction=16):super(SE_Block, self).
__init__
()
        self.avg_pool = nn.AdaptiveAvgPool2d(1)  全局自适应池化,输出特征图尺寸为1x1
        self.fc = nn.Sequential(  两层全连接网络(用于通道注意力权重计算)
            nn.Linear(ch_in, ch_in // reduction, bias=False),  第一层降维
            nn.ReLU(inplace=True),  ReLU激活
            nn.Linear(ch_in // reduction, ch_in, bias=False),  第二层升维
            nn.Sigmoid()  Sigmoid激活函数,生成通道权重
        )
  • self.avg_pool = nn.AdaptiveAvgPool2d(1): 自适应全局平均池化,将输入的特征图压缩为 1x1 的大小,从而生成通道维度的全局统计量。
  • nn.Linear(ch_in, ch_in // reduction, bias=False): 使用线性变换将通道数由ch_in压缩到 ch_in / 16,降低计算量。
  • nn.ReLU(inplace=True): 使用ReLU激活函数进行非线性映射,保留重要的特征信息。
  • nn.Sigmoid(): 使用Sigmoid函数将输出映射到[0, 1]区间,用于表示每个通道的重要性权重。

通过SE模块,在卷积操作后对每个通道的重要性进行重新分配,从而提升模型的全局特征表示能力。

3. 自定义DenseNet网络结构
class DenseNet(nn.Module):def init(self, growth_rate, block_config, num_init_features=24, compression=0.5, bn_size=4, drop_rate=0,
                 num_classes=10, small_inputs=True, efficient=False):super(DenseNet, self).
__init__
()
第一层卷积层if small_inputs:
            self.features = nn.Sequential(OrderedDict([
                ('conv0', nn.Conv2d(3, num_init_features, kernel_size=3, stride=1, padding=1, bias=False)),
            ]))
  • nn.Conv2d(3, num_init_features, kernel_size=3, stride=1, padding=1, bias=False): 定义第一层卷积层,输入通道数为3(RGB三通道),输出特征通道数为 num_init_features,卷积核大小为 3x3,步长为 1,并且使用填充策略 padding=1 保持输出尺寸不变。

此处的设计考虑到输入图像可能较小,因此 small_inputs=True 时,第一层采用较小的卷积核和步长。

4. 自定义稠密层(Dense Layer)与通道注意力机制(SE Block)集成
class _DenseLayer(nn.Module):def init(self, num_input_features, growth_rate, bn_size, drop_rate, efficient=False):super(_DenseLayer, self).
__init__
()
        self.add_module('norm1', nn.BatchNorm2d(num_input_features)),
        self.add_module('relu1', nn.ReLU(inplace=True)),
        self.add_module('conv1', nn.Conv2d(num_input_features, bn_size * growth_rate,
                                           kernel_size=1, stride=1, bias=False)),
        self.add_module('norm2', nn.BatchNorm2d(bn_size * growth_rate)),
        self.add_module('relu2', nn.ReLU(inplace=True)),
        self.add_module('conv2', nn.Conv2d(bn_size * growth_rate, growth_rate,
                                           kernel_size=3, stride=1, padding=1, bias=False)),
引入SE模块增强通道注意力
        self.add_module('SE_Block', SE_Block(growth_rate, reduction=16))
        self.drop_rate = drop_rate
        self.efficient = efficient
  • self.add_module('norm1', nn.BatchNorm2d(num_input_features)): 添加第一个Batch Normalization层,用于稳定特征分布,防止梯度消失和爆炸。
  • self.add_module('conv1', nn.Conv2d(num_input_features, bn_size * growth_rate, kernel_size=1, stride=1, bias=False)): 1x1卷积层,减少计算量并进行通道变换。
  • self.add_module('conv2', nn.Conv2d(bn_size * growth_rate, growth_rate, kernel_size=3, stride=1, padding=1, bias=False)): 3x3卷积层,生成新的特征映射,并与SE模块结合,通过 SE_Block 增强通道注意力。

SE模块在DenseNet的每个稠密层中加入,使得每一层的输出特征能够被动态调整,提升对关键特征的关注度。

5. 训练与验证流程
for epoch in range(epochs):
    model.train()  设置模型为训练模式
    epoch_train_acc, epoch_train_loss = train(train_dl, model, loss_fn, optimizer)  训练一轮
    model.eval()  设置模型为评估模式
    epoch_test_acc, epoch_test_loss = test(test_dl, model, loss_fn)  在测试集上进行评估
  • model.train(): 将模型设置为训练模式,启用Dropout等正则化操作。
  • train(train_dl, model, loss_fn, optimizer): 调用自定义 train 函数,在训练集上进行一次完整的训练迭代,计算损失和准确率。
  • model.eval(): 设置模型为评估模式,关闭Dropout等操作,防止影响评估结果。
  • test(test_dl, model, loss_fn): 调用自定义 test 函数,在测试集上评估模型性能。

通过逐轮训练和评估,项目能够动态调整模型参数,并根据测试集上的表现保存最佳模型权重。

6. 模型优缺点评价

优点

  1. DenseNet与SE模块的结合:模型在DenseNet的基础上集成了SE(Squeeze-and-Excitation)模块,有效增强了模型的通道注意力机制,从而提升了特征表达能力。SE模块能够自适应地为每个通道分配权重,使模型在捕捉关键特征时表现更好。
  2. 高效的特征复用:DenseNet通过稠密连接的方式,将前一层的所有特征映射传递到后续层,减少了参数量,避免了信息丢失,同时提升了梯度传递的稳定性,减轻了梯度消失问题。
  3. 灵活的模块设计:DenseNet的各个层数、增长率、压缩率等参数可灵活配置,允许根据不同任务需求进行调整。项目中使用了自定义的Dense Layer、Transition层和SE Block,模型结构具备很强的可扩展性和自适应性。
  4. 高效内存管理:模型引入了内存优化机制(efficient memory),可以在处理大规模数据时降低内存消耗,使模型更适合在资源受限的环境中使用。

缺点

  1. 计算复杂度较高:由于DenseNet中的稠密连接会导致每层的输入特征图数量迅速增加,使得在较深网络中计算量和内存需求显著增加,不适合特别大型的数据集。
  2. SE模块可能导致延迟:虽然SE模块提高了模型性能,但在每个Dense Layer中加入SE模块会增加额外的计算开销,导致模型推理速度下降,特别是在实时应用场景中。
  3. 对数据依赖性强:模型性能依赖于输入数据的质量和多样性。在数据分布不均衡或数据量较少时,模型可能表现出过拟合问题。

改进方向

  1. 模型结构优化:可以尝试减少Dense Layer的数量或调整Dense Block与Transition Layer的排列方式,以降低模型的参数量和计算复杂度。
  2. 超参数调整:通过优化增长率(Growth Rate)、压缩率(Compression Rate)和Dropout比率来平衡模型的复杂度与性能。
  3. 数据增强策略的改进:引入更多的数据增强方法,如随机旋转、颜色扰动、CutMix等,提升模型的泛化能力,特别是在小样本数据集上的表现。

↓↓↓更多热门推荐:
基于深度学习的手势控制模型

*全部项目数据集、代码、教程进入官网

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

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

相关文章

国庆出行怎么能少了这款美食

🎈国庆出游,怎能少了白吉饼!🎉宝子们,国庆假期大家都在哪里玩耍呀?今天我必须给大家强烈安利国庆旅游必带美食 ——食家巷白吉饼。😋白吉饼看似普通,却有着独特的魅力。它的外表金黄…

pip install dlib 失败报错的解决方案

pip install dlib 失败报错: 解决方案: 我是按照下面三条指令按照就能解决问题 pip install cmake -i https://pypi.tuna.tsinghua.edu.cn/simple pip install boost -i https://pypi.tuna.tsinghua.edu.cn/simple pip install dlib -i https://p…

Stm32新建工程

库函数的开发方式。能够了解底层逻辑。 HAL库的开方式。快速上手,理解浅。 库函数的文件目录 Libraries里面就是库函数的文件 project官方实例的工程和模板,可以参考库函数 Utilities,官方在用电路测评STM32时使用的程序。 蓝色为库函数的发…

机器学习课程学习周报十五

机器学习课程学习周报十五 文章目录 机器学习课程学习周报十五摘要Abstract一、机器学习部分1. 统计推断与贝叶斯推断2. GMM和EM算法补充3. 马尔可夫链蒙特卡罗法3.1 蒙特卡罗法3.2 马尔可夫链3.3 Diffusion模型中的马尔可夫链 总结 摘要 本周的学习涵盖了统计推断和贝叶斯推断…

布匹瑕疵检测数据集 4类 2800张 布料缺陷 带标注 voc yolo

布匹瑕疵检测数据集 4类 2800张 布料缺陷 带标注 voc yolo 对应标注,格式VOC (XML),选配Y0L0(TXT) label| pic_ num| box_ _num hole: (425, 481) suspension_ wire: (1739, 1782) topbasi: (46, 46) dirty: (613&…

近期最佳港片,探讨家庭与希望,结尾让人心碎

在当下的电影环境中,香港电影正在经历一场颇具深意的转变,逐渐将目光投向普通人的生活。这种变化在《但愿人长久》中体现得淋漓尽致,影片通过一个家庭的悲欢离合,让人深刻感受到人性的复杂。吴慷仁在片中扮演的角色,无…

github项目——系统设计入门

今天的github趋势,有几个项目印象感觉很有意思,之后可能会用的上,记录一下 系统设计入门 书籍教程类项目,有中文文档,刚好需要。 https://github.com/donnemartin/system-design-primer/blob/master/README-zh-Hans.md…

从零开始讲PCIe(9)——PCIe总线体系结构

一、分层结构 PCIe定义了一个分层架构,如图2-12所示。这些层逻辑上分为两个部分,分别独立运行:一个用于发送侧,另一个用于接收侧。分层方法对硬件设计者是很有好的,因为如果逻辑划分得当,在迁移到新版本的P…

Semantic Communications With AI Tasks——面向图像分类任务的语义传输系统

论文链接: 2109.14170 (arxiv.org)https://arxiv.org/pdf/2109.14170 1. 背景 无线网络从“万物互联”向“智能互联”转变的范式变化,这与香农和韦弗关于通信演变的预言相一致。传统的无线网络侧重于信号的准确传输(技术层面)&…

《CUDA编程》5.获得GPU加速的关键

从本章起&#xff0c;将关注CDUA程序的性能&#xff0c;即执行速度 1 用CUDA事件计时 在前几章中&#xff0c;使用的是C的<time.h>库进行程序运行计时&#xff0c;CUDA也提供了一种基于CUDA event的计时方式&#xff0c;用来给一段CUDA代码进行计时&#xff0c;这里只介…

数字化营销:开启商业新征程

在当今数字化时代&#xff0c;数字化营销已成为企业竞争的关键利器。 数字化营销有着完整的体系。首先是目标设定与市场分析&#xff0c;明确如提高品牌知名度、增加销量等目标&#xff0c;并通过市场调研了解消费者需求。接着是客户洞察与定位&#xff0c;收集客户数据构建画像…

安装最新 MySQL 8.0 数据库(教学用)

安装 MySQL 8.0 数据库&#xff08;教学用&#xff09; 文章目录 安装 MySQL 8.0 数据库&#xff08;教学用&#xff09;前言MySQL历史一、第一步二、下载三、安装四、使用五、语法总结 前言 根据 DB-Engines 网站的数据库流行度排名&#xff08;2024年&#xff09;&#xff0…

面试官:MySQL 什么时候会出现死锁问题?为什么不推荐使用RR隔离级别?

欢迎关注公众号 【11来了】 &#xff0c;持续 MyBatis 源码系列内容&#xff01; 在我后台回复 「资料」 可领取编程高频电子书&#xff01; 在我后台回复「面试」可领取硬核面试笔记&#xff01; 文章导读地址&#xff1a;点击查看文章导读&#xff01; 感谢你的关注&#xff…

WindowsTerminal 美化-壁纸随机更换

目录 一. 相关网址二. 壁纸随机更换思路三. 指定 WindowsTermina 壁纸路径四. 编写脚本&#xff0c;随机替换壁纸4.1 powershell脚本4.2 .bat批处理脚本 四. 配置定时任务&#xff0c;添加触发器五. 效果 一. 相关网址 官方下载 Windows Terminal 官方Github微软商店 美化 Oh …

链式二叉树及二叉树各种接口的实现(C)

二叉树的性质 若规定根节点的层数为1&#xff0c;则一棵非空二叉树的第 i i i层上最多有 2 i − 1 2^{i-1} 2i−1个结点.若规定根节点的层数为1&#xff0c;则深度为h的二叉树的最大结点数是 2 h − 1 2^{h}-1 2h−1对任何一棵二叉树&#xff0c;如果度为0其叶结点个数为 n 0 …

Semantic Communication Meets Edge Intelligence——构造终端共享的知识图谱指导无线物联网通信中文本的传输

论文链接&#xff1a; IEEE Xplore Full-Text PDF:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp&arnumber9979702 1. 背景 随着自动驾驶、智能城市等应用的发展&#xff0c;移动数据流量将大幅增加。传统的香农信息论&#xff08;CIT&#xff09;通信系统已接近其带…

内网穿透工具ngrok

写作背景 最近在公司内购淘了个MAC电脑&#xff0c;想当个Linux服务器起Docker搭建环境用&#xff0c;现在问题是如何在公网上能访问到MAC这个机器上的资源。 之前写了一篇文章Mac当作云服务器&#xff0c;你真的会搞吗 最近想重启一下这台老伙计了&#xff0c;发现ngrok还是…

CIKM 2024 | 时空数据(Spatial-temporal)论文总结

CIKM 2024于10月21号-10月25号在美国爱达荷州博伊西举行&#xff08;Boise, Idaho, USA&#xff09; 本文总结了CIKM 2024有关时空数据&#xff08;spatial-temporal data&#xff09;的相关论文&#xff0c;主要包含交通预测&#xff0c;插补&#xff0c;事故预测&#xff0c…

计算机网络——http和web

无状态服务器——不维护客户端 怎么变成有状态连接 所以此时本地建立代理—— 若本地缓存了——但是服务器变了——怎么办&#xff1f;

CSS元素堆叠

通常我们可能会认为 HTML 网页是个二维的平面&#xff0c;因为页面中的文本、图像或者其它元素都是按照一定顺序排列在页面上的&#xff0c;每个元素之间都有一定的间隙&#xff0c;不会重叠。然而&#xff0c;实际的网页其实是三维的&#xff0c;元素之间可能会发生堆叠&#…