Benchmarking Chinese Text Recognition: Datasets, Baselines| OCR 中文数据集【论文翻译】

news2024/11/15 8:10:33

基础信息如下

1-0

  • https://arxiv.org/pdf/2112.15093.pdf
  • https://github.com/FudanVI/benchmarking-chinese-text-recognition

Abstract

深度学习蓬勃发展的局面见证了近年来文本识别领域的迅速发展。然而,现有的文本识别方法主要针对英文文本。作为另一种广泛使用的语言,中文文本识别在各个领域都有广泛的应用市场。根据我们的观察,我们认为中文文本识别受到关注不足的原因在于缺乏合理的数据集构建标准、统一的评估协议以及现有基准结果。为了弥补这一空白,我们从公开的竞赛、项目和论文中手动收集了中文文本识别数据集。根据应用场景,我们将收集到的数据集分为场景、网络、文档和手写数据集四类。此外,我们在中文文本识别中规范了评估协议。通过统一的评估协议,我们在收集到的数据集上评估了一系列具有代表性的文本识别方法,以提供基准结果。实验结果表明,由于中文文本的特点与拉丁字母有很大不同,基准方法在中文文本识别数据集上的表现不如英文数据集。此外,我们观察到通过引入基于部首级别的监督作为辅助任务,可以进一步提高基准方法的性能。The code and datasets are made publicly available at https://github.com/FudanVI/benchmarking-chinese-text-recognition

1 Introduction

近年来,文本识别因其在自动驾驶[1, 2]、文件检索[3, 4]、签名识别[5, 6]等诸多领域的广泛应用,受到了广泛关注。然而,现有的文本识别方法主要集中在英文文本上[7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18],却忽视了中文文本识别(CTR)这个巨大的市场。具体来说,中文是全球使用人数最多的语言,拥有13.1亿的使用者,这意味着中文文本识别及其相关任务必然会对这一人群产生重要影响。

根据我们的观察,我们总结了中文文本识别关注度不足的三个潜在原因:1)缺乏合理的数据集构建标准。理想情况下,基于给定的四边形框,我们可以沿着注释点裁剪文本区域,然后将其矫正为水平方向的图像,与那些直接使用最小外接水平框的方法相比,这可以有效地消除无用的背景区域。因此,不同的裁剪方法会导致不公平的比较。此外,从不同环境收集的数据集在外观上显示出很大的差异。找到合理的分割策略对于更有效的研究也是有益的。因此,应考虑数据集构建的标准。2)缺乏统一的评估协议。通常,在评估英文文本数据集中的识别模型时,研究人员通常默认将大写转换为小写。然而,对于中文文本识别,目前不存在任何统一的评估协议。例如,研究人员可能会感到困惑,是否应将全角字符和半角字符、简化字符和繁体字符视为相同字符。此外,评估指标(如归一化编辑距离和准确率)在中文文本识别论文中也存在不一致之处。因此,迫切需要统一的评估协议,以公平地评估中文文本识别方法。3)缺乏现有基准方法的实验结果。现有的文本识别方法主要在英文文本数据集上进行评估,如IIIT5K [19]、IC03 [20]、IC13 [21]等。尽管少数方法尝试在中文数据集上进行实验,但相应论文中未明确解释数据集构建的细节,这使得其他研究人员难以将其用作中文文本识别的基准。

1-16

在本论文中,我们旨在构建一个中文文本识别基准,以填补这一空白。我们首先从公开竞赛、论文和项目中获取了现有的中文文本识别数据集,分为场景、网络、文档和手写四个类别(每个数据集的一些示例见图1)。我们还通过人工校准每个类别的可识别性,证明了数据集构建的合理性。然后,我们手动将每个数据集合理地划分为训练集、验证集和测试集。验证集旨在公平比较现有方法,即确保基于验证集选择最佳超参数,以避免测试集导向的调整。此外,我们在收集的数据集上复现了一些代表性的文本识别方法的结果,作为基准。实验结果表明,一些最先提出用于英文文本的SOTA方法在中文文本识别数据集上的表现不如在英文数据集上。通过分析,一个可能的原因是中文文本的某些特点对现有方法构成了障碍。鉴于中文字符的复杂内部结构,我们引入了基于部首级别的多任务监督以实现更好的识别。总体而言,我们的贡献可以列举如下:

  • 我们手动从公开的竞赛、论文和项目中收集了中文文本识别数据集,然后将它们分为四个类别,即场景、网络、文档和手写数据集。我们进一步将每个数据集合理地划分为训练、评估和测试集。
  • 我们规范了评估协议,以公平地比较现有的文本识别方法。
  • 基于收集到的数据集和规范的评估协议,我们重新复现了一系列基准方法的结果,然后详细分析了基准方法的性能。
  • 我们在中文文本识别中引入了基于部首级别的监督,以普遍提高现有基于注意力的识别器的性能。

