《DSL-FIQA》论文翻译

《DSL-FIQA: Assessing Facial Image Quality Via Dual-Set Degradation Learning and Landmark-Guided Transformer》

原文链接:DSL-FIQA: Assessing Facial Image Quality via Dual-Set Degradation Learning and Landmark-Guided Transformer | IEEE Conference Publication | IEEE Xplore

author={Wei-Ting Chen and Gurunandan Krishnan and Qiang Gao and Sy-Yen Kuo and Sizhuo Ma and Jian Wang}

一、摘要

        通用人脸图像质量评估(Generic Face Image Quality Assessment,GFIQA)对人脸图像的感知质量进行评估,这对于改进图像恢复算法和为后续任务选择高质量的人脸图像至关重要。我们提出了一种新的基于变换的方法GFIQA,这是由两个独特的机制。首先,“双集合退化表示学习”(DSL)机制使用具有合成和真实的退化的面部图像来将退化与内容解耦,从而确保对真实世界场景的可推广性。这种自监督方法在全局范围内学习退化特征,为在退化学习中使用局部补丁信息的传统方法提供了一种鲁棒的替代方案。其次,我们的Transformer利用面部标志来强调面部图像的视觉突出部分,以评估其感知质量。我们还介绍了一个平衡和多样化的综合通用人脸IQA(CGFIQA-40 k)数据集的40 K图像精心设计,以克服偏见,特别是肤色和性别代表的不平衡,在现有的数据集。广泛的分析和评估表明,我们的方法的鲁棒性,标志着一个显着的改进,比以前的方法。

二、介绍

        在数字时代,人脸图像在我们的视觉体验中扮演着核心角色,需要一个强大的度量来评估其感知质量。该指标不仅对于评估和提高人脸恢复算法的性能至关重要,而且对于确保生成模型的训练数据集的质量也至关重要[24,51]。设计一个有效的人脸图像质量评估指标提出了重大挑战。人脸的内在复杂性,以细微的视觉特征和表情为特征,极大地影响了感知质量[59]。此外,由于许可的面部图像的有限可用性和主观评估中固有的模糊性,获得诸如平均意见分数(MOS)的主观分数是困难的。除了这些挑战之外,口罩和配件造成的面部遮挡也给评估过程增加了另一层复杂性。面部以细微的视觉特征和表情为特征,极大地影响了感知质量[59]。此外,由于许可的面部图像的有限可用性和主观评估中固有的模糊性,获得诸如平均意见分数(MOS)的主观分数是困难的。除了这些挑战之外,口罩和配件造成的面部遮挡也给评估过程增加了另一层复杂性。

        几十年来,对一般图像的图像质量评估(IQA)[14,28,35,66,71]或一般IQA(GIQA)的研究已经证明了各种通用IQA数据集的可靠性能[15,19,33,47,57,67]。然而,当这些方法应用于人脸时,它们往往忽略了人脸固有的独特特征和微妙之处,使得它们对人脸图像的效果较差。

        另一个研究重点是生物特征人脸质量评估(BFIQA)[1,3,18,32,44,50,54,65],其目标是确保给定人脸图像的质量,以实现稳健的生物特征识别。虽然可识别性是通过包括面部特有的因素(如清晰度、姿势和照明)来实现的,但它并不能保证对感知退化的准确评估。

        [59]向前迈出了一大步,它清楚地定义了通用人脸IQA(GFIQA)的问题:GFIQA专门关注人脸图像的感知质量,而不是BFIQA。他们的方法利用预先训练的生成模型(StyleGAN2 [26])从输入图像中提取潜码,然后将其用作质量评估的参考。虽然他们的方法显示出有前途的预测性能,但当输入图像的拍摄角度[59]或质量[46]与StyleGAN2训练数据显著偏离时,其有效性就会降低,从而限制了其对现实世界场景的适用性和准确性。

        此外,受[64]的启发,我们利用面部图像质量与嘴和眼睛等突出面部成分之间的强相关性。我们结合地标检测来定位并将其作为模型的输入。这个额外的模块允许我们的模型自主学习关注这些关键的面部组件,并了解它们与面部感知质量的相关性,这有助于预测区域置信度图,该图聚合了整个面部的局部质量评估。

        GFIQA-20 k [59]和PIQ 23 [5]等现有数据集大小有限或分布不平衡。为了弥补这一差距,我们引入了综合通用人脸IQA数据集(CGFIQA-40 k),该数据集包含40 K图像,在性别和肤色方面具有更平衡的多样性。我们还包括面部遮挡的面部图像。我们相信这个数据集将是一个宝贵的资源,以燃料和激励未来的研究。

        总结一下,我们的贡献如下:

        我们设计了一个专门为GFIQA设计的基于transformer的方法,预测人脸图像的感知分数。

        我们提出了“双集合退化表示学习”(DSL),这是一种用于全局学习退化特征的自监督方法。该方法有效地从合成和自然退化图像中捕获全局退化表示,增强了退化特征的学习过程。

        我们通过集成面部标志检测来增强模型对突出面部组件的关注,从而实现整体质量评估,自适应地聚合整个面部的局部质量评估。

        我们构建了综合通用人脸IQA数据集(CGFIQA-40 k),这是一个40 K人脸图像的集合,旨在提供性别和肤色方面的全面和平衡的表示。

