Task-balanced distillation for object detection用于

Task-balanced distillation for object detection用于目标检测的任务平衡蒸馏

摘要

主流的目标检测器通常由分类和回归两个子任务组成,由两个并行头部实现。这种经典的设计范式不可避免的导致分类得分和定位质量(IOU)之间的空间分布不一致。因此,本文从知识蒸馏的角度缓解了这种偏差。首先,我们观察到,与轻量级学生相比,大的教师实现了更高比例的和谐预测基于这一有趣的观察,设计了一个新的和谐分数来估计分数和回归质量的一致性HS对两个子任务之间的关系进行建模,并被视为促进学生和谐预测的先验知识。其次,这种空间错位会导致特征提取时区域选择不协调。为了解决这一问题,通过灵活地平衡分类和回归任务的共线,提出了一种任务解耦特征蒸馏(TFD)方法。其中,HD和TFD构成了所提出的方法,称为任务平衡蒸馏(TBD)。大量的实验证明了该方法的巨大潜力和推广价值。

介绍

为了生成目标的位置坐标和相应的标签,现代目标检测通常采用多任务管道,该管道由两个并行头实现的分类和回归分支组成。然而,这种并行实现可能导致分类分数和回归质量(IOU)的分布不一致。如图1最上面的子图显示,vanilla RetinaNet输出人与摩托车重叠的不一致预测。

image-20240314190638226

具体来说,绿色候选包含高分但低IOU,而橙色候选具有准确的bbox但得分低。当执行后处理(比如NMS)时,由于分类分数是NMS排名的一般标准,因此将保留得分较高的绿色分数(IOU低的)。因此具有准确bbox(橙色)的预测可能被错误地过滤掉。一般来说,这种不正确地过滤可以归结为分类精度和定位精度之间的分布不一致

先前的研究试图通过三种方式来克服这一问题,包括通过添加额外的头部(即IOUNet.Centerness)来重新组合NMS分数,关注一致区域,以及增强分类和回归任务之间的依赖关系以输出更和谐的预测。虽然这些研究在减轻空间分布不一致的影响方面取得了显著进展,但其动机和解决办法都来源于探测器本身。为了引出所提出的方法,我们仔细比较了教师和学生模型在处理这种情况时的行为不和谐分布。有价值的观察结果如下。一般来说,教师比学生更倾向于做出和谐的预测。我们计算易分类预测的IOU分布,如表1所示。

image-20240314192421216

总的来说,教师模型在实现高度一致的预测方面表现优异,同时保持较少的不协调预测。这一观察表明由于分类和回归质量的不同分布,一些容易分类的样本可能会对学生产生不准确的位置(例如,图1中出现的摩托车)。因此,一个有意义的问题是,在教师模型的帮助下,学生是否可以产生更和谐的预测。

此外,我们观察到两个子任务的不协调分布将影响提取特征时实质性区域的选择。由于在目标检测中,前景像素远小于背景像素,因此在将中间特征从教师传递给学生时,如何选择重要区域是一条有意义的路线先前的工作试图通过使用分类分支的预测来生成空间掩模来表示有意义的区域。该分类感知掩码用作空间权重,在传递中间特征时调整每个位置的贡献,如图(1)所示:
L o s s f e a t = ∑ i = 1 W ∑ j = 1 H M i , j c l s × ( F i , j t − F i , j s ) 2 Loss_{feat} = \sum _{i=1}^W \sum _{j=1}^H M_{i,j}^{cls} \times (F_{i,j}^t - F_{i,j}^s)^2 Lossfeat=i=1Wj=1HMi,jcls×(Fi,jtFi,js)2
image-20240314194425136表示分类感知掩码 ,image-20240314194435929表示教师和学生的特征。考虑到分类和定位之间的不协调分布,单纯利用分类信息可能会导致次优的区域选择。因此,另一个关键问题是,能否充分利用分类和定位信息来指导特征模仿是另一个关键问题