2 预备知识

1-2

2.1 汉字的分层表示

在这里,我们介绍了汉字的三种表示方式(见图2(a)中的示例“奇”),即字符级别、部首级别和笔画级别。

字符级别。根据中国国家标准GB18030-2005,汉字的总数为70,244个,其中3,755个字符是一级常用字符。

部首级别。根据Unicode汉字结构标准,有12种基本部首结构(见图2(b)),以及514个一级常用汉字的部首。对于这3,755个常用汉字,部首级别的表示可以有效地将字母表的大小从3,755减小到526。

笔画级别。根据Unicode汉字数据库,每个汉字可以分解为一系列笔画。有五种基本笔画类别(如横、竖、撇、捺和折),每种类别都包含几个实例(见图2(c))。

2.2 中文文本的特点

2-4

社区中公认中文文本相对于英文文本更难识别[22, 23]。为了探索其中的内在原因,我们在这里分析了中文文本与英文文本不同的特点:

  1. 大量的字符。根据国家标准GB18030-2005,汉字的数量为70,244个(包括3,755个常用的一级字符)。这比英文字符的规模大得多,后者只包含26个大写字母和26个小写字母(见图3(a))。一方面,进行大规模的分类本质上是一项困难的任务[24]。另一方面,在对中文文本识别数据集进行实验时,识别器很可能会遇到具有挑战性的零样本问题,即待测试的字符可能在训练集中不存在。
  2. 相似的外观。与英文字母相比,存在相似外观的大量汉字(见图3(b))。例如,“戌”和“戍”的区别仅在于一个微小的笔画。即使对人眼来说也很难区分,这确实给现有的文本识别方法带来了负担。
  3. 复杂的顺序模式。我们观察到现有的英文基准中大多数样本都是在单词级别上的。由于两个英文单词之间有空格,人们在标注过程中往往会将它们分开以进行检测。此外,在英文单词内部存在固有的统计模式(例如,“abl”更有可能跟随“e”),因此有助于识别器更好地捕捉顺序模式。相反,中文文本更有可能以短语或句子的形式出现。在这种情况下,中文字符之间存在复杂的依赖关系,涉及词性等(见图3(c)),这确实使识别器学习顺序模式变得困难。
  4. 常见的竖排文本。与英文文本相比,由于自然场景中常见的传统对联或招牌,中文文本更有可能出现竖排。相反,由于人们固有的阅读习惯,英文中很少有竖排文本(见图3(d))。
  5. 复杂的内部结构。如2.1中介绍的,与英文中的单组分字符不同,大部分中文字符是多组分的(见图2(a)),即每个中文字符可以分解为几个按部首结构组织的部首。更复杂的内部结构使得中文字符的分类变得更加困难。

3 Datasets

3.1 数据集的详细信息

