Pose for Everything: Towards Category-Agnostic Pose Estimation 阅读笔记

news2024/11/25 15:37:51

类无关姿态估计

ECCV 2022 Oral
论文链接
代码链接
其他参考

引入了一个新任务:CategoryAgnostic Pose Estimation (CAPE) 类无关姿态估计

摘要: 目前的2D姿态估计与类别耦合,例如人、动物、车辆。但很多场景需要检测未知类的姿态/关键点。本文引入一项类无关姿态估计任务(CategoryAgnostic Pose Estimation (CAPE)),创建一个能定位任意类别物体关键点的模型。为了实现这一目标,本文将姿态估计问题表述为关键点匹配问题,并设计了一个新的CAPE框架:POse Matching Network(POMNet)。本文提出一种 transformer-based Keypoint Interaction Module (KIM),来捕捉不同关键点间的交互以及 support 和 query 图像间的关系。本文提出了一个用于设计CAPE算法的多类别姿态(MP-100)数据集,该数据集包含100个对象类别,超20K个实例的2D姿态。实验表明,我们的方法在很大程度上优于其他baseline。

文章目录

  • 类无关姿态估计
  • 1 Introduction
  • 2 Related Works
    • 2.1 2D Pose Estimation
    • 2.2 Category-agnostic Estimation
    • 2.3 Few-shot Learning
  • 3 Class-Agnostic Pose Estimation (CAPE)
    • 3.1 Problem Definition
    • 3.2 POse匹配网络(POMNet)
  • 4 Mulit-category Pose (MP-100) Dataset
  • 5 Experiments
    • 5.1 Implementation Details
    • 5.2 Benchmark Results on MP-100 Dataset
    • 5.3 Cross Super-Category Pose Estimation
    • 5. Ablation Study
    • 5.5 Qualitative Results
  • 6 Conclusions and Limitations


1 Introduction

人体姿态估计广泛应用于虚拟现实(VR)和增强现实(AR);动物姿态估计在动物学和野生动物保护中具有重要意义;车辆姿态估计对自动驾驶至关重要。不同领域会涉及检测多种类别的姿态,例如生物学家通过分析植物的姿态来研究植物的生长。但传统的姿态估计器是类特定的,只针对它们所训练的类别,因此必须收集大量标记数据并设计特定类姿态估计器来检测新物体的姿态,这既费时又费力。更糟糕的是,收集稀有物种(如濒危动物)数据集和需要专业知识标注语义关键点(如医学图像)极具挑战性。因此,需要开发能检测不同类别关键点的姿态估计器。
如图1所示,本文引入了一项新的类无关姿态估计任务(CategoryAgnostic Pose Estimation (CAPE)),CAPE旨在使用单个模型检测任何类别的姿态。
给定一个新类别的support图像及其关键点定义,类无关姿态估计器预测 query 图像的同种类别,这样可以根据关键点定义生成任何对象的姿态。大大降低了新类别数据收集,模型训练和调参的成本。
在这里插入图片描述

图1:类特定姿态估计 vs 类无关姿态估计(CAPE)。(a) 传统的姿态估计任务是类特定的。姿势估计器在单类对象数据集上训练,且只能预测该类别的姿态。(b) CAPE任务要求姿态估计器检测给定关键点定义的任意类别的姿态。在多类别姿态数据集上训练,类无关姿态估计器可在给定一个或几个 support 图像的情况下推广到新的类别。

设计类无关姿态估计器存在一些挑战:

  1. 大多姿态估计采用有监督的回归方法,需要成千上万的标记图像学习将输入图像映射到关键点位置。
  2. 不同对象的关键点数量和定义不同。学习独特的输出表示并利用结构信息非常重要。
  3. 几乎没有用于开发多类别大规模姿态估计的数据集。以前的数据集大多只包含一个类别(例如人体)。