设计了一个新的和谐蒸馏(HD)组件来实现和谐预测的转换。首先定义和谐分数(HS),定量描述分类分值的偏差和相应的回归质量。特别是,HS越大意味着分类得分与回归质量正相关,反之亦然。其次,通过对师生模型的HS进行比对,推导出HD。**提出的HD提供了先验知识,对分类和回归之间的关系进行建模,以帮助为学生生成高质量的预测。**如表1所示,与以往基于蒸馏的方法不同,本文提出的HD的和谐预测比例显著提高,甚至超过了教师。

为了实现有效的特征模仿,一个新的任务解耦特征蒸馏(TFD)来整合分类和回归任务的信息首先利用相应的预测得到分类感知掩码和定位感知掩码此外,我们提出了一个任务协同权重生成(TWG)模块来平衡分类和回归任务的贡献,而不是讲这些掩码与启发式权重方案相结合。具体来说,TWG根据教师和学生的预测动态分配任务感知权重。

提出的TBD由上述HD和TFD组成,共同考虑了分类和定位的特性。

贡献

首先定义了一个新的和谐分数(HS)来捕捉分类质量和回归质量之间的关系。然后提出了一种新的和谐蒸馏(HD)来帮助学生生成和谐预测。

设计了一种新的任务解耦特征蒸馏(TFD)来模拟中间特征。通过平衡这两个任务的贡献,将分类掩模和回归掩模综合起来。

相关工作

和谐预测

不和谐预测的内容最初来源于文献[8],即分类和定位精度不一致的预测边界框。这种偏差使非最大值抑制(NMS)过程不可靠,因为NMS只只使用分类分数作为对proposal进行排序的度量,从而导致不准确的抑制。为了缓解这一问题,之前的研究[3,5,8-11]试图使预测更加和谐。解决这一问题的途径可以分为三类,包括重新制定排名指标,关注和谐区域,以及增强分类和定位任务的依赖关系。IOUNet利用额外的头部预测本地化感知分数,并重新定制NMS得分,以更加关注本地化任务。这一范式在FCOS和DIR等后续研究中得到推广。此外,FCOS基于观察到GT的中心区域通常具有较高的分类和回归精度,提出了一种定心采样策略。与这些方法不同,GFL将IOU纳入分类标签。TOOD提出了一种新的带有任务对齐学习的(TAL)的T-head,以增强分类任务和回归任务之间的交互性。HarmonicDet从损失函数提取的角度提高了预测一致性。

与以前的工作不同,本文提出的方法从知识蒸馏的角度产生和谐预测。我们首先定义和谐分数(HS)来捕捉分类分数和定位IOU之间的和谐关系。然后。教师模型的HS被视为先验知识,并最终在拟议的HD的监督下转移学生。

面向检测的知识蒸馏

知识蒸馏最初被Hinton等人提出,对繁琐的模型进行压缩,在图像分类方面取得了显著进展。现有的基于KD的方法大致可以分为基于响应的方法、基于特征的方法和基于关系的方法。此后,KD越来越多的应用于目标检测任务,取得了显著的改进。与图像分类任务相比,由于用于目标检测的图像通常包含大量背景像素,因此基于检测的知识蒸馏的技术路线之一是选择合适的蒸馏区域。Mimicking模拟了教师和学生proposal之间的特征差异。FGFI生成,靠近ground truth的区域应被视为关键的蒸馏区域。GID基于预测定义地理信息系统,并以实例方式提出蒸馏。Defeat 证实前景和北京区域都是有价值的,然后提出了一种空间解耦的蒸馏来实现特征模仿。PFI和FRS利用分类分数提出了一种预测导向的蒸馏方法。FGD进一步将空间和通道维度上的特征模仿解耦。PGD利用一级检测器的蒸馏头设计了一种预测导向的蒸馏管道。MGD试图将特征模仿修改为特征生成范式,并取得了令人印象深刻的效果。HEAD通过设计辅助模型致力于异构目标检测器的蒸馏。

TFD与上述的主要区别如下。我们从不和谐任务分布的角度重新审视有价值特征区域的选择。特别是,分类感知区域和定位感知区域都被认为是有价值的区域。此外,还提出了TWG模块来动态分配权重以平衡这两个任务的贡献。

