【论文阅读】Learning Texture Transformer Network for Image Super-Resolution

Learning Texture Transformer Network for Image Super-Resolution

  • 论文地址
  • Abstract
  • 1. 简介
  • 2.相关工作
    • 2.1单图像超分辨率
    • 2.2 Reference-based Image Super-Resolution
  • 3. 方法
    • 3.1. Texture Transformer
      • Learnable Texture Extractor 可学习的纹理提取器。
      • Relevance Embedding. 相关性嵌入。
      • Hard-Attention.
      • Soft-Attention.
    • 3.2. Cross-Scale Feature Integration
    • 3.3. 损失函数
      • Reconstruction loss.重建损失。
      • Adversarial loss. 对抗损失。
      • Perceptual loss. 知觉丧失。
    • 3.4. 实现细节
  • 4.实验
    • 4.1。数据集和指标
    • 4.2。评估
    • 4.3消融实验
  • 5. 结论

论文地址

1、论文
2、源码

Abstract

我们研究了图像超分辨率 (SR),旨在从低分辨率 (LR) 图像中恢复逼真的纹理。最近的进展是将高分辨率图像作为参考(Ref),从而可以将相关纹理转移到 LR 图像。然而,现有的 SR 方法忽略了使用注意力机制从参考图像传输高分辨率 (HR) 纹理,这在具有挑战性的情况下限制了这些方法。在本文中,我们提出了一种用于图像超分辨率 (TTSR) 的新型纹理变换器网络,其中 LR 和 Ref 图像分别被表述为变换器中的查询和键。 TTSR 由四个针对图像生成任务优化的密切相关的模块组成,包括 DNN 的可学习纹理提取器、相关嵌入模块、用于纹理传输的硬注意模块和用于纹理合成的软注意模块。这种设计鼓励跨 LR 和 Ref 图像的联合特征学习,其中可以通过注意力发现深度特征对应,从而可以传递准确的纹理特征。所提出的纹理变换器可以以跨尺度的方式进一步堆叠,从而能够从不同级别(例如,从 1 倍到 4 倍放大)恢复纹理。大量实验表明,TTSR 在定量和定性评估方面都比最先进的方法取得了显着改进。

1. 简介

图像超分辨率旨在从退化的低分辨率对应物中恢复高分辨率图像的自然和现实纹理 [12]。最近 image SR 的成功可以大大提高媒体内容的质量,从而提供更好的用户体验。例如,数码变焦移动摄像机算法和数字电视图像增强技术。此外,这项基础技术可以使广泛的计算机视觉任务受益,如医学成像[21]和卫星成像[35]。图像SR的研究通常基于两种范式进行,即单图像超分辨率(SISR)和基于参考的图像超分辨率(RefSR)。传统SISR通常会导致模糊效果,因为高分辨率(HR)纹理在退化过程中被过度破坏,无法恢复。尽管提出了基于生成对抗网络(GAN)[7]的图像SR方法来缓解上述问题,但GAN引起的幻觉和伪影进一步对图像SR任务提出了巨大的挑战。基于参考的图像超分辨率 (RefSR) 最近取得了进展,它从给定的参考图像转移 HR 纹理以产生视觉上令人愉悦的结果 [5、6、26、29、36]。然而,最先进的(SOTA)方法通常采用直接的方式来传输纹理,这可能会导致不满意的 SR 图像(如图 1 所示)。例如,郑等人。 [43] 采用基于流的方法,当面对 LR 和 Ref 图像之间的大视点变化时,通常会搜索和传输不准确的纹理(用红色表示)。张等。 [41] 采用由预训练分类模型定义的特征空间来搜索和传输 LR 和 Ref 图像之间的纹理。然而,这种高级语义特征不能有效地表示 HR 纹理,这仍然会产生令人难以置信的结果。

