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

2020CVPR-SiamBAN:用于视觉跟踪的Siamese框自适应网络

原文标题:Siamese Box Adaptive Network for Visual Tracking

中文标题:用于视觉跟踪的Siamese框自适应网络

代码地址: GitHub - hqucv/siamban: Siamese Box Adaptive Network for Visual Tracking

Abstract

        大多数现有的跟踪器通常依靠多尺度搜索方案或预定义的锚框来准确估计目标的尺度和纵横比。不幸的是,它们通常需要乏味且启发式的配置。 为了解决这个问题,我们通过利用全卷积网络(FCN)的表达能力,提出了一个简单而有效的视觉跟踪框架(名为Siamese Box Adaptive Network,SiamBAN)。SiamBAN 将视觉跟踪问题视为并行的分类和回归问题,从而直接在统一的 FCN 中对目标进行分类并回归其边界框。无先验框设计避免了与候选框相关的超参数,使 SiamBAN 更加灵活和通用。 在 VOT2018、VOT2019、OTB100、NFS、UAV123 和 LaSOT 等视觉跟踪基准上进行的大量实验表明,SiamBAN 实现了最先进的性能并以 40 FPS 的速度运行,证实了其有效性和效率。

1. Introduction

        视觉跟踪是计算机视觉中一项基本但具有挑战性的任务。给定序列初始帧中的目标状态,跟踪器需要预测每个后续帧中的目标状态。尽管近年来取得了巨大进步,但视觉跟踪仍然面临着由于遮挡、尺度变化、背景杂乱、快速运动、照明变化和外观变化而带来的挑战。在现实视频中,目标比例和纵横比也会由于目标或摄像机的移动以及目标外观的变化而发生变化。准确估计目标的尺度和纵横比成为视觉跟踪领域的挑战。然而,许多现有的跟踪器忽略了这个问题,并依靠多尺度搜索来估计目标大小。最近,基于Siamese 网络的视觉跟踪器引入了区域提议网络(RPN)来获得准确的目标边界框。然而为了处理不同的尺度和长宽比,他们需要基于启发式知识仔细设计锚框,这引入了许多超参数和计算复杂性。

        相比之下,神经科学家表明,生物视觉的初级视觉皮层可以快速有效地从复杂环境中提取观察对象的轮廓或边界。也就是说,人类可以在没有候选框的情况下识别物体的位置和边界。那么我们能否设计一个准确且鲁棒的视觉跟踪框架而不依赖候选框呢?受到无锚检测器的启发,答案是肯定的。通过利用全卷积网络(FCN)的表达能力,我们提出了一种简单而有效的视觉跟踪框架,名为Siamese 框自适应网络(SiamBAN),以解决准确估计目标的尺度和纵横比的挑战。该框架由一个Siamese网络骨干和多个框自适应头组成,不需要预先定义候选框,可以在训练过程中进行端到端的优化。SiamBAN对目标进行分类,并将边界框直接回归到统一的FCN中,将跟踪问题转化为分类回归问题。具体来说,它直接预测相关特征图上每个空间位置的前景-背景类别得分和 4D 向量。4D向量描述了从边界框的四个边到与搜索区域相对应的特征位置的中心点的相对偏移。在推理过程中,我们使用以目标的先前位置为中心的搜索图像。通过最佳得分位置对应的边界框,我们可以得到目标在帧之间的位移和尺寸变化。

这项工作的主要贡献有三个方面。

(1)我们设计了一个 Siamese 框自适应网络,它可以在注释良好的数据集上使用深度卷积神经网络执行端到端离线训练

(2)SiamBAN 中的无先验框设计避免了与候选框相关的超参数,使我们的跟踪器更加灵活和通用。

(3)SiamBAN 不仅取得了最先进的结果,而且在跟踪基准测试中以 40 FPS 的速度运行,包括 VOT2018、VOT2019、OTB100、NFS、UAV123 和 LaSOT。

(b)SiamBAN跟踪器和两个最先进的跟踪器的一些代表性实验结果。从可视化结果来看,我们的跟踪器在尺度和纵横比方面优于其他两个跟踪器。

2. Related Works

        视觉跟踪是近几十年来计算机视觉领域最活跃的研究课题之一。 对相关跟踪器的全面调查超出了本文的范围,因此我们仅简要回顾与我们的工作最相关的两个方面:基于Siamese网络的视觉跟踪器和无锚目标检测器。