场景数据集。从竞赛、论文和项目中,我们得到了一系列场景数据集,包括 RCTW [25]、ReCTS [26]、LSVT [27]、ArT [28] 和 CTW [29]。各数据集的详细信息如下:

  • RCTW [25]:提供了来自自然场景的12,263张标注的中文文本图像。我们从训练集中获得了44,420张文本图像,用于我们的基准。由于测试集的文本标签不可用,我们没有使用 RCTW 的测试集。
  • ReCTS [26]:提供了25,000张标注的街景中文文本图像,主要来自招牌。我们仅使用训练集,并总共裁剪了107,657个文本样本用于我们的基准。
  • LSVT [27]:这是一个大规模的中英文场景文本数据集,提供了50,000个完全标注的样本(多边形框和文本标签),以及400,000个部分标注的样本(每个图像仅一个文本实例)。我们仅使用完全标注的训练集,并从中裁剪了243,063张文本图像用于我们的基准。
  • ArT [28]:其中包含自然场景中采集的具有各种文本布局(如旋转文本和弯曲文本)的文本样本。在这里,我们从训练集中获得了49,951张裁剪的文本图像,并将其用于我们的基准。
  • CTW [29]:它包含了30,000张街景图像,具有丰富的多样性,包括凸起文本、遮挡文本、光线不足的文本等。此外,它不仅提供了字符框和标签,还提供了字符的属性,如背景复杂度、外观等。在这里,我们从训练集和测试集中共裁剪了191,364张文本图像。

1-5

我们将上述所有数据集组合在一起,总共得到了636,455个文本样本。我们对这些样本进行随机洗牌,并按8:1:1的比例划分,得到了509,164个样本用于训练,63,645个样本用于验证,以及63,646个样本用于测试。

Web dataset:为了收集网络数据集,我们使用了MTWI [30],其中包含来自淘宝网站的17个不同类别、20,000张中英文网络文本图像。这些文本样本出现在各种场景、排版和设计中。我们从训练集中获取了140,589张文本图像,并手动按照8:1:1的比例划分,得到了112,471个样本用于训练,14,059个样本用于验证,以及14,059个样本用于测试。

Document dataset. 我们使用公共仓库Text Render [5]生成一些文档风格的合成文本图像。更具体地说,我们均匀采样文本长度,长度从1到15不等。语料库来自维基、电影、亚马逊和百科。数据集总共包含500,000个样本,随机划分为训练集、验证集和测试集,比例为8:1:1(400,000比50,000比50,000)。

Handwriting dataset. 我们基于SCUT-HCCDoc [31]收集了手写数据集,该数据集在非受限环境中使用摄像头捕获了中文手写图像。按照官方设置,我们获得了93,254个训练样本和23,389个测试样本。为了进行更严谨的研究,我们将原始训练集手动按照4:1的比例划分成两个子集,得到了74,603个用于训练和18,651个用于验证的样本。为了方便,我们继续使用原始的测试集。

采用数据集的许可证。对于数据集 RCTW [25]、ReCTS [26]、ArT [28]、LSVT [27] 和 MTWI [30],这些数据集在发布时并没有相关的开源许可证。因此,我们已联系了这些数据集的所有者,并确认它们可以用于学术研究。数据集 CTW [29] 使用许可证 Attribution-NonCommercial-ShareAlike 4.0 International,称为 CC BY-NC-SA 4.0 [6],用户被授权在任何媒体或格式中复制和重新分发材料。在 SCUT-HCCDoc [31] 的 GitHub 仓库中,作者已经声明该数据集只能用于非商业性研究目的。此外,我们已与数据集的作者联系,并获得了学术研究的许可。

3.2 Preprocessing

1-8

在这里,我们提出了四个步骤来预处理收集的四类数据集:

1)保留包含其他语言的文本图像。我们观察到现有的中文文本识别数据集主要包含中文字符,同时也包含少量英文字符以及其他语言的字符(见图6(a))。考虑到自然场景中文本图像的语言分布,我们决定保留包含其他语言字符的样本。
2)移除标注为“###”的样本。根据一些数据集的标注标准(如RCTW [25]和ReCTS [26]),无法辨认的文本图像被标注为“###”(见图6(b))。我们观察到这些样本中存在严重的模糊或遮挡,即使对于人眼来说也很难识别。考虑到这些样本可能会为训练过程带来噪声,我们决定从数据集中将其移除。
3)构建单独的验证集。通过观察,现有的英文文本识别基准通常缺乏验证集。实际上,在训练阶段测试集是不可用的,应根据在验证集上的表现选择最佳模型。 在追求更严格的研究时,我们考虑了验证集(见图6(c))。
4)仅收集具有可用文本标签的样本。我们观察到许多测试集的文本标签并不公开,特别是对于那些竞赛数据集而言。在这种情况下,我们仅使用具有可用标注文本标签的样本。