本文迈出了CAPE的第一步,并提出了一个新的框架:POse Matching Network(POMNet),将2D姿态估计任务表述为匹配问题。 基于参考的关键点定义从 support 图像中提取关键点特征,并从query 图像中提取图像特征,用 Matching Head(MH)合并support 关键点特征和query图像特征,以最大可能性估计关键点位置。 这样,模型无关于类别,可以检测任意数量关键点。此外还设计了一个基于transformer的关键点交互模块(Keypoint Interaction Module KIM)来捕获不同关键点间以及 support 和 query 图像间的关系。 不同关键点的特征相互作用,以学习给定对象类别的固有结构,关键点特征进一步与 query 图像特征对齐以获得更好的匹配。
为训练并评估类无关姿态估计器,我们收集了一个大规模多类别姿态数据集:Multi-category Pose(MP-100),包含超过20K个实例,涵盖100个子类别和8个超类别(如动物脸、家具、车辆和衣服)。据我们所知,这是第一个包含多类别姿态标注的基准。
本文的主要贡献有三:

  • 本文引入了一个新的具有挑战性的任务CAPE,要求模型基于给定几个关键点定义的 support 图像预测任何对象的姿态。
  • 本文提出了一个新的CAPE框架:POMNet,将关键点检测任务表述为匹配问题,提出了关键点交互模块(KIM)来捕获关键点间关系和 support-query 关系。
  • 为CAPE任务构建了第一个大规模多类别数据集:MP-100,来促进相关研究。

2 Related Works

2.1 2D Pose Estimation

CV界有两类关键点:① 语义点(Semantic points)具有明确语义(例如左眼);② 兴趣点(interest points)是 low-level 点 (例如角点)。2D姿态估计侧重于预测对象的语义点,例如人体部位、人脸特征点、手关键点和动物姿态。但当前的姿态估计方法和数据集仅关注单个 super-category 关键点,不支持跨类别/未知姿态估计。
2D姿态估计方法:当前的2D姿态估计方法可分为回归法和热图法两类,回归法直接将图像映射到关键点坐标,对于实时应用灵活有效,但易受遮挡和运动模糊的影响,导致性能下降。热图使用似然热图来编码关键点位置,定位精度高,在2D姿态估计领域独占鳌头。最近关于姿态估计的工作主要集中在设计强大的卷积神经网络或基于 transformer 的架构,但这些工作只关注特定类别,相比之下,我们的模型能够检测未知类的任意对象关键点。
2D姿势估计基准。现有的2D姿态估计数据集仅关注单个 super-category。如图2所示,大多集中于人类相关的类别上(例如,人体,人脸和手)。其他 long-tailed 类别的数据集在数据规模和多样性方面相对有限,但分析这些 long-tailed 类对象在学术界和工业界都具有重要意义,例如,车辆姿态估计对于自动驾驶很重要,动物姿态估计在动物学和野生动物保护中具有重要意义,室内家具姿态估计对开发家用机器人非常重要。本文构建了第一个大规模多类别姿态数据集:MP-100数据集)。

在这里插入图片描述

图2:流行的2D姿态估计数据集的类别和图像数量。

2.2 Category-agnostic Estimation

类无关估计已应用于许多CV任务,包括检测、分割、对象计数和视角点估计。本工作主要与StarMap 有关,它提出用规范视角位置编码类无关3D关键点表示,但StarMap仅适用于刚性对象(例如家具),并依赖一些昂贵的3D CAD模型来识别预测的关键点proposal。相比之下,CAPE旨在根据一张或几张 support 图像给出的手工关键点定义来预测任何对象类别(刚性和非刚性)的2D姿态。

2.3 Few-shot Learning

少样本学习致力于仅使用少量样本来学习新类,最近的少样本学习法大致可分为三类:metric-learning-based 法、meta-learning-based 法 和 data-augmentation-based法。Metric-learning-based Approaches: Prototypical networks 学习 support 数据中每个类的原型(embedding特征),然后将query 数据分类为原型最接近的类Meta-learning-based Approaches: 模型无关元学习和基于LSTM的元学习器旨在搜索一组最佳初始化权重,使分类器可以通过仅微调少数支持样本就能快速推广到新任务上。Dataaugmentation-based Approaches: 基于数据扩充的方法生成新类的合成示例,通过使用这些合成示例进行再训练来提高性能。我们的方法属于 Metric-learning-based 法,并设计关键点交互模块(KIM)来捕捉不同关键点间和 support-query 图像间的关系。

3 Class-Agnostic Pose Estimation (CAPE)

3.1 Problem Definition

