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能够促进未来高效变压器跟踪器的发展。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

我的2023上半年总结

Hi~C站的小伙伴们好久不见哇!釉色终于回到C站,开始要输出了!这一篇文章是我的2023上半年的总结,以此,致敬那段迷茫但又不曾被辜负的时光。 文章目录 总括——你愿意花五分钟时间读读我的文章吗学习——制定目标&#…

GB/T 25000.51解读——软件产品的性能效率怎么测?

GB/T 25000.51-2016《软件产品质量要求和测试细则》是申请软件检测CNAS认可一定会用到的一部国家标准。在前面的文章中,我们为大家整体介绍了GB/T 25000.51-2016《软件产品质量要求和测试细则》国家标准的结构和所涵盖的内容以及对软件产品的八大质量特性中的功能性…

电机故障诊断(python程序,模型为CNN结合LSTM)

代码运行环境要求:TensorFlow版本>2.4.0,python版本>3.6.0 运行效果视频:电机故障诊断(python代码)_哔哩哔哩_bilibili 1.电机常见的故障类型有以下几种: 轴承故障:轴承是电机运转时最容…

新星计划打卡学习:VUE3引入element-plus

目录 1、安装element-plus 2、安装按需导入插件 3、修改配置文件 4、添加页面内容 5、保存并重启项目 1、安装element-plus 官网说要想使用element-plus需要先进行安装,并给出了三种安装方式,我选择了第三种。 报错了: 解决的办法&…

同步、异步、阻塞、非阻塞

一、概念 同步与异步(线程间调用)的区别:关注的是调用方与被调用方之间的交互方式。同步调用会等待被调用方的结果返回,而异步调用则不会等待结果立即返回,可以通过回调或其他方式获取结果。 阻塞非阻塞(…

SpringBoot 和 Vue 参数类型不对应,导致method parameter is not present

org.springframework.web.bind.MissingServletRequestParameterException: Required request parameter id for method parameter type String is not present 客户端: requestUserInfoById()const requestUserInfoById async (id?: string) > {} 服务器端&am…

每天一道C语言编程(2^k进制数)

题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数。 (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位。 (3)…

大数据课程D2——hadoop的概述

文章作者邮箱:yugongshiyesina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解hadoop的定义和特点; ⚪ 掌握hadoop的基础结构; ⚪ 掌握hadoop的常见命令; ⚪ 了解hadoop的执行流程; 一、简介 1…

《零基础入门学习Python》第057讲:论一只爬虫的自我修养5:正则表达式

如果你在课后有勤加练习,那么你对于字符串的查找应该是已经深恶痛绝了,你发现下载一个网页是很容易的,但是要在网页中查找到你需要的内容,那就是困难的,你发现字符串查找并没有你想象的那么简单,并不是说直…

【Matlab】基于粒子群优化算法优化BP神经网络的数据回归预测(Excel可直接替换数据)

【Matlab】基于粒子群优化算法优化 BP 神经网络的数据回归预测(Excel可直接替换数据) 1.模型原理2.数学公式3.文件结构4.Excel数据5.分块代码5.1 fun.m5.2 main.m 6.完整代码6.1 fun.m6.2 main.m 7.运行结果 1.模型原理 基于粒子群优化算法(…

3个能免费使用的AI绘画软件,效果精致

通过AI绘画软件,设计小白也能轻松创作出精美的图画创作。本文将为大家介绍3款能免费使用的AI绘画软件,它们能帮助设计小白或者经验丰富的设计师快速设计出精美的图画作品,一起来看看吧! 1、即时灵感 即时灵感是国产的AI绘画软件…

[JAVAee]synchronized关键字

目录 1.synchronized的特性 ①互斥性 ②可重入性 2.synchronized的使用示例 ①修饰普通方法 ②修饰静态方法 ③修饰代码块 1.synchronized的特性 ①互斥性 互斥性,就像是给门上锁了一样. 当A线程使用了被synchronized修饰的代码块并对其上锁,其他线程(B线程,C线程)想要使…

C. Maximum Set

Problem - 1796C - Codeforces 思路:这个题在做的时候基本的思路是对的,但是没有想到O(1)求答案,枚举的然后T了,我们能够知道,假设前面的数小,那么每个数一定是前面的倍数,所以至少乘以2&#x…

vue3.2 + elementPlus + Windi CSS + ts创建一个好用的可兼容不同宽高的login页面

1.效果预览 2. 代码准备 导入windiCSS: npm i -D vite-plugin-windicss windicss windiCSS官网: https://cn.windicss.org/integrations/vite.html 使用vite创建好你的vue工程 sass版本为: 1.49.9 3.Windi CSS在页面中使用 apply 二次定义类名…

AcWing 算法基础课二 数据结构 链表 栈 队列 并查集 哈希表

单链表. AcWing. 826.单链表 import java.util.Scanner; public class Main{static int[] e new int[100010];//结点i的值static int[] ne new int[100010];//结点i的next指针static int idx,head;//head是头结点,idx存当前已经用到了哪个点public static void i…

thinkphp6 验证码验证结果失败,可能是session开启位置错了!!!

搞了一下下午&#xff0c;始终提示验证码不正确 然后百度得到的结果都是&#xff1a;开启session&#xff0c;但是我开启了就是管用 <?php // 全局中间件定义文件 return [// 全局请求缓存// \think\middleware\CheckRequestCache::class,// 多语言加载// \think\middle…

【前端设计】使用Verdi查看波形时鼠标遮住了parameter值怎么整

盆友&#xff0c;你们在使用Verdi的时候&#xff0c;有没有遇到过鼠标遮挡着了parameter数值的场景&#xff1f;就跟下面这个示意图一样&#xff1a; 最可恨的是这个参数值他会跟着你的鼠标走&#xff0c;你想把鼠标移开看看看这个例化值到底是多大吧&#xff0c;这个数他跟着你…

单线程与多线程的理解与学习(入门到深入)

文章目录 一、在Java中&#xff0c;有多种方式可以创建线程。以下是几种常用的方法&#xff1a;二、线程的调度线程的调度分为两种调度模型分时调度模型抢占式调度模型 三、线程传值四、什么是线程同步五、线程安全六、线程的同步机制七、线程控制 一、在Java中&#xff0c;有多…

8.4Java EE——基于注解的AOP实现

Spring AOP的注解 元素 描述 Aspect 配置切面 Pointcut 配置切点 Before 配置前置通知 After 配置后置通知 Around 配置环绕方式 AfterReturning 配置返回通知 AfterThrowing 配置异常通知 下面通过一个案例演示基于注解的AOP的实现&#xff0c;案例具体实现…

全志F1C200S嵌入式驱动开发(调整cpu频率和dram频率)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 f1c200s默认的cpu频率是408M,默认的dram频率是156M。这两个数值,坦白说,都算不上特别高的频率。因为我们的晶振是24M输入,所以408/24=17,相当于整个cpu的频率只是晶振倍频了17…
最新文章