为了解决这些问题,我们提出了一种用于图像超分辨率(TTSR)的新型纹理变换器网络。具体来说,提出了四个针对图像生成任务优化的密切相关的模块。首先,我们提出了一个可学习的纹理提取器,其中的参数将在端到端训练期间更新。这样的设计使得 LR 和 Ref 图像的联合特征嵌入成为可能,这为在 SR 任务中应用注意力机制 [19,34,31] 奠定了坚实的基础。其次,我们提出了一个相关嵌入模块来计算 LR 和 Ref 图像之间的相关性。更具体地说,我们将从 LR 和 Ref 图像中提取的特征表示为转换器 [31] 中的查询和键,以获得硬注意图和软注意图。最后,我们提出了一个 hard-attention 模块和一个 soft-attention 模块来将 HR 特征从 Ref image 转移和融合到通过注意力图从 backbone 提取的 LR 特征中。 TTSR 的设计鼓励一种更准确的方法来搜索相关纹理并将其从 Ref 图像传输到 LR 图像。

此外,我们提出了一个跨尺度特征集成模块来堆叠纹理变换器,其中特征是跨不同的学习的缩放(例如,从 1× 到 4×)以实现更强大的特征表示。如图 1 所示,总体设计使我们的 TTSR 能够从 Ref 图像(以绿色表示)中搜索和传输相关纹理,与 SOTA 方法相比,这实现了更好的视觉效果。
本文的主要贡献是:
• 据我们所知,我们是最早将转换器架构引入图像生成任务的公司之一。更具体地说,我们提出了一种纹理转换器,其中包含四个密切相关的 SR 模块,它比 SOTA 方法有了显着改进。

• 我们提出了一种用于图像生成任务的新颖跨尺度特征集成模块,该模块使我们的方法能够通过堆叠多个纹理转换器来学习更强大的特征表示。

2.相关工作

在本节中,我们回顾了与我们的工作最相关的单图像超分辨率(SISR)和基于参考的图像超分辨率(RefSR)的先前工作。

2.1单图像超分辨率

近年来,基于深度学习的 SISR 方法比传统的非基于学习的方法取得了显着改进。 SISR 中基于深度学习的方法将此问题视为密集图像回归任务,该任务学习由 LR 和 HR 图像之间的 CNN 表示的端到端图像映射函数。Dong 等人。 [3] 提出了 SRCNN,它首先通过使用三层 CNN 来表示映射函数,将深度学习引入 SISR。董等。 [4] 通过用原始 LR 图像替换插值 LR 图像并在最后一层使用反卷积来放大特征图,进一步加快了 SR 过程。不久之后,Kim 等人。提出了 VDSR [14] 和 DRCN [15] 以及更深层的残差学习网络。施等。 [23] 用亚像素卷积层替换反卷积以减少棋盘伪影。残差块 [9] 在 SRResNet [16] 中被引入 SISR,并在 EDSR [17] 中得到改进。在残差块的帮助下,许多工作专注于设计更深或更宽的网络 [2,27,28]。张等。 [40] 和 Tong 等人。 [30] 采用密集块 [10] 来组合不同层次的特征。张等。 [39] 通过增加通道注意力来改进残差块。刘等人。 [18] 提出了一种用于图像恢复的非局部循环网络。戴等。 [2] 引入了二阶统计,用于更具辨别力的特征表示。上述方法使用均方误差(MSE)或平均绝对误差(MAE)作为忽略人类感知的目标函数。近年来,越来越多的作品以提高感知质量为目标。约翰逊等人。 [13] 将感知损失引入 SR 任务,而 SRGAN [16] 采用生成对抗网络 (GAN) [7] 并显示出视觉上令人满意的结果。 Sajjadi 等人。 [22] 使用基于 Gram 矩阵的纹理匹配损失来强制局部相似纹理,而 ESRGAN [32] 通过引入具有相对论对抗性损失的 RRDB 来增强 SRGAN。最近提出的 RSRGAN [38] 训练了一个排序器并使用排序内容损失来优化感知质量,从而实现了最先进的视觉效果。

2.2 Reference-based Image Super-Resolution