3.3 Analysis of Datasets

1-10

字母表大小和字符数量。 从表1中可以看出,四个数据集的字母表大小和汉字比例各不相同。例如,大部分网络文本都是包含固定短语表达的中文广告,因此字母表中的字符较少(4,402个字符)。此外,网络数据集包含许多电话号码和英文网站,导致其汉字比例是四个数据集中最低的(44.9%)。对于手写数据集,大部分文本是中文古诗,其中包含的生僻字符较多,因此字母表最大(6,105个字符)。结果,手写数据集的测试集包含了最多的零样本字符(253个零样本字符),这些字符在训练集中不存在,进一步增加了识别的难度。

文本长度和长宽比的分布。 图4和图5展示了文本长度和长宽比(即宽度与高度的比值)的分布情况。从这些图中,我们观察到在手写数据集中长文本(例如,长度≥ 10)更频繁出现,这为基线方法带来了困难。相反,场景和网络数据集中的文本相对较短,可能考虑到乘客、顾客等的阅读效率。在长宽比分布方面,由于野外常见的对联和招牌,场景数据集中的竖排文本(比例≤ 1)更多。相比之下,手写数据集包含更多的横排文本。

字符和词频率。 如表2所示,我们分析了每个数据集中字符和词汇的频率,并观察到一些有趣的现象。例如,由于自然场景中有许多中国品牌或国有企业,字符“中”、“国”以及词汇“中国”出现在场景数据集中的频率较高。此外,网络数据集包含许多高频广告术语,如“包邮”、“正品”等。由于文档和手写数据集中大多数样本都是中文句子,所以助词“的”在这些数据集中出现最频繁。特别是在手写数据集中,由于一些文本图像是从日记中裁剪出来的,因此有很多与人有关的字符或词汇,如“我”、“你”、“我们”等。

人类识别能力的校准。 为了找出影响四个数据集中文本图像识别能力的因素,我们邀请了20位受过良好教育的参与者进行此实验。我们邀请参与者从不同的角度选择相应的原因(多个选项),阻碍了识别能力:1)遮挡(来自前景),2)倾斜或弯曲(实例级别),3)背景混淆(来自背景),4)涂鸦(字符级别),5)模糊(图像来源)。如果没有一个原因被满足,我们认为文本图像是可识别的。总体而言,我们为每个数据集获得了500个投票(20名参与者对每个数据集的25个图像样本进行评估)。统计结果如表3所示。我们可以看到,在场景数据集中,参与者的投票主要集中在“遮挡”、“背景混淆”和“模糊”上,表明这对人类来说是最难识别的数据集。影响识别能力的因素主要来自野外环境和获取文本图像的方式。对于网络数据集,通过可控的生成,文本的外观可以更加多样,因此“倾斜或弯曲”的选择获得了最多的投票。对于文档数据集,样本对于人类来说相对容易识别,因此获得的投票较少。在手写数据集中,参与者对“涂鸦”投票最多,表明书写中的笔画连贯性也是影响识别能力的一个基本因素。通过以上观察,我们可以发现影响识别能力的因素在不同数据集中有所不同,从而激发了我们对每个数据集单独进行性能调查的兴趣。

4 Baselines

文本识别在过去的十年中取得了快速的进展。根据主要特点,文本识别方法可以分为几个类别,包括基于CTC的方法、基于矫正的方法等。从这些类别中,我们选择了八种代表性的方法作为基线,这些方法大多用于文本识别任务中的比较。

CRNN(Shi等人,2016)[7] 是一种典型的基于CTC的方法,广泛应用于工业领域。它将文本图像送入CNN中提取图像特征,然后采用双层LSTM对序列模式进行编码。最后,LSTM的输出被送入CTC(Connectionist Temperal Classification)[32]解码器,以最大化通向实际文本的所有路径的概率。

ASTER(Shi等人,2018)[8] 是一种典型的基于矫正的方法,旨在处理不规则文本图像。它引入了空间变换网络(STN)[33]来矫正给定的文本图像。然后,矫正后的文本图像被送入CNN和双层LSTM以提取特征。特别地,ASTER利用注意机制来预测最终的文本序列。

