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

MixFormerV2: Efficient Fully Transformer Tracking

摘要

基于变压器的跟踪器在标准基准测试上取得了很强的精度。然而,它们的效率仍然是在GPU和CPU平台上实际部署的一个障碍。在本文中,为了克服这一问题,我们提出了一个完全变压器跟踪框架,称为MixFormerV2,没有任何密集的卷积操作和复杂的分数预测模块。我们的关键设计是引入四种特殊的预测标记,并将它们与来自目标模板和搜索区域的标记连接起来。然后,我们对这些混合标记序列应用统一的变压器主干。这些预测标记能够通过混合注意捕获目标模板和搜索区域之间的复杂相关性。在此基础上,我们可以很容易地预测跟踪盒,并通过简单的MLP头估计其置信度得分。为了进一步提高MixFormerV2的效率,我们提出了一种新的基于蒸馏的模型简化范式,包括密-稀疏蒸馏和深到浅层蒸馏。前者的目的是将知识从基于致密头的MixViT转移到我们的完全变压器跟踪器上,而后者则用于修剪主干网的一些层。我们实例化了两种类型的MixForemrV2,其中MixFormerV2-B在LaSOT上达到70.6%的AUC,GPU速度为165FPS,MixFormerV2-S在LaSOT上以实时CPU速度超过FEAR-LAUC2.7%的AUC。

介绍

视觉物体跟踪一直是计算机视觉中一项基本而长期的任务,目的是在其初始边界框的视频序列中定位物体。它有广泛的实际应用,通常需要较低的计算延迟。因此,在保持高精度的同时,设计一个更高效的跟踪架构是很重要的。最近,基于变压器的单流跟踪器[7,14,54]获得了良好的跟踪精度,由于变压器块内的特征提取和目标集成的统一建模,这允许两个组件受益于变压器的开发(例如,维特[17],自我监督预训练[23]或对比预训练[42])。然而,对于这些跟踪器来说,推理效率,特别是在CPU上,仍然是实际部署的主要障碍。以最先进的跟踪器MixViT [15]为实例,其管道包含i)目标模板和搜索区域标记序列上的变压器主干,ii)二维搜索区域的密集角头和iii)额外复杂的分数预测模块进行分类(即估计可靠的在线样本选择的盒子质量)。为了实现高效跟踪器,MixViT的设计仍存在几个问题。首先,密集的卷积角头仍然显示出一个耗时的设计,如表1所示。这是因为它在高分辨率的二维特征图上,通过总共10个卷积层密集地估计了盒角的概率分布。其次,为了处理在线模板的更新,需要一个由精确的RoI池化层、两个注意块和一个三层MLP组成的额外复杂的分数预测模块来提高在线样本的质量,这在很大程度上阻碍了其MixViT的效率和简单性。

在这里插入图片描述

为了避免密集的角头和复杂的分数预测模块,我们提出了一种新的全变压器跟踪框架——不需要任何密集卷积操作的MixFormerV2。我们的MixFormerV2产生了一个非常简单和高效的架构,它由混合令牌序列上的一个变压器主干和可学习预测令牌上的两个简单的MLP头组成。具体地说,我们引入了四种特殊的可学习预测标记,并将它们与来自目标模板和搜索区域的原始标记连接起来。与标准ViT中的CLS标记一样,这些预测标记能够捕获目标模板和搜索区域之间的复杂关系,作为后续回归和分类的紧凑表示。在此基础上,我们可以通过简单的MLP头很容易地预测目标盒和置信度得分,从而得到一个高效的全变压器跟踪器。我们的MLP头直接回归了四个盒坐标的概率分布,在不增加开销的情况下提高了回归精度。