2.1. Siamese Network Based Visual Trackers

        近年来,基于Siamese网络的跟踪器因其端到端训练能力和高效率而受到视觉跟踪界的广泛关注。SiamFC采用Siamese网络作为特征提取器,并首次引入相关层对特征图进行组合。由于它的轻量结构和不需要模型更新,SiamFC以 86 FPS的速度高效运行。DSiam学习特征变换来处理目标的外观变化并抑制背景。RASNet在Siamese网络中嵌入了多种注意机制,使跟踪模型适应当前目标。

        然而,这些方法需要多尺度测试来应对尺度变化(远近、大小),无法处理由于目标外观变化而引起的纵横比变化。为了获得更准确的目标边界框,SiamRPN将RPN引入SiamFC中。SPM-Tracker提出了一种串并联匹配框架来增强SiamRPN的鲁棒性和判别能力。SiamRPN++SiamMaskSiamDW以不同的方式去除padding等影响因素,并将ResNet、ResNeXt和MobileNet等现代深度神经网络引入Siamese中 基于网络的视觉跟踪器。虽然基于锚点的跟踪器可以处理尺度和纵横比的变化,但需要仔细设计和固定锚框的参数。设计参数通常需要启发式调整,并涉及许多技巧才能获得良好的性能。与基于锚点的跟踪器相比,我们的跟踪器避免了与锚框相关的超参数,并且更加灵活和通用。

2.2. Anchor-free Object Detectors

        最近,无锚目标检测引起了目标检测界的关注。然而,无锚检测并不是一个新概念。DenseBox 首先引入了FCN框架来联合执行人脸检测和地标定位。UnitBox 通过仔细设计优化损失,提供了另一种性能改进的选择。YOLOv1 提出将输入图像划分为网格,然后预测每个网格单元上的边界框和类别概率。最近,出现了许多新的无锚检测器。这些检测方法可以大致分为基于关键点的目标检测和密集检测 具体来说,CornerNet 提出将目标边界框检测为一对关键点。ExtremeNet 提出使用标准关键点估计网络来检测目标的四个极值点和一个中心点。RepPoints 引入了代表点,这是一种新的目标表示形式,用于对细粒度定位信息进行建模并识别对目标分类重要的局部区域。FSAF 提出了特征选择性无锚模块,以解决具有特征金字塔的基于锚的单次检测器的启发式特征选择所带来的限制。FCOS 提出直接预测目标存在的可能性和边界框坐标,无需锚点参考。

        与目标检测相比,视觉跟踪任务存在两个关键挑战,即未知类别和不同目标之间的区分。无锚检测器通常假设要检测的目标类别是预先定义的。然而,在跟踪之前目标的类别是未知的。同时,anchor-free检测器通常专注于检测不同类别的目标,而在跟踪时,需要判定当前帧中的某个物体是否与初始帧中的目标相同。为了解决这些问题,需要在视觉跟踪框架中引入一个模板分支(template branch),用于编码初始帧中目标的外观信息,从而在后续帧中帮助识别目标与背景的区别

3. SiamBAN Framework

        在本节中,我们将描述 SiamBAN 框架。如图2所示,SiamBAN由Siamese网络主干和多个框自适应头组成。Siamese 网络主干负责计算模板补丁和搜索补丁的卷积特征图,它使用现成的卷积网络。框自适应头包括分类模块和回归模块。具体来说,分类模块对相关层的每个点进行前景-背景分类,回归模块对相应位置进行边界框预测

图2。Siamese 框自适应网络的框架。左图为其主要结构,其中C3、C4、C5为骨干网络的特征图,Cls_Map和Reg_Map为SiamBAN头部输出的特征图。右图显示了每个SiamBAN头,其中DW-Corr表示深度交叉相关操作。

3.1. Siamese Network Backbone

        现代深度神经网络已被证明在基于Siamese网络的跟踪器中是有效的,现在我们可以在基于Siamese网络的跟踪器中使用ResNet,ResNeXt和MobileNet。在我们的跟踪器中,我们采用ResNet-50作为骨干网。虽然采用连续卷积步进的ResNet-50可以学习到越来越多的抽象特征表示,但它降低了特征分辨率。 然而,基于Siamese网络的跟踪器需要详细的空间信息来执行密集预测。为了解决这个问题,我们从最后两个卷积块中移除下采样操作。同时,为了改善感受野,我们使用了空洞卷积,这被证明对于视觉跟踪是有效的。此外,受多网格方法的启发,我们在模型中采用了不同的空洞率。具体来说,我们将 conv4 和 conv5 块中的步长设置为 1,将 conv4 块中的空洞率设置为 2,将 conv5 块中的空洞率设置为 4。

        Siamese 网络主干由两个相同的分支组成。一种称为模板分支,它接收模板补丁作为输入(表示为 z)。另一个称为搜索分支,它接收搜索补丁作为输入(表示为 x)。 这两个分支共享卷积神经网络中的参数,以确保对两个补丁应用相同的变换。为了减少计算量,我们增加一个1×1的卷积将输出特征通道减少到256个,并且只使用模板分支中心7×7区域的特征,仍然可以捕获整个目标区域。为方便起见,Siamese网络的输出特征表示为φ(z)和φ(x)。

3.2. Box Adaptive Head

        如图2(右)所示,框自适应头部由分类模块和回归模块组成。两个模块都从模板分支和搜索分支接收特征。因此,我们调整并复制φ(z)和φ(x)到[φ(z)]cls, [φ(z)]reg和[φ(x)]cls, [φ(x)]reg到相应的模块。根据我们的设计,分类模块相关层的每个像素点需要输出2个通道进行前景-背景分类,回归模块相关层的每个像素点需要输出4个通道进行边界框的预测。每个模块使用深度可分离相关层组合特征图:

式中表示以[φ(z)]cls或[φ(z)]reg为卷积核的卷积操作,Pclsw×h×2表示分类图,Pregw×h×4表示回归图。值得注意的是,我们的跟踪器输出的变量比具有5个先验框的anchor-based跟踪器少5倍。

对于分类特征图Pcls(w×h×2)或回归特征图Preg(w×h×4)上的每个位置,都将其映射到输入搜索补丁。对于特征图上的点 (i, j),其对应在搜索图像中感受野的中心位置 (pi , pj)为:

其中 w 和 h 是分类或回归特征图的宽度和高度。wim​和 him是搜索图像的宽度和高度。s是网络的总步幅(stride)。

        基于锚点的回归方法将特征图上的每个点 (i , j) 映射到搜索图像后,把映射得到的位置 (pi , pj) 作为锚框(anchor box)的中心,并预测该锚框的位置 (pi , pj)、宽度 aw、高度 ah。基于锚点的方法在回归中可以调整宽度、高度和位移值,但分类仍然是在特征图上固定的点上进行,这可能导致分类和回归的不一致性。为了解决分类与回归不一致的问题,本文方法不调整 (pi , pj) 的位置,而是直接计算它到目标边界框四条边的偏移值。这样可以避免锚点框设计带来的问题,并保持分类与回归的一致性。由于回归目标是正实数,因此在回归模块的最后一层对预测值应用指数函数exp(x),将任意实数映射到正区间 (0,+∞),确保回归预测值(如宽度、高度)始终为正。

3.3. Multi-level Prediction

        利用带有空洞卷积的 ResNet-50 后,我们可以使用多级特征进行预测。 虽然我们骨干网络的 conv3、conv4 和 conv5 块的空间分辨率相同,但它们具有不同扩展率的空洞卷积,因此它们的感受野差异很大,捕获的信息自然不同。正如 CF2 所指出的,早期层的特征可以捕获细粒度的信息,这对于精确定位很有用;而后面层的特征可以编码抽象语义信息,这对目标外观变化具有鲁棒性。为了充分利用多级特征的不同特性,我们使用多个框自适应头进行预测。每个检测头获得的分类图和回归图自适应地融合:

其中αl和βl是每个特征图对应的权重,与网络一起优化。通过独立组合分类图和回归图,分类模块和回归模块可以专注于它们需要的领域。

3.4. Ground-truth and Loss

        Classification Labels and Regression Targets. 如图 3 所示,每个搜索块上的目标都标有真实边界框。真实边界框的宽度、高度、左上角、中心点和右下角分别由gw、gh、(gx1,gy1)、(gxc,gyc)和(gx2,gy2)表示。

图 3.分类标签和回归目标的图示。预测值和监督信号如图所示,其中E1代表椭圆E1,E2代表椭圆E2。 我们分别使用交叉熵和 IoU 损失进行分类和框回归。

以(gxc , gyc)为圆心,gw/2 , gh/2 为轴长,可得椭圆E1:

以 (gxc , gyc) 为圆心, gw/4 , gh/4 为轴长,可得椭圆 E2:

如果位置(pi,pj)落在椭圆E2内,则为其分配正标签,如果其落在椭圆E1之外,则为其分配负标签,如果其落在椭圆E2和E1之间,忽略它。带有正标签的位置(pi,pj)用于对边界框进行回归,回归目标可以表示为:

其中 dl、dt、dr、db 是该位置(pi,pj)到边界框四个边的距离,如图 3 所示。

Classification Loss and Regression Loss. 多任务损失函数定义如下:

其中Lcls是交叉熵损失,Lreg是IoU(交集/并集)损失。不搜索Eq.6的超参数,简单地设 λ1 = λ2 = 1。与GIoU类似,将IoU损失定义为:

其中 IoU 表示预测边界框和真实边界框的交集与并集的面积比。标签为正的位置(pi,pj)在椭圆E2内且回归值大于0,所以0 < IoU ≤ 1,则0 ≤ LIoU < 1。IoU损失可以使dl, dt, dr, db 联合回归。

3.5. Training and Inference

        Training. 整个网络可以在大规模数据集上进行端到端训练。使用视频或静态图像上采样的图像对来训练 SiamBAN。训练集包括 ImageNet VID 、YouTube-BoundingBoxes、COCO、ImageNet DET、GOT10k 和 LaSOT。模板补丁的大小为 127×127 像素,而搜索补丁的大小为 255×255 像素。另外,虽然我们的负样本比基于锚的跟踪器少得多,但负样本仍然比正样本多得多。因此,我们从一对图像中最多收集 16 个正样本和 48 个负样本

        Inference. 在推理过程中,我们从第一帧中裁剪模板补丁并将其输入特征提取网络。提取的模板特征被缓存,因此我们不必在后续跟踪中再次计算它们。对于后续帧,根据前一帧的目标位置裁剪搜索块并提取特征,然后在搜索区域中进行预测,得到总分类图 Pcls−allw×h×2总回归图 Preg−all w×h×4。之后通过以下方程得到预测框:

其中dreg l、dreg t、dreg r、dreg b为回归图的预测值,(px1, py1)、(px2, py2)为预测框的左上角和右下角。

在生成预测框后,我们使用余弦窗口和尺度变化惩罚来平滑目标的运动和改变,然后选择得分最好的预测框,并通过与前一帧的状态进行线性插值来更新其大小 。

4. Experiments

4.1. Implementation Details

        我们使用在 ImageNet 上预训练的权重来初始化主干网络,并且前两层的参数被冻结。网络采用随机梯度下降 (SGD) 进行训练,小批量为 28 对。共训练 20 个 epoch,前 5 个 epoch 的预热学习率为 0.001 到 0.005,最后 15 个 epoch 的学习率从 0.005 指数衰减到 0.00005。在前 10 个 epoch 中,仅训练框自适应头,并在最后 10 个 epoch 中以当前学习率的十分之一对主干网络进行微调。权重衰减和动量设置为 0.0001 和 0.9。我们的方法是在配备 Intel Xeon(R) 4108 1.8GHz CPU、64G RAM、Nvidia GTX 1080Ti 的 PC 上使用 PyTorch 在 Python 中实现的。

4.2. Comparison with State-of-the-art Trackers

        我们在六个跟踪基准上将 SiamBAN 跟踪器与最先进的跟踪器进行比较。实现了最先进的结果并以 40 FPS 的速度运行。

        VOT2018. 我们在 2018 年视觉目标跟踪挑战赛 (VOT2018) 上评估了我们的跟踪器,该挑战赛由 60 个序列组成。跟踪器的整体性能使用 EAO(预期平均重叠)进行评估,它结合了准确性(成功跟踪期间的平均重叠)和鲁棒性(失败率)。

        VOT2019. 我们在 2019 年视觉目标跟踪挑战赛 (VOT2019) 实时实验中评估我们的跟踪器。与 VOT2018 相比,VOT2019 序列被替换了 20%。表 2 显示了 EAO、稳健性和准确性方面的结果。SiamMargin 通过在线更新实现了较低的失败率,但我们的准确性比它更高。尽管 SiamRPN++ 达到了与我们的跟踪器相似的精度,但我们的失败率比它低 17.8%,并且在 EAO 中实现了 14.7% 的相对增益。在这些跟踪器中,我们的跟踪器具有最高的精度和 EAO。这表明我们的方法可以准确地估计目标边界框。

        OTB100 . OTB100 是一种广泛使用的公共跟踪基准,由 100 个序列组成。我们的 SiamBAN 跟踪器与众多最先进的跟踪器进行了比较,包括 SiamRPN++、ECO、DiMP、C-COT、ATOM、DaSiamRPN、TADT、C-RPN、GradNet。图 7 显示了比较跟踪器的成功率和精度图。在 SiamRPN++ 之前,由于浅层网络的表示能力有限,基于 Siamese 网络的跟踪器在 OTB100 上实现了次优性能。使用ResNet50作为特征提取网络后,SiamRPN++取得了领先的结果。 与 SiamRPN++ 相比,通过更简单的设计实现了类似的结果。

        UAV123.  UAV123 是一个新的航空视频基准和数据集,其中包含从低空航空视角捕获的 123 个序列。 这些基准可用于评估跟踪器是否适合在实时场景中部署到无人机。我们将我们的跟踪器与其他 9 个最先进的实时跟踪器进行比较,包括 DiMP、ATOM、SiamRPN++、DaSiamRPN、SiamRPN、ECO、ECO- HC,SRDCF,SAM。图 8 显示了成功率和精度图。我们的追踪器取得了最先进的分数。

        LaSOT. LaSOT是一个高质量、大规模的数据集,共有1,400个序列。与之前的数据集相比,LaSOT 的序列更长,平均序列长度超过 2,500 帧。每个序列都有各种来自野外的挑战,目标可能会消失并重新出现在视图中,这考验了跟踪器重新跟踪目标的能力。我们在由 280 个视频组成的测试集上评估我们的跟踪器,结果包括成功图和归一化精度图,如图 9 所示。我们的跟踪器在 AUC 方面排名第三,在归一化精度方面排名第二,比 SiamRPN++ 高 5.1%。

5. Conclusions

        在本文中,我们利用全卷积网络的表达能力,提出了一种简单而有效的视觉跟踪框架,名为 SiamBAN,它不需要多尺度搜索模式和预定义的候选框。SiamBAN 直接在统一网络中对目标进行分类并回归边界框。因此,视觉跟踪问题变成了分类-回归问题。对六个视觉跟踪基准的广泛实验表明 SiamBAN 实现了最先进的性能并以 40 FPS 运行,证实了其有效性和效率。

相关文章:

2020CVPR-SiamBAN:用于视觉跟踪的Siamese框自适应网络