CAPE指给定一个或几个具有 unseen 类别关键点定义的support样本,无需大规模标记的监督和再训练模型就能检测该类别对象的关键点,CAPE能够显著降低数据标注和参数调整的成本。
为验证CAPE模型在 unseen 类上的泛化性,在 base类别上训练,在 novel类别上评估,base 类别和novel 类别互斥,测试集的novel类别不会出现在训练集中。给CAPE模型提供一个unseen 类别的K个标注的支持样本,模型需要检测与支持样本属于同一类别的 query 样本的姿态。 在这个意义上,CAPE任务可被视作 K-shot 姿态估计问题,K=1 为 one-shot 姿态估计。

3.2 POse匹配网络(POMNet)

传统姿态估计器既不能应用于未知类别,也不能应用于关键点定义不同的同一类别(例如19个人脸关键点定义和68个人脸关键点定义)。POMNet 将CAPE视作一个匹配问题,计算每个位置的参考支持关键点特征和 query 图像特征间的匹配相似度,因此它能够处理各种具有不同关键点数量和定义的类别。如图3所示,POMNet由三部分组成:特征提取器( Θ S 和 Θ Q Θ_S和Θ_Q ΘSΘQ)、关键点交互模块(KIM)和匹配头(MH)。

在这里插入图片描述

图3:POMNet的 overview。特征提取器ΘS和ΘQ分别提取支持关键点特征和 query 图像特征。关键点交互模块(KIM)通过在关键点间传递消息并捕获 query 和支持图像间的关系来细化关键点特征。匹配头(MH)合并细化的关键点特征和 query 图像特征来预测 query 图像的关键点定位。利用MSEloss来监督模型。

Feature Extractor 特征提取: 采用两个并行的特征提取器来提取support关键点特征和query图像特征,采用在ImageNet上预训练的 ResNet-50 作backbone。
特征提取器 Θ S Θ_S ΘS提取support 图像 I S I_S IS的特征: F S = Θ S ( I S ) F_S = Θ_S(I_S) FS=ΘS(IS),GT热图: H S ∗ j ∈ R H × W × 1 H^{∗j}_S∈R^{H×W ×1} HSjRH×W×1 表示support关键点标注,给定support 图像特征和 support 样本的GT热图,如下获得相应的关键点特征:
在这里插入图片描述
F S ∈ R h × w × c 和 F ^ S j ∈ R 1 × 1 × c F_S∈R^{h×w×c} 和 \hat{F}^j_S∈R^{1×1×c} FSRh×w×cF^SjR1×1×c 分别表示 support 图像特征和 j-th 关键点特征,Upsample() 将支持图像特征上采样至相应热图 size,AvgPool() 通过加权平均聚集GT关键点位置周围的支持图像特征。J 表示参照关键点数量。
按照相似的pipeline,用特征提取器 Θ Q Θ_Q ΘQ提取 query 图像 I Q I_Q IQ的特征: F Q = Θ Q ( I Q ) F_Q = Θ_Q(I_Q) FQ=ΘQ(IQ),collapse query 图像特征,并reshape为一个sequence,提取的图像特征用于在关键点交互模块(KIM)细化支持关键点特征,在匹配头MH中预测关键点位置。

关键点交互模块 Keypoint Interaction Module (KIM): KIM旨在通过有效的注意力机制增强支持关键点特征。先通过一个全连接层降低支持关键点特征的通道维度,并将不同关键点的特征作为一个 sequence 进行输入,不同类别的关键点数量不同,因此在末尾添加几个带 padding mask 的虚拟特征来保持固定数量 L(L=100)个输入特征,使 KIM能适应各种关键点数量。 KIM包含 3 个 transformer blocks,每个blocks都包含两个主要的组件:Self-Attn 和 Cross-Attn。Self-Attn学习在关键点之间交换信息并利用固有的对象结构,允许关键点特征彼此交互,并使用注意力权重聚合这些交互。Cross-Attn 用于聚集 query 图像中的有用信息从而使关键点特征与 query 图像特征交互,以对齐特征表示减轻表示gap
关键点特征作为query输入,flattened query 图像特征作为 key 和 value 输入,降低 query 图像特征的通道维度以匹配关键点特征的通道维度,给query 图像特征应用 sin position embedding,按照惯例,还包括前馈网络(FFN) 。因此,支持关键点特征能被KIM处理并细化:
在这里插入图片描述
我们排除了伪 padding 特征,选择前 J 个有效关键点特征来获得细化的关键点特征: { F ˉ S j } j = 1 J , J ≤ L \{\bar{F}^j_S\}^J_{j=1}, J≤ L {FˉSj}j=1J,JL

