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.mzph.cn/news/750252.shtml

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

相关文章

【CTF web1】

CTF web 一、CTF web -PHP弱类型1、是否相等&#xff1f;2、转换规则: 二、CTF web -md5绕过1、若类型比较绕过2、null绕过3、碰撞绕过 三、习题 一、CTF web -PHP弱类型 1、是否相等&#xff1f; &#xff1a;在进行比较的时候&#xff0c;会先判断两种字符串的类型是否相等&…

切面条-蓝桥杯?-Lua 中文代码解题第1题

切面条-蓝桥杯&#xff1f;-Lua 中文代码解题第1题 一根高筋拉面&#xff0c;中间切一刀&#xff0c;可以得到2根面条。 如果先对折1次&#xff0c;中间切一刀&#xff0c;可以得到3根面条。 如果连续对折2次&#xff0c;中间切一刀&#xff0c;可以得到5根面条。 那么&#xf…

【ollama】(7):使用Nvidia Jetson Nano设备,成功运行ollama,运行qwen:0.5b-chat,速度还可以,可以做创新项目了

1&#xff0c;视频地址 https://www.bilibili.com/video/BV1Pj421o7W5/ 【ollama】&#xff08;7&#xff09;&#xff1a;使用Nvidia Jetson Nano设备&#xff0c;成功运行ollama&#xff0c;运行qwen:0.5b-chat&#xff0c;速度还可以&#xff0c;可以做创新项目了 2&#x…

vuex购物车案例

store/index.js // 导入vue import Vue from vue // 导入vuex import Vuex from vueximport cart from ./module/cartVue.use(Vuex)// 创建仓库store const store new Vuex.Store({strict: true,modules: {cart} })// 导出仓库 export default storestore/modules/cart impo…

【Java】容器|Set、List、Map及常用API

目录 一、概述 二、List 1、List的常用API 2、ArrayList 3、List遍历 三、Set 1、Set的常用方法: 2、HashSet 3、遍历集合&#xff1a; 四、Map 1、Map常用API 2、HashMap 3、遍历Map 五、迭代器 一、概述 在Java中所有的容器都属于Collection接口下的内容 1…

C语言数据结构(7)——树、二叉树前言

欢迎来到博主的专栏——C语言数据结构 博主ID&#xff1a;代码小豪 文章目录 树二叉树特殊二叉树满二叉树完全二叉树 完全二叉树的存储结构 树 树是一个非线性的数据结构&#xff0c;由N个结点构成的集合。 树的各个结点由一个根结点联系起来&#xff0c;这个根节点没有前驱…

【leetcode热题】 分数到小数

给定两个整数&#xff0c;分别表示分数的分子 numerator 和分母 denominator&#xff0c;以 字符串形式返回小数 。 如果小数部分为循环小数&#xff0c;则将循环的部分括在括号内。 如果存在多个答案&#xff0c;只需返回 任意一个 。 对于所有给定的输入&#xff0c;保证 …

Qt教程 — 3.4 深入了解Qt 控件:Input Widgets部件(3)

目录 1 Input Widgets简介 2 如何使用Input Widgets部件 2.1 Dial 组件-模拟车速表 2.2 QScrollBar组件-创建水平和垂直滚动条 2.3 QSlider组件-创建水平和垂直滑动条 2.4 QKeySequenceEdit组件-捕获键盘快捷键 Input Widgets部件部件较多&#xff0c;将分为三篇文章介绍…

DDR协议基础进阶(三)——(基本功能、初始化、MR寄存器)

DDR协议基础进阶&#xff08;三&#xff09;——&#xff08;基本功能、初始化、MR寄存器&#xff09; 一、DDR基本功能 DDR基本功能主要包括&#xff1a; 8-bit prefetch预取——8-bit&#xff0c;是指8位数据&#xff0c;即8倍芯片位宽的数据。由于DDR内部数据传输是32bit…

python3GUI--qt仿暴风影音视频播放器By:PyQt5(附下载地址)