三、Related Work

3.1

        人脸图像质量评估(FIQA)的最新工作可以分为两个主要分支[64]:BFIQA和GFIQA。BFIQA起源于生物识别研究,专注于识别系统的人脸图像质量。另一方面,GFIQA涵盖了更广泛的范围,专注于图像质量的感知退化。

        生物识别人脸图像质量评估(BFIQA):BFIQA评估人脸图像的质量,用于生物识别应用,如人脸识别,通常基于既定标准评估图像[17,53,56]。该领域的最新进展是围绕基于学习的策略,通过识别系统的性能评估质量[2,3,6,37,62]。一些研究采用了手动标记,使用一组预定义的特征作为二进制约束[74],而其他研究则研究了图像质量的主观方面[1]。然而,当强调感知质量时,采用BFIQA方法并不能提供最佳性能,这将在结果部分中演示。

        通用人脸图像质量评估(GFIQA):GFIQA是最近定义的任务[59,64],它优先考虑人脸图像中的感知退化。像Chahine等人[5]这样的倡议强调了社会媒体驱动的肖像摄影的相关性,尽管他们的PIQ 23数据集仍然受到限制。Su et al. [59]用更大的GFIQA-20 k数据集弥补了这一差距,但它在多样性方面福尔斯不足,缺乏长尾样本和平衡的表示。他们的基于先验的生成方法虽然有效,但却难以处理非标准图像,显示出StyleGAN 2依赖模型的局限性[25]。这证明了更全面的数据集和强大的GFIQA解决方案的必要性。

3.2

        常规图像质量评估传统的常规图像质量评估(GIQA)[7,14]方法,如BRISQUE [39]、NIQE [40]和DIIVINE [41],是建立在传统统计模型的基础上的,这些方法在大小受限的数据集上工作良好,但在复杂的真实世界图像上却面临着局限性。深度学习的出现催生了突破性的GIQA方法。RAPIQUE [63]和DB-CNN [69]在适应性和准确性方面树立了新的标准。在基于变换器的模型中,包括MUSIQ [29]和MANIQA [66],还发现了进一步的创新,预测精度得到了显著提高。该领域通过CONTRIQUE [35]的自我监督范式和Zhang et al.'s [71]视觉语言多任务学习。Saha等人[52]以一种无监督的方式独特地整合了低级和高级特征,强调了感知相关的质量特征。

        然而,这些进步对人脸图像的适用性是有争议的,因为它们经常忽略对感知质量特别重要的面部特征,这表明以面部为中心的质量评估模型的探索已经成熟。

图2.概述了我们提出的模型。该模型包含核心GFIQA网络、退化提取网络和地标检测网络。在我们的方法中,人脸图像被裁剪成几个小块,以符合预先训练的ViT特征提取器的输入大小要求(参见第第3.1段)。然后,对每个补丁进行单独处理,并对它们的平均意见得分(MOS)进行平均,以确定最终的质量得分。为了在图中清楚起见,没有示出将图像分割成小块。

图3.双集退化表示学习(DSL)图解。在左边,利用两个唯一的图像集描述了对比优化的过程。提取退化表示,随后进行软邻近映射(SPM)计算和对比优化,迫使退化编码器集中学习特定的退化特征。右侧强调了我们方法的双向特征,突出了通过对比学习识别和理解图像退化的综合策略。

四、Proposed Method

4.1模型概述

特征提取与优化: 图像首先通过预训练的Vision Transformer (ViT) [11]进行特征提取 [66],随后通过通道注意力模块(Channel Attention Block)[20]强化相关通道之间的依赖关系。接着,利用Swin Transformer模块 [34]对这些特征进行优化,以捕捉图像中的细微细节。