匹配头 Matching Head (MH): 细化的关键点特征作为参照,匹配头(MH)的目标是在 query 图像中寻找热图编码的最佳匹配位置
扩维关键点特征的空间维度与 query 图像特征 F Q F_Q FQ 一致,然后和 F Q F_Q FQ 进行concatenate,最后采用一个 decoder Θ M Θ_M ΘM 估计关键点热图,整个过程如下:
在这里插入图片描述
Expand() 表示空间扩张操作, H Q j H_Q^j HQj 是 j-th 关键点的预测热图,decoder Θ M Θ_M ΘM 遵循SimpleBaseLine(有点低级),由一个 3×3 卷积层+转置卷积层构成,来上采样热图。用 pixel-wise MSE 来监督 POMNet:
在这里插入图片描述

Extension to K-shot. 当K(K>1)个支持图像可用时,先单独提取每个样本的支持关键点特征,然后计算K个样本的均值。随后的 pipeline(包括KIM和MH)与 1-shot 完全相同。有了更多支持图像,POMNet 能够捕获更稳健的关键点特征,以处理类别内的差异和关键点定义的模糊性。

4 Mulit-category Pose (MP-100) Dataset

如图4所示,MP-100数据集涵盖了100个子类别和8个超类别(人手、人脸、人体、动物体、动物脸、衣服、家具和车辆)。从几个流行2D姿态数据集中收集了超过18K张图像,20K个标注,关键点数量从8到68不等。
在这里插入图片描述

图4:MP-100数据集涵盖100个子类和8个超类(人手、人脸、人体、动物脸、动物身体、衣服、家具和车辆)。

将收集到的100个子类划分为train/val/test sets (70 for train, 10 for val, and 20 for test),形成五个 test set 不重叠的 splits,并评估五个 splits 的平均模型性能,因此每个类别在不同的 split 上作为新类别被测试,避免了类别偏差。此外,为平等对待所有类别,尽量平衡不同类别的实例数量。
每个 split 的 test set 选择2K个样本,每个类别中有100个实例。train/val set 分别选择14K/2K个样本 for 70/10个类别。由于不同类别的实例数量多样,且存在少于200个实例的罕见类别,因此最小化所有类别的实例数量的标准偏差。在样本选择过程中,对每个类别,优先选择具有更有效关键点标注且图像分辨率更大的实例。图5 展示了MP-100数据集上每个类别实例数量的直方图,每个类别的实例数量大致平衡。

在这里插入图片描述

图5:MP-100数据集上每个类别的实例数量直方图。

5 Experiments

5.1 Implementation Details

对于MP-100数据集上的每个split,在 train set 上训练POMNet,val set 上验证,test set 上评估,train/val/tset set 互斥。训练期间,随机配对同类别的支持图像和 query 图像;根据 bbox crop出对象,并resize为 256 × 256;采用 random scaling ([−15%, 15%]) 和 random rotation ([−15◦, 15◦]) 数据增强来提升模型的泛化性;使用8个GPU,每个GPU batch size=16,训练210个epoch;遵循 MMPose,采用 Adam优化器,基础学习率为1e-3,并在第170和第200个epoch将学习率分别衰减到1e-4和1e-5。测试过程中,为每个新类别随机抽取了3000个episodes,由于每个split有20个测试类别,因此共构建 60000 个 episodes进行评估。
Probability of Correct Keypoint:PCK(正确关键点概率)用于评估姿态估计,若预测关键点和 gt 相关键点间的归一化距离小于某个阈值(σ),则认为是正确的:
在这里插入图片描述
1(·) 表示 indicator function;d是gt bbox 的最长边,用作归一化项;计算N个关键点的正确比率。实验报告每个split中所有类别的平均 PCK@0.2 (σ = 0.2),为了最小化类别偏差,还报告5个split的平均PCK结果。

5.2 Benchmark Results on MP-100 Dataset