原文标题&#xff1a;Siamese Box Adaptive Network for Visual Tracking 中文标题&#xff1a;用于视觉跟踪的Siamese框自适应网络 代码地址&#xff1a; GitHub - hqucv/siamban: Siamese Box Adaptive Network for Visual Tracking Abstract 大多数现有的跟踪器通常依靠多尺…...

带你从入门到精通——自然语言处理(五. 自注意力机制和transformer的输入部分)

建议先阅读我之前的博客&#xff0c;掌握一定的自然语言处理前置知识后再阅读本文&#xff0c;链接如下&#xff1a; 带你从入门到精通——自然语言处理&#xff08;一. 文本的基本预处理方法和张量表示&#xff09;-CSDN博客 带你从入门到精通——自然语言处理&#xff08;二…...

MySql自动安装脚本

一、脚本安装流程 1. 添加MySQL的Repository 使用wget命令从MySQL官方网站下载Yum Repository的RPM包。使用rpm -ivh命令安装下载的RPM包&#xff0c;以添加MySQL的Yum Repository。 2. 安装mysql-community-server 使用yum install -y mysql-community-server --nogpgchec…...

3.9【Q】csd

在计算机存储领域&#xff0c;CSD是什么&#xff1f; 基于CXL™-Type3 实现内存池化 CPU访问内存的瓶颈是什么&#xff1f;具体矛盾是什么&#xff1f; 计算型存储-2&#xff1a;标准、API实现 NUMA是什么&#xff1f;详细解释一下它的核心思想&#xff1f;...

Qt常用控件之表格QTableWidget

表格QTableWidget QTableWidget 是一个表格控件&#xff0c;行和列交汇形成的每个单元格&#xff0c;是一个 QTableWidgetItem 对象。 1. QTableWidget属性 QTableWidget 的属性只有两个&#xff1a; 属性说明rowCount当前行的个数。columnCount当前列的个数。 2. QTableW…...

数据库批处理

数据库批处理是一种处理数据的方法&#xff0c;通常用于对大量数据进行一次性操作。批处理可以有效地减少数据库操作的次数&#xff0c;提高数据处理的效率。在数据库中&#xff0c;批处理通常通过编写批处理脚本或使用相应的工具来实现。 一般情况下&#xff0c;数据库批处理…...

Flask 框架简介

Flask 框架简介 Flask 框架简介 Flask 框架简介 Flask 是一个 Python 微型网页开发框架。微型指明了 Flash 的核心是轻量级的&#xff0c;但是可以灵活扩展。下面的简单的例子要和一个数据库系统交互。Django附带了与最常见的数据库交互所需的库。另一方面&#xff0c;Flask允…...

KMP 算法的 C 语言实现

# include <stdio.h> # include <stdlib.h> # include <string.h>// 打印 KMP 匹配结果. void ColorPrint(char *T, int *result, int result_size, int m) {int green_size strlen("\x1b[31m");int reset_size strlen("\x1b[0m");cha…...

深入理解 TCP 协议:可靠传输、连接管理与经典面试题解析

TCP&#xff08;Transmission Control Protocol&#xff09;是互联网中最重要的传输层协议之一&#xff0c;其设计目标是提供可靠的、面向连接的、全双工的数据传输服务。本文将从核心机制、工作原理到经典面试题&#xff0c;全面解析 TCP 协议的关键特性。 一、TCP 核心特性 …...

雪花算法

雪花算法&#xff08;Snowflake&#xff09; 雪花算法是一种由Twitter开源的分布式ID生成算法&#xff0c;广泛应用于分布式系统中&#xff0c;用于生成全局唯一的ID。这些ID不仅具有唯一性&#xff0c;还按照时间顺序递增&#xff0c;便于排序和查询。以下是雪花算法的详细解…...

coding ability 展开第二幕(双指针——巩固篇)超详细!!!!

文章目录 前言有效的三角形个数思路 查找总价格为目标值的两个商品思路 两数之和思路 三数之和思路 四数之和思路 总结 前言 本专栏的上篇&#xff0c;讲述了双指针的一些基础的算法习题 今天我们来学习更进一步的双指针用法吧 其实也是大相径庭&#xff0c;和前面的差不多&…...

系统安全阶段练习真题(高软44)

系列文章目录 系统安全阶段练习真题 文章目录 系列文章目录前言一、真题总结 前言 本节就是系统安全的阶段练习真题&#xff0c;带答案与解析。 一、真题 总结 就是高软笔记&#xff0c;大佬请略过&#xff01;...

Mybatis Generator 使用手册

第一章 什么是Mybatis Generator&#xff1f; MyBatis Generator Core – Introduction to MyBatis Generator MyBatis生成器&#xff08;MBG&#xff09;是MyBatis框架的代码生成工具。它支持为所有版本的MyBatis生成代码&#xff0c;通过解析数据库表&#xff08;或多个表&…...

Android中AIDL和HIDL的区别