MORAN(Luo等人,2019)[12] 是一种代表性的基于矫正的方法。它首先采用多对象矫正网络(MORN)以弱监督方式预测矫正后的像素偏移(不同于ASTER使用STN)。输出的像素偏移进一步用于生成矫正后的图像,然后送入基于注意机制的解码器(ASRN)进行文本识别。

SAR(Li等人,2019)[13] 是一种代表性的利用2D特征图进行更强鲁棒解码的方法。不同于CRNN、ASTER和MORAN将给定图像压缩为1D特征图,SAR采用2D注意力在特征图的空间维度上进行解码,从而在曲线和倾斜文本上表现出更强的性能。

SEED(Qiao等人,2020)[14] 是一种代表性的基于语义的方法。它引入一个语义模块来提取全局语义嵌入并将其用于初始化解码器的第一个隐藏状态。通过在识别过程之前引入语义,SEED的解码器在识别低质量文本图像方面表现出优越性能。

MASTER(Lu等人,2021)[34] 是一种基于注意力的方法,利用自注意力机制学习畸变文本图像的更强大且更鲁棒的表示。同时,由于训练并行化和内存缓存机制的优势,该方法具有很高的训练效率和高速的推理速度。

ABINet(Fang等人,2021)[35] 是一种用于场景文本识别的自主、双向和迭代方法。自主原则意味着视觉模型和语言模型应分开学习;双向原则旨在捕获两倍数量的信息;迭代原则旨在从视觉和语言线索中细化预测。此外,作者还提出了一种自训练方法,使得ABINet能够从无标签图像中学习。

TransOCR(Chen等人,2021)[36] 是代表性的基于Transformer的方法之一。最初设计用于为超分辨率任务提供文本先验。它使用ResNet-34 [37] 作为编码器,并使用自注意力模块作为解码器。与基于RNN的解码器不同,自注意力模块更有效地捕获给定文本图像的语义特征。

通过基线的实验结果(详细内容将在第5节介绍),我们观察到基线在中文文本识别数据集上的性能不如在英文数据集上的好,这是由于中文文本的特点(见第2.2节)。针对中文字符的复杂内部结构,我们提出了一种可插拔的基于部首的分支(PRAB),它可以插入任何基于注意力的识别器中,以引入基于部首的多任务监督,从而实现更好的识别。有关PRAB的更多详细信息,请参见补充材料。

5 实证研究

5.1 Experiments

1-20

1-12

实现细节。我们在Github上采用了CRNN [7]、ASTER [8]、MORAN [12]、SAR [13]、SEED [14]、MASTER [34]、ABINet [35]和TransOCR [36]的现成PyTorch实现,以在收集的CTR数据集上复现实验结果。所有基线实验均在具有11GB内存的NVIDIA RTX 2080Ti GPU上进行。为了保持现有识别器的时间效率并使识别器更容易识别文本图像,我们将输入图像调整为32 × 256的大小进行所有实验。我们利用每个数据集的验证集根据识别准确性选择最佳超参数,然后使用测试集对基线进行评估。为方便起见,我们将四个数据集的字母表合并用于所有实验,得到总共包含7,934个字符的字母表。对于基线,没有使用其他类似数据增强和预训练的策略。

评估协议。实际上,公平比较不可或缺的是统一的评估协议。遵循ICDAR2019 ReCTS竞赛[10],我们使用一些规则将预测结果和标签进行转换:(1)将全角字符转换为半角字符;(2)将繁体中文字符转换为简化字符;(3)将大写字母转换为小写字母;(4)移除所有空格。在这些转换之后,我们使用广泛使用的准确率(ACC)指标来评估基线。此外,归一化编辑距离(NED)用于综合评估基线的性能,因为与英文文本识别数据集相比,CTR数据集包含更多的长文本图像。ACC和NED的取值范围均为[0,1]。较高的ACC和NED表示评估基线的性能较好。