为了进一步提高MixFormerV2的效率,我们提出了一种新的基于蒸馏的模型简化范式,包括密稀疏蒸馏和深浅蒸馏。密度稀疏蒸馏的目的是将知识从基于稠密头的MixViT转移到我们的全变压器跟踪器。由于我们的MLP头部中基于分布的回归设计,我们可以很容易地采用对数模拟策略,将MixViT跟踪器提取到我们的MixFormerV2中。根据表2中的观察结果。,我们还利用从深到浅的蒸馏来修剪我们的MixFormerV2。我们设计了一种新的渐进深度修剪策略,遵循一个关键原则,限制学生和教师跟踪器的初始分布尽可能相似,从而增强知识的转移能力。具体来说,在冻结的教师模型的指导下,一些复制的教师模型的某些层逐渐被丢弃,我们使用修剪后的模型作为我们的学生初始化。在cpu实时跟踪方面,我们进一步引入了一个中间教师模型来弥补大教师和小学生之间的差距,并基于所提出的蒸馏范式对MLP的隐藏层维度进行了修剪。

在这里插入图片描述

基于所提出的模型简化范式,我们实例化了两种类型的MixFormerV2跟踪器,MixFormerV2-B和MixFormerV2-S。如图1所示,MixFormerV2在跟踪精度和推理速度之间比之前的跟踪器取得了更好的权衡。我们的贡献有两方面: 1)我们提出了第一个没有任何卷积操作的完全变压器跟踪框架,称为MixFormerV2,产生了一个更统一和高效的跟踪器。2)我们提出了一种新的基于蒸馏的模型简化范式,使MixFormerV2更高效,可以在具有gpu或cpu的平台上实现高性能跟踪。

在这里插入图片描述

相关工作

Efficient Visual Object Tracking

近几十年来,由于新的基准数据集和更好的跟踪器的出现,视觉对象跟踪任务得到了快速的发展。研究人员已经试图为实际应用探索高效和有效的跟踪架构,如基于暹罗的跟踪器,在线跟踪器和基于变压器的跟踪器。得益于变压器的结构和注意机制,最近的视觉跟踪工作已经逐渐放弃了传统的三阶段模型范式,即特征提取、信息交互和位置头。他们采用了更统一的单流模型结构,共同进行特征提取和交互,这对可视化对象跟踪任务的建模非常有效。然而,一些现代跟踪体系结构太重,计算成本太高,因此很难在实际应用中部署。LightTrack使用NAS来搜索一个轻的暹罗网络,但它的速度在强大的gpu上并不是非常快。FEAR ,HCAT ,E.T.Track 设计了更高效的框架,但并不适合单流跟踪器。我们是第一个设计高效的单流跟踪器,以实现良好的精度和速度的权衡。

Knowledge Distillation

知识蒸馏[26]是为了在教师模型的监督下学习更有效的学生模型。首先,将KD应用于分类问题中,其中KL散度被用来度量教师和学生的预测概率分布的相似性。对于目标检测等回归问题,经常采用特征模拟。LD 通过将狄拉克分布表示转换为边界盒的概率分布表示,对边界盒位置进行对数蒸馏,很好地统一了对数蒸馏和位置蒸馏。在这项工作中,我们利用了一些定制的策略,使知识蒸馏更适合我们的跟踪框架。

Vision Transformer Compression

有许多加速模型推理的通用技术,包括模型量化、知识蒸馏、剪枝]和神经结构搜索。最近,许多工作也集中在压缩视觉变压器模型上。例如,动态ViT ,Evo-ViT试图在注意机制中修剪令牌。AutoFormer,NASViT ,SlimmingViT采用NAS技术来探索精致的ViT架构。ViTKD提供了几个ViT特征蒸馏指南,但它专注于压缩特征维度,而不是模型深度。MiniViT [55]应用权重共享和多路复用来减少模型参数。由于单流跟踪器高度依赖于消耗训练资源的预训练器,因此我们求助于直接修剪跟踪器的图层。

方法

在本节中,我们首先介绍MixFormerV2,它是一个更高效和统一的全变压器跟踪框架。然后描述了提出的基于蒸馏的模型简化,包括密集到稀疏蒸馏和深到浅蒸馏。

Fully Transformer Tracking: MixFormerV2