在Android中&#xff0c;AIDL&#xff08;Android Interface Definition Language&#xff09; 和 HIDL&#xff08;HAL Interface Definition Language&#xff09; 是两种用于定义跨进程通信接口的语言。AIDL 是 Android 系统最早支持的 IPC&#xff08;进程间通信&#xff0…...

Gazebo 启动时候配置物体

1. 准备模型 mkdir -p ~/.gazebo/models/table echo export GAZEBO_MODEL_PATH$HOME/.gazebo/models:$GAZEBO_MODEL_PATH >> ~/.bashrc source ~/.bashrc # 从https://github.com/osrf/gazebo_models下载模型 # 桌子 cd ~/.gazebo/models/table wget https://raw.github…...

展示深拷贝与移动语义的对比

定义 Buffer 类&#xff08;含深拷贝和移动语义&#xff09; #include <iostream> #include <chrono> #include <cstring>class Buffer { public:// 默认构造函数&#xff08;分配内存&#xff09;explicit Buffer(size_t size) : size_(size), data_(new in…...

STM32基础教程——对射式红外传感器计数实验

前言 对射式红外传感器介绍 对射式红外传感器是一种非接触式的距离检测器&#xff0c;主要由发射器和接收器两部分组成。发射器发出特定波长的红外光束&#xff0c;当物体阻挡了这条光束时&#xff0c;接收器无法接收到光线信号&#xff0c;从而产生一个开关信号来判断物体的存…...

Git与GitHub:理解两者差异及其关系

目录 Git与GitHub&#xff1a;理解两者差异及其关系Git&#xff1a;分布式版本控制系统概述主要特点 GitHub&#xff1a;基于Web的托管服务概述主要特点 Git和GitHub如何互补关系现代开发工作流 结论 Git与GitHub&#xff1a;理解两者差异及其关系 Git&#xff1a;分布式版本控…...

【时时三省】(C语言基础)赋值语句2

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 赋值运算符 赋值符号“”就是赋值运算符&#xff0c;它的作用是将一个数据赋给一个变量。如a 3的作用是执行一次赋值操作&#xff08;或称赋值运算&#xff09;。把常量3赋给变量a。也可以…...

服务器上通过ollama部署deepseek

2025年1月下旬&#xff0c;DeepSeek的R1模型发布后的一周内就火了&#xff0c;性能比肩OpenAI的o1模型&#xff0c;且训练成本仅为560万美元&#xff0c;成本远低于openAI&#xff0c;使得英伟达股票大跌。 下面我们来看下如何个人如何部署deepseek-r1模型。 我是用的仙宫云的…...

自动控制原理【知识点总结、复习笔记】

1.控制系统定义 控制系统是指通过监测和调整系统的行为&#xff0c;以达到预期目标的一套系统。它由一组相互关联的组件组成&#xff0c;这些组件协同工作&#xff0c;用于控制物理过程、机械设备、电子设备或其他系统。例如&#xff0c;一个简单的温控系统可以通过监测房间温…...

【AI】什么是Embedding向量模型?我们应该如何选择?

我们之前讲的搭建本地知识库,基本都是使用检索增强生成(RAG)技术来搭建,Embedding模型则是RAG的核心,同时也是大模型落地必不可少的技术。那么今天我们就来聊聊Embedding向量模型: 一、Embedding模型是什么? Embedding模型是一种将离散数据(如文本、图像、用户行为等)…...

openwrt路由系统------Linux 驱动开发的核心步骤

以下是 Linux 驱动开发的核心步骤,结合实践案例与注意事项,适合嵌入式设备(如 OpenWrt 路由器)开发: 一、驱动开发基本流程 1. 环境准备 工具链与内核源码 # 安装交叉编译工具链(如 ARM) sudo apt-get install gcc-arm-linux-gnueabihf# 获取目标内核源码(需匹配运行的…...

Educational Codeforces Round 7 F. The Sum of the k-th Powers 多项式、拉格朗日插值

题目链接 题目大意 求 ( ∑ i 1 n i k ) (\sum_{i1}^{n} i^k) (∑i1n​ik) m o d ( 1 0 9 7 ) mod(10^97) mod(1097) . 数据范围 &#xff1a; 1 ≤ n ≤ 1 0 9 1 \leq n \leq 10^9 1≤n≤109 , 0 ≤ k ≤ 1 0 6 0 \leq k \leq 10^6 0≤k≤106 . 思路 令 f ( n ) ∑ …...

学习笔记:利用OpenAI实现阅卷智能体

https://zhuanlan.zhihu.com/p/18047953492 ### 学习笔记&#xff1a;利用OpenAI实现阅卷智能体 #### 一、背景与需求 在各类考试中&#xff0c;选择题、判断题、填空题的阅卷相对简单&#xff0c;只需对比答案与作答是否一致。然而&#xff0c;简答题的阅卷较为复杂&#xff…...

进程的简要介绍