实验结果。首先,我们分析不同方法的实验结果(见表格4)。我们观察到CRNN [7]在每个数据集上的性能优于那些传统的基于注意力的识别器(即MORAN [12]、SEED [14]和SAR [13]),后者在遇到含有较长中文文本的图像时容易出现注意力漂移问题[9]。虽然CRNN在场景数据集上的性能不如基于Transformer的方法,但CRNN具有更少的参数并在推理中耗时更短。此外,我们注意到SEED在所有数据集上的表现都不好。可能的原因是SEED需要将每个文本图像映射到由fastText [38]引导的相应语义嵌入,而中文文本通常包含复杂的语义,从而给语义学习过程带来困难。显然,TransOCR [36]在对于模型更灵活地建模序列模式方面优于其他方法。接下来,我们从数据集的角度分析实验结果。如表格4所示,由于手写体数据集中存在涂写,所有基线在该数据集上的表现都不好。正如表格3所示,手写体数据集中近40%的文本样本被标记为“涂写”。实际上,为了加快书写速度,写作者可能会连接或省略一些笔画,这确实给现有方法带来了困难。相反,在文档数据集中,由于该数据集中的文本样本更易于识别,所有基线的识别准确率都能够超过90.0%。尽管场景数据集包含更多的样本,但仍然存在一些问题(如遮挡、背景混淆、模糊等)挑战着基线方法,导致在场景数据集上性能相对较差。对于网络数据集,所有基线的性能都低于场景数据集,可能是因为训练样本的稀缺性。

5.2 Discussions

在合成数据集上进行预训练。考虑到之前的英文文本识别方法往往是在大规模的合成数据集上进行训练的,我们也制作了一个合成的中文文本识别(CTR)数据集,以预训练基线模型,进一步提高性能。关于合成CTR数据集的详细信息和实验结果可以在补充材料中找到。通过广泛的实验,我们观察到使用合成数据集对基线模型进行预训练确实在大多数情况下可以提高性能。尽管使用了大规模的合成数据集进行预训练,但由于中文文本的特点,基线模型仍然无法达到预期的性能。

PRAB的有效性。考虑到每个中文字符都可以根据cjkvi-ids11分解成特定的部首序列,我们提出了一个可插拔的部首感知分支(PRAB),为每个字符引入更精细的监督(即部首)。我们通过为第4节中提到的所有基于注意力的方法装备PRAB来评估其有效性。通过实验结果(在补充材料中显示),我们观察到当所提出的PRAB用于提供部首级别的监督时,基于注意力的识别器在四个数据集上的表现都更好,这验证了PRAB的有效性。具体而言,借助于PRAB,MORAN、SAR和TransOCR的平均准确率分别提高了1.83%、3.35%和2.33%。

对困难案例的分析。我们手动选择了一些困难案例(例如遮挡、倾斜或弯曲、混乱的背景、模糊和竖直)并分析了基线模型在这些案例上的性能。请注意,“涂鸦”情况主要与手写数据集相关,因此我们不单独分析“涂鸦”案例。这些困难案例的实验结果显示在表5中。特别地,我们观察到TransOCR [36]与其他基线相比,在适应每个困难案例时表现得更好。得益于自注意机制,这个识别器可以轻松应对非常规的文本布局,如倾斜和弯曲,或者减轻由混乱的前景(遮挡)或混乱的背景引起的噪音。有趣的是,ASTER[8]在大多数情况下在NED方面的表现优于TransOCR [36],因为ASTER使用的STN可以增加对一定程度的倾斜的困难样本的识别能力。此外,基于CTC的CRNN [7]简单地将原始输入转化为1维特征,因此在竖直文本图像上表现较差。总体而言,在这些困难案例中仍有很大的改进空间。

6 Conclusions

在本文中,我们首先讨论了为何在中文文本识别领域关注相对较少的可能原因。为了解决这些问题,我们收集了公开可用的数据集,并将它们分成场景、网络、文档和手写数据集。我们还分析了每个数据集的特点。然后,我们对中文文本识别(CTR)中的评估协议进行了标准化(例如,研究人员是否应将繁体和简体中文字符视为相同的字符),这使得没有中文字符知识的研究人员也能参与CTR研究。最后,我们选择了八种代表性的方法作为基线模型应用于收集的数据集上。通过实证研究,我们观察到将中文字符知识与模型相结合对中文文本识别任务是有帮助的,这也为未来CTR的研究工作提供了指导。