所提出的MixFormerV2是一个完全的变压器跟踪框架,没有任何卷积操作和复杂的分数预测模块。它的主干是在三种类型的混合令牌序列上的一个普通转换器:目标模板令牌、搜索区域令牌和可学习的预测令牌。然后,将简单的MLP头放在顶部,预测框坐标的概率分布和相应的目标质量得分。与其他基于变压器的跟踪器(如TransT 、STARK 、MixFormer、OSTrack和SimTrack)相比,我们的MixFormerV2通过首次有效地删除定制的卷积分类和回归头,简化了跟踪管道,从而产生了一个更统一、高效和灵活的跟踪器。整体架构如图2所示。通过输入模板令牌、搜索区域令牌和可学习预测令牌,MixFormerV2以端到端方式预测目标边界框和质量得分。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mwkQXovi-1690385708577)(E:\CodeFile\note\MixFormerV2\MixFormerV2.assets\image-20230726211322823.png)]

Prediction-Token-Involved Mixed Attention

与MixViT中最初的混合注意力相比,关键的区别在于引入了特殊的可学习预测令牌,用于捕获目标模板和搜索区域之间的相关性。这些预测标记可以逐步压缩目标信息,并用作后续回归和分类的紧凑表示。具体来说,给定多个模板、搜索和四个可学习的预测标记的连接标记,我们将它们传递到N个涉及预测标记的混合注意模块(P-MAM)层中。我们使用qt、kt和vt来表示注意力的模板元素(即query, key and value),qs、ks和vs来表示搜索区域、qe、ke和ve来表示可学习的预测标记。P-MAM可以定义为:

在这里插入图片描述

其中,d表示每个元素的维度, A t t e n t , A t t e n t s , A t t e n e Atten_t,Attent_s,Atten_e Attent,Attents,Attene分别是模板、搜索和可学习的预测令牌的注意输出。与原来的混合注意方案相似,我们使用非对称混合注意方案来进行有效的在线推理。与标准ViT中的CLS令牌一样,可学习的预测令牌会自动在跟踪数据集上学习,以压缩模板和搜索信息。

Direct Prediction Based on Tokens

在变压器主干之后,我们直接使用预测标记来回归目标位置,并估计其可靠的得分。具体地说,我们利用了基于四种特殊的可学习预测标记的基于分布的回归。在这个意义上,我们回归了四个边界框坐标的概率分布,而不是它们的绝对位置。第4.2节的实验结果也验证了该设计的有效性。由于预测标记可以通过涉及预测标记的混合注意模块压缩目标感知信息,我们可以简单地预测具有相同MLP头的四个框坐标如下:

​ $\hat{P_X(x)}=MLP(token_X),X\in \left { T,L,B,R\right } $

在实现过程中,我们在四个预测令牌之间共享MLP的权重。对于预测的目标质量评估,我们表示输出预测令牌,然后使用它来估计用MLP头的目标置信度得分。这些基于令牌的头在很大程度上降低了盒子估计和质量分数估计的复杂性,从而导致了一个更简单和统一的跟踪架构。

Distillation-Based Model Reduction

为了进一步提高MixFormerV2的效率和有效性,我们提出了一个基于蒸馏的模型缩减范式,如图3所示,该范式首先执行密集到稀疏蒸馏以更好地基于标记的预测,然后进行深到浅的蒸馏进行模型剪枝。

在这里插入图片描述

Dense-to-Sparse Distillation

在MixFormerV2中,我们基于预测令牌将目标边界框直接回归到四个随机变量T、L、B、R∈R的分布,分别代表该框的上、左、下、右坐标。

详细地,我们预测了每个坐标的概率密度函数:X ∼ PˆX(x), where X ∈ {T ,L,B,R}. 最终的边界框坐标B可以从回归概率分布上的期望中推导出:

在这里插入图片描述

由于原始MixViT的致密卷积角头预测了二维概率图,即左上角和右下角的联合分布 P T L ( x , y ) P_{TL}(x,y) PTLxy P B R ( x , y ) P_{BR}(x,y) PBRxy,因此通过边缘分布可以很容易地推导出盒坐标分布的一维版本:
在这里插入图片描述