与 SISR 不同,RefSR 可以从 Ref 图像中获取更准确的细节。这可以通过多种方法来完成,例如图像对齐或补丁匹配。一些现有的 RefSR 方法 [33、36、43] 选择对齐 LR 和 Ref 图像。 Landmark [36] 通过全局配准将 Ref 图像与 LR 图像对齐以解决一个能量最小化问题。王等。 [33] 通过在特征合成之前反复应用非均匀变形来增强参考图像。 CrossNet [43] 采用光流来对齐不同比例的 LR 和 Ref 图像,并将它们连接到解码器的相应层中。然而,这些方法的性能在很大程度上取决于 LR 和 Ref 图像之间的对齐质量。此外,光流等对齐方法非常耗时,不利于实际应用。其他 RefSR 方法 [1, 41, 42] 采用“补丁匹配”方法来搜索适当的参考信息。 Boominathan 等人。 [1] 匹配 LR 和下采样参考图像的梯度特征之间的补丁。郑。等。 [42] 用卷积神经网络中的特征替换简单的梯度特征以应用语义匹配,并使用 SISR 方法进行特征合成。最近的工作 SRNTT [41] 在 LR 和 Ref 图像的 VGG [24] 特征之间应用了补丁匹配来交换相似的纹理特征。然而,SRNTT 忽略了原始特征和交换特征之间的相关性,并将所有交换特征均等地馈入主网络。为了解决这些问题,我们提出了一个纹理变换器网络,使我们的方法能够从 Ref 搜索相关纹理并将其传输到 LR图片。此外,通过使用建议的跨尺度特征集成模块堆叠多个纹理变换器,可以进一步提高我们方法的性能。

3. 方法

在本节中,我们介绍了所提出的用于图像超分辨率 (TTSR) 的纹理变换网络。在纹理变换器之上,我们提出了一个跨尺度特征集成模块(CSFI)来进一步提高模型性能。纹理转换器和 CSFI 将分别在 3.1 节和 3.2 节中讨论。一组用于优化建议网络的损失函数将在第 3.3.
在这里插入图片描述

3.1. Texture Transformer

纹理变换器纹理变换器的结构如图2所示。LR、LR↑和Ref分别表示输入图像、4×双三次上采样输入图像和参考图像。我们依次对 Ref 应用双三次下采样和上采样,并使用相同的因子 4× 以获得与 LR↑ 域一致的 Ref↓↑。纹理变换器将 Ref、Ref↓↑、LR↑ 和骨干产生的 LR 特征作为输入,输出合成的特征图,该图将进一步用于生成 HR 预测。纹理变换器中有四个部分:可学习纹理提取器(LTE)、相关嵌入模块(RE)、用于特征转移的硬注意模块(HA)和用于特征合成的软注意模块(萨)。细节将在下面讨论。

Learnable Texture Extractor 可学习的纹理提取器。

在 RefSR 任务中,参考图像的纹理提取是必不可少的,因为准确和适当的纹理信息将有助于 SR 图像的生成。我们没有使用像 VGG [24] 这样的预训练分类模型提取的语义特征,而是设计了一个可学习的纹理提取器,其参数将在端到端训练期间更新。这样的设计鼓励在 LR 和 Ref 图像之间进行联合特征学习,从而可以捕获更准确的纹理特征。纹理提取的过程可以表示为:
在这里插入图片描述

其中 LT E (·) 表示我们的可学习纹理提取器的输出。提取的纹理特征Q(查询),K(键)和V(值)表示转换器内部识别机制的三个基本元素,并将进一步用于我们的相关性嵌入模块。

Relevance Embedding. 相关性嵌入。

相关性嵌入旨在通过确定 Q 和 K 之间的相似性来嵌入 LR 和 Ref 图像之间的相关性。我们将 Q 和 K 展开成斑块,表示为 qi(i ∈ [1, HLR × WLR ]) 和 kj (j ∈ [1,HRef × WRef])。然后对于Q中的每个补丁qi和 K 中的 kj,我们通过归一化内积计算这两个补丁之间的相关性 ri,j:
在这里插入图片描述

相关性进一步用于获得hard-attention map和soft-attention map.

Hard-Attention.

我们提出了一个硬注意力模块来从 Ref 图像传输 HR 纹理特征 V。传统的注意机制对每个查询 qi 取 V 的加权和。然而,这样的操作可能会导致模糊效果,缺乏传递HR纹理特征的能力。因此,在我们的硬注意力模块中,我们只为每个查询 qi 从 V 中最相关的位置转移特征。更具体地说,我们首先计算一个硬注意力映射 H,其中第 i 个元素 hi (i ∈ [1 , HLR × WLR]) 是根据相关性 ri,j 计算的:
在这里插入图片描述

hi 的值可以被视为一个硬索引,它将 Ref 图像中最相关的位置与 LR 图像中的第 i 个位置表示不满。为了从 Ref 图像中获取转移的 HR 纹理特征 T,我们使用硬注意力图作为索引对 V 的展开斑块应用索引选择操作:
在这里插入图片描述