所提出的方法

本节系统地阐述了TBD的总体架构。如图2所示,多提出的TBD由和谐蒸馏(HD)和任务解耦特征蒸馏(TFD)组成。

image-20240316143630655

和谐蒸馏

在本节中,我们逐步阐述了HD的推导过程。如上所述,分类分数和定位质量之间的差异会导致不正确的NMS抑制。因此,最重要的一点是量化这种差异,称为和谐分数(HS)。一般来说,HS的推导包括两个步骤:将预测结果转化为分类概率和回归概率,然后根据任务概率设计HS的表达式。

对于每个预测的边界框,image-20240316150616849分别表示分类分支和回归分支的输出。具体来说,image-20240316150702411是一个C维的分数向量,C表示类的数量。类似地,image-20240316150941501对从锚点(锚框或锚点)到实际预测的正则化偏移量进行编码。

任务特定概率的定义原则包括两个部分。首先,将概率幅值归一化为[0,1]。第二,概率越大,预测越准确。对于分类任务,通过使用归一化最大激活值简洁地优雅生成概率image-20240316155600872
P c = s o f t m a x ( m a x 1 < = K < = C P c l s K ) P_c = softmax(max_{1<= K <= C}P^K_{cls}) Pc=softmax(max1<=K<=CPclsK)
为分类预测的初始第K个元素,不传递sigmoid算子,softmax为空间方向的softmax函数,用于将保留的分类分数归一化为[0,1].

对于回归任务,实现与上面类似。具体来说,首先将归一化预测转换为实际的边界框。然后,我们评估每个边界框中的IOU得分和总体ground truth(gt)。对于每个预测框,仅保留最大的IOU作为回归概率image-20240316161255994
p r = m a x 1 < = g < = G I O U ( d e c o d e ( P r e g , G T g ) ) p_r = max_{1<= g <= G}IOU(decode(P_{reg},GT_g)) pr=max1<=g<=GIOU(decode(Preg,GTg))
式中,G为每幅图像中的gt个数,G定义为对应的索引。decode表示变换函数,得到实际预测。

根据等式(2)和(3),给定预测的边界框,分类和定位质量直接用二元元组image-20240316161802867表示。基于这一定义,可以毫不含糊地推导出HS的公式。理论上,HS的定义应该满足两个条件。首先,公式是单调递减。例如,分类概率和定位概率之间的微小差异表明鼓励一致性:因此,应实现高HS。其次,定义应该是有界的,这有利于避免不要的学习困境。基于上述准则,HS通过激活函数tanh进行排列。
Δ = ∣ p r − p c ∣ \Delta = |p_r - p_c| Δ=prpc

H S = 1 − t a n h ( Δ p ) = 2 × e − Δ p e − Δ p + e Δ p HS = 1-tanh(\Delta p) = 2 \times \frac{e^{-\Delta p}}{e^{-\Delta p}+e^{\Delta p}} HS=1tanh(Δp)=2×eΔp+eΔpeΔp

由于教师模式在处理不和谐预测方面比学生模式表现的更好,自然的想法是将教师的HS作为新知识来指导学生的学习阶段。为区分,上标t,s分别表示教师和学生的HS。另外,通过L1 损失进行知识转换。HD的表达示意图如下:
L H D = ∑ l = 1 L 1 H × W ∑ i = 1 W ∑ j = 1 ∣ H S i , j , l t − H S i , j , l s ∣ L_{HD} = \sum ^L _{l=1} \frac{1}{H \times W}\sum _{i=1}^W \sum _{j=1}|HS_{i,j,l} ^t - HS_{i,j,l} ^ s| LHD=l=1LH×W1i=1Wj=1HSi,j,ltHSi,j,ls
l为第l层FPN。i,j为空间位置,W和H分别对应预测的空间宽度和高度。此外,我们注意到等式6是在前景和背景预测的贡献相等的情况下计算的。为了突出前景预测的贡献,建立了IOU引导的和谐损失。利用教师模型生成的image-20240316164606357作为空间蒙版来提升重要前景位置的权重。此外,引入了动态调制因子image-20240316165007287,以放大与教师有较大性能差距的不忠实预测的损失。考虑以上两点,可将空间掩模image-20240316165248324和式(6)修正为:
ψ = p r , i , j , l t × 1 + ∣ p c , i , j , l t − p c , i , j , l s ∣ \psi = p_{r,i,j,l} ^ t \times \sqrt{1 + |p_{c,i,j,l} ^t - p_{c,i,j,l}^s| } ψ=pr,i,j,lt×1+pc,i,j,ltpc,i,j,ls

