当前位置: 首页 > news >正文

【论文翻译】Jointformer :一种基于误差预测和改进的三维人体姿态估计的单帧提升变压器

摘要

单目三维人体姿态估计技术有望极大地提高人体运动数据的可用性。表现最好的单幅图像2D3D提升模型使用图卷积网络(GCNs),通常需要一些手动输入来定义不同身体关节之间的关系。我们提出了一种新的基于变压器的方法,该方法使用更广泛的自我注意机制来学习表示关节的符号序列中的这些关系。我们发现使用中间监督,以及堆叠编码器之间的剩余连接有利于性能。我们还建议使用错误预测作为多任务学习框架的一部分,通过允许网络补偿其置信度来提高性能。我们进行了广泛的消融研究,以证明我们的每一项贡献都能提高性能。此外,我们表明,我们的方法在单帧3D人体姿势估计方面的表现优于最近的技术水平。我们的代码和训练过的模型在Github上公开提供。

1.介绍

运动分析对于混合现实、人机交互、运动生物力学和物理治疗等应用至关重要。然而,人体运动是高度复杂和主观的,高维度和受试者之间的差异意味着仍然有很多不了解的地方。虽然自20世纪80年代以来,运动捕捉系统就被用于量化运动,但设备昂贵,数据集在很大程度上受到实验室设置的限制,而且可供公开使用的数据相对较少。与此同时,互联网收集了大量野外(无标签和不受限制)的移动人类图像和视频。单目3D人体姿态估计(HPE)技术的成熟有可能使可用数据和可评估场景逐步增加,最终可用于提高我们对人体运动的理解

单眼三维人体姿态估计是指从单个视点预测三维关节位置。虽然视频技术可以利用时间信息来提高*表示等贡献精度,但单幅图像估计器仍有其自身的用处。例如,关于人体运动的有用信息可以从低帧率的在线图像数据集或视频数据集中学习。此外,一些视频方法选择使用单帧空间模型和多帧时间模型[2]的组合。因此,强单幅图像的3D姿态提升器也可以提高视频数据的性能。

直接估计技术旨在从图像[3]中直接估计三维人体姿态。然而,具有3D姿态标签的不同图像数据集是稀疏的,并且可以方便地利用现成的2D姿态估计器[4],[5]的高精度,这非常适合于像素处理任务。姿态提升方法从这些估计器提供的2D关节预测中预测3D姿态。用于学习这种映射的神经网络架构的类型已经逐步发展。最初用于姿态提升的简单基线[6]使用多层感知器来实现惊人的精度,即使没有来自图像特征的信息。最近的研究强调,将姿态视为向量忽略了关节之间的空间关系,而图形结构可能更适合[7]。然而,现有的关于图卷积的工作需要手工制作的邻接矩阵来定义节点之间的关系。此外,标准图卷积用共享权矩阵对相邻关节之间的关系进行建模,这对于铰接体的建模是次优的,因为不同身体关节之间的关系可能是不同的[8]。此外,叠加GCN层可能会导致[9]过平滑。相比之下,变压器模型的自注意算子将前馈层推广为对输入是动态的,并且关节之间的关系可以通过学习而不是手动编码。

transformer首先取代了循环神经网络作为自然语言处理(NLP)[10]中的主要模型,最近在图像分类[11]、物体检测[12]和动作识别[13]等视觉任务中成功取代了卷积神经网络。然而,迄今为止,很少有研究将transformer应用于三维人体姿态估计任务。现有的工作要么采用直接估计方法[14],要么集中研究基于视频的2D-3D提升[2],[15]。据我们所知,我们的方法是第一个采用变压器进行单幅图像2D-3D姿态提升的方法。序列的输入和输出标记表示关节,因此我们将我们的方法称为Jointformer。

因此,我们的贡献如下:

•我们提出了一种用于人体姿态估计的新型单帧2D-3D姿态提升的关节transformers。

•我们建议通过使网络能够补偿自身的不确定性,预测与每个关节相关的错误来提高准确性。

•我们提出了一种改进transformers结构,根据3D预测本身、输入2D关节和每个关节的预测误差,改进关节变压器的3D姿势预测。

•我们在transformers编码器堆栈中引入了对3D关节和误差预测的中间监督,由线性层促进。

•我们表明,这种架构在Human3.6M和MPI-INF-3DHP数据集上实现了最先进的结果,用于单帧3D人体姿势估计

2.相关工作