其中 ti 表示第 i 个位置的 T 值,该值是从 V 的第 hi 位置选择的。结果,我们获得了LR图像的HR特征表示T,该表示将进一步用于我们的软注意力模块。

Soft-Attention.

我们提出了一个软注意力模块来合成来自DNN主干的LR图像的转移HR纹理特征T和LR特征F的特征。在合成过程中,应增强相关的纹理转移,而不太相关的纹理应重新进行。为了实现这一点,从 ri,j 计算一个软注意力映射 S,以表示 T 中每个位置的转移属性特征的置信度:
在这里插入图片描述

其中 si 表示软注意图 S 的第 i 个位置。我们不是直接将注意图 S 应用到 T,而是首先将 HR 纹理特征 T 与 LR 特征 F 融合,以利用 LR 图像中的更多信息.这种融合的特征进一步逐元素乘以软注意图 S 并加回 F 以获得纹理转换器的最终输出。此操作可以表示为:
在这里插入图片描述

其中 Fout 表示合成的输出特征。Conv 和 Concat 分别表示卷积层和串联操作。运算符⊙表示特征映射之间的逐元素乘法。综上所述,纹理转换器可以有效地将相关的HR纹理特征从Ref图像转移到LR特征中,从而促进纹理生成的更精确过程。

3.2. Cross-Scale Feature Integration

我们的纹理转换器可以通过跨尺度特征集成模块以跨尺度方式进一步堆叠。该体系结构如图 3 所示。堆叠纹理变换器输出三个分辨率尺度(1×、2× 和 4×)的合成特征,从而可以将不同尺度的纹理特征融合到 LR 图像中。为了在不同尺度上学习更好的表示,受[25、37]的启发,我们提出了一个跨尺度特征集成模块(CSFI)来在不同尺度的特征之间交换信息。每次将 LR 特征上采样到下一个尺度时,都会应用 CSFI 模块。对于 CSFI 模块内的每个尺度,它通过上/下采样接收来自其他尺度的交换特征,然后在通道维度中进行级联操作。然后卷积层将特征映射到原始数量的通道中。在这样的设计中,从堆叠纹理变换器传输的纹理特征在每个尺度上交换,从而实现更强大的特征表示。这种跨尺度的特征集成模块进一步提高了我们方法的性能。
在这里插入图片描述

3.3. 损失函数

在我们的方法中有 3 个损失函数。总体损失可以解释为:
在这里插入图片描述

Reconstruction loss.重建损失。

第一个损失是重建损失:
在这里插入图片描述

其中 (C, H, W ) 是 HR 的大小。我们利用 L1 损失,与 L2 损失相比,它已被证明在性能上更敏锐并且更容易收敛。

Adversarial loss. 对抗损失。

生成对抗网络 [7] 被证明可以有效地生成清晰且视觉上令人满意的图像。这里我们采用 WGAN-GP [8],它提出了梯度范数的惩罚来代替权重裁剪,从而使训练更稳定,性能更好。这种损失可以解释为:
在这里插入图片描述

Perceptual loss. 知觉丧失。

知觉丧失已被证明有助于改善视觉质量,并且已被用于[13,16,22,41]。感知损失的关键思想是增强预测图像和目标图像之间特征空间的相似性。在这里,我们的知觉损失包含两部分:
在这里插入图片描述

其中第一部分是传统的感知损失,其中 CjHjWjφvgg(·) 表示第 i 层 VGG19 的特征图,andi(Ci, Hi, Wi) 表示特征图在。ISR 是预测的 SR 图像。感知损失的第二部分是转移感知损失,其中φlte(·)表示从所提出的LTE的第j-j层中提取的纹理特征图,(Cj,Hj,Wj)表示该层的形状。T 是图 2 中转移的 HR 纹理特征。这种转移感知损失约束预测的SR图像具有与转移的纹理特征T相似的纹理特征,这使得我们更有效地转移Ref纹理的方法。

3.4. 实现细节