在此,该建模方法可以弥补密角预测与基于稀疏标记的预测之间的差距,即原始MixViT的回归输出可以视为密到稀疏蒸馏的软标签。具体来说,我们使用MixViT的输出 P X P_X PX来监督MixFormerV2的四个坐标估计PˆX,应用kl-散度损失如下:

在这里插入图片描述

通过这种方式,将定位知识从MixViT的致密角头转移到MixFormerV2的基于稀疏标记的角头。

Deep-to-Shallow Distillation

为了进一步提高效率,我们的重点是修剪变压器的主干网。然而,设计一种新的轻量级骨干并不适合快速的单流跟踪。一个新的在线跟踪器的主干通常高度依赖于大规模的预训练来实现良好的性能,这需要大量的计算。因此,我们基于特征模拟和对数蒸馏,直接切割MixFormerV2主干的一些层,如图3:阶段2所示。设 F i S , F j T ∈ R h × w × c F_i^S,F_j^T∈R^{h×w×c} FiSFjTRh×w×c表示学生和教师的特征图,下标表示层的索引。对于对数蒸馏,我们使用kl-散度损失。对于特征模仿,我们应用L2损失:

在这里插入图片描述

其中,M是需要监督的匹配层对的集合。具体地说,我们设计了一个渐进的模型深度剪枝策略。

Progressive Model Depth Pruning

渐进式模型深度修剪的目的是通过减少变压器层数来压缩MixFormerV2主干。由于直接去除一些层可能会导致不一致和不连续,我们探索了一种基于特征和对数蒸馏的模型深度剪枝的渐进方法。具体来说,我们不是让教师从头开始监督一个较小的学生模型,而是让原始的学生模型成为教师模型的完整副本。然后,我们将逐步消除一定层次的学生层,并使剩余的层在教师的监督下模仿教师的表现。这种设计允许学生和教师的初始表示尽可能保持一致,提供了一个平滑的过渡方案,并减少了特征模拟的难度。

形式上,让 x i x_i xi表示MixFormerV2主干的第i层输出,注意块的计算可以表示如下(式中省略层归一化操作)

在这里插入图片描述

设$\xi $是在我们的学生网络中要消除的层集,我们对这些层的权值应用一个衰减率γ:
在这里插入图片描述

在学生网络训练的前m个阶段,γ会以余弦函数的方式从1逐渐减少到0:

在这里插入图片描述

这意味着学生网络中的这些层逐渐被消除,最终转化为身份转换,如图4所示。修剪后的学生模型可以通过简单地去除$\xi $中的层并保留剩余的块来获得.。

Intermediate Teacher

为了蒸馏一个极浅的模型(4层混合MixFormerV2),我们引入了一个中间教师(8层混合FormerV2),用于连接深层教师(12层混合FormerV2)和浅层教师。通常,教师的知识可能太复杂,一个小学生的模式无法学习。因此,我们引入了一个作为助教的中间角色,以缓解极端知识提炼的难度。在这个意义上,我们将教师和学生的知识精馏问题分为几个精馏子问题。

MLP Reduction

如表2所示,影响CPU设备上跟踪器推理延迟的一个关键因素是变压器块中MLP的隐藏特性dim。换句话说,它成为了限制CPU设备实时速度的瓶颈。为了利用这一问题,我们根据所提出的蒸馏范式,进一步修剪了MLP的隐藏模糊度,即特征模拟和日志蒸馏。具体来说,让线性权重的形状在原始模型是 w ∈ R d 1 × d 2 w∈R^{d1×d2} wRd1×d2,和相应的形状修剪学生模型 w ′ ∈ R d 1 ′ × d 2 ′ , d ’ 1 ≤ d 1 , d 2 ′ ≤ d 2 w'∈R^{d'_1×d'_2},d’_1≤d_1,d'_2≤d_2 wRd1×d2d1d1,d2d2,我们将初始化权重学生模型: w ’ = w [ : d 1 ′ : d 2 ′ ] w’=w[:d'_1:d'_2] w=w[d1d2]。然后应用蒸馏监督进行训练,让剪枝后的MLP模拟原始的重MLP。

Training of MixFormerV2