人体姿态估计:由于其在动作识别、增强现实和混合现实等多个领域的适用性,HPE已经成为计算机视觉中一个非常活跃的问题。我们介绍了与直接估计和2D-3D提升方法相关的文献。直接估计是指直接从原始图像中估计三维姿态。Pavlakos等[16]利用人体关节的序数深度来提供一个较弱的监督信号。Sun等人[17]利用关节连接结构,并定义了一个组合损失函数,对姿态的远程相互作用进行编码。马丁内斯等人探索了将问题解耦为2D人体姿势估计和2D- 3D提升,并使用vanilla神经网络来学习映射。Zhao等[7]利用语义图卷积网络(SemGCN)中节点的空间关系(包括局部和全局)来提高性能。Ci等[18]引入了局部连接网络来克服GCNs在估计3D姿态时的有限表示能力。Xu等人[19]使用图堆叠沙漏网络来处理三种不同尺度的人类骨骼表征的图结构特征。Tekin等[20]设计了一个网络,结合了直接估计和提升的优缺点。Yang等[21]提出了一种使用几何感知鉴别器辅助对抗学习的野外HPE方法。Fang等[22]提出了一种基于双向循环网络的提升框架,该框架明确地对诸如运动学、对称性和运动协调等辅助信息建模。Sharma等[23]使用变分自动编码器来预测一组候选3D姿势,并使用序数得分或信息对它们进行排名。Liu等[8]-在对HPE的综合综述中,研究了基于图卷积的提升方法的不同权值分担策略。Zhou等人[24]提出了一种两阶段方法,其中2D点被映射到中间潜在空间,然后对3D空间进行体积回归。

在视觉领域的Transformers:30年来,卷积神经网络(cnn)[25]一直是计算机视觉领域的主导模型。由于卷积在小的局部邻域内运行,深度堆叠卷积对于形成大的接受域和捕获长距离依赖关系变得必要。非局部神经网络[26]受到NLP[10]中的自我注意机制的启发,在CNN的各个阶段之间使用少量的非局部块,以更好地捕获长距离关系,进行动作识别。Ramachandran等人[27]探索了在小窗口内使用独立的自我注意作为图像分类和目标检测的基本构建块(而不是在卷积之上的增强)。同样,Zhao等[28]使用了一种具有成对和patchwise自注意的自注意网络进行图像识别。

        视觉转换器(ViT)[11]并没有将构建块的结构建立在resnet风格的体系结构上,而是直接应用了一个标准Transformers(尽可能少的修改)来对图像进行分类。图像输入为扁平的patches序列,patches处理类似于NLP应用程序中的tokens标记(单词)。类似的方法已经应用于视频分类[29]和动作识别[13]。

        尽管在其他视觉任务中有很大的前景,但很少有研究将Transformers应用于三维人体姿态估计任务。Liu等人首次使用注意力机制自适应地识别人类运动视频的时间窗口中的重要帧。Lin等[14]使用变压器直接估计单个输入帧的3D人体姿势和形状。输入标记由CNN提取的特征向量组成,该特征向量与随机初始化的3D关节或网格顶点连接。在每个编码器之后,输入输入令牌的尺寸逐渐减小。Zheng等人[2]解决了基于视频的3D人体姿态估计任务,并将空间Transformers作为一个更大的时间变压器中的组件,其中输出标记是编码的特征,而不是3D关节位置。因此,它不能应用于单帧2D-3D提升,其性能没有在图像上进行评估。Li等人[15]使用了一个提升Transformers,用跨步时间卷积取代编码器中的前馈层。它对时间序列进行操作,其中每个输入标记都是一个完整的骨架。这意味着有用的信息不能在骨骼的关节之间传递。

误差预测、改进和中间监督:人体姿态估计模型的预测不可避免地存在误差。Ronchi等人[30]在COCO数据集[31]上对2D HPE估计器的预测误差进行了严格的分析。研究了不同类型的误差(抖动、反转、交换和未命中)的相对频率和对性能的影响,发现误差显示出与所使用的2D位姿估计器类型无关的相似分布。Moon等[32]使用这些误差统计数据来生成合成姿势,并将其输入到细化网络。类似地,Chang等人[33]使用特定的误差分布来合成用于2D- 3D姿态提升的2D姿态。Fieraru等人[34]引入了一种姿态优化网络,该网络将图像和给定的姿态估计同时作为输入。Zhang等[35]构造了一个姿态图来考虑细化过程中不同关键点之间的关系。Wang等[36]使用图形姿态细化(GPR)模块根据关键点之间的关系来细化视觉特征。

        中间监督是在深度神经网络的各个阶段使用额外的损失项来提高性能的实践。在二维人体姿态估计中,Newell等[37]使用了重复的自底向上/自顶向下处理,中间监督他们的堆叠沙漏网络DETR[12]在堆叠的Transformers译码块之间使用中间监督来进行目标检测

3.方法

        在本节中,我们将描述我们提出的用于3D人体姿态估计的网络架构。遵循之前的2D-3D姿态提升方法[6],我们使用一个现成的模型从图像中生成2D姿态,并使用这些预测来估计相应的3D姿态。三维姿态估计在相机坐标和骨盆关节为中心。虽然以前的大多数技术都使用多层感知器(mlp)[6]或GCNs[7],但我们使用Transformer分两部分预测和细化3D姿态。首先,我们的Joint Transformer估计单个帧的2D姿态的3D姿态和预测误差。然后,利用中间预测和预测误差,进一步改进了该预测。这种新颖的网络组合使我们能够在单帧3D姿态估计中实现最先进的性能。