L H D = ∑ l = 1 L ∑ i = 1 W ∑ j = 1 H ψ i , j , l ∣ p c , i , j , l t − p c , i , j , l s ∣ ∑ m = 1 W ∑ j = 1 H ψ m , n , l L_{HD} = \sum _{l=1} ^L \frac{\sum _{i=1} ^W \sum_{j=1}^H \psi _{i,j,l}|p_{c,i,j,l}^t - p_{c,i,j,l} ^s|}{\sum _{m=1}^W\sum_{j=1}^H \psi_{m,n,l}} LHD=l=1Lm=1Wj=1Hψm,n,li=1Wj=1Hψi,j,lpc,i,j,ltpc,i,j,ls

任务解耦特征蒸馏

基于FPN特征image-20240316170607007构造任务解耦特征蒸馏(TFD)。原因可以从两个方面解释:一方面,蒸馏FPN特征可以方便地同时模仿骨干和FPN特征。另一当面,由于最近的大多数研究都是对FPN特征进行蒸馏,因此选择FPN特征来完成公平的比较是很自然的,经典的特征模仿可以表示为:
L F P N = ∑ l = 1 L ∑ i = 1 W ∑ j = 1 H ( F i , j , l t − ) L_{FPN} = \sum _{l=1}^L \sum _{i=1}^W \sum{j=1}^H (F_{i,j,l}^t - ) LFPN=l=1Li=1Wj=1H(Fi,j,lt)
表示用于对齐教师和学生特征的自适应层。由上式中的定义可以看出,在目标检测中,由于背景像素远远大于前景像素,因此损失将以背景区域为主。因此,如何确定蒸馏区域是一个有价值的课题。