可学习的纹理提取器包含 5 个卷积层和 2 个池化层,输出三种不同尺度的纹理特征。为了减少时间和 GPU 内存的消耗,相关性嵌入仅应用于最小的规模,并进一步传播到其他规模。对于鉴别器,我们采用与SRNTT [41]相同的网络,并删除所有BN层。在训练,我们通过随机和垂直翻转来增强训练图像,然后随机旋转 90◦、180◦ 和 270◦。每个小批次包含 9 个大小为 40 × 40 的 LR 补丁以及 9 个大小为 160 × 160 的 HR 和 Ref 补丁。Lrec、Ladv 和 Lper 的权重系数分别为 1、1e-3 和 1e-2。使用 β1 = 0.9、β2 = 0.999 和 ǫ =1e-8 的亚当优化,学习率为 1e-4。我们首先预热网络 2 个仅应用 Lrec 的时期。之后,所有损失都涉及训练另外 50 个纪元。

4.实验

4.1。数据集和指标

为了评估我们的方法,我们在最近提出的 RefSR 数据集 CUFED5 [41] 上训练和测试我们的模型。 CUFED5 中的训练集包含 11,871 对,每对由一个输入图像和一个参考图像组成。 CUFED5 测试集中有 126 张测试图像,每张图像附有 4 张不同相似度的参考图像。为了评估在 CUFED5 上训练的 TTSR 的泛化性能,我们在 Sun80 [26]、Urban100 [11] 和 Manga109 [20] 上额外测试了 TTSR。 Sun80 包含 80 张自然图像,每张都与几张参考图像配对。对于 Urban100,我们使用与 [41] 相同的设置将其 LR 图像视为参考图像。由于 Urban100 都是具有强自相似性的建筑物图像,因此这种设计实现了显式的自相似搜索和传输过程。对于同样缺少参考图像的 Manga109,我们随机抽取该数据集中的 HR 图像作为参考图像。由于这个数据集是由直线、曲线和平坦的彩色区域构成的,这些都是常见的模式。即使使用随机选取的 HR Ref 图像,我们的方法仍然可以利用这些常见模式并取得良好的效果。 SR 结果在 YCbCr 空间的 Y 通道上的 PSNR 和 SSIM 上进行评估。

4.2。评估

为了评估 TTSR 的有效性,我们将我们的模型与其他最先进的 SISR 和 RefSR 方法进行了比较。 SISR 方法包括 SRCNN [3]、MDSR [17]、RDN [40]、RCAN [39]、SRGAN [16]、ENet [22]、ES-RGAN [32]、RSRGAN [38],其中 RCAN 有近年来在 PSNR 和 SSIM 上都取得了最先进的性能。 RSRGAN 被认为可以实现最先进的视觉质量。至于 RefSR 方法,CrossNet [43] 和 SRNTT [41] 是最近最先进的两种方法,它们明显优于以前的 RefSR 方法。所有实验都是在 LR 和 HR 图像之间以 4 倍的比例因子进行的。

定量评估。为了公平比较,我们按照 SRNTT [41] 中的设置来训练所有方法在 CUFED5 训练集上,并在 CUFED5 测试集、Sun80、Urban100 和 Manga109 数据集上进行测试。对于 SR 方法,有一个事实是,使用对抗性损失进行训练通常可以获得更好的视觉质量,但会减少 PSNR 和 SSIM 的数量。因此,我们训练了我们模型的另一个版本,该版本仅针对名为 TTSR-rec 的重建损失进行了优化,以便在 PSNR 和 SSIM 上进行公平比较。表 1 显示了定量评估结果。红色数字表示最高分,而蓝色数字表示第二高分。如比较结果所示,TTSR-rec 在所有四个测试数据集上都明显优于最先进的 SISR 方法和最先进的 RefSR 方法。在旨在通过对抗损失获得更好视觉质量的方法中,我们的模型在 Sun80 和 Manga109 数据集上仍然具有最佳性能。在另外两个数据集 CUFED5 和 Urban100 上,我们的模型实现了与最先进模型相当的性能。定量比较结果证明了我们提出的 TTSR 优于最先进的 SR 方法。
在这里插入图片描述