退化特征提取: 同时,一个专门的模块用于识别并分离图像中的感知退化特征,为图像质量退化提供细致入微的表征。

特征整合与质量评估: 提取的退化特征与Swin Transformer的输出通过Transformer解码器进行整合。这种整合使用了一种基于Stable Diffusion [49]的跨注意力机制,增强了模型对退化特征的敏感性。整合后的特征被输入到两个MLP分支中:

  1. 第一个分支预测区域置信度。
  2. 第二个分支估计区域质量得分。

最终,这些输出通过加权求和得出图像的整体质量评分。

基于关键点的引导机制: 一个关键点检测网络用于识别面部的关键点,帮助评估区域置信度,并确保重要的面部特征能够提升最终的质量评分。

在核心GFIQA网络的训练过程中,关键点和退化模块保持固定状态,充分利用其预训练的知识。值得注意的是,我们避免对输入图像进行尺寸调整以适应预训练ViT的固定输入尺寸,因为这种调整可能会扭曲质量预测 [29]。相反,我们将图像裁剪为多个部分,分别对每个部分进行处理,并对结果的MOS(主观意见分数)预测值进行平均,以生成统一的图像质量评分。这种方法保持了图像的原始尺寸,从而确保了感知质量评估的准确性。

在以下小节中,我们重点介绍了模型设计中的主要技术贡献:退化特征提取模块和基于关键点的引导机制。

4.2.自监督双集退化表示学习

在介绍我们提出的方法之前,我们简要概述了现有的基于块的退化学习方法。

4.2.1基于补丁的退化学习

        现有的退化提取方法([21,52,73])假设来自相同图像的补丁共享相似的退化以进行对比学习。在该框架中,从同一图像中提取的块是正样本,而从不同图像中提取的块是负样本。补丁被编码为查询、正样本和负样本的退化表示(x、x+和x−)。对比损失函数被设计为增强x和x+之间的相似性以及x和x−之间的相异性,其由下式给出:

        其中N是负样本的数量,θ是温度超参数。

        然而,由于照明、局部运动、散焦和其他因素,图像上均匀退化的假设并不总是成立。例如,在图像中有可能具有具有静态背景的移动面部,这意味着只有一些补丁遭受运动模糊。这种过于简化的假设往往会导致退化学习的次优和不一致的结果。

4.2.2 Our Solution

        为了弥补这一差距,我们提出了双集退化表示学习(DSL),它考虑了整个人脸图像。为了使这种具有挑战性的设置与对比学习方法兼容,我们仔细构建了两组图像S和R,每组图像在退化学习过程中具有独特的目的,如图3所示。

        集合S由从单个高质量人脸图像导出的图像集合组成,每个图像经历不同类型的合成降级,包括但不限于模糊、噪声、抖动、JPEG压缩和极端光照条件。这个集合充当一个受控的环境,允许深入探索针对恒定内容的各种降级。

        相比之下,集合R包含来自GFIQA数据集的图像汇编,每个图像在真实世界退化时具有不同的内容。这个集合反映了现实退化的不可预测性和多样性,这是很难用合成数据建模的。

        形式上,设{S}={S1,...,Sm}和数学{R}={r1,...,rn},其中m和n分别表示保护数学{S}和保护数学{R}中的像数。来自两个集合的每个图像通过由具有权重z的退化提取模块定义的函数ψ映射到其退化表示:

        受[48,58]的启发,我们引入了一种称为软邻近映射的机制:对于来自S的给定图像si,我们将其表示映射到表示的线性组合,如下所示:

        其中,ψ(si)表示ψ(si)的软邻近映射。sim(.,.)表示两个表示之间的相似性。在我们的实现中,我们使用L2距离作为我们的相似性度量。为简洁起见省略了z。

        这种结构允许我们定义对比学习的积极和消极对。直观地,降级表示sj(si)应该被吸引到其自己的软邻近映射sj(si),而任何其他表示sj(sj)(其中j = i)应该从该软邻近映射中被排斥,因为si和sj通过集合S的专用构造而具有不同的降级。所以,我们要做的是:[43]

        该损失函数利用了在 {S}中图像共享相同内容但降级不同的性质,与 {R}形成对比,后者在两个方面都有所不同。通过将提取的退化表示绘制得更接近其对应的软邻近映射并使其与其他软邻近映射保持距离,退化提取模块被训练以学习独立于图像内容的全局退化表示。

        此外,自我监督的双集对比学习策略对于理解各种退化,特别是在现实世界的场景中是必不可少的。这种方法是至关重要的,因为它涉及到从真实世界的图像中准确提取退化表示,以近似合成集合{S}中的退化表示。仅在合成集合\mathcal {S}上采用对比学习来捕获退化模式是可行的:正对由具有相同退化的图像组成,负对由其他图像组成。然而,这种天真的方法并不能很好地推广到现实世界的图像。相比之下,我们的双集设计可以将具有可控退化的合成集和具有现实退化的现实世界集的优点结合在一起,从而实现更好的泛化。

        请注意,{S}和{R}的角色是对称的:正如我们利用\mathcal {S}的表示来寻找\mathcal {R}中的对应特征一样,根据经验,我们发现反过来也是可行的和有信息的。因此,我们将降解提取损失LDE定义为双向损失:

        这种双向损失加强了合成集和真实世界集之间的相互学习和对齐,确保了对现实退化的全面理解和表示。此外,值得一提的是,集合{S}中的高质量图像在每次迭代中都被重新采样,其中该图像经历不同强度的随机合成退化。同时,集合 {R}中的图像也在每次迭代中随机重新采样。

        总之,DSL摆脱了整个图像上的补丁退化的均匀性假设,以进行退化学习。相反,它依赖于两组构建的图像之间的软邻近映射来计算对比度损失,这允许更精确的退化表示(这种机制在精神上与[42]类似)。此外,由于考虑了整个图像,DSL可以捕获每个图像特有的退化的整体视图,进一步提高性能。