一.进程 1.概念&#xff1a;担当分配系统资源的实体 2.进程内核数据结构对象自己的代码和数据 或进程PCB(task_struct)自己的代码和数据 注1&#xff1a;PCB&#xff1a;操作系统中描述进程的结构体 2.进程的所有属性均可在task_struct中找到&#xff0c;管理进程其实就是…...

每日一题——乘积最大子数组

乘积最大子数组问题详解 问题描述示例约束条件 问题分析难点分析解题思路 代码实现代码说明 测试用例测试用例 1测试用例 2测试用例 3 总结 问题描述 给定一个整数数组 nums&#xff0c;请你找出数组中乘积最大的非空连续子数组&#xff08;该子数组中至少包含一个数字&#x…...

HttpServletRequest 和 HttpServletResponse 区别和作用

一、核心作用对比 对象HttpServletRequest&#xff08;请求对象&#xff09;HttpServletResponse&#xff08;响应对象&#xff09;本质客户端发给服务器的 HTTP 请求信息&#xff08;输入&#xff09;服务器返回客户端的 HTTP 响应信息&#xff08;输出&#xff09;生命周期一…...

黄昏时间户外街拍人像Lr调色教程,手机滤镜PS+Lightroom预设下载!

调色介绍 黄昏时分有着独特而迷人的光线&#xff0c;使此时拍摄的人像自带一种浪漫、朦胧的氛围 。通过 Lr 调色&#xff0c;可以进一步强化这种特质并根据不同的风格需求进行创作。Lr&#xff08;Lightroom&#xff09;作为专业的图像后期处理软件&#xff0c;提供了丰富的调色…...

Docker Desktop 安装与使用详解

目录 1. 前言2. Docker Desktop 安装2.1 下载及安装2.2 登录 Docker 账号2.3 进入 Docker Desktop 主界面 3. Docker 版本查看与环境检查3.1 查看 Docker Desktop 支持的 Docker 和 Kubernetes 版本3.2 检查 Docker 版本 4. Docker Hub 和常用镜像管理方式4.1 使用 Docker Hub4…...

DeepSeek-R1与全光网络的医疗技术协同场景深度分析

一、DeepSeek-R1与全光网络的技术协同场景 1. 实时诊疗与数据交互 1. 实时诊疗与数据交互 1.1 场景示例分析 高带宽需求:医疗影像,尤其是CT和MRI影像,通常具有高分辨率和大数据量,要求医疗系统具备超高带宽来实时传输这些数据。全光网络,特别是基于华为F5G的解决方案,…...

热图回归(Heatmap Regression)

热图回归(Heatmap Regression)是一种常用于关键点估计任务的方法,特别是在人体姿态估计中。它的基本思想是通过生成热图来表示某个关键点在图像中出现的概率或强度。以下是热图回归的主要特点和工作原理: 主要特点 热图表示: 每个关键点对应一个热图,热图中的每个像素值…...

模型微调-基于LLaMA-Factory进行微调的一个简单案例

模型微调-基于LLaMA-Factory进行微调的一个简单案例 1. 租用云计算资源2. 拉取 LLaMa-Factory3. 安装依赖环境4. 启动 LLaMa-Factory 界面5. 从 Huggingface 下载模型6. 模型验证7. 模型微调 1. 租用云计算资源 以下示例基于 AutoDL 云计算资源。 在云计算平台选择可用的云计…...

shell的模拟实现 ─── linux第16课

在shell的命令行中输入命令,会有两种执行命令的途径 shell自己执行 shell创建子进程(fork ,exit ,waitpid,exec) ,子进程去执行 shell自己执行的命令是自建命令(bulit command) 子进程执行的是非自建命令 第一版只能维护命令行参数表创建子进程, 执行非内建命令 我们先创…...

Luna——为游戏添加音效

1、在GameManager中声明 public AudioSource audiosource; public AudioClip normalClip; public AudioClip battleClip; 2、在GameManager资产中挂载“Audio Source”组件&#xff0c;并将该组件挂载到资产脚本中的声明对象 这就可以根据不同场景的需要切换背景音乐了&#x…...

计算机视觉算法实战——老虎个体识别(主页有源码)

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​ ​​​ 1. 领域介绍 老虎个体识别是计算机视觉中的一个重要应用领域&#xff0c;旨在通过分析老虎的独特条纹图案&#xff0c;自动识别和区…...

技术速递|GitHub Copilot Agent 模式(预览版)介绍

作者&#xff1a;Isidor Nikolic 翻译&#xff1a;Alan Wang GitHub Copilot Agent 模式&#xff08;预览版&#xff09;是 AI 辅助编码的最新进化。它作为一个自主的编程助手&#xff0c;可以根据你的指令执行多步骤的编码任务——分析代码库、读取相关文件、提出文件编辑建议…...

《安富莱嵌入式周报》第351期:DIY半导体制造,工业设备抗干扰提升方法,NASA软件开发规范,小型LCD在线UI编辑器,开源USB PD电源,开源锂电池管理

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版&#xff1a; https://www.bilibili.com/video/BV16C95YEEZs 《安富莱嵌入式周报》第351期&#xff1a;DIY半导体…...