定性评估。如图 5 所示,我们的模型在视觉质量上也取得了最佳性能。TTSR 可以从参考图像传输更准确的 HR 纹理以生成有利的结果,如图 5 中的前三个示例所示。即使参考图像不是与输入图像全局相关,我们的 TTSR 仍然可以从局部区域提取更精细的纹理并将有效纹理转移到预测的 SR 结果中,如图 5 中的最后三个示例所示。进一步验证我们的应用程序的卓越视觉质量proach,我们进行了一项用户研究,其中将 TTSR 与四种 SOTA 方法进行了比较,包括 RCAN [39]、RSR-GAN [38]、CrossNet [43] 和 SRNTT [41]。该用户研究涉及 10 个主题,在 CUFED5 测试集上收集了 2,520 票。对于每个比较过程,我们为用户提供两张图像,其中包括一张 TTSR 图像。要求用户选择视觉质量更高的那个。图 4 显示了我们的结果用户研究,其中 Y 轴上的值表示更喜欢 TTSR 而不是其他方法的用户年龄百分比。正如我们所看到的,所提出的TTSR明显优于其他方法,超过90%的用户投票支持我们的方法,这验证了TTSR良好的视觉质量。
在这里插入图片描述

在这里插入图片描述

4.3消融实验

5. 结论

本文提出了一种新型的图像超分辨率纹理转换器网络(TTSR),将HR纹理从Ref图像转换为LR图像。所提出的纹理转换器由一个可学习的纹理提取器组成,该提取器学习联合特征嵌入以进行进一步的衰减计算,以及两个基于注意力的模块,该模块从Ref图像中传输HR纹理。此外,所提出的纹理转换器可以与所提出的CSFI模块以跨尺度的方式堆叠,以学习更强大的特征表示。广泛的实验表明,我们的TTSR在定量和定性评估方面优于最先进的方法。将来,我们将进一步将提出的纹理转换器扩展到一般的图像生成任务。

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

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

相关文章

nginxconfig.io项目nginx可视化配置--搭建-视频

项目地址 https://github.com/digitalocean/nginxconfig.io搭建视频 nginxconfig.io搭建 nginxconfig.io搭建 展示效果 找到这个项目需要的docker镜像,有项目需要的node的版本 docker pull node:20-alpine运行这个node容器,在主机中挂载一个文件夹到容器中 主机&a…

MATLAB 变换

MATLAB 变换(Transforms) MATLAB提供了用于处理诸如Laplace和Fourier变换之类的变换的命令。转换在科学和工程中用作简化分析和从另一个角度查看数据的工具。 例如,傅立叶变换允许我们将表示为时间函数的信号转换为频率函数。拉普拉斯变换使…

微搭低代码入门03页面管理

目录 1 创建页面2 页面布局3 页面跳转总结 上一篇我们介绍了应用的基本操作,掌握了应用的概念后接着我们需要掌握页面的常见操作。 1 创建页面 打开应用的编辑器,在顶部导航条点击创建页面图标 在创建页面的时候可以从空白新建,也可以使用模…

screen

sLinux:screen命令——命令行的窗口操作_screen命令关闭窗口-CSDN博客文章浏览阅读4.2k次。功能:管理命令行终端切换的软件,常用于远程连接Linux过程中,同时使用多个命令行窗口。在窗口运行中的程序,记住窗口名字前面的…

nodejs实战——搭建websocket服务器

本博客主要介绍websocket服务器库安装,并举了一个简单服务器例子。 服务器端使用websocket需要安装nodejs websocket。 cd 工程目录 # 此刻我们需要执行命令: sudo npm init上述命令创建package.json文件,系统会提示相关配置。 我们也可以使…

一款开源的原神工具箱,专为现代化 Windows 平台设计,旨在改善桌面端玩家的游戏体验

Snap.Hutao 胡桃工具箱是一款以 MIT 协议开源的原神工具箱,专为现代化 Windows 平台设计,旨在改善桌面端玩家的游戏体验。通过将既有的官方资源与开发团队设计的全新功能相结合,提供了一套完整且实用的工具集,且无需依赖任何移动设…

im即时通讯源码/仿微信app源码+php即时通讯源码带红包+客服+禁言等系统php+uniapp开发

即时通讯(IM)系统是现代互联网应用中不可或缺的一部分,它允许用户进行实时的文本、语音、视频交流。随着技术的发展,IM系统的功能越来越丰富,如红包、客服、禁言等。本文将探讨如何使用PHP语言开发一个功能完备的即时通讯系统,包括…

如何让 PDF 书签从杂乱无序整洁到明丽清新