整个训练管道如图3所示,执行密集到稀疏蒸馏,然后深到浅蒸馏,得到最终高效的MixFormerV2跟踪器。然后,我们训练基于MLP的分数头为50个阶段。特别是,对于CPU的实时跟踪,我们使用中间教师基于所提出的蒸馏生成一个较浅的模型(4层MixFormerV2)。此外,我们还使用了所设计的MLP缩减策略来进一步修剪CPU实时跟踪器。对学生S和教师T进行的蒸馏培训的总损失计算为:

在这里插入图片描述

其中,前两项与由地面真实边界盒标签监督的原始混合物前混合物的位置损失完全相同,其余项用于上述蒸馏。

实验

作者做了很多实验,大家有需要看原文吧。

在这里插入图片描述

消融

在这里插入图片描述

可视化

为了探究引入的可学习预测令牌是如何在P-MAM中工作的,我们将图5和图6中的预测-标记到搜索和预测-标记到模板的注意图可视化,其中预测令牌作为查询,其他的作为注意操作的关键/val。从可视化结果中,我们可以得出这四个预测标记对目标的相应部分很敏感,从而产生一个紧凑的对象边界框。我们怀疑,基于致密角头的MixViT-B和我们的完全变压器MixFormerV2-B之间的性能差距在于缺乏整体的目标建模能力。此外,预测标记倾向于在模板和搜索中提取部分目标信息,从而将两者联系起来。

在这里插入图片描述

结论

在本文中,我们提出了一个完全变压器跟踪框架MixFormerV2,由混合标记序列上的标准ViT骨干和简单的MLP头组成,用于盒回归和质量分数估计。我们的MixFormerV2通过去除密集的卷积头和复杂的分数预测模块,简化了跟踪管道。我们还提出了一个基于蒸馏的模型简化的MixFormerV2范式,以进一步提高其效率。我们的MixFormerV2在GPU和CPU平台上的跟踪精度和速度之间获得了很好的权衡。我们希望我们的MixFormerV2能够促进未来高效变压器跟踪器的发展。MixFormerV2通过去除密集的卷积头和复杂的分数预测模块,简化了跟踪管道。我们还提出了一个基于蒸馏的模型简化的MixFormerV2范式,以进一步提高其效率。我们的MixFormerV2在GPU和CPU平台上的跟踪精度和速度之间获得了很好的权衡。我们希望我们的MixFormerV2能够促进未来高效变压器跟踪器的发展。

相关文章:

MixFormerV2: Efficient Fully Transformer Tracking

摘要 基于变压器的跟踪器在标准基准测试上取得了很强的精度。然而,它们的效率仍然是在GPU和CPU平台上实际部署的一个障碍。在本文中,为了克服这一问题,我们提出了一个完全变压器跟踪框架,称为MixFormerV2,没有任何密集…...

K8S中网络如何通信

Kubernetes 提出了一个自己的网络模型“IP-per-pod”,能够很好地适应集群系统的网络需求,它有下面的这 4 点基本假设: 集群里的每个 Pod 都会有唯一的一个 IP 地址。Pod 里的所有容器共享这个 IP 地址。集群里的所有 Pod 都属于同一个网段。…...

LangChain Agents深入剖析及源码解密上(三)

AutoGPT案例V1版本 AutoGPT是一个实验性的开源应用程序,展示了GPT-4语言模型的功能,AutoGPT程序由GPT-4驱动,将大语言模型的思考链接在一起,以自主实现设定的任何目标。作为GPT-4完全自主运行的首批例子之一,AutoGPT突破了人工智能的可能性。LangChain框架复现了https://g…...

分布式限流方案及实现

优质博文:IT-BLOG-CN 一、限流的作用和意义 限流是对高并发访问进行限制,限速的过程。通过限流来限制资源,可以提高系统的稳定性和可靠性,控制系统的负载,削峰填谷,保证服务质量。 服务限流后的常见处理…...

vuejs源码阅读之优化器