4.3. Landmark-guided GFIQA

        人脸图像在图像处理中具有独特的挑战性。这是因为人眼对面部伪影特别敏感,提高了细微质量评估的重要性[64]。因此,设计一种不平等对待每个像素的方法是很重要的;它应该承认显著面部特征的感知意义。此外,如SEC所述。3.1,考虑到我们的网络将人脸裁剪成各种补丁来计算平均MOS分数,至关重要的是提供地标信息,以给出每个补丁覆盖的人脸部分的空间背景,确保整体和感知一致的评估。

        如图2所示,我们的方法首先使用现有的关键点检测算法(例如,3DMM模型[12])来识别面部的关键点。受神经辐射场(NeRF)[38]的启发,我们对这些关键点标识符应用了位置编码。通过对原始标识符应用一系列正弦函数,位置编码增强了网络的表征能力,使其能够捕捉和学习与每个关键点标识符相关的更复杂的关系和模式。

        经过编码的信息随后与由Transformer解码器处理的特征连接起来,输入到区域置信度分支。人类视觉系统对高频细节(通常与面部关键点相关,例如眼睛、鼻子和嘴巴)特别敏感。将这些基于关键点的信息提供给置信度头,可以生成更精确的置信度图,突出人类在感知中自然优先关注的区域。

        在我们的方法中,我们有意避免将关键点的坐标(如图像中的(x, y))作为位置进行编码,因为这在学习过程中可能引入歧义,尤其是在面部未对齐或图像被裁剪为多个小块的情况下。在这些情况下,特定坐标可能在不同的训练样本中与不同的面部特征不一致,从而混淆学习过程。为避免这一问题,我们的网络对每个关键面部特征采用固定的编码方案,为每个关键特征分配一个唯一的标识符,而不考虑其在图像中的位置。这种方法特别适合于我们的ViT架构,因为ViT从输入图像中裁剪固定大小的部分,可能只捕获面部的一部分。

        鉴于GFIQA中遇到的退化种类繁多,现成的关键点检测器在退化严重的图像上通常表现较差。我们观察到,对现有的关键点检测器(如[9, 22, 27])在退化图像上进行微调,可以显著提高关键点检测的准确性。

        综上所述,通过采用基于关键点的引导线索,我们的方法在每个裁剪部分内都能保持对关键面部特征的持续关注,从而有效地鼓励模型在聚合区域质量评分时专注于显著的面部特征。

4.4. Loss Functions

降级编码器

        退化编码器是通过优化等式(1)和(2)分别训练的。(六)、训练完成后,在训练核心GFIQA网络时,它将保持固定。

GFIQA网络

        为了测量预测MOS与实际情况之间的差异,我们采用了Charbonnier损失[31](Lchar),定义为:

        其中,{p}是预测的MOS,p是地面真实MOS, 是一个小常数,以确保可微性。

        与现有的GIQA [29,52,66]或GFIQA [59]模型通常依赖于L2损失不同,我们选择Charbonnier损失,因为它对离群值不太敏感,在GFIQA的背景下,离群值可能来自罕见的面部质量下降,数据集注释差异或模型在训练期间预测的偶尔极端分数。通过提高对离群值的鲁棒性,我们的模型更符合人类的感知判断。