1、拉取书签(详细步骤看文末扩展阅读) 原状态 —— 杂乱无序 自动整理后的状态 —— 错落有致,但摩肩接踵 2、开始整理 全选自动整理后的书签,剪切 访问中英混排排版优化 - 油条工具箱 https://utils.fun/cn-en 1 粘贴 → 2 …

Linux下安装snaphu

1、官网下载安装包 2、解压,移动文件夹到/usr/local/下 3、在/usr/local/下创建man,在man下创建man1文件夹 4、进入到snaphu的src文件夹里,执行sudo make,如果报错 在这个 Makefile 中,-arch x86_64 是 macOS 特定的…

最近惊爆谷歌裁员

Python团队还没解散完,谷歌又对Flutter、Dart动手了。 什么原因呢,猜测啊。 谷歌裁员Python的具体原因可能是因为公司在进行技术栈的调整和优化。Python作为一种脚本语言,在某些情况下可能无法提供足够的性能或者扩展性,尤其是在…

[Unity常见小问题]打包ios后无法修改模型透明度

问题 在Editor下可以使用如下代码去修改模型的材质的透明度,但是打包ios后无法对透明度进行修改且没有任何warning和error using System.Collections; using System.Collections.Generic; using UnityEngine;public class NewBehaviourScript : MonoBehaviour {[R…

2010-2022年上市公司彭博ESG披露评分、分项得分数据

2010-2022年上市公司彭博ESG披露评分、分项得分数据 1、时间:2010-2022年 2、来源:Bloomberg ESG 指数 3、指标:股票代码、股票简称、年份、ESG披露评分、环境披露评分、社会信息披露评分、治理披露评分 4、范围:上市公司 5、…

RocketMQ SpringBoot 3.0不兼容解决方案

很多小伙伴在项目升级到springBoot3.0版本以上之后,整合很多中间件会有很多问题,下面带小伙伴解决springBoot3.0版本以上对于RocketMQ 不兼容问题 报错信息 *************************** APPLICATION FAILED TO START *************************** Des…

基于alpha shapes的边缘点提取(matlab)

1、原理介绍 由Edelsbrunner H提出的alpha shapes算法是一种简单、有效的快速提取边界点算法。其克服了点云边界点形状影响的缺点,可快速准确提取边界点。如下图所示,对于任意形状的平面点云,若一个半径为a的圆,绕其进行滚动&…

第五十三节 Java设计模式 - 工厂模式

Java设计模式 - 工厂模式 工厂模式是一种创建模式,因为此模式提供了更好的方法来创建对象。 在工厂模式中,我们创建对象而不将创建逻辑暴露给客户端。 例子 在以下部分中,我们将展示如何使用工厂模式创建对象。 由工厂模式创建的对象将是…

Fireworks AI和MongoDB:依托您的数据,借助优质模型,助力您开发高速AI应用

我们欣然宣布 MongoDB与 Fireworks AI 正携手合作 让客户能够利用生成式人工智能 (AI) 更快速、更高效、更安全地开展创新活动 Fireworks AI由 Meta旗下 PyTorch团队的行业资深人士于 2022 年底创立,他们在团队中主要负责优化性能、提升开发者体验以及大规模运…

解决python/pycharm中import导入模块时报红却能运行的问题

一、问题 导入时报红,如下 二、解决 右键单击项目,将项目Mark Directory as→Sources Root 三、效果 报红消失 学习导航:http://www.xqnav.top

TCP的三次握手过程

TCP是面向连接的、可靠的、基于字节流的传输层通信协议。 TCP是面向连接的协议,所以使用 TCP前必须先建立连接,而建立连接是通过三次握手来进行的。 TCP包头结构 在讲解三次握手的过程之前,我们先来看一下 TCP包的结构: TCP包…

MybatisPlus也能轻松生成三层架构代码?

👩🏽‍💻个人主页:阿木木AEcru 🔥 系列专栏:《Docker容器化部署系列》 《Java每日面筋》 💹每一次技术突破,都是对自我能力的挑战和超越。 目录 一、前言三层架构的流程图为什么使用…

Linux:进程信号(一)信号的产生

目录 一、信号是什么? 二、Linux信号 三、信号处理方式 四、信号的产生 1、 通过终端按键产生信号 2、调用系统函数向进程发信号 3、 硬件异常产生信号 一、信号是什么? 在生活中,有许多信号,比如红绿灯,下课铃声…