前面讲过vuejs中解析器是把html模版解析成AST,而优化器的作用是在AST中找到静态子树并打上标记。 静态子树是指的那些在AST中永远不会发生变化的节点。 例如,一个纯文本节点就是静态子树,而带变量的文本节点就不是静态子树,因为…...

【C++】-动态内存管理

作者:小树苗渴望变成参天大树 作者宣言:认真写好每一篇博客 作者gitee:gitee 如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 点 关 注 吧! 文章目录 前言一、C内存管理方式1.1 new/delete操作内置类型 总结 前言 今天再讲一个…...

微服务SpringCloud教程——微服务是什么

微服务(MicroServices)最初是由 Martin Fowler 于 2014 年发表的论文《MicroServices》中提出的名词,它一经提出就成为了技术圈的热门话题。 微服务,我们可以从字面上去理解,即“微小的服务”,下面我们从“…...

RNN架构解析——LSTM模型

目录 LSTMLSTM内部结构图 Bi-LSTM实现 优点和缺点 LSTM LSTM内部结构图 Bi-LSTM 实现 优点和缺点...

苹果电脑系统优化工具:Ventura Cache Cleaner for mac

Ventura Cache Cleaner for Mac是一款专门为苹果电脑开发的系统优化工具,旨在帮助用户清理和优化Mac电脑,提高系统性能和速度。该软件由美国公司Northern Softworks开发,已经推出了多个版本,适用于不同版本的Mac操作系统。 Ventu…...

为了爱人穿越沙漠-心理测试

我觉得很准的一个心理测试。我的答案反射出我的态度,它们是100%的贴切。有兴趣的朋友也不妨一试。 你有一个深爱着的心上人,然而你们却被一片无垠的沙漠相隔两地,你禁不住思念的折磨,决定穿越沙漠去寻找你心中的那个爱人…… 1、…...

SpringBoot月度员工绩效考核管理系统【附任务书|ppt|万字文档(LW)和搭建文档】

主要功能 员工登录: ①首页、个人中心:修改密码、个人信息管理等 ②公告信息管理、绩效指标管理、绩效考核管理 管理员登录: ①首页、个人中心:修改密码、个人信息管理等 ②公告信息管理、部门管理、岗位管理、员工管理、绩效指标…...

【新星计划】STM32F103C8T6 - C语言 - 蓝牙JDY-31-SPP串口通信实验

文章目录 蓝牙技术的发展历史SPP蓝牙串口BLE协议(超低功耗应用蓝牙协议) 常见通用蓝牙模块JDY-31-SPPHC05/06 Keil 工程开发模版main.c 源文件:接线方式:烧录工具:FlyMcu串口调试工具:XCOM蓝牙调试助手APP …...

算法39:Excel 表列序号

一、需求 给你一个字符串 columnTitle ,表示 Excel 表格中的列名称。返回 该列名称对应的列序号 。 例如: A -> 1 B -> 2 C -> 3 … Z -> 26 AA -> 27 AB -> 28 … 示例 1: 输入: columnTitle “A” 输出: 1 示例 2&…...

Android:ImageView xml方式配置selector 图片切换

1、在res/drawable目录下创建一个新的XML文件&#xff0c;比如selector_image.xml <?xml version"1.0" encoding"utf-8"?> <selector xmlns:android"http://schemas.android.com/apk/res/android"> <!-- 背景选择器 state_pre…...

Spring Boot 缓存 Cache 入门

Spring Boot 缓存 Cache 入门 1.概述 在系统访问量越来越大之后&#xff0c;往往最先出现瓶颈的往往是数据库。而为了减少数据库的压力&#xff0c;我们可以选择让产品砍掉消耗数据库性能的需求。 当然也可以引入缓存,在引入缓存之后&#xff0c;我们的读操作的代码&#xff…...

如何关闭谷歌浏览器自动更新

适用范围: 写自动化脚本时&#xff0c;需要安装浏览器驱动&#xff0c;安装浏览器驱动时需要下载对应的浏览器驱动版本&#xff0c;如果浏览器版本一直在自动更新的话&#xff0c;自动化脚本会报错浏览器版本和浏览器驱动不匹配&#xff0c;所以建议关闭谷歌浏览器自动更新&am…...