A.Joint Transformer

我们的Joint Transformer的设计,以提升输入的2D姿态到3D的单帧。给定一组J二维关节坐标x,我们将每个关节视为一个令牌,并首先将其嵌入到尺寸为c的更高维度:f_{embed}(x):\mathbb{R}^{J \times 2}\rightarrow \mathbb{R}^{J \times c}

传统上,在Transformer中,嵌入之后是位置编码。然而,在我们的例子中,关节的顺序在训练和测试过程中都没有改变,隐式地编码了输入本身的位置(即输入中的第一个关节总是髋关节)。这使得显式位置编码的添加是多余的,并且实际上会损害我们的预测性能,正如我们在第IV-C节中所展示的那样。

在嵌入之后,我们将关节点tokens馈送到Transformer编码器的堆栈中,其中应用自注意来跨每个关节共享信息。我们使用变压器编码器[10]的原始实现,并且没有进一步修改隐藏维数。给定L个变压器编码器,每个编码器的输出为z_L\in \mathbb{R}^{J \times c}。最后,我们回归最后一个编码器z的输出,使用由层归一化、dropout和单个线性层fpred(z)组成的MLP块来预测3D姿态:f_{pred}(z): \mathbb{R}^{J \times c}\rightarrow \mathbb{R}^{J \times 3}

        1)中间监督 : 通过设计,Transformer编码器层在tokens之间共享信息,并学习哪些tokens对于预测是重要的。这甚至给了我们堆栈中的第一个Transformer编码器学习联合标记如何相互作用和预测3D姿势的能力(尽管不一定是容量)。我们利用中间监督来训练我们的网络。与以前的方法相比,我们不单独计算网络末端的损耗,而是在堆栈中每个单独的Transformer编码器之后引入一个损耗项。这允许网络学习初始估计,并由堆栈中的每个Transformer编码器进一步细化。后续的变压器编码器从以前的编码器中传递高度鉴别的特征,并可以专注于越来越细粒度的特征,以细化以前的估计。为了进一步帮助解决这个问题,我们在每个编码器周围添加残差连接。在我们的实现中,每个编码器后面都有一个预测3D姿态的MLP,可以对其应用损失。我们在预测的3D姿态中添加一个额外的线性层,将预测嵌入到变压器的隐藏维度中,并将嵌入添加到原始变压器输出中,如图1的右上角所示。

        2)姿态嵌入:二维输入姿态坐标需要扩展到我们网络的隐藏维度。以前的方法使用线性层或图卷积来完成这项任务。然而,在我们的方法中,我们在所有关节上使用核大小为1的1D卷积。这相当于一个线性层,将每个关节的二维坐标分别扩展到隐藏维度,并在每个关节之间共享权重。由于每个关节的嵌入权重是共享的,因此该层可以专注于寻找扩展二维坐标的最佳方法,而不考虑关节的位置。传统上,Transformer还需要嵌入标记的位置编码。由于关节的输入顺序从未改变,位置已经隐式编码,额外的编码是多余的。我们在表III中显示,我们的方法在没有任何显式位置编码的情况下工作得更好,我们的卷积嵌入优于线性层。

        3)错误预测:对其预测的置信度进行估计,使网络具有补偿能力。由于分类头在softmax层之前每个类生成一个预测,因此可以直接推断其预测置信度。相比之下,回归头缺乏这种开箱即用的能力。我们在变压器编码器的输出中添加第二个反映3D姿势预测的MLP,并迫使网络隐式地学习自己的不确定性。因此,误差预测将预测自己每个关节和每个坐标f_{error}(z)=\mathbb{R}^{J \times c}\rightarrow \mathbb{R}^{J \times 3}。我们观察到,误差预测的加入使训练稳定,并导致更好的整体结果(第IV -C节)。它还可以作为可视化姿势或技术实际应用的重要附加信息。

        4)损失函数:我们用来训练我们的网络的损失函数由两项组成:3D预测损失L3D和误差损失L_{error}。对于3D预测损失,我们使用预测的3D位姿y和真实位姿y之间的均方误差。对于误差损失,我们首先将真实误差\widehat{e}定义为预测位姿和真实位姿之间的绝对差\widehat{e}=\left | y-\widehat{y} \right |。这允许我们使用预测误差e和真实误差\widehat{e}之间的均方误差作为误差损失。由于我们的中间监督,我们在堆栈中的每个变压器编码器后应用这两个损失项。这导致了综合损失:

 其中L是堆栈中Transformer编码器的数量

B. Refinement Transformer

为了进一步利用误差预测,提高姿态预测的精度,我们设计了一个额外的Refinement Transformer。该网络类似于我们的joint Transformer,但有以下区别:输入是原始的2D位姿连接到预测的3D位姿和误差预测。我们只堆叠两个隐藏维度为256的Transformer编码器,并且我们不使用中间监督。与joint Transformer一样,Refinement Transformer对每个关节进行标记,并使用1D卷积将8通道输入嵌入到隐藏维度。在堆叠的Transformer编码器之后,我们使用一个线性层来预测最终的3D姿态。