CAPE是一项新任务,我们 tailor 现存的少样本学习 baseline,包括:Prototypical Networks、Finetune 和 MAML 来解决这一新任务。为公平比较,所有baseline 都采用 ResNet-50 作backbone。
Prototypical Networks (ProtoNet): ProtoNet为每个类构造一个原型,并将 query example 分配给原型“最近”的类。为了解决CAPE,使用 ProtoNet 为每个关键点构建原型,并在 query 图像中找到其特征最接近原型的位置。与图像分类不同,特征的感受野和空间分辨率对姿态估计至关重要,实验发现,Stage-3 的特征能良好平衡这两个因素。
Fine-tune: 该模型先使用 train set 上所有基本类的组合进行预训练。测试过程中,在估计 query 图像的姿态之前,在新类别的支持图像上对模型进行微调。为处理关键点数量不同的问题,模型输出所有类别中的最大关键点数量,即MP-100数据集上的68个,在训练和微调期间,仅针对每个特定类别监督少数有效关键点。
Model-Agnostic Meta-Learning (MAML): 通过元训练,MAML模型搜索良好的初始化权重,从而可以通过对几个支持图像进行微调来快速适应给定类别。与 FineTune 类似,MAML 模型的关键点数量设为68。在元测试期间,该模型可以在给定一些支持图像的情况下快速适应新类别。
如表1所示,POMNet在CAPE任务上显著优于现有的少样本学习方法。在5-Shot设置的实验中观察到 ProtoNet 主要依赖于 low-level 的外观特征,且仅使用5个样本难以为所有关键点构建可靠原型,它单独处理每种类型的关键点,不利用结构信息,限制了性能。MAML和FineTune通过在测试期间对一些样本进行微调来适应新的对象类别,但由于样本数量有限,会出现过拟合或欠拟合使模型难以在新类别上实现良好的性能。POMNet将CAPE任务视为一个匹配问题,解耦对象类别和关键点数量,同时,KIM明确捕捉关键点间和对象结构间的关系。因此,POMNet在5-Shot设置下的新类别上达到了80.71PCK,大幅优于baseline(提高25%以上)。
当样本图像的数量减少到1时,POMNet仅退化1.3%(79.70 vs 80.71PCK),可能是因为POMNet捕捉了语义关键点间的关系,并对遮挡和视觉模糊更鲁棒。相比之下,ProtoNet需要基于单个关键点构建原型,因此对外观变化更敏感,从而导致更大的性能下降(44.78 vs 58.56PCK)。

在这里插入图片描述

表1:MP-100数据集上基于5-Shot和1-Shot与baseline的比较。POMNet显著优于其他方法。

5.3 Cross Super-Category Pose Estimation

为进一步评估泛化能力,使用“Leave-One-Out”策略进行交叉超类姿态估计评估,即在MP-100数据集上训练除一个超类之外的所有超类模型,在这一个超类上进行评估,评估的超类包括人体、人脸、车辆和家具。
表2所示,POMNet在所有超类上都优于baseline,显示出更强的泛化能力,但超类泛化仍有很大的改进空间。我们注意到,所有方法在车辆和家具超类上表现不佳,可能是因为这些类别与训练类别非常不同,且提取的特征没有足够的辨别力,车辆有大量不可见的关键点,家具图像之间的类内差异很大,使这两个超类更具挑战性。解决CAPE需要处理遮挡和类内外观变化问题,并为看不见的类提取更多的区别性特征,我们将在未来探索这些方向。

5. Ablation Study

模型组件的影响。 表3显示了关键点交互模块(KIM)和匹配头(MH)的效果。
在这里插入图片描述

表3:MP-100 Split1上 1-Shot 设置下的消融研究。KIM和MH显著提高了模型性能。

培训类别数影响。如表4左边的数据所示,更多的训练类别能使模型更好地推广到新类别上,验证了MP-100数据集的必要性和我们实验的合理性。

在这里插入图片描述