mybatis日志工厂

前言&#xff1a; 如果一个数据库操作&#xff0c;出现异常&#xff0c;我们需要排错&#xff0c;日志就是最好的助手 官方给我们提供了logImpl&#xff1a;指定 MyBatis 所用日志的具体实现&#xff0c;未指定时将自动查找。 默认工厂&#xff1a; 在配置文件里添加&#xf…...

020 - STM32学习笔记 - Fatfs文件系统(二) - 移植与测试

020 - STM32学习笔记 - Fatfs文件系统&#xff08;二&#xff09; - 移植与测试 上节学习了FatFs文件系统的相关知识&#xff0c;这节内容继续学习在STM32上如何移植FatFs文件系统&#xff0c;并且实现文件的创建、读、写与删除等功能。各位看官觉得还行的话点点赞&#xff0c…...

flask用DBUtils实现数据库连接池

flask用DBUtils实现数据库连接池 在 Flask 中&#xff0c;DBUtils 是一种实现数据库连接池的方案。DBUtils 提供了持久性&#xff08;persistent&#xff09;和透明的&#xff08;transient&#xff09;两种连接池类型。 首先你需要安装 DBUtils 和你需要的数据库驱动。例如&…...

SQL注入之布尔盲注

SQL注入之布尔盲注 一、布尔盲注介绍二、布尔盲注的特性三、布尔盲注流程3.1、确定注入点3.2、判断数据库的版本3.3、判断数据库的长度3.4、猜解当前数据库名称&#xff08;本步骤需要重复&#xff09;3.5、猜解数据表的数量3.6、猜解第一个数据表名称的长度3.7、猜解第一个数据…...

微服务入门---SpringCloud(一)

微服务入门---SpringCloud&#xff08;一&#xff09; 1.认识微服务1.0.学习目标1.1.单体架构1.2.分布式架构1.3.微服务1.4.SpringCloud1.5.总结 2.服务拆分和远程调用2.1.服务拆分原则2.2.服务拆分示例2.2.1.导入Sql语句2.2.2.导入demo工程 2.3.实现远程调用案例2.3.1.案例需求…...

Rust vs Go:常用语法对比(九)

题图来自 Golang vs Rust - The Race to Better and Ultimate Programming Language 161. Multiply all the elements of a list Multiply all the elements of the list elements by a constant c 将list中的每个元素都乘以一个数 package mainimport ( "fmt")func …...

Typescript 第五章 类和接口(多态,混入,装饰器,模拟final,设计模式)

第五章 类和接口 类是组织和规划代码的方式&#xff0c;是封装的基本单位。 typescript类大量借用了C#的相关理论&#xff0c;支持可见性修饰符&#xff0c;属性初始化语句&#xff0c;多态&#xff0c;装饰器和接口。 不过&#xff0c;由于Typescript将类编译成常规的JavaScri…...

IFNULL()COALESCE()

在 MySQL 中&#xff0c;IFNULL() 函数是可用的&#xff0c;但是请注意它不能直接用于聚合函数的结果。要在聚合函数结果可能为 NULL 的情况下返回特定值&#xff0c;应该使用 COALESCE() 函数而不是 IFNULL() 函数。 以下是代码示例&#xff1a; COALESCE(SUM(pc.CONTRACT_T…...

WPF实战学习笔记23-首页添加功能

首页添加功能 实现ITodoService、IMemoService接口&#xff0c;并在构造函数中初始化。新建ObservableCollection<ToDoDto>、 ObservableCollection<MemoDto>类型的属性&#xff0c;并将其绑定到UI中修改Addtodo、Addmemo函数&#xff0c;将添加功能添加 添加添加…...

OpenCV-Python常用函数汇总

OpenCV Python OpenCV简述显示窗口waitKey()&#xff1a;等待按键输入namedWindow()&#xff1a;创建窗口destroyWindow() &#xff1a;注销指定窗口destroyAllWindows() 注销全部窗口resizeWindow() 调整窗口尺寸 图像操作imread()&#xff1a;读取图像imwrite()&#xff1a;保…...