文章目录 一&#xff0e;前言二&#xff0e;环境1.开发环境2.打包环境3.运行环境 三&#xff0e;软件截图1.启动页2.视频播放3.音频播放4.其他1.托盘2.对话框 四&#xff0e;功能总览五&#xff0e;代码展示&心得1.UI设计2.如何防止卡顿3.如何自定义组件 五&#xff0e;思考…

VLC抓取m3u8视频

前言 最近想看一些网络视频&#xff0c;但是很多时候网页上是m3u8推流的&#xff0c;如果在线看&#xff0c;速度又慢&#xff0c;所以就想下载下来&#xff0c;就想到了VLC的推流&#xff0c;转换能力&#xff0c;查阅资料&#xff0c;加上实践&#xff0c;总结心得。 设置中…

RabbitMQ进阶

1.消息可靠性 消息从发送,到消费者接收,会经历多个过程: 其中的每一步都可能导致消息丢失,常见的丢失原因包括: - 发送时丢失: - 生产者发送的消息未送达exchange - 消息到达exchange后未到达queue - MQ宕机,queue将消息丢失 - consumer接收到消息后未消费就宕机 …

【C语言】浮点型在内存中的存储

文章目录 例题引入剖析原因浮点型的二进制转换&#xff08;M&#xff09;正负号之分&#xff08;S&#xff09;科学记数法&#xff08;E&#xff09;关于 S E M 在内存中的存储存取浮点型时的情况讨论 例题解析整形存储为浮点型并输出浮点型存储为整形并输出 在我的上一篇博客中…

接雨水-热题 100?-Lua 中文代码解题第4题

接雨水-热题 100&#xff1f;-Lua 中文代码解题第4题 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释…

算法——前缀和之除自身以外数组的乘积、和为K的子数组、和可被K整除的子数组、连续数组、矩阵区域和

这几道题对于我们前面讲过的一维、二维前缀和进行了运用,包含了面对特殊情况的反操作 目录 4.除自身以外数组的乘积 4.1解析 4.2题解 5.和为K的子数组 5.1解析 5.2题解 6.和可被K整除的子数组 6.1解析 6.2题解 7.连续数组 7.1题解 7.2题解 8.矩阵区域和 8.1解析 …

GET和POST方法的区别

GET和POST的区别 在我们开发项目的时候常常会在Controller层使用到POST方法或者GET方法&#xff0c;犹豫到底将接口定义为GET方法还是POST方法&#xff1f;那这两者之间有什么区别呢&#xff1f; 看一下官方定义&#xff1a; GET 和 POST 是 HTTP 协议中最常用的两种请求方法…

爬虫学习 Scrapy中间件代理UA随机selenium使用

目录 中间件UA、代理处理---process_requestUA随机 代理处理seleniumscrapy 中间件 控制台操作 (百度只起个名 scrapy startproject mid scrapy genspider baidu baidu.com setting.py内 ROBOTSTXT_OBEY FalseLOG_LEVEL "WARNING"运行 scrapy crawl baidu middle…

ArcGIS分享图层数据的最佳方法

在工作中&#xff0c;经常需要将图层数据分享给其他人。 如下图所示&#xff0c;需要分享的是【CJDCQ】和【GHDLTB】&#xff0c;图层带有符号系统&#xff1a; 一、分享gdb数据库及lyr文件 分享数据自然要找到源数据&#xff1a; 但是&#xff0c;gdb数据是不带符号系统的&a…

微信小程序开发系列(三十四)·自定义组件的创建、注册以及使用(数据和方法事件的使用)

目录 1. 分类和简介 2. 公共组件 2.1 创建 2.2 注册 2.3 使用 3. 页面组件 3.1 创建 3.2 注册 3.3 使用 4. 组件的数据和方法的使用 4.1 组件数据的修改 4.2 方法事件的使用 1. 分类和简介 小程序目前已经支持组件化开发&#xff0c;可以将页面中的功能…

springboot基于spring boot的在线答题微信小程序

摘 要 在线答题微信小程序是考试中重要的一环&#xff0c;在线答题是学生获取任务信息的主要渠道。为了方便学生能够在网站上查看任务信息、考试&#xff0c;于是开发了基于 springboot框架设计与实现了一款简洁、轻便的在线答题微信小程序。本微信小程序解决了在线答题事务中的…