与之前的研究不同,我们从任务感知空间分布的角度重新审视了关键区域的选择。下面列出了分类感知和定位感知区域结合的理论原因。一方面,FPN特征是后续分类和回归头的支柱,因此将它们结合起来是一个自然的选择。另一方面,由于之前的工作揭示了两个不和谐分布,只使用分类掩码可能会遗漏一些定位感知区域。基于以上分析,本文提出的TFD完全利用了教师的预测概率image-20240316192217845来生成任务感知掩码。数学公式如下:
L T F D = ∑ l = 1 L ω c × ∑ i = 1 W ∑ j = 1 H p c , i , j , l t − ( F i , j , l t − ϕ ( F i , j , l s ) ) 2 ∑ m = 1 W ∑ n = 1 H p c , m , n , l t + ∑ l = 1 L ω r × ∑ i = 1 W ∑ j = 1 H p c , i , j , l t − ( F i , j , l t − ϕ ( F i , j , l s ) ) 2 ∑ m = 1 W ∑ n = 1 H p c , m , n , l t L_{TFD} = \sum_{l=1}^L \frac{\omega _c \times \sum_{i=1} ^ W \sum_{j=1}^Hp_{c,i,j,l}^t - (F_{i,j,l}^t - \phi (F_{i,j,l} ^s))^2}{\sum _{m=1}^ W \sum_{n=1}^H p_{c,m,n,l}^t} + \sum _{l=1}^L \frac{\omega _r \times \sum_{i=1} ^ W \sum_{j=1}^Hp_{c,i,j,l}^t - (F_{i,j,l}^t - \phi (F_{i,j,l} ^s))^2}{\sum _{m=1}^ W \sum_{n=1}^H p_{c,m,n,l}^t} LTFD=l=1Lm=1Wn=1Hpc,m,n,ltωc×i=1Wj=1Hpc,i,j,lt(Fi,j,ltϕ(Fi,j,ls))2+l=1Lm=1Wn=1Hpc,m,n,ltωr×i=1Wj=1Hpc,i,j,lt(Fi,j,ltϕ(Fi,j,ls))2
image-20240316193010321是控制分类感知损失和定位感知损失权重的超参数。然而,在等式(10)中使用的固定权重可能会受到一些限制。例如,固定权重难以全面适应动态输入。此外,与仅使用分类掩码的方法相比,还引入了额外的超参数优化开销。因此,我们提出了一个任务协同权值生成(TWG)模块,以动态分配权值来克服这些限制。在SENet的激励下,TWG由两个完全连接(FC)层和一个softmax层组成,以生成任务感知权值。理论上,学习权重应该由教师的的预测和学生当前的学习状态共同决定。基于这一点,在实现TWG时,首先在通道维度上连接预测掩码image-20240316200624009
P = c o n c a t ( p c t , p r t , p c s , p r s ) P = concat(p_c^t,p_r^t,p_c^s,p_r^s) P=concat(pct,prt,pcs,prs)
然后,由平均池化操作符压缩连接的P。随后添加两个轻量级FC层来生成任务感知权重。最后,softmax函数输出归一化的权重,以保证这些权重之和为1。请注意,我们使用最直接的方式来完成TWG的实现,以避免陷入繁琐的网络构建。因此,学习到的权重可以在数学上表示为:
T 0 , T 1 = s o f t m a x ( F C ( F C ( A v g P o o l ( P ) ) ) ) T^0,T^1 = softmax(FC(FC(AvgPool(P)))) T0,T1=softmax(FC(FC(AvgPool(P))))
因此,给定任务感知权重image-20240316201719605,等式(10)可以改写为:
L T F D − c = ∑ l = 1 L T l 0 × ∑ i = 1 W ∑ j = 1 H p c , i , j , l t ( F i , j , l t − ϕ ( F i , j , l s ) ) 2 ∑ m = 1 W ∑ n = 1 H p c , m , n , l t L_{TFD-c} = \sum _{l=1}^L \frac{T^0_l \times \sum _{i=1} ^W \sum_{j=1}^H p_{c,i,j,l}^t(F_{i,j,l}^t - \phi (F_{i,j,l}^s))^2}{\sum _{m=1} ^W \sum_{n=1}^H p_{c,m,n,l}^t} LTFDc=l=1Lm=1Wn=1Hpc,m,n,ltTl0×i=1Wj=1Hpc,i,j,lt(Fi,j,ltϕ(Fi,j,ls))2

L T F D − r = ∑ l = 1 L T l 0 × ∑ i = 1 W ∑ j = 1 H p r , i , j , l t ( F i , j , l t − ϕ ( F i , j , l s ) ) 2 ∑ m = 1 W ∑ n = 1 H p r , m , n , l t L_{TFD-r} = \sum _{l=1}^L \frac{T^0_l \times \sum _{i=1} ^W \sum_{j=1}^H p_{r,i,j,l}^t(F_{i,j,l}^t - \phi (F_{i,j,l}^s))^2}{\sum _{m=1} ^W \sum_{n=1}^H p_{r,m,n,l}^t} LTFDr=l=1Lm=1Wn=1Hpr,m,n,ltTl0×i=1Wj=1Hpr,i,j,lt(Fi,j,ltϕ(Fi,j,ls))2

L T F D = L T F D − c + L T F D − r L_{TFD} = L_{TFD-c} + L_{TFD-r} LTFD=LTFDc+LTFDr

总损失

上述的工作流程和TBD的推导都是基于一级检测器,当该方法与Faster RCNN等两阶段方法结合起来时,由于区域建议网络(RPN)可以看做是一个特定的单阶段模块,因此的生成来源于区域建议网络(RPN)的输出。其余部分与学生模型一致。本文的整体损失包括原始损失和定制蒸馏的损失:
L = L d e t e c t o r + α L H D + β L T F D L = L_{detector} + \alpha L_{HD} + \beta L_{TFD} L=Ldetector+αLHD+βLTFD

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

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