📙 预祝各位 前途似锦、可摘星辰


  • 🎉 作为全网 AI 领域 干货最多的博主之一,❤️ 不负光阴不负卿 ❤️
  • ❤️ 过去的每一天、想必你也都有努力、祝你披荆斩棘、未来可期
  • 🍊 深度学习模型训练推理——基础环境搭建推荐博文查阅顺序【基础安装—认真帮大家整理了】
  • 🍊 计算机视觉:硕博士,交流、敬请查阅
  • 🍊 点赞 👍 收藏 ⭐留言 📝 都是博主坚持写作、更新高质量博文的最大动力!

9-9

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

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

相关文章

携程 2024秋招内推 火热进行中!

携程 2024秋招 内推火热进行中!~ 公司简介:携程校园招聘是为携程集团招募和培养未来的技术专家、业务骨干、管理人员的培训生成长项目。进入携程后,公司会为每位培训生量身拟定双轨四维驱动培养计划, 施行双通道成长模式,可自由选…

【Linux操作系统】信号量实现生生产者消费者模型

当涉及到多线程编程时,经常会遇到生产者消费者问题。在Linux系统编程中,我们可以使用信号量来实现生产者消费者模型,以确保线程之间的同步和互斥。 文章目录 什么是生产者消费者问题?使用信号量实现生产者消费者模型信号量的原理信…

Yao框架浏览器打开后Cannot read properties of undefined (reading ‘search‘)

Yao创建项目后浏览器打开报 undefined 错误,是因为 Yao 框架语言包的问题,只支持浏览器的【中文(简体)】【英语(美国)】,如果浏览器排第一的语言不是这两个就会出现这个错误。临时解决方案是在浏…

这个 AI 机器人会怼人,它是怎么做到的?

近期,机器人“Ameca”接入了 Stable Diffusion,它一边与旁边的人类工程师谈笑风生,一边熟练地用马克笔在白板上画出一只简笔的猫,最后还在白板右下角签名。 当 Ameca 询问工程师是否对它的作品是否满意时,工程师回答“…

Effie for Mac - 简约而不简单的跨平台写作软件

在写作的道路上,我们都需要一些工具来帮助我们提高效率,更加流畅地表达思想。Effie for Mac 就是这样一款值得推荐的应用。它不仅拥有简洁、美观的界面设计,还具有丰富的功能,可以满足不同用户的需求。 首先,Effie 的…

再也不怕错漏爱校的PDF校对让每个文件都达到完美标准

在数字时代,PDF文件越来越成为传达专业信息和知识的首选格式。但与此同时,一个小小的错字或格式错误就可能影响到 整体的专业形象。现在,有了「爱校的PDF校对」工具,你可以轻松确保每个文件的完美与专业! 为什么选择「…

中阿新时代,动漫创未来 | 蓝海彤翔助燃国漫走向世界

8月30日下午,首届中国-阿拉伯国家动漫产业论坛在苏州启幕。作为国内知名的文化科技产业集团,蓝海彤翔应邀出席此次论坛并进行现场签约,与中阿双方行业大咖、专家以及资深从业者深入探讨了未来合作的前景,共同为中阿动漫产业发展建…

记录layui数据表格使用文件上传按钮

一、前言 虽然用到这种的情况不多&#xff0c;但是还是记录下 二、相关代码 <!DOCTYPE html> <html> <head><meta http-equiv"Content-Type" content"text/html;charsetutf-8"/><meta name"renderer" content&quo…

Linux:编译遇到 Please port gnulib freadahead.c to your platform ,怎么破

问题背景 编译m4时遇到以下错误&#xff0c;该怎么解决呢&#xff1f; 解决方法 进入m4的build目录&#xff1a;build/host-m4-1.4.17 输入命令&#xff1a; sed -i s/IO_ftrylockfile/IO_EOF_SEEN/ lib/*.c echo "#define _IO_IN_BACKUP 0x100" >> lib/std…

伦敦金之路,如何开启?

要开启伦敦金投资之路&#xff0c;当然第一步是需要投资者找到一个正规的途径进行开户。但是开户之后&#xff0c;我们如何下手进行伦敦金投资呢&#xff1f;恐怕很多投资者都暂时对其有所迷茫。下面&#xff0c;笔者就从自己的角度&#xff0c;对这些问题进行讨论。 资深人士引…