五. Comprehensive Generic Face IQA Dataset

        现有的GFIQA模型通常在PIQ23 [5]和GFIQA-20k [59]数据集上进行评估。尽管PIQ23包含了多种野外图像(in-the-wild images)且面部未经裁剪,但其数据集规模有限,难以有效训练稳健的模型。此外,这两个数据集在性别肤色分布上都存在偏差。这种不均衡可能在模型训练过程中引入偏差,从而降低模型在面部图像质量评估任务中的性能和可靠性。已有研究[4, 8, 30, 55]表明,这种数据分布的不平衡对各种与面部相关的应用的模型性能有显著的负面影响。

        为了解决这些问题,我们提出了一个名为**综合通用面部图像质量评估数据集(CGFIQA-40k)**的新数据集。该数据集包含约40K张图像,每张分辨率为512x512。每张图像由20位标注员进行标注,每位标注员平均花费约30秒进行评分。从最初的40,000张图像中,我们筛选出了一小部分内容不可用或标注不完整的图像,最终获得了39,312张有效图像。此数据集专为肤色、性别和面部遮挡(如口罩、配饰)分布多样性而设计,提供了丰富的面部图像集合。

        

表1.数据集的体型、肤色和性别分布比较。肤色分为浅色(菲茨帕特里克量表[13] I-II)、中度(菲茨帕特里克量表III-IV)和深色(菲茨帕特里克量表V-VI)。

        表1中展示了我们数据集与现有GFIQA数据集的对比概述。我们希望此数据集能为GFIQA提供更全面的基准,推动最新方法的泛化和稳健性发展。

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

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

相关文章

mac终端自定义命令打开vscode

