【论文阅读】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在定量和定性评估方面优于最先进的方法。将来,我们将进一步将提出的纹理转换器扩展到一般的图像生成任务。
相关文章:
【论文阅读】Learning Texture Transformer Network for Image Super-Resolution
Learning Texture Transformer Network for Image Super-Resolution 论文地址Abstract1. 简介2.相关工作2.1单图像超分辨率2.2 Reference-based Image Super-Resolution 3. 方法3.1. Texture TransformerLearnable Texture Extractor 可学习的纹理提取器。Relevance Embedding.…...
读字库写FM24C04
/*PCB机板增加读写24C64函数PAST 2017 12 26 08:10 CODE 7382*/ /*按11键进入手动选择,按12键进入参数设定界面 按1存1 2存2 3存3 15存0 16存1236 17读EEPROM显示正确 L1008 13775061792 ******/ #include <reg52.h>…...
boost::asio::ip::tcp::socket set_option
Boost asio 官方教程简介_asio::write-CSDN博客 boost::asio::ip::tcp::socket 是一个用于异步I/O操作的类,它是Boost.Asio库的一部分,专门用于处理TCP套接字。 以下是一个简单的使用 boost::asio::ip::tcp::socket 的例子,这个例子展示了如…...
华为鸿蒙HarmonyOS应用开发者高级认证答案
判断 1只要使用端云一体化的云端资源就需要支付费用(错) 2所有使用Component修饰的自定义组件都支持onPageShow,onBackPress和onPageHide生命周期函数。(错) 3 HarmonyOS应用可以兼容OpenHarmony生态(对…...
ElasticSearch 与 OpenSearch:拉开性能差距
Elasticsearch 与 OpenSearch:扩大性能差距 对于任何依赖快速、准确搜索数据的组织来说,强大、快速且高效的搜索引擎是至关重要的元素。对于开发人员和架构师来说,选择正确的搜索平台可以极大地影响您的组织提供快速且相关结果的能力。在我们…...
Java构造器
构造器 无参构造器有参构造器构造方法VS成员方法总结 概念:也称构造方法、构造函数。作用是构造出来一个类的实例,确保对象得到初始化。 格式: 权限修饰符 类名(无参/有参){ }。 分类: 带参数:有参构造器不带参数&am…...
TiDB系列之:使用TiUP部署TiDB集群最新版本,同时部署TiCDC的详细步骤
TiDB系列之:使用TiUP部署TiDB集群最新版本,同时部署TiCDC的详细步骤 一、部署TiDB集群二、准备环境三、安装 TiUP四、安装TiUP cluster组件五、初始化包含TiCDC的TiDB集群拓扑文件六、检查和修复集群存在的潜在风险七、查看可以安装的tidb版本八、部署 TiDB 集群:九、查看集…...
【经典算法】LeetCode 72. 编辑距离(Java/C/Python3/Go实现含注释说明,中等)
题目描述 给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数。 你可以对一个单词进行如下三种操作: 插入一个字符删除一个字符替换一个字符 原题:LeetCode 72 思路及实现 方式一:动态规划 思路…...
webstorm 常用插件
安装插件步骤: 打开软件,文件 -- 设置-- 插件 -- 输入插件名称 -- 安装 代码截图: code screenShots 先选中代码,按 ctrl shift alt a,就可截取选中的代码颜色注释: comments highlighter 对注释的文字改变颜色高亮成对符号: h…...
clang:在 Win10 上编译 MIDI 音乐程序(二)
先从 Microsoft C Build Tools - Visual Studio 下载 1.73GB 安装 "Microsoft C Build Tools“ 访问 Swift.org - Download Swift 找到 Windows 10:x86_64 下载 swift-5.10-RELEASE-windows10.exe 大约490MB 建议安装在 D:\Swift\ ,安装后大约占…...
【redis】Redis数据类型(三)List类型
目录 List类型介绍特点 List数据结构附:3.2以前的版本(介绍一下压缩列表和双向链表)压缩列表ZipList双向链表LinkedList 常用命令lpush示例 lpushx示例 rpush示例 rpushx示例 LPOP示例 RPOP示例 BLPOP非阻塞行为阻塞行为相同的 key 被多个客户端同时阻塞在 MULTI/EX…...
Java面试题:多线程2
如何停止正在运行的线程 1,使用退出标志,使线程正常退出(run方法中循环对退出标志进行判断) 2,使用stop()方法强行终止(不推荐) 3,调用interrupt()方法中断线程 打断阻塞线程(sleep,wait,join),线程会抛出InterruptedException异常 打断正常的线程,可以根据打断状态来标记…...
T型槽地轨承载力是如何连接整个制造过程的强力桥梁(北重公司设计)
T型槽地轨承载力的定义和计算 T型槽地轨是一种用于工业设备运输和装配的关键组件。它由世界上各行各业的生产商广泛采用,其有效的承载力使其成为连接整个制造过程的强力桥梁。本文将介绍T型槽地轨的承载力以及相关的设计要点和应用。 承载力的定义和计算 承载力是…...
【Numpy】一文向您详细介绍 np.linspace()
【Numpy】一文向您详细介绍 np.linspace() 🌈 欢迎莅临我的个人主页👈 这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地!🎇 🎓 博主简介:985高校的计算机专业人士,热衷于分享技术见…...
VMware虚拟网卡网络适配器出现黄色感叹号
问题发生:VMware在使用Ubuntu的过程中突然卡死,强制关闭开启后就发生了网络无法连接 找到电脑的设备管理发现VMware的适配器出现黄色感叹号 解决方法: 下载软件ccleaner 扫描问题,懒得去找就修复了所有的问题 最后发现适配器…...
论生命价值
我们该如何定义一个人的生命价值,这是一个十分值得我们深思的问题,而谈论到生命的价值,我们先从非人的东西去谈论它的价值,从我们作为人的角度去思考价值,一个东西对我们有用,这个东西能够让我们的主观上的…...
基于Springboot的民航网上订票系统(有报告)。Javaee项目,springboot项目。
演示视频: 基于Springboot的民航网上订票系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构…...
ubuntu开启message文件
环境:ubuntu 20.04 1、首先需要修改 /etc/rsyslog.d/50-default.conf 文件;源文件中message被注释,如下图: 2、打开注释: 3、重启服务 systemctl restart rsyslog.service 如此即可!...
ISIS的基本概念
1.ISIS概述 IS-IS是一种链路状态路由协议,IS-IS与OSPF在许多方面非常相似, 例如运行IS-IS协议的直连设备之间通过发送Hello报文发现彼此,然后建立邻接关系,并交互链路状态信息。 CLNS由以下三个部分组成: CLNP…...
Vue 工程化开发入门
Vue开发的两种方式: 核心包传统开发模式:基于html/css/js文件,直接引入核心包,开发Vue工程化开发模式:基于构建工具的环境中开发Vue 这里选择Vue cli脚手架 进行开发,搜索教程自行下载。 组件化开发 一个页…...
车牌号识别系统:PyQT5+QT Designe+crnn/PaddleOCR+YOLO+OpenCV矫正算法。
PyQT5&QT Designecrnn/PaddleOCRYOLO传统OpenCV矫正算法。可视化的车牌识别系统项目。 车牌号识别系统 项目绪论1.项目展示2.视频展示3.整体思路 一、PyQT5 和 QT Designer1.简介2.安装3.使用 二、YOLO检测算法三、OpenCV矫正算法四、crnn/PaddleOCR字符识别算法五、QT界面…...
【基于MAX98357的Minimax(百度)长文本语音合成TTS 接入教程】
【基于MAX98357的Minimax(百度)长文本语音合成TTS 接入教程】 1. 前言2. 先决条件2.1 硬件准备2.2 软件准备2.3 接线 3. 核心代码3.1 驱动实现3.2 代码解析 4. 播放文本5. 结论 视频地址: SeeedXIAO ESP32S3 Sense【基于MAX98357的Minimax&am…...
秋招后端开发面试题 - JVM底层原理
目录 JVM底层原理前言面试题Java 对象的创建过程?什么是指针碰撞?什么是空闲列表?/ 内存分配的两种方式?JVM 里 new 对象时,堆会发生抢占吗?JVM 是怎么设计来保证线程安全的?/ 内存分配并发问题…...
VUE2从入门到精通(一)
**************************************************************************************************************************************************************************** 1、课程概述 【1】前置储备:HTMLCSSJS、WebAPI、Ajax、Node.js 【2】1天&…...
cmake进阶:文件操作之写文件
一. 简介 cmake 提供了 file() 命令可对文件进行一系列操作,譬如读写文件、删除文件、文件重命名、拷贝文件、创建目录等等。 接下来 学习这个功能强大的 file() 命令。 本文学习 CMakeLists.txt语法中写文件操作。 二. cmake进阶:文件操作之写文件…...
ubuntu 安装单节点HBase
下载HBase mkdir -p /home/ellis/HBase/ cd /home/ellis/HBase/ wget https://downloads.apache.org/hbase/2.5.8/hbase-2.5.8-bin.tar.gz tar -xvf hbase-2.5.8-bin.tar.gz安装java jdk sudo apt install openjdk-11-jdksudo vim /etc/profileexport JAVA_HOME/usr/lib/jvm/…...
HTTP 多个版本
了解一下各个版本的HTTP。 上个世纪90年代初期,蒂姆伯纳斯-李(Tim Berners-Lee)及其 CERN的团队共同努力,制定了互联网的基础,定义了互联网的四个构建模块: 超文本文档格式(HTML) …...
【DevOps】探索Linux命令行世界:深入了解Shell的力量
目录 一、Linux Shell 详细介绍 1. Shell基础概念 2. Shell的功能特性 3. 常用Shell命令与技巧 4. 高级Shell特性与实践 二、常见的Shell及其比较 1. Bash (Bourne Again SHell) 2. Zsh (Z Shell) 3. Fish (Friendly Interactive SHell) 4. Ksh (Korn SHell) 5. Csh …...
互斥量的使用
文章目录 前言一、互斥量与二进制信号量二、优先级反转与优先级继承三、递归锁 前言 通过学习上一章互斥量理论基础,这一章我们来做一些实验进行验证。 一、互斥量与二进制信号量 互斥量使用和二进制信号量类似 互斥量有优先级继承功能,二进制信号量没有…...
关于面试真题的压迫
1.请描述一下您在使用JavaScript进行DOM操作时,如何提高页面性能和用户体验? 使用事件委托:在父元素上监听事件,而不是为每个子元素都添加事件监听器。这样可以减少事件处理程序的数量,提高性能。 缓存DOM查询&#x…...
临安网站设计/潍坊网站开发公司
min: function (value) {if(Object.is(value.min, NaN)){return 3000}else{if(value.min>3000){return 3000}else{return value.min}} }...
制作静态网站制作/百度统计api
我有一个代码,它设置h1和视频的src动态检查数据库中的变化与Ajax长轮询。在我的代码中,例如,如果我的数据库列中的值是1,那么h1将打印这是1,视频将播放视频1.否则,h1将显示这是0和视频将显示视频0. h1更新它…...
网站运营部的职责/腾讯朋友圈广告怎么投放
(这是一篇迟来的文章,从3月份计划到成文花了5个月多……以后需要避免这样的低效率。)之前写第一篇文章时,只是想试试在Spring中使用Scala。但现在随着工作的需要,已经决定在应用层基于Spring boot进行开发。后面的数据服务和数据整合部分将采…...
坪地网站建设好么/自己建网站需要钱吗
最近为我们的VPN添加访问控制功能,操作很简单,保存一个IP/MASK列表,到来的数据包的目标IP地址如果不在这个列表中,便丢弃。由于在逻辑上和路由查找很类似,在实现上我们移植了Linux内核的路由查找的整套算法,…...
顶尖的郑州网站建设/优化网站排名解析推广
假定需要被映射的源目录所在的机器为PC1:192.168.1.102 需要映射的机器为PC2:192.168.1.105 PC1需要: 1.启动NFS服务(/etc/init.d/nfs start ) 2.在/etc/exports文件内添加映射权限(被映射的目录和可以允许的地址): /home/dir 192.168.0.*&…...
网站内容排版设计模板/广点通官网
Red Hat Linux enterprise 5start httpd faildlinux httpd: httpd 启动 failed我在虚拟机里面遇到此问题,试了很多方法都没法启动,后来发现,问题出在/etc/httpd/conf/目录里面有一个叫httpd.conf的文件。在同一目录下还有另外一个叫httpd.con…...