相关文章

漫途桥梁结构安全监测方案,护航桥梁安全!

桥梁作为城市生命线的重要组成部分&#xff0c;承载着城市交通、物流输送、应急救援等重要职能。然而&#xff0c;随着我国社会经济的飞速发展&#xff0c;桥梁所承载的交通流量逐年增长&#xff0c;其安全性所面临的挑战亦日益严峻。例如恶劣的外部环境、沉重的荷载以及长期使…

python爬虫实战——抖音

目录 1、分析主页作品列表标签结构 2、进入作品页前 判断作品是视频作品还是图文作品 3、进入视频作品页面&#xff0c;获取视频 4、进入图文作品页面&#xff0c;获取图片 5、完整参考代码 6、获取全部作品的一种方法 本文主要使用 selenium.webdriver&#xff08;Firef…

HarmonyOS NEXT应用开发—自定义视图实现Tab效果

介绍 本示例介绍使用Text、List等组件&#xff0c;添加点击事件onclick,动画&#xff0c;animationTo实现自定义Tab效果。 效果预览图 使用说明 点击页签进行切换&#xff0c;选中态页签字体放大加粗&#xff0c;颜色由灰变黑&#xff0c;起到强调作用&#xff0c;同时&…

揭示数据在内存中存储的秘密!

** ** 悟已往之不谏&#xff0c;知来者犹可追 ** ** 创作不易&#xff0c;宝子们&#xff01;如果这篇文章对你们有帮助的话&#xff0c;别忘了给个免费的赞哟~ 整数在内存中的存储 整数的表达方式有三种&#xff1a;原码、反码、补码。 三种表示方法均有符号位和数值位两部分…

Oracle数据库:使用 bash脚本 + 定时任务 自动备份数据

Oracle数据库&#xff1a;使用 bash脚本 定时任务 自动备份数据 1、前言2、为什么需要自动化备份&#xff1f;3、编写备份脚本4、备份脚本授权5、添加定时任务6、重启 crond / 检查 crond 服务状态7、备份文件检查 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收…

torch.backends.cudnn.benchmark 作用

相关参数 torch.backends.cudnn.enabled torch.backends.cudnn.benchmark torch.backends.cudnn.deterministictorch.backends.cudnn.benchmark True&#xff1a;将会让程序在开始时花费一点额外时间&#xff0c;为整个网络的每个卷积层搜索最适合它的卷积实现算法&#xff0c…

力扣59. 螺旋矩阵 II

思路&#xff1a;此题思路就是绕圈遍历&#xff0c;全靠条件处理技巧&#xff0c;重点要清楚的就是循环不变量&#xff1a;左闭右开&#xff08;即拐弯处的一个数&#xff0c;留给第二行处理&#xff09; 以下是代码随想录的作者的一张图片&#xff0c;每次for循环&#xff0c;…

Docker容器化技术(使用Docker搭建论坛)

第一步&#xff1a;删除容器镜像文件 [rootlocalhost ~]# docker rm -f docker ps -aq b09ee6438986 e0fe8ebf3ba1第二步&#xff1a;使用docker拉取数据库 [rootlocalhost ~]# docker run -d --name db mysql:5.7 02a4e5bfffdc81cb6403985fe4cd6acb0c5fab0b19edf9f5b8274783…

深入浅出计算机网络 day.2 概论⑥ 计算机网络体系结构

上帝疯狂杜撰世界悲情的命题 将凉薄和荒芜尽写 —— 24.3.13 内容概述 1.常见的三种计算机网络体系结构 2.计算机网路体系结构分层的必要性 3.计算机网络体系结构分层思想举例 4.计算机网络体系结构中的专用术语 一、常见的三种计算机网络体系结构 1.OSI参考模型 …

基于ElasticSearch存储海量AIS数据:时空立方体索引篇

文章目录 引言I 时间维切分II 空间范围切分引言 索引结构制约着查询请求的类型和处理方式,索引整体架构制约着查询请求的处理效率。随着时间推移,AIS数据在空间分布上具备局部聚集性,如 果简单地将所有AIS数据插入一个索引结构,随着数据量增长,索引的更新效率、查询效率及…