CSS—补充:CSS计数器、单位、@media媒体查询

目录 1. CSS计数器 嵌套计数器&#xff1a; 对列表元素&#xff1a; 2.单位 绝对长度&#xff1a; 相对长度&#xff1a; 3.media媒体查询 1. CSS计数器 CSS 计数器就像“变量”。变量值可以通过 CSS 规则递增&#xff08;将跟踪它们的使用次数&#xff09;。 如需使用…...

Phi-4-multimodal:图、文、音频统一的多模态大模型架构、训练方法、数据细节

Phi-4-Multimodal 是一种参数高效的多模态模型&#xff0c;通过 LoRA 适配器和模式特定路由器实现文本、视觉和语音/音频的无缝集成。训练过程包括多阶段优化&#xff0c;确保在不同模式和任务上的性能&#xff0c;数据来源多样&#xff0c;覆盖高质量网络和合成数据。它的设计…...

Leetcode::将水果放入篮子II(c++)

3477. 将水果放入篮子 II 提示 给你两个长度为 n 的整数数组&#xff0c;fruits 和 baskets&#xff0c;其中 fruits[i] 表示第 i 种水果的 数量&#xff0c;baskets[j] 表示第 j 个篮子的 容量。 你需要对 fruits 数组从左到右按照以下规则放置水果&#xff1a; 每种水果必…...

【C语言系列】字符函数和字符串函数

字符函数和字符串函数 一、字符分类函数二、字符转换函数三、strlen的使用和模拟实现3.1strlen函数3.2strlen函数模拟实现 四、strcpy的使用和模拟实现4.1strcpy函数4.2strcpy函数的模拟实现 五、strcat的使用和模拟实现5.1strcat函数5.2strcat函数的模拟实现 六、strcmp的使用…...

【计算机网络】深入解析 HTTP 协议的概念、工作原理和通过 Fiddler 抓包查看 HTTP 请求/响应的协议格式

网络原理— HTTP 1. 什么是HTTP? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议&#xff1a; HTTP 往往是基于传输层的 TCP 协议实现的 (HTTP1.0,HTTP1.1,HTTP2.0 均为TCP,HTTP3基于UDP实现) 我们平时打开一个网站&#xff0c;就是通过HTTP协议来…...

InDraw6.2.3 | 甾体、核苷、黄酮类化合物实现简称命名

导语 当化学家对着屏幕输入"2-amino-1,9-dihydro-6H-purin-6-one"时&#xff0c;隔壁生物学家可能正在搜索"鸟嘌呤"&#xff1b;这种命名差异如同"火星文"与"地球语"的碰撞。现在&#xff0c;鹰谷InDraw 6.2.3版带着53种多环化合物的…...

AI Copilot——维新派的贾维斯,守旧派的墓志铭(程序员视角)

6500万年前的那颗陨石好像要落下来了 这一段时间&#xff0c;伴随着claude sonnet 3.7的发布 以及cursor&#xff0c;windsurf 等一众AI智能编辑器的涌现&#xff0c;社区的programming自媒体坐不住了&#xff0c;有一个观点已经快要溢出屏幕&#xff1a;程序员这个岗位要黄&a…...

c++ 接口/多态

目录 接口的通用定义 特点&#xff1a; C 中的接口 接口的作用 接口与抽象类的区别 什么是多态&#xff1f; 多态的类型 1. 编译时多态 2. 运行时多态 多态的实现原理 注意事项 在编程中&#xff0c;接口&#xff08;Interface&#xff09; 是一个抽象概念&#xff…...

【大模型学习】第十二章 大模型获取智能机制

目录 引言 1. 模型架构 Transformer架构 层次结构和层数 2. 训练数据 3. 大规模训练 4. 迁移学习与微调 4.1 微调步骤 5. 机制实例 自注意力机制 多头注意力机制 总结 引言 随着深度学习的发展&#xff0c;特别是大型预训练模型&#xff08;大模型&#xff09;的出…...

神经网络|(十四)|霍普菲尔德神经网络-Hebbian训练

【1】引言 前序学习进程中&#xff0c;除了对基本的神经网络知识进行了学习&#xff0c;还掌握了SOM神经网络原理&#xff0c;文章链接包括且不限于&#xff1a; 神经网络|(十一)|神经元和神经网络-CSDN博客 神经网络|(十二)|常见激活函数-CSDN博客 神经网络|(十三)|SOM神经…...

华为鸿蒙系统全景解读:从内核设计到生态落地的技术革命

华为鸿蒙系统全景解读&#xff1a;从内核设计到生态落地的技术革命 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;可以分享一下给大家。点击跳转到网站。 https://www.captainbed.cn/ccc 文章目录 华为鸿蒙系统全景解读&#x…...

基于大数据的Steam游戏数据分析可视化推荐系统

【大数据】&#x1f3ae; 项目名&#xff1a;游戏分析神器&#xff0c;用代码探析游戏世界——《基于大数据的Steam游戏分析与智能推荐系统》&#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 &a…...