表4:左侧(“#Train”):1-Shot 设置下训练类别数的影响。对一个新类别(“人体”)进行评估。右:训练和测试都只针对“人体”。

Sanity check: 采用人体姿态估计作健全性检查。在右表4中,“Oracle”是指POMNet仅在同一类别(“人体”)上进行训练和测试,其性能与SBLRes50相当,验证了设计的正确性。

5.5 Qualitative Results

图6定性评估了POMNet对MP-100测试集上的新类别的泛化能力。POMNet对视角变化和多样性外观具有鲁棒性。典型失败案例包括外观模糊(前两个示例)和严重遮挡(第三个示例)。

在这里插入图片描述

图6:POMNet对不可见类别的定性结果。第一列使手工标注的支持样本,其他列是预测的query样本。最后一列显示了一些失败案例(红色圆圈)。

6 Conclusions and Limitations

本文介绍了一个新任务:CAPE,不仅能促进姿态估计的发展(例如,新类别的伪标记),还便于其他领域的研究人员检测他们感兴趣对象(例如植物)的关键点。此外,它还可能积极影响其他CV任务,例如可以为基于关键点的目标跟踪、基于轮廓的实例分割和图形匹配开发CAPE模型。为了实现这一目标,我们提出了第一个CAPE框架:POMNet,以及第一个用于CAPE任务的数据集:MP-100。实验表明,POMNet在MP-100数据集上显著优于其他方法。然而,CAPE任务仍存在许多挑战:例如罕见类别的泛化性、类内外观变化、自遮挡和外观模糊。总之,CAPE作为一项重要但具有挑战性的任务,值得更多的研究和进一步探索。

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

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

相关文章

我是如何从测试开发做到年薪50万的?

入行测开,马上就要5年了。创业公司待过,大公司也待过,工作这一路走来,一些心得,转变,职场体会,早就想写出来分享一下。这个历程包含了技术的提升,工程师的素养和对这个行业的点滴感悟…

操作系统学习笔记(Ⅳ):文件

目录 1 文件管理 1.1 初识文件管理 1.文件属性 2.文件数据组织 3.向上功能 1.2 文件逻辑结构 1.无结构文件 2.有结构文件 3.顺序文件 4.索引文件 5.索引顺序文件 1.3 文件目录 1.文件控制块 2.目录结构 3.索引结点 1.4 文件物理结构 1.连续分配 2.链接分配 …

【面试题】【ES6】let和const命令 (面试必看)

给大家推荐一个实用面试题库 1、前端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 1、let命令 基本用法 用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。 let…

全国计算机三级嵌入式 - 题库 - 真题(含答案) - 未来教育 - 视频讲解 - 资料获取

全国全国计算机三级嵌入式等级考试 1. 考题大纲 历年不一样。但是换汤不换药。 2. 考试真题 历年全部考题、真题。包含全部答案。 3. 未来教育 考点、知识点、历年真题视频讲解。 4. 资料获取 在本人的博客上传资源里!!!下载不易&#xff0…

[附源码]计算机毕业设计springboot勤工俭学管理小程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

论文投稿指南——中文核心期刊推荐(计算机技术)

>>>深度学习Tricks&#xff0c;第一时间送达<<< &#x1f680; 写在前面 &#x1f431;‍&#x1f3cd; 本期开始&#xff0c;小海带会定期推荐各专业领域的中文核心期刊及论文投稿网址&#xff0c;供大家交流参考 ~ 《中文核心期刊要目总览》——是学术界…

功率放大器主要性能指标是什么(功率放大器工作状态的分类)

电子仪器中&#xff0c;放大器末级都要带动一定的负载&#xff0c;所以末级电路不仅要求可以输出较大幅度电压&#xff0c;而且要求输出较大幅度电流&#xff0c;也就是要求放大器能够对负载输出较大的功率&#xff0c;这种测试仪器就被称为功率放大器。 功率放大器主要性能指标…

人脸检测-级联卷积

人脸检测有好多种cv都有自带 说到人脸检测&#xff0c;应该是近几年不老的话题了&#xff0c;如果要将这技术真的落实到现在产品&#xff0c;其实还有很长的路&#xff0c;不知道大家有没有发现&#xff0c;很多无人超市开始走下坡路&#xff0c;也许不仅仅是技术的原因之一吧…

idea中LeetCode无法正常使用

在风诡云谲的互联网职场中&#xff0c;随时准备好简历和刷题能力是非常必要的&#xff01;在工作时间“光明正大”刷题的神器——LeetCode插件&#xff01; 原来&#xff1a;idea 2019&#xff1b;LeetCode 6.8 目前&#xff1a;idea 2020.3&#xff1b;LeetCode 8.4 一 ide…

ARM-A架构入门基础(四)Cache

14天学习训练营导师课程&#xff1a;周贺贺《ARMv8/ARMv9架构-快速入门》 1. 定义 Cache是ARM中一块可高速访问的内存块&#xff0c;每块cache包含&#xff1a; 主要的内存地址信息&#xff1b;缓存数据。 2. Cache模型 速度方面&#xff1a;L1 cache > L2 cache > L…

从json中获取嵌套对象值(Oracle中的json_value和MySQL中的JSON_EXTRACT) 以及Oracle和MySQL处理日期语法的不同

从json中获取嵌套对象值&#xff08;Oracle中的json_value和MySQL中的JSON_EXTRACT&#xff09; 以及Oracle和MySQL处理日期语法的不同1. 从json中获取嵌套对象值1.1 Oracle 的 json_value1.2 MySQL 的 JSON_EXTRACT2. 日期问题2.1 MySQL2.1.1 获取指定日期2.1.1.1 DATE_SUB() …

高等数学(第七版)同济大学 习题10-4 (后7题)个人解答

高等数学&#xff08;第七版&#xff09;同济大学 习题10-4&#xff08;后7题&#xff09; 函数作图软件&#xff1a;Mathematica 8.设球占有闭区域Ω{(x,y,z)∣x2y2z2≤2Rz}&#xff0c;它在内部各点处的密度的大小等于该点到坐标原点的距离的平方&#xff0c;试求这球的质心…

九、Sentinel熔断与限流

Sentinel实现熔断与限流 Sentinel介绍 官网 https://github.com/alibaba/Sentinel 中文 https://github.com/alibaba/Sentinel/wiki/介绍 是什么 一句话解释&#xff0c;之前的Hystrix 能干嘛 去哪下 https://github.com/alibaba/Sentinel/releases 怎么玩 https://sp…

vue学习笔记:还不会上传文件,10分钟教会你使用input file上传文件

最近在写一个用户上传MP3文件到服务器的小案例&#xff0c;我写一个这样的界面&#xff1a; 当用户点击input的时候&#xff0c;其实这里并不是input的样式&#xff0c;而是一个div将代替了input的原生样式&#xff0c;这样比较好看一点&#xff1a; <div class"addre…

Pycharm 安装配置 pyQt5 图文操作(全)

目录前言1. 安装模块2. Pycharm 配置 pyQt52.1 配置QtDesigner2.2 配置PyUic2.3 配置pyrcc3. pyQt5界面前言 Qt是开源的GUI库&#xff0c;自带的QtDesigner 可以轻松构建界面&#xff0c;而且有非常全面的工具代码库和APIpyQt 是 Qt 库的Python版本&#xff0c;目前最新版本是…

数据库--------代数运算和关系运算

目录 传统的集合运算专门的关系运算例题1例题2关系代数的运算按运算符的不同可分为传统的集合运算和专门的关系运算两类。 传统的集合运算 并(∪): 差(-): 交(∩): 笛卡尔积():R的每一行S的矩阵 示例:

A-Level化学例题解析及练习(分子间作用力和沸点)

今日知识点&#xff1a;Intermolecular forces and boiling points 例题 Q: Nitrogen, N2, and carbon monoxide, CO, both have Mr 28. The boiling point of N2 is 77 K. The boiling point of CO is 82 K.What could be responsible for this difference in boiling point…

[附源码]计算机毕业设计JAVA校园共享单车系统

[附源码]计算机毕业设计JAVA校园共享单车系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybati…

LinkedList源码分析

LinkedList源码分析 注意:本笔记分析对象为 Java8 版本,随版本不同,源码会发生变化。 基本介绍与类图 LinkedList 同时实现了 List 接口和 Deque 对口,也就是收它既可以看作一个顺序容器,又可以看作一个队列(Queue),同时又可以看作一个栈(stack)。 这样看来,linke…

能力提高篇--协调能力【对接】

作为一名安防技术支持工程师&#xff0c;正常情况下我们的日常主要为解决问题&#xff0c;然而对于重大项目或者复杂项目&#xff0c;更多的情况下我们的职责为收集客户需求&#xff0c;拉通研发侧评估&#xff0c;确认需求&#xff0c;确认程序交付时间&#xff0c;测试和最终…