【Linux】Centos7上安装MySQL5.7

目录 1.下载安装包2. 上传安装包3.将 mysql 解压到/usr/local/4.重命名5.创建mysql用户及用户组6. 进入 mysql 目录修改权限7. 安装依赖库8. 执行安装脚本9. 复制启动脚本到资源目录10. 拷贝 my.cnf&#xff0c;并赋予权限11. 配置环境变量12. 启动 mysqld13. 登录 MySQL&#…

vite打包时发布时,放在服务器的二级目录中

方式一 hash模式 如果我们的站点根目录为 public , 我们访问的时候使用的是 http://www.abc.com/ 访问到了站点的根目当&#xff0c;现在我们要访问 http://www.abc.com/mysite/#/ 配置如下 修改 vite.config.js base:“/mysite/” 修改 router中的配置 上面的步骤完成&…

安装Pytorch——CPU版本

安装Pytorch——CPU版本 1. 打开pytorch官网2. 选择pip安装pytorch-cpu3.复制安装命令4. 在cmd命令窗口&#xff0c;进入你的虚拟环境4.1 创建虚拟环境4.2 进行安装 5. 安装成功6. 进行测试——如下面步骤&#xff0c;如图6.1 输入 python6.2 输入 import torch6.2 输入 print …

C语言葵花宝典之——文件操作

前言&#xff1a; 在之前的学习中&#xff0c;我们所写的C语言程序总是在运行结束之后&#xff0c;就会自动销毁&#xff0c;那如果我们想将一个结果进行长期存储应该如何操作呢&#xff1f;这时候就需要我们用文件来操作。 目录 1、什么是文件&#xff1f; 1.1 程序文件 1.2…

在idea中配置tomcat服务器,部署一个项目(下载教程加链接)

第一步&#xff1a;把Tomcat下载好 ww​​​​​​​Apache Tomcat - Welcome! 链接如上&#xff1a;进去后在左边找到Tomcat8点击进去后 找到图下内容 第二步&#xff1a; 打开这个文件点击bin进去 会出现一个黑色框框&#xff0c;也就是服务器 完成后就可以在浏览器输入…

HTML5+CSS3+JS小实例:全屏背景切换动画

实例:全屏背景切换动画 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-s…

算法思想总结:双指针算法

一、移动零 . - 力扣&#xff08;LeetCode&#xff09; 移动零 该题重要信息&#xff1a;1、保持非0元素的相对位置。2、原地对数组进行操作 思路&#xff1a;双指针算法 class Solution { public:void moveZeroes(vector<int>& nums){int nnums.size();for(int cur…

【研发日记】Matlab/Simulink技能解锁(二)——在Matlab Function编辑窗口Debug

文章目录 前言 行断点 条件断点 按行步进 Watch Value 分析和应用 总结 前言 见《【研发日记】Matlab/Simulink技能解锁(一)——在Simulink编辑窗口Debug》 行断点 当Matlab Function出现异常时&#xff0c;如果能确定大致的代码段&#xff0c;就可以在相应的行上设置一…

JVM垃圾收集器-serial.parNew,parallelScavnge,serialOld,parallelOld,CMS,G1

垃圾收集器 分代模型 适用于新生代&#xff1a; serial parNew parallel Scaavenge 适用于老年代&#xff1a; CMS serial Old(msc) paraller Old 分区模型 适用于超大容量&#xff1a; G1 分代模型 serial /serial Old收集器 1.单线程收集器 2.收集时会暂停其他线程&…

鸿蒙原生应用元服务开发-WebGL网页图形库开发着色器绘制彩色三角形

着色器绘制彩色三角形 使用WebGL开发时&#xff0c;为保证界面图形显示效果&#xff0c;请使用真机运行。 此场景为使用WebGL绘制的彩色三角形图形&#xff08;GPU绘制&#xff09;。开发示例如下&#xff1a; 创建页面布局。index.hml示例如下&#xff1a; <div class&quo…