Vue-router多级路由

目录 直接通过案例的形式来演示多级路由的用法 文件结构 Banner.vue <template><div class"col-xs-offset-2 col-xs-8"><div class"page-header"><h2>Vue Router Demo</h2></div></div> </template><…...

前端学习--vue2--2--vue指令基础

写在前面&#xff1a; 前置内容 - vue配置 文章目录 插值表达式v-html条件渲染v-show和v-ifv-ifv-if的扩展标签复用组件 v-show v-on /事件v-bind /&#xff1a;属性v-modelv-for 循环元素v-slotv-prev-cloak vue指令只的是带有v-前缀的特殊标签属性 插值表达式 插值表达式{…...

【Python机器学习】实验03 logstic回归

文章目录 简单分类模型 - 逻辑回归1.1 准备数据1.2 定义假设函数Sigmoid 函数 1.3 定义代价函数1.4 定义梯度下降算法gradient descent(梯度下降) 1.5 绘制决策边界1.6 计算准确率1.7 试试用Sklearn来解决2.1 准备数据(试试第二个例子)2.2 假设函数与前h相同2.3 代价函数与前相…...

面试-杨辉三角python递归实现,二进制转换

杨辉三角 def yang_hui(x,y):xint(x)yint(y)assert x>y,列数不应该大于行数# x 表示行&#xff0c;y表示列if y1 or yx:return 1else:return yang_hui(x-1,y-1)yang_hui(x-1,y)xinput(输入第几行) yinput(输入第几列) resultyang_hui(int(x),int(y)) print(result) #inclu…...

政府网站建设评语/学设计什么培训机构好

## 给一个日期加上一天 select DATEADD(DAY,1,GETDATE())&#xff1b;给表中的日期列加上一天&#xff1a;DATEADD(DAY,1,日期) 当然&#xff0c;这个函数不止能单一的实现&#xff0c;语法其实是DATEADD(需要计算的时间类型,相距数量,日期字段)&#xff0c;比如你可以推算今天…...

什么网站做弹窗广告好/百度怎么收录网站

点击关注我&#xff0c;发现更多创意礼物&#xff01;&#xff01;想要购买直接看原文&#xff1a;https://www.haowuguo.com/257033.html现在安卓平板可以选择的不是很多了&#xff0c;最近安卓新出的平板也很少&#xff0c;其中比较有吸引力的就是联想的小新pad了&#xff0c…...

廊坊做网站哪家好/必应搜索引擎地址

一 背景 最近在园子了浏览了几篇有关Socket文章&#xff0c;得到了一些启发萌生了想要重构公司在2000年用.NET Framework 2.0 与 Visual Studio 2005开发的AsySocket项目为了希望能够尽快的了解公司这个项目&#xff0c;Google了很多国内外的网站让我对Socket有了更深层次的了解…...

中山快速做网站服务/网站怎么做出来的

如何用一条sql语句删除表中所相同的记录&#xff1f; 删除重复数据一、具有主键的情况a.具有唯一性的字段id(为唯一主键)delete tablewhere id not in(select max(id) from table group by col1,col2,col3...)group by 子句后跟的字段就是你用来判断重复的条件&#xff0c;如只…...

龙岩做网站的/it人必看的网站

目录chap 0 对数组的操作0.1 python中的数组创建0.2 对数组的四则运算0.3 各种ufunc函数chap 1 非线性方程组求解1.1 基础版&#xff08;不引入Jacobi矩阵 &#xff09;1.2 优化版&#xff08;引入Jacobi矩阵&#xff09;chap 2 最小二乘拟合[^1]2.1 以线性函数 ykxb 为例2.2 以…...

免费申请淘宝账号注册/北京百度seo关键词优化

Java6,Axis2、XFire、CXF1、JWS是Java语言对WebService服务的一种实现&#xff0c;用来开发和发布服务。而从服务本身的角度来看JWS服务是没有语言界限的。但是Java语言为Java开发者提供便捷发布和调用WebService服务的一种途径。2、Axis2是Apache下的一个重量级WebService框架…...