1.打开终端配置文件 open -e ~/.bash_profile终端安装了zsh,那么配置文件是.zshrc(打开zsh配置,这里举🌰使用zsh) sudo open -e ~/.zshrc 2.在zshrc配置文件中添加新的脚本(这里的code就是快捷命令可以进…

vue基础之6:计算属性、姓名案例、简写计算属性

欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…

Qt桌面应用开发 第十天(综合项目二 翻金币)

目录 1.主场景搭建 1.1重载绘制事件,绘制背景图和标题图片 1.2设置窗口标题,大小,图片 1.3退出按钮对应关闭窗口,连接信号 2.开始按钮创建 2.1封装MyPushButton类 2.2加载按钮上的图片 3.开始按钮跳跃效果 3.1按钮向上跳…

【从零开始的LeetCode-算法】35. 搜索插入位置

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2示例 2: 输入: …

掌上单片机实验室 — RT - Thread+ROS2 浅尝(26)

前面化解了Micro_ROS通讯问题,并在 RT-Thread Studio 环境下,使用Micro_ROS软件包中的例程,实现了STM32F411CE核心板和ROS2主机的通讯。之后还尝试修改例程 micro_ros_sub_twist.c ,实现了接收 turtle_teleop_key 所发出的 turtle…

展现运动类型

同样&#xff0c;我们通过函数的方式将运动类型插入我们的HTML代码中 _renderWorkout(workout) {let html <li class"workout workout-${workout.type}" data-id"${workout.id}"><h2 class"workout__title">${workout.description}…

vscode 怎么下载 vsix 文件?

参考&#xff1a;https://marketplace.visualstudio.com/items?itemNameMarsCode.marscode-extension 更好的办法&#xff1a;直接去相关插件的 github repo 下载老版本 https://github.com/VSCodeVim/Vim/releases?page5 或者&#xff0c;去 open-vsx.org 下载老版本 点击这…

python 练习题

目录 1&#xff0c;输入三个整数&#xff0c;按升序输出 2&#xff0c;输入年份及1-12月份&#xff0c;判断月份属于大月&#xff0c;小月&#xff0c;闰月&#xff0c;平月&#xff0c;并输出本月天数 3&#xff0c;输入一个整数&#xff0c;显示其所有是素数因子 4&#…

我的第一个创作纪念日 —— 梦开始的地方

前言 时光荏苒&#xff0c;转眼间&#xff0c;我已经在CSDN这片技术沃土上耕耘了365天 今天&#xff0c;我迎来了自己在CSDN的第1个创作纪念日&#xff0c;这个特殊的日子不仅是对我过去努力的肯定&#xff0c;更是对未来持续创作的激励 机缘 回想起初次接触CSDN&#xff0c;那…

Rook入门:打造云原生Ceph存储的全面学习路径(上)

文章目录 一.Rook简介二.Rook与Ceph架构2.1 Rook结构体系2.2 Rook包含组件2.3 Rook与kubernetes结合的架构图如下2.4 ceph特点2.5 ceph架构2.6 ceph组件 三.Rook部署Ceph集群3.1 部署条件3.2 获取rook最新版本3.3 rook资源文件目录结构3.4 部署Rook/CRD/Ceph集群3.5 查看rook部…

【Gitlab】CICD使用minio作为分布式缓存

1、安装minio 下载适合自己系统版本的安装文件https://dl.min.io/server/minio/release/windows-amd64/ yum install xxx.rpm 2、配置/etc/profile export MINIO_ACCESS_KEYroot [ui登录账号] export MINIO_SECRET_KEYminioDev001 [ui登录密码] export MINIO_OPTS"…

奇数求和ᅟᅠ

奇数求和 C语言代码C 代码Java代码Python代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 计算非负整数 m 到 n&#xff08;包括m 和 n &#xff09;之间的所有奇数的和&#xff0c;其中&#xff0c;m 不大于 n&#xff0c;且n 不大于30…

Django 视图层

from django.shortcuts import render, HttpResponse, redirectfrom django.http import JsonResponse1. render: 渲染模板 def index(request):print(reverse(index))return render(request, "index.html")return render(request, index.html, context{name: lisi})…

手机实时提取SIM卡打电话的信令声音-蓝牙电话如何适配eSIM卡的手机

手机实时提取SIM卡打电话的信令声音 --蓝牙电话如何适配eSIM卡的手机 一、前言 蓝牙电话的海外战略中&#xff0c;由于海外智能手机市场中政策的差异性&#xff0c;对内置eSIM卡的手机进行支持是非常合理的需求。Android系列手机中&#xff0c;无论是更换通信运营商&#xf…

python3 + selenium 中用PIL获取全屏幕截图

获取当前屏幕截图非常简单&#xff0c;需要import PIL.ImageGrab。调用grab函数即可得到Image对象&#xff0c;显示图片如图所示。 高版本的PIL中的grab函数还提供有一些参数。要查看当前PIL包的版本&#xff0c;可以import然后查看其__version__属性。 如果是较高版本的PIL…

SpringBoot3 + Vue3 由浅入深的交互 基础交互教学2

目录 一、这篇文章是基础交互教学系列的续作 二、发送请求时&#xff0c;携带发送的数据json格式的参数&#xff1a;data 三、携带token请求头&#xff0c;进行JWT校验 四、实现throw抛出异常&#xff0c;并交互显示在前端的界面 一、这篇文章是基础交互教学系列的续作 大…

UIE与ERNIE-Layout:智能视频问答任务初探

内容来自百度飞桨ai社区UIE与ERNIE-Layout&#xff1a;智能视频问答任务初探&#xff1a; 如有侵权&#xff0c;请联系删除 1 环境准备 In [2] # 安装依赖库 !pip install paddlenlp --upgrade !pip install paddleocr --upgrade !pip install paddlespeech --upgrade In …

Tomcat新手成长之路:安装部署优化全解析(下)

接上篇《Tomcat新手成长之路&#xff1a;安装部署优化全解析&#xff08;上&#xff09;》: link 文章目录 7.应用部署7.1.上下文7.2.启动时进行部署7.3.动态应用部署 8.Tomcat 类加载机制8.1.简介8.2.类加载器定义8.3.XML解析器和 Java 9.JMS监控9.1.简介9.2.启用 JMX 远程监…

vue项目部署到github pages后页面显示不出来??

问题&#xff1a; 当我们在命令行执行 npm run build 后&#xff0c;项目的目录下会生成一个 dist 文件夹&#xff0c;它里面又包含一个 static 文件夹和一个 index.html 文件&#xff0c;这是 webpack 最终打包好的文件 项目上传到仓库后发现页面为空&#xff0c;找不到文件路…

用 React 编写一个笔记应用程序

这篇文章会教大家用 React 编写一个笔记应用程序。用户可以创建、编辑、和切换 Markdown 笔记。 1. nanoid nanoid 是一个轻量级和安全的唯一字符串ID生成器&#xff0c;常用于JavaScript环境中生成随机、唯一的字符串ID&#xff0c;如数据库主键、会话ID、文件名等场景。 …