好用的GIF工具分享

【工具链接】 链接&#xff1a;https://pan.baidu.com/s/1gX3Tjf-r0vrOwhinQjYKhA?pwd5upe 提取码&#xff1a;5upe 下载好的图标是 我们点击&#xff0c;会出现4个选项 1、录像机 &#xff08;录制GIF&#xff09; 录制过程中可以点击暂停和停止 点击停止我们会跳转到下…

浙江绿农环境:将废弃矿山变耕地,为生态文明贡献力量

近年来&#xff0c;随着可持续发展理念在中国乃至全球的日益普及&#xff0c;浙江绿农生态环境有限公司以其独特的创新和实践&#xff0c;成为了绿色发展的典范&#xff0c;在奋进新时代、建设新天堂的背景下&#xff0c;绿农环境在杭州市固废治理行业迈出坚实的步伐&#xff0…

【LeetCode】剑指 Offer <二刷>(3)

目录 题目&#xff1a;剑指 Offer 06. 从尾到头打印链表 - 力扣&#xff08;LeetCode&#xff09; 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 题目&#xff1a;剑指 Offer 07. 重建二叉树 - 力扣&#xf…

如何为大面积实景三维建模“减负”?我们这样做

当前&#xff0c;各地加速布局实景三维中国建设&#xff0c;而面对任务量大、空域敏感、环境复杂等难题&#xff0c;传统工艺已无法满足需求。千寻位置推出的航测三维实景建模解决方案&#xff0c;融合终端、软件、应用和服务能力&#xff0c;为高精度、大面积地理信息数据应用…

Scrum工作模式及Scrum工具

Scrum工作模式是一种敏捷软件开发方法&#xff0c;其核心是团队合作和自我组织&#xff0c;旨在通过短周期的迭代开发&#xff0c;实现快速反馈和持续改进。 Scrum工作模式包括以下角色和活动&#xff1a; 1、产品负责人&#xff08;Product Owner&#xff09;&#xff1a;负…

非科班菜鸡算法学习记录 | 代码随想录算法训练营第52天||300.最长递增子序列 674.最长连续递增序列

300.最长递增子序列300. Longest Increasing Subsequence(英文力扣连接) 知识点&#xff1a;动规 状态&#xff1a;不会 思路&#xff1a; dp为取到i时的最长序列数字 dpi的值取决于前面比他小的数字&#xff08;dpj&#xff09;1&#xff1b;并实时更新最大值 class Soluti…

C语言----详解socket通信

一&#xff1a;什么是socket 刚接触socket的同学想必也知道socket的中文名&#xff0c;套接字&#xff0c;与其说是中文名倒不如说这是什么玩意&#xff0c;我们先不要管中文名的实际意义&#xff0c;我们先来了解一下什么是socket。 我们上网产生的数据都是经过协议栈一层一层…

linux并发服务器 —— 多进程并发 - 进程间的通信及实践(五)

进程间的通信 进程是一个独立的资源分配单元&#xff0c;不能在一个进程中直接访问另一个进程的资源&#xff1b; 进程间通信&#xff08;IPC&#xff09;的目的&#xff1a; 1. 数据传输 - A进程发送数据给B进程 2. 通知事件 - eg. 进程终止通知父进程 3. 资源共享 - 多个…

Middleware ❀ Kafka功能与使用详解

文章目录 1. 概述1.1. 消息队列1.2. 应用场景1.3. 工作模式1.4. 基础结构1.4.1. 结构组件1.4.2. 数据同步1.4.3. ACK机制1.4.4. 分区机制1.4.4.1. 使用Partition Key写入1.4.4.2. 轮询写入 - 默认规则1.4.4.3. 指定Partition写入 1.4.5. Offset偏移量1.4.5.1. 消息顺序性1.4.5.…

六级翻译备考

classical 经典的 Chinese literature 中国文学 朝代dynasty 统治 rule 社会稳定 steady society 治理有序 orderly governance 伟大的greatest 时代 times或者periods 被人们描绘成人类历史上伴随着治理有序&#xff0c;社会稳定的最伟大的时代之一 more and more越来越多 …