C.实现细节

我们在PyTorch[38]中实现我们的方法,并使用单个NVIDIA GeForce RTX 2080 TI进行训练。我们使用AdamW[39]优化器训练联合变压器30个周期,批大小为256,初始学习率为0.001,余弦退火学习率衰减为[40]。我们所有的预测层在训练期间也包括0.2的dropout。

然后,我们确定联合变压器的权重,并使用3D预测损失和相同的超参数训练细化变压器。在评估期间,我们通过水平翻转使用测试时数据增强,遵循[41]。

 4.实验

实验部分就不写了

相关文章:

23201115-邓俊豪的第一次blog

目录PTA三次大作业前言关于难度和题目量关于知识点设计与分析第一次大作业题目我的代码分析报告第二次大作业题目我的代码分析报告第三次大作业题目N:1 #Q:1+1= #A:2N:2 #Q:2+2= #A:4T:1 1-5 2-8X:20201103 Tom-20201104 JackS:1 20201103 #A:1-5 #A:2-4D:N-2N:1 #Q:1+1= #A:2T…...

python前端tkinter

基础窗口展示: import tkinter as tknewWin tk.Tk() newWin.title("Im a new window!") newWin.geometry("400x300500300") #设置窗口的大小以及初始位置lab tk.Label(newWin) #lab tk.Label() lab.config(text "Im a new label!&q…...

使用Socket实现局域网内聊天室

Socket的通信方式:     Socket有TCP和UDP两种通信方式,我们可以根据具体的情况来选择。一般情况下,如果需要数据准确传输、不丢失,则选择TCP;反之,则选择UDP。   参考文章:       So…...

LCD显示屏 --- LVDS 和 MIPI 区别

从接口上区分,分为 VGA、RGB(类似于VGA,VGA的RGB三路是模拟信号,而RGB是数字信号)、LVDS、MIPI。一般小尺寸屏幕(七寸以下)大部分使用RGB,大尺寸的高清屏幕都是使用LVDS、MIPI接口。对于RGB接口的屏幕,LCDC送出来的信号直接给屏幕,中间不需要其他的转换。 LVDS接口:…...

Linux程序调试优化(1)——内存占用详解及优化思路

文章目录 1.free查看总体的内存占用2./proc/$PID/status 查看某进程状态 linux开发最重要的两个参数,分别是内存以及CPU使用率,若内存出现严重不足,则在需要使用内存时,可能出现申请不到的情况,导致 OOM,L…...

RAG 2.0架构详解:构建端到端检索增强生成系统

关于检索增强生成(RAG)的文章已经有很多了,如果我们能创建出可训练的检索器,或者说整个RAG可以像微调大型语言模型(LLM)那样定制化的话,那肯定能够获得更好的结果。但是当前RAG的问题在于各个子模块之间并没有完全协调,就像一个缝合怪一样,虽然能够工作但各部分并不和…...

【论文翻译】Jointformer :一种基于误差预测和改进的三维人体姿态估计的单帧提升变压器

摘要 单目三维人体姿态估计技术有望极大地提高人体运动数据的可用性。表现最好的单幅图像2D3D提升模型使用图卷积网络(GCNs),通常需要一些手动输入来定义不同身体关节之间的关系。我们提出了一种新的基于变压器的方法,该方法使用更广泛的自我注意机制来…...

Linux用户管理

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:Java案例分…...

第四十六章 动态规划——状态机模型

第四十六章 动态规划——状态机模型一、通俗理解状态机DP1、什么是状态机2、什么是状态机DP二、例题1、AcWing 1049. 大盗阿福(1)问题(2)分析a.状态定义b.状态转移c.循环设计d.初末状态(3)代码2、AcWing 10…...

Idea中指定xml文件失效

目录一、🐇 项目场景:二、🐇 问题描述三、🐇 原因分析:四、🐇 解决方案:一、🐇 项目场景: 最近狮子在搞一个项目,需要用到数据库多表查询,所以在…...

【华为上机真题】工号不够用咋办

🎈 作者:Linux猿 🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊! &…...

【蓝桥云课】大整数相加与相乘——字符串模拟

一、大整数相加 思路分析: 输入两个整数a1456、b789,输出两个整数相加的结果。 ①将两个整数翻转 个位十位百位千位a6541b9870 ②相加计算,逢十进一 a0b06915a_0b_06915a0​b0​6915(进1留5) a1b158114a_1b_158114a…...

泊松过程与排队论

全国同理:随机过程随机会过 ......唉 你说热统,他为什么要搭配着随机过程一起学 ......唉 你说数模比赛 为什么不能白送一个奖牌小摘要泊松过程泊松过程来到间隔与等待时间的分布来到时刻的条件分布M/G/1 忙期非齐次泊松过程复合泊松过程条件泊松过程排队系统输入常见的输入分布…...

告别3D-DNA试试chromap和yahs做Hi-C辅助组装吧

之前使用的是3D-DNA流程做Hi-C的辅助组装,它的最大优势就是输出结果可以对接下游的JBAT(juicerbox with Assembly Tools)进行手动矫正。然而它点缺陷也很明显,处理速度不够快,且对植物的优化不行,同时目前许久不更新了。 最近我发…...

Kettle(9):排序记录组件

1 组件介绍 排序组件可以将Kettle数据流中的数据进行排序,可以指定升序、还是降序排列 2 需求 使用Kettle将t_user表中的用户数据,按照年龄升序排序,并将排序后的数据装载到Excel 3 构建Kettle数据流图 效果图...

LVS+keepalived(双主)+Nginx实现高可用负载均衡

#为什么采用双主架构: 单主架构只有一个keepalived对外提供服务,该主机长期处于繁忙状态,而另一台主机却很空闲,利用率低下 #双主架构的优点: 即将两个或以上VIP分别运行在不同的keepalived服务器,以实现…...

力扣 2299. 强密码检验器 II

题目 如果一个密码满足以下所有条件,我们称它是一个 强 密码: 它有至少 8 个字符。 至少包含 一个小写英文 字母。 至少包含 一个大写英文 字母。 至少包含 一个数字 。 至少包含 一个特殊字符 。特殊字符为:“!#$%^&*()-” 中的一个。…...

[GWCTF 2019]枯燥的抽奖

目录 信息收集 知识回顾 解题思路 信息收集 查看源码&#xff0c;发现check.php <?php #这不是抽奖程序的源代码&#xff01;不许看&#xff01; header("Content-Type: text/html;charsetutf-8"); session_start(); if(!isset($_SESSION[seed])){ $_SESSIO…...

初入职场的我认识到linux的重要性

先自我介绍下&#xff0c;我是一名普通的软件工程专业的本科毕业生&#xff0c;今年刚毕业&#xff0c;软件工程的课程超级多&#xff0c;有程序设计基础、面向对象程序设计、软件工程导论、离散结构、数据结构与算法、计算机系统基础、操作系统、数据库概论、网络及其计算等等…...

数据库系统概述

文章目录一、数据、数据库、数据库管理系统、数据库系统1.数据2.数据库&#xff08;DB&#xff09;3.数据库管理系统&#xff08;DBMS&#xff09;1&#xff09;数据定义2&#xff09;数据组织、存储和管理3&#xff09;数据操纵4&#xff09;事务管理和运行管理5&#xff09;数…...

【算法基础】快速排序(分治思想)

一、快速排序原理 1. 算法介绍 快速排序算法通过多次比较和交换来实现排序,其排序流程如下: (1)首先设定一个分界值,通过该分界值将数组分成左右两部分。(记左端为L,最右端为R) 分界点的选取有如下四种方法:(1)q[L];(2)q[(L+R)/2];(3)q[R];(4)随机选取 (2)…...

JavaEE-初识网络

目录一、局域网二、广域网三、网络通信基础3.1 IP地址3.2 端口号3.3 协议四、协议分层五、封装和分用一、局域网 局域网&#xff0c;网络种类&#xff0c;覆盖范围一般是方圆几千米之内&#xff0c;其具备的安装便捷、成本节约、扩展方便等特点使其在各类办公室内运用广泛。局…...

【23】C语言 | 初阶结构体

目录 1、结构的基础知识 2、结构成员的类型 3、结构体初始化 4、结构体的访问 5、结构体传参 1、结构的基础知识 结构是这些值的集合&#xff0c;这些值称为成员变量。结构的每个成员可以是不同类型的变量 数组&#xff1a;一组相同类型的元素的集合 结构体&#xff1a;也是…...

【笔记】SemGCN

一. 论文总结 1.1 核心贡献 提出了一种改进的图卷积操作&#xff0c;称为语义图卷积(SemGConv)&#xff0c;它源自cnn。其关键思想是学习图中暗示的边的信道权值&#xff0c;然后将它们与核矩阵结合起来。这大大提高了图卷积的能力。其次&#xff0c;我们引入了SemGCN&#x…...

Python机器学习:一元回归

→\rightarrow→回归效果评价 &#x1f315; 一元回归 一元回归主要研究一个自变量和一个因变量之间的关系&#xff0c;而这个自变量和因变量之间的关系又可分为线性回归和非线性回归。 ⭐️ 一元线性回归分析两个变量之间的线性关系&#xff0c;如ykxbykxbykxb中xxx和yyy就是…...

四轮两驱小车(三):STM32驱动MPU6050进行转弯

前言&#xff1a; 寒假已经过了一半了&#xff0c;前段时间跟学弟一起从零开始搞了一下深度学习&#xff0c;现在才想起来这个系列还没有更完。本篇博客主要介绍一下这个小车转直角弯的神器----MPU6050 MPU6050介绍&#xff1a; 我所采用的MPU6050是某宝上十几块钱的这种&…...

C++:类的static成员,友元和构造函数初始化列表

目录 一.类的构造函数的初始化列表 1.类的构造函数初始化列表的引入和介绍 2.初始化列表用于类的类对象成员的拷贝构造函数的调用 3.初始化列表的使用细则 4.使用初始化列表的一个注意事项 二.explicit关键字 三.C类的static成员 1.类中static修饰的成员变量 2.类中st…...

用友U8和旺店通企业版淘宝奇门单据接口集成

用友U8和旺店通企业奇门单据接口集成对接系统&#xff1a;旺店通企业奇门慧策最先以旺店通ERP切入商家核心管理痛点——订单管理&#xff0c;之后围绕电商经营管理中的核心管理诉求&#xff0c;先后布局流量获取、会员管理、仓库管理等其他重要经营模块。慧策的产品线从旺店通E…...

Java-黑马Java学习作业-day11集合学生管理系统

学习视频链接&#xff1a;https://www.bilibili.com/video/BV17F411T7Ao 文章目录题目1-将数组存放在集合中题目2-教师信息查看题目3-员工信息删改查操作题目4&#xff08;综合&#xff09;-图书管理系统题目1-将数组存放在集合中 现有如下字符串元素&#xff1a;[“aaa”, “…...

【Linux】冯诺依曼体系结构与操作系统概念理解

&#x1f451;作者主页&#xff1a;安 度 因 &#x1f3e0;学习社区&#xff1a;StackFrame &#x1f4d6;专栏链接&#xff1a;Linux 文章目录一、前言二、冯诺依曼体系结构1、体系简述2、内存的重要性3、硬件方案解释软件行为4、体系结构中的数据流动5、拓展三、操作系统简述…...

protegeproject/mapping-masterPublic

protegeproject/mapping-masterPublicWatch 10 Fork 7Fork your own copy of protegeproject/mapping-masterStar 44CodeIssues15Pull requests3ActionsProjectsWikiSecurityInsightsMappingMasterDSL编辑新页面马丁奥康纳编辑了此页面 on Oct 29, 2020 85 修订页面4家Mapping…...

大数据分析案例-基于随机森林算法构建人口普查分析模型

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…...

【数据结构和算法】认识线性表中的链表,并实现单向链表

本文接着上文&#xff0c;上文我们认识了线性表的概念&#xff0c;并实现了静态、动态顺序表。接下来我们认识一个新概念链表。并实现单向链表的各种操作。顺序表还有不明白的看这一篇文章 (13条消息) 【数据结构和算法】实现线性表中的静态、动态顺序表_小王学代码的博客-CSDN…...

2023-1-28

具有给定数值的最小字符串 题目描述 小写字符 的 数值 是它在字母表中的位置&#xff08;从 1 开始&#xff09;&#xff0c;因此 a 的数值为 1 &#xff0c;b 的数值为 2 &#xff0c;c 的数值为 3 &#xff0c;以此类推。 字符串由若干小写字符组成&#xff0c;字符串的数…...

Linux_常见命令

1.ls ls -l 列出隐藏文件&#xff0c;并显示10项权限,类似如同下图 在部分发行版本的linux下&#xff0c;ll等同于ls -l 首先&#xff0c;第一列为-则代表着这一列是文件&#xff0c; 第一列为d则代表这一列为目录 除了第一位&#xff0c;那么其他还有9位&#xff0c;分为3组…...

【Linux】基础IO --- 系统级文件接口、文件描述符表、文件控制块、fd分配规则、重定向…

能一个人走的路别抱有任何期待&#xff0c;死不了 文章目录一、关于文件的重新认识二、语言和系统级的文件操作&#xff08;语言和系统的联系&#xff09;1.C语言文件操作接口&#xff08;语言级别&#xff09;1.1 文件的打开方式1.2 文件操作的相关函数1.3 细节问题2.系统级文…...

ffmpeg无损裁剪、合并视频

我用的版本是 ffmpeg version git-2020-06-23-ce297b4 官方文档 https://ffmpeg.org/ffmpeg-utils.html#time-duration-syntax 时间格式 [-][HH:]MM:SS[.m...] 或 [-]S[.m...][s|ms|us]裁剪视频 假设需要裁剪视频aaa.mp4&#xff0c;第5秒到第15秒 ffmpeg -ss 5 -to 15 -i…...

ATAC-seq分析:Annotating Peaks(9)

1. 注释开放区域 将已识别的无核小体区域与基因组特征&#xff08;如基因和增强子&#xff09;相关联通常很有趣。 一旦注释到基因或增强子的基因&#xff0c;我们就可以开始将 ATACseq 数据与这些基因的特征相关联。 &#xff08;功能注释、表达变化、其他表观遗传状态&#x…...

蓝桥杯刷题015——最少刷题数(二分法+前缀和)

问题描述 小蓝老师教的编程课有 N 名学生, 编号依次是 1…N 。第 i 号学生这学期刷题的数量是 Ai​ 。 对于每一名学生, 请你计算他至少还要再刷多少道题, 才能使得全班刷题比他多的学生数不超过刷题比他少的学生数。 输入格式 第一行包含一个正整数 N 。 第二行包含 N 个整数:…...

Linux——进程

目录 冯诺依曼体系结构 操作系统(Operator System) 概念 设计OS的目的 定位 如何理解 "管理" 总结 系统调用和库函数概念 承上启下 进程 基本概念 描述进程-PCB task_struct-PCB的一种 task_ struct内容分类 组织进程 查看进程 通过系统调用获取进程…...

Junit单元测试框架【基础篇】

Junit单元测试框架【基础篇】&#x1f34e;一.Junit单元测试框架&#x1f352;1.1 注解&#x1f352;1.2 断言&#x1f352;1.3 用例执行顺序&#x1f352;1.4 测试套件&#x1f349;1.4.1 指定类&#x1f349;1.4.1 指定包&#x1f352;1.5 参数化&#x1f349;1.5.1 单参数&a…...

高通平台开发系列讲解(WIFI篇)什么是WLAN无线局域网

文章目录 一、什么是WLAN1.1、WLAN发展史1.2、WLAN工作频段二、高通相关文件2.1、配置文件2.2、开机启动2.3、wpa_supplicant沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本文将基于高通平台介绍什么是无线局域网。 一、什么是WLAN 在WLAN领域被大规模推广和商用的是…...

JavaScript 变量

JavaScript 变量 变量是什么? 变量是计算机中用来存储数据的“容器”&#xff0c;它可以让计算机变得有记忆&#xff0c;通俗的理解变量就是使用【某个符号】来代表【某个具体的数值】&#xff08;数据&#xff09; JavaScript 变量 与代数一样&#xff0c;JavaScript 变量…...

C语言进阶——文件管理

每当我们写好一段代码运行结束之后&#xff0c;再次运行的时候就会发现&#xff0c;之前在终端上输入的数据都会消失&#xff0c;那么如何把之前输入的数据保存下来呢&#xff1f; 我们一般把数据持久化的方式有把数据存放在磁盘文件中、存放到数据库。打印等方式进行保存。 …...

[Rust笔记] 规则宏的“卫生保健”

规则宏代码的“卫生保健”规则宏mbe即是由macro_rules!宏所定义的宏。它的英文全称是Macro By Example。相比近乎“徒手攀岩”的Cpp模板元编程&#xff0c;rustc提供了有限的编译时宏代码检查功能&#xff08;名曰&#xff1a;Mixed Hygiene宏的混合保健&#xff09;。因为rust…...

芒果改进YOLOv7系列:超越ConvNeXt结构,原创结合Conv2Former改进结构,Transformer 风格的卷积网络视觉基线模型,高效涨点

💡该教程为改进进阶指南,包含大量的原创首发改进方式, 所有文章都是全网首发原创改进内容🚀💡本篇文章 基于 YOLOv5、YOLOv7芒果改进YOLO系列:芒果改进YOLOv7系列:超越ConvNeXt结构,原创结合Conv2Former改进结构,Transformer 风格的卷积网络视觉基线模型,高效涨点、…...

Java---微服务---RabbitMQ部署

RabbitMQ部署1.单机部署1.1.下载镜像1.2.安装MQ1.3访问管理端2.集群部署2.1.集群分类2.2.设置网络1.单机部署 我们在Centos7虚拟机中使用Docker来安装&#xff0c;如未安装dockr&#xff0c;请参考《Centos7安装Docker》 1.1.下载镜像 方式一&#xff1a;在线拉取 docker …...

别总写代码,这130个网站比涨工资都重要

今天推荐一些学习资源给大家&#xff0c;当然大家可以留言评论自己发现的优秀资源地址 搞学习 找书籍 冷知识 / 黑科技 写代码 资源搜索 小工具 导航页&#xff08;工具集&#xff09; 看视频 学设计 搞文档 找图片 搞学习 TED&#xff08;最优质的演讲&#xff09;&#xff1…...

Python 类方法简记

文章目录前言必须实例化的类方法使用静态装饰器的类方法使用类装饰器的类方法省流版本ref:前言 Python 的类可以有特定的方法。下面是三种设计类方法的模板。 class A(object):a adef foo1(self, name):print hello, namestaticmethoddef foo2(name):print hello, nameprint…...

分享136个ASP源码,总有一款适合您

ASP源码 分享136个ASP源码&#xff0c;总有一款适合您 下面是文件的名字&#xff0c;我放了一些图片&#xff0c;文章里不是所有的图主要是放不下...&#xff0c; 136个ASP源码下载链接&#xff1a;https://pan.baidu.com/s/11db_K2QXns5pm8vMZBVPSw?pwds0lb 提取码&#x…...

【Python百日进阶-Web开发-Peewee】Day241 - Peewee 安装和测试、快速开始

文章目录 一、安装和测试1.1 使用 git 安装1.2 运行测试1.3 可选依赖项1.4 关于 SQLite 扩展的注意事项二、快速开始2.1 模型定义2.2 存储数据2.3 检索数据2.3.1 获取单条记录2.3.2 记录列表2.3.3 排序2.3.4 组合过滤器表达式2.3.5 聚合和预取2.3.6 SQL 函数2.4 数据库2.4.1 使…...

手机提供GMS支持(适用安卓和鸿蒙系统)

手机提供GMS支持 - 适用安卓和鸿蒙系统前言方式1&#xff1a;安装GMS套件&#xff08;不推荐&#xff09;方式2&#xff1a;安装OurPlay&#xff08;推荐&#xff09;方式3&#xff1a;安装Gspace&#xff08;推荐&#xff09;前言 本文提供多种为手机&#xff08;安卓和鸿蒙系…...

[JavaEE]线程池

专栏简介: JavaEE从入门到进阶 题目来源: leetcode,牛客,剑指offer. 创作目标: 记录学习JavaEE学习历程 希望在提升自己的同时,帮助他人,,与大家一起共同进步,互相成长. 学历代表过去,能力代表现在,学习能力代表未来! 目录: 1. 线程池是什么? 2. 线程池的实现原理 3. 标准…...

Redis缓存污染了怎么办?

我们应用Redis缓存时&#xff0c;如果能缓存会被反复访问的数据&#xff0c;那就能加速业务应用的访问&#xff0c;但是&#xff0c;如果发生了缓存污染&#xff0c;那么&#xff0c;缓存对业务应用的加速作用就减少了。 在一些场景下&#xff0c;有些数据被访问的次数非常小&…...

特斯拉印证成本仍是工业制造取胜的关键,反证中国制造的优势

近20年来&#xff0c;业界对于工业制造的竞争优势开始逐渐偏离成本控制&#xff0c;然而如今特斯拉在全球的成功却正在印证着工业制造的成功仍然在于成本&#xff0c;成本才是工业制造取胜的关键&#xff0c;其他任何被吹嘘的个性化、创新等全都是骗人的把戏。特斯拉的成功曾被…...

工具及方法 - 斗地主技巧

斗地主游戏起源 斗地主是流行于湖北武汉、汉阳一带的一种扑克游戏。游戏需由3个玩家进行&#xff0c;用一副54张牌(连鬼牌)&#xff0c;其中一方为地主&#xff0c;其余两家为另一方&#xff0c;双方对战&#xff0c;先出完牌的一方获胜。斗地主起源于湖北武汉汉阳一带&#xf…...

算法章节目录

​​​​​​0 决策树基础-CSDN博客 1 GBDT:梯度提升决策树-CSDN博客 2 逻辑斯蒂回归&#xff08;分类&#xff09;-CSDN博客 3 xgboost-CSDN博客 4 lightGBM-CSDN博客 5 CatBoost模型-CSDN博客 6 tabNet: 堪比xgboost的深度学习模型-CSDN博客 7 Transform结构-CSDN博客...

(十八)C++自制植物大战僵尸游戏的游戏暂停实现

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/uzrnw 游戏暂停 当玩家遇到突发事件&#xff0c;可以通过暂停功能暂停游戏&#xff0c;以便及时处理问题。在激烈的游戏中&#xff0c;玩家可能需要暂停游戏来进行策略调整。此外&#xff0c;长时间的游戏对战可能会让玩…...

mysql面试题五(事务)

目录 1.mysql有哪些锁及作用 1. 行锁&#xff08;Row Locks&#xff09; 2. 间隙锁&#xff08;Gap Locks&#xff09; 3. Next-Key Locks 4. 意向锁&#xff08;Intention Locks&#xff09; 5. 表锁&#xff08;Table Locks&#xff09; 6. 元数据锁&#xff08;Metad…...

14 Php学习:表单

表单 PHP 表单是用于收集用户输入的工具&#xff0c;通常用于网站开发。PHP 可以与 HTML 表单一起使用&#xff0c;用于处理用户提交的数据。通过 PHP 表单&#xff0c;您可以创建各种类型的表单&#xff0c;包括文本输入框、复选框、下拉菜单等&#xff0c;以便用户可以填写和…...

华为OD-A卷-寻找链表的中间节点[100分]Java 100%通过率

题目描述 给定一个单链表 L,请编写程序输出 L 中间结点保存的数据。 如果有两个中间结点,则输出第二个中间结点保存的数据。例如: 给定 L 为 1→7→5,则输出应该为7;给定 L 为 1→2→3→4,则输出应该为3;输入描述 每个输入包含1个测试用例。 每个测试用例: 第一行…...

【EI会议征稿通知】2024年图像处理、机器学习与模式识别国际学术会议(IPMLP 2024)

2024年图像处理、机器学习与模式识别国际学术会议&#xff08;IPMLP 2024) 2024 International Conference on Image Processing, Machine Learning and Pattern Recognition 重要信息 大会官网&#xff1a;www.ipmlp.net&#xff08;点击参会/投稿/了解会议详情&#xff09;…...