论文阅读笔记:Adaptive Multi-Modal Cross-Entropy Loss for Stereo Matching
论文阅读笔记:Adaptive Multi-Modal Cross-Entropy Loss for Stereo Matching
- 1 背景
- 2 创新点
- 3 方法
- 4 模块
- 4.1 基础和问题描述
- 4.2 自适应多模态概率模型
- 4.3 主模态视差估计器
- 5 效果
- 6 结论
1 背景
尽管深度学习在立体匹配方面取得了巨大成功,但恢复准确的视差图仍然具有挑战性。目前,L1 和交叉熵是立体网络训练中使用最广泛的两种损失。与前者相比,后者通常表现更好,这要归功于它的概率建模和对成本量的直接监督。然而,如何准确模拟交叉熵损失的立体真实值在很大程度上仍未得到充分探索。现有的工作只是假设 GT 分布是单模态的,这忽略了大多数边缘像素可以是多模态的事实。
立体匹配作为计算机视觉领域一个由来已久且活跃的话题,在自动驾驶和虚拟现实等广泛应用中发挥着至关重要的作用。虽然传统方法在处理光照变化和弱纹理方面的可靠性较差,但基于学习的立体方法在这些复杂场景中显示出其优越性。
立体匹配通常被视为深度学习中的回归任务。在这些工作中,L1 损失用于训练,然后是 soft-argmax 估计器来预测亚像素视差。L1 loss 的主要问题是它缺乏对成本量的直接监督,因此容易出现过拟合。此外,soft-argmax 基于以下假设:输出分布是单峰的,并且以真实值为中心,这并不总是正确的,特别是对于具有模糊深度的边缘像素。如图 1a 所示,边缘像素上的 soft-argmax 存在严重的过度平滑问题,导致边缘出现渗色伪影。
另一条研究线将立体匹配视为分类任务,其中可以使用交叉熵损失。为了指导网络输出单峰分布,研究人员使用离散的拉普拉斯分布或高斯分布对真实视差进行建模。单模态视差估计器 (SME)进一步用于从预测分布中提取正确的模态。交叉熵损失可以直接监督成本量的学习,从而取得比 L1 损失更好的结果。然而,单模态模式的执行似乎并不那么有效,图 1b 中存在的错位伪影证明了这一点。
本文的工作旨在探索更好的立体GT建模并改进视差估计器。与以前对成本量施加单模态约束的工作相反,作者认为边缘像素应该自然地建模为多模态分布。在图像捕获过程中,边缘像素从不同深度的多个物体中收集光线,这意味着边缘像素的深度本身就带有歧义。强制网络在所有区域学习单模态模式可能会令人困惑和误导,从而导致边缘和非边缘像素的错误估计。因此,非常需要一个更好的概率模型来编码每个像素的真实模式。
2 创新点
(1)提出了一种新的自适应多模态交叉熵损失 (ADL) 来指导网络学习每个像素的不同分布模式。
(2)优化了视差估计器,以进一步减轻推理中的渗色或错位伪影。
(3)提出了一种用于训练立体网络的自适应多模态交叉熵损失。它可以有效引导网络学习清晰的分布模式并抑制异常值
(4)提出了一种主模态视差估计器,可以在多模态输出上获得准确的结果
3 方法
在本文中,提出了像素的自适应多模态分布模型,并将其集成到交叉熵损失中以进行网络训练。作者在每个像素的局部窗口内应用视差聚类以获得所需数量的模态。然后采用拉普拉斯分布对每个簇进行建模。作者进一步依靠窗口内的局部结构信息来确定每个模态的相对权重,从而最终确定交叉熵损失的拉普拉斯混合。此外,提出了一种主模态视差估计器(DME),以更好地解决网络多模态输出带来的困难。对公共数据集的大量实验结果表明,本文的方法是通用的,可以帮助经典立体网络重新获得最先进的性能。图1中的比较结果例证了本文的方法的显着改进。此外,本文的方法实现了出色的跨域泛化性能,并对稀疏的GT表现出更高的鲁棒性。
4 模块
4.1 基础和问题描述
给定校准的立体图像对,立体匹配的目的是为左图像中的每个像素找到右图像中对应的像素。基于成本量的立体声网络遵循通用工作流[13]。首先,分别通过权重共享 2D CNN 模块提取左右图像的特征。然后根据获得的两个特征块构建 4D 成本体积。成本聚合模块将此 4D 体积作为输入,输出大小为 D × H × W D×H×W D×H×W 的分布体积,其中 D 是视差搜索的最大范围,H 和 W 分别是输入图像的高度和宽度。然后沿着视差维度应用 Softmax 算子来标准化每个像素的概率分布 p(·)。最后,通过全带加权平均操作来估计得到的视差 d ^ \hat{d} d^ ,也称为 soft-argmax。
为了训练立体网络,可以采用基于回归的平滑 L1 损失:
其中, d g t d_{gt} dgt 是视差真值。
在这个工作流中,分布量是由平滑的L1损失间接监督的,这阻碍了最终的性能。通过将立体匹配视为分类任务,交叉熵损失提供了对分布体的直接监督,如:
新问题是式-3中的真实分布 p g t ( ⋅ ) p_{gt}(·) pgt(⋅) 不存在。现有的工作简单地将 p g t ( ⋅ ) p_{gt}(·) pgt(⋅) 建模为以 d g t d_{gt} dgt 为中心的单峰拉普拉斯或高斯分布。然而,这些简单的模型似乎无法对不同的图像区域(尤其是边缘)施加足够的监督。如图2所示,边缘像素的训练损失仍然远大于非边缘像素,表明这些区域的学习难度。
对所得输出分布体的进一步统计(详细信息见表3)表明,超过一半的边缘和部分非边缘像素实际上分配了多个模态,这与伪真值的单模态假设相冲突。这些不需要的多模态输出直接导致对象边缘上的未对准伪影和非边缘区域上的异常值,如图 1b 所示。因此,作者认为问题的根源在于对所有领域的真实情况的单模态建模不恰当。事实上,边缘像素聚合了来自不同深度的多个物体的光度信息,这意味着边缘像素的强度本质上是不明确的。在整个图像上施加单峰分布模式不仅会导致边缘像素的学习困难,而且还会混淆非边缘像素的学习。
4.2 自适应多模态概率模型
受到上一节观察的启发,作者致力于探索更好的交叉熵损失的真实概率模型。作者认为边缘像素的概率分布应该由多个模态组成,每个模态对应于特定的深度/视差。为此,提出了一种自适应多模态GT建模方法。作者的想法是为边缘像素上的每个潜在深度生成单独的拉普拉斯分布,然后将它们融合在一起以构造拉普拉斯混合。作者参考每个像素的邻域来完成任务,如 图3 所示。
对于标有真实视差的每个像素,考虑以它为中心的 m × n m×n m×n 局部窗口。然后,通过 DBScan 聚类算法将窗口内的整组视差值分为 K ( K ≥ 1 ) K(K≥1) K(K≥1) 个不相交子集 { Ω 1 , Ω 2 , . . . , Ω K } \{Ω_1, Ω_2, ..., Ω_K\} {Ω1,Ω2,...,ΩK} ,每个簇对应不同的潜在深度。在 DBScan 中,手动设置距离阈值 ε ε ε 和密度阈值 m i n P t s minP_{ts} minPts 以调整生成的聚类数量。这种聚类方法具有以下优点:
(1)不需要预先定义聚类的数量
(2)K=1可以视为无边缘的指标
(3)对于具有连续但变化深度的倾斜平面是鲁棒的
然后可以将每个像素的真实分布建模为拉普拉斯算子的混合:
其中拉普拉斯算子在视差候选 d ∈ { 0 , 1 , . . . , D − 1 } d∈\{0, 1, ..., D−1\} d∈{0,1,...,D−1} 上进行离散化和归一化, μ k μ_k μk 、 b k b_k bk 和 w k w_k wk 分别是第 k 个拉普拉斯分布的平均值、尺度和权重参数。 μ k μ_k μk 设置为簇 Ω k Ω_k Ωk 内视差的平均值。定义 Ω 1 Ω_1 Ω1 包含要建模的中心像素, μ 1 μ_1 μ1 被中心像素的ground-truth替代,以确保监督的准确性。权重 w k w_k wk 旨在调整获得的多个模态的相对比例,并且可以基于窗口内的局部结构来分配。将 Ω k Ω_k Ωk 的基数作为局部结构的指标,例如较小的 ∣ Ω k ∣ |Ω_k| ∣Ωk∣ 对应于更薄的结构,其重量相应地应该更小。最后, w k w_k wk 定义为:
其中 α α α 是中心像素的固定权重。作者设置 α ≥ 0.5 α≥0.5 α≥0.5 以确保ground-truth模态的主导地位。其余 ( 1 − α ) (1 − α) (1−α) 权重平均分配给其余 ( m n − 1 ) (mn − 1) (mn−1) 个相邻像素。对于像 KITTI 这样具有稀疏真实值的数据集,仅计算本地窗口内的有效视差,并在式-5中的 m n mn mn 替换为 ∑ k = 1 K ∣ Ω k ∣ \sum^K_{k=1}|Ω_k| ∑k=1K∣Ωk∣ 。对于窗口内只有一个簇的非边缘像素, w 1 w_1 w1 等于1,式-4退化为单峰拉普拉斯分布。
4.3 主模态视差估计器
通过交叉熵损失训练的立体网络通常会产生比L1损失更多的多模态输出,因此需要更好的视差估计器。SME 通过仅在"最有可能"模态内聚合视差来缓解过度平滑问题,但仍然受到由错误模态选择引起的失调伪影的影响。与单模态损失相比,本文的新损失鼓励网络在边缘处产生更多的多模态模式。因此,一个增强的视差估计器成为必须的,以解决本文的方法引入的复杂性。
SME首先以最大概率密度定位视差候选,然后分别向左和向右遍历,直到概率停止下降,从而确定视差估计的主导模态 [ d l , d r ] [d_l , d_r] [dl,dr] 的范围。然而,这种像素级的赢者通吃策略对输出分布中能产生尖锐和狭窄模态的噪声非常敏感。
作者提出了DME来解决这个问题,如图4所示。具体来说,从多模态输出中分离出每个模态,并分别计算它们的累积概率。每个模态对应一个具有特定深度的潜在匹配对象,模态的累积概率反映了该对象的匹配可能性。因此,采用对象级的赢者通吃策略,即选择累积概率最大的模态作为主导模态。然后将所选模态归一化为:
最后,式-1用 p ˉ ( d ) \bar{p}(d) pˉ(d) 代替 p ( d ) p(d) p(d) 来估计视差。
5 效果
PSMNet使用本文方法的消融实验可见表1。
在SceneFlow测试集不同SOTA模型的效果可见表4。
在SceneFlow数据集的可视化效果可见图6。
6 结论
大量的实验结果表明,本文的方法是通用的,可以帮助经典立体声网络重新获得最先进的性能。特别是,使用本文方法的 GANet 在 KITTI 2015 和 2012 基准中均排名第一。同时,只需用本文的损失替换传统的损失,就可以实现出色的综合到现实的泛化性能。
相关文章:
论文阅读笔记:Adaptive Multi-Modal Cross-Entropy Loss for Stereo Matching
论文阅读笔记:Adaptive Multi-Modal Cross-Entropy Loss for Stereo Matching 1 背景2 创新点3 方法4 模块4.1 基础和问题描述4.2 自适应多模态概率模型4.3 主模态视差估计器 5 效果6 结论 1 背景 尽管深度学习在立体匹配方面取得了巨大成功,但恢复准确…...
JavaScript学习教程,从入门到精通,JavaScript 运算符及语法知识点详解(8)
JavaScript 运算符及语法知识点详解 一、JavaScript 运算符 1. 算术运算符 用于执行数学运算: 加法- 减法* 乘法/ 除法% 取模(余数) 递增-- 递减** 幂运算(ES6) let a 10, b 3; console.log(a b); // 13 conso…...
聊聊Spring AI的ETL Pipeline
序 本文主要研究一下Spring AI的ETL Pipeline DocumentReader org/springframework/ai/document/DocumentReader.java public interface DocumentReader extends Supplier<List<Document>> {default List<Document> read() {return get();}}有TextReader…...
spark架构和RDD相关概念
运行架构: Spark采用master - slave结构,Driver作为master负责作业任务调度,Executor作为slave负责实际执行任务。 核心组件 Driver:执行Spark任务的main方法,将用户程序转化为作业,在Executor间调度任务&…...
Cloud Kernel SIG 季度动态:发布ANCK 6.6-003版本,支持一测多证
Cloud Kernel SIG(Special Interest Group):支撑龙蜥内核版本的研发、发布和服务,提供生产可用的高性价比内核产品。 01 SIG 整体进展 发布 ANCK 6.6-003 版本。 一测多证流程建立。 OOT 驱动基线更新。 海光平台适配进展更新…...
【11】数据结构之基于线性表的查找算法
目录标题 平均查找长度ASL(Average Search Length)顺序表查找法折半查找法索引顺序查找法 平均查找长度ASL(Average Search Length) 定义:为确定元素在列表中的位置,需要和给定值进行比较的关键字个数的期望值,称之为查找算法成功时的平均查…...
铼赛智能Edge mini斩获2025法国设计大奖 | 重新定义数字化齿科美学
铼赛智能(RAYSHAPE)革命性新品——椅旁3D打印机Edge mini荣获2025年法国设计奖(FRENCH DESIGN AWARDS,简称FDA)产品设计类大奖。作为全球工业设计领域最具影响力的奖项之一,这一殊荣不仅是对产品极简美学的…...
成为一种国家战略范畴的新基建的智慧园区开源了
智慧园区场景视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界…...
Codeforces Round 1016 (Div. 3)题解
题目地址 https://codeforces.com/contest/2093 锐评 在所有题意都理解正确的情况下,整体难度不算太难。但是偏偏存在F这么恶心的题意,样例都不带解释一下的,根本看不懂题。D题也恶心,在于递归过程的拆分,需要点数学…...
安全理念和安全产品发展史
从安全理念的发展历史来看,技术与产品的演进始终围绕 “威胁对抗” 与 “业务适配” 两大核心展开。以下从七个关键阶段解析安全技术与产品的发展脉络,并结合最新实践与未来趋势提供深度洞察: 一、密码学奠基阶段(1970s 前) 安全理念:以 “信息保密” 为核心,防御手段…...
【深度学习】Downstream Model:预训练模型的下游应用与微调技术
Downstream Model:预训练模型的下游应用与微调技术 文章目录 Downstream Model:预训练模型的下游应用与微调技术1 什么是Downstream Model(下游模型)2 预训练模型与下游任务的关系3 微调技术与迁移学习微调的必要性高效迁移学习参…...
每日算法-250409
这是我今天的算法学习记录。 2187. 完成旅途的最少时间 题目描述 思路 二分查找 解题过程 为什么可以使用二分查找? 问题的关键在于寻找一个最小的时间 t,使得在时间 t 内所有公交车完成的总旅途次数 sum 大于等于 totalTrips。 我们可以观察到时间的单…...
【CSS 选择器组合规则详解】
基础选择器组合 空格:后代选择器 > 直接子元素选择器 . 类选择器 : 伪类选择器 多类选择器 .class1.class2 :多类组合 .class1 .class2 :类的所有后代 .class1 > .class2 :类的子元素特殊选择器 :nth-child() :nth-of-…...
手机静态ip地址怎么获取?方法与解析
而在某些特定情境下,我们可能需要为手机设置一个静态IP地址。本文将详细介绍手机静态IP地址详解及获取方法 一、什么是静态IP地址? 静态IP:由用户手动设置的固定IP地址,不会因网络重启或设备重连而改变。 动态IP:由路…...
NumPy对二维矩阵中的每个元素进行加减乘除和对数运算
使用NumPy对二维矩阵中的每个元素进行加减乘除和对数运算的方法如下: 1. 加减乘除运算 对每个元素进行标量运算,可直接使用算术运算符。 示例代码: import numpy as nparr np.array([[1, 2], [3, 4]])# 加法 result_add arr 5 print(&…...
基于C8051F340单片机的精确定时1S的C程序
一、前言 C8051F340单片的定时器2 是一个 16 位的计数器/定时器,由两个 8 位的 SFR 组成:TMR2L(低字节)和TMR2H(高字节)。定时器 2 可以工作在 16 位自动重装载方式、8 位自动重装载方式(两个 …...
提升Windows安全的一些措施
由简单到复杂,仅供参考 一、杀毒软件: 1、杀毒能力: https://haokan.hao123.com/v?vid3883775443252827335&pdhaokan_share 2、使用注意: 一台主机只安装一个杀毒软件就可以了 杀毒软件会误报,造成正常文件…...
中科岩创基坑自动化监测解决方案
1.行业现状 城市基坑开挖具有施工风险高、施工难度大等特点。由于地下土体性质、荷载条件、施工环境的复杂性,单根据地质勘察资料和室内土工试验参数来确定设计和施工方案,往往含有许多不确定因素,对在施工过程中引发的土体性状、环境、邻近建…...
Elasticsearch 系列专题 - 第二篇:数据建模与索引管理
在掌握了 Elasticsearch 的基本概念和操作后,本篇将重点介绍如何设计和管理索引,以及如何高效地导入和维护数据。这对于构建一个高效、可扩展的搜索系统至关重要。 1. 索引设计 1.1 如何选择合适的索引结构 索引是 Elasticsearch 的核心,设计时需考虑以下因素: 数据用途:…...
解决缓存穿透的布隆过滤器与布谷鸟过滤器:谁更适合你的应用场景?
目录 一、布隆过滤器:高效的空间节省者 1.1 布隆过滤器是什么? 1.2 工作原理 1.3 优点 1.4 缺点 1.5 适用场景 二、布谷鸟过滤器:解决删除难题的创新者 2.1 布谷鸟过滤器是什么? 2.2 工作原理 2.3 优点 2.4 缺点 2.5 适用场景 三、…...
OpenHarmony子系统开发 - 调测工具(一)
OpenHarmony子系统开发 - 调测工具(一) 一、bytrace使用指导 简介 bytrace是开发人员用于追踪进程轨迹、分析性能的一种工具,主要对内核ftrace进行了封装和扩展,来支持用户态的打点。通过该工具可以打开想要查看的用户态和内核l…...
Qt中的鼠标事件
1.鼠标进入事件和鼠标离开事件 1.1添加新文件 1.2ui界面 拖出一个Label控件,修改frameShape为Box,使边框更明显 1.3代码实现 #ifndef MYLABEL_H #define MYLABEL_H#include <QLabel>class myLabel : public QLabel {Q_OBJECT public:explicit m…...
MySQL JOIN详解:INNER JOIN与LEFT JOIN的选择与应用
在数据库查询中,JOIN操作是最常用也最重要的操作之一。不同的JOIN类型会导致完全不同的查询结果,正确选择JOIN类型是编写高效、准确SQL查询的关键。本文将深入探讨INNER JOIN和LEFT JOIN的区别、应用场景以及常见问题。 一、JOIN基础概念 1. 什么是JOI…...
Flink 反压下的 TCP 流控制
1. 什么是 Flink 反压和 TCP 流控制? 反压(Backpressure)是什么? 反压是分布式流处理系统中一种自我调节机制。当下游处理数据的速度跟不上上游发送数据的速度时,反压会让上游放慢发送速度,以避免系统过载…...
山东大学软件学院项目实训开发日志(7)之测试前后端本地部署
基于队长搭建的springbootvue框架,在本地进行测试搭建。 在运行后端过程中,出现下图错误: 查找后发现这个问题出现在 Maven 项目的 pom.xml 文件中,显示找不到一些依赖项。所以在此进行最简单的重新加载项目得以解决,…...
YOLOv11训练中精准率召回率与mAP@0.5的动态变化分析
目标检测模型的训练过程涉及多个关键性能指标和损失函数的变化,这些数据能够直观反映模型的收敛速度、最终精度以及改进效果。本文旨在通过绘制YOLOv11模型在训练过程中的精准率(Precision)、召回率(Recall)、mAP0.5 、…...
Windows下ElasticSearch8.x的安装步骤
下载ElasticSearch:https://www.elastic.co/downloads/elasticsearch (我下载的是目前最新版8.17.4)解压ElasticSearch 进入到ElasticSearch的bin目录下双击elasticsearch.bat 弹出控制台并开始执行,在这一步会输出初始账号和密码…...
Leetcode hot100 (day 8,9)
爬楼梯 做法一:小斐波那契数列,只要注意记忆化递归即可 class Solution { public:int dp[50];int climbStairs(int n) {if(dp[n])return dp[n];if(n2){return dp[2]2;}if(n1){return dp[1]1;}//if(dp[n])return dp[n];return dp[n]climbStairs(n-1)clim…...
LinuxSocket套接字编程
1.介绍函数使用 1.创建套接字 int socket(int domain, int type, int protocol); domain:指定协议族,如AF_INET(IPv4)或AF_INET6(IPv6)。 type:指定套接字类型,如SOCK_DGRAM&#…...
青少年编程考试 CCF GESP Python五级认证真题 2025年3月
Python 五级 2025 年 03 月 题号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 答案 A A A B D B A D A D C A A D B 1 单选题(每题 2 分,共 30 分) 第 1 题 链表不具备的特点是( )。 A. 可随机访问任何一个元素 B. 插入、删除操作不需要移动元素 C…...
Java-对比两组对象找出发生变化的字段工具-支持枚举映射-支持时间-支持显示对应字段中文描述-嵌套list等场景
实体字段比较器(对比两组对象找出发生变化的字段工具类开发) 支持枚举映射 支持时间 支持显示对应字段中文描述 支持嵌套list等场景 下载地址: Java-对比两组对象找出发生变化的字段工具-支持枚举映射-支持时间-支持显示对应字段中文描述-嵌…...
电影舆情分析可视化平台管理端实现
电影舆情分析可视化平台管理端实现 系统概述 本系统的用户主要有三类,游客、普通用户以及电影从业人员。 面向游客和普通用户的是电影网站,系统提供一个便捷的平台,供普通用户搜索和了解电影的基本信息,支持电影预告片播放&…...
【Linux】进程信号(下)
在上一篇中,我们详细探讨了信号的预备知识和产生方式(如硬件异常、终端输入、kill命令、系统调用等)及其背后的操作系统行为。信号作为进程间异步通信的核心机制,其生命周期远不止“产生”这一环节——信号的保存与处理才是实现可…...
华为数字芯片机考2025合集2已校正
单选 1. 题目内容 关于亚稳态的描述错误的是( )。 1. 解题步骤 1.1 理解亚稳态(Metastability)的核心特性 亚稳态是指触发器无法在指定时间内稳定输出有效逻辑电平(0或1)的状态,其关键特点…...
【大模型微调】如何解决llamaFactory微调效果与vllm部署效果不一致如何解决
以下个人没整理太全 一、生成式语言模型的对话模板介绍 使用Qwen/Qwen1.5-0.5B-Chat训练 对话模板不一样。回答的内容就会不一样。 我们可以看到例如qwen模型的tokenizer_config.json文件,就可以看到对话模板,一般同系列的模型,模板基本都…...
基于视觉语言模型的机器人实时探索系统!ClipRover:移动机器人零样本视觉语言探索和目标发现
作者:Yuxuan Zhang 1 ^{1} 1, Adnan Abdullah 2 ^{2} 2, Sanjeev J. Koppal 3 ^{3} 3, and Md Jahidul Islam 4 ^{4} 4单位: 2 , 4 ^{2,4} 2,4佛罗里达大学电气与计算机工程系RoboPI实验室, 1 , 3 ^{1,3} 1,3佛罗里达大学电气与计算机工程系F…...
Java常用工具算法-6--秘钥托管云服务AWS KMS
前言: 之前我们介绍了一些常用的加密算法(如:对称加密AES,非对称加密RSA,ECC等),不论是哪一种都需要涉及到秘钥的管理。通常的做法都是把秘钥放到配置文件中进行配置,但是对于一些高…...
Shell脚本的学习
编写脚本文件 定义以开头:#!/bin/bash #!用来声明脚本由什么shell解释,否则使用默认shel 第一步:编写脚本文件 #!/bin/bash #注释 echo "这是输出" 第二步:加上执行权限:chmod x 脚本文件名.sh 第三步&…...
Java——pdf增加水印
文章目录 前言方式一 itextpdf项目依赖引入编写PDF添加水印工具类测试效果展示 方式二 pdfbox依赖引入编写实现类效果展示 扩展1、将inputstream流信息添加水印并导出zip2、部署出现找不到指定字体文件 资料参考 前言 近期为了知识库文件导出,文件数据安全处理&…...
Redis过期key处理、内存淘汰策略与缓存一致性策略实践方案
在现代的高性能应用开发中,Redis作为一款极为热门的内存数据库,其快速的读写性能和丰富的数据结构使其在缓存、消息队列等诸多领域得到了广泛应用。然而,在实际使用过程中,处理好Redis过期key、选择合适的内存淘汰策略以及确保缓存…...
深入 C++ 线程库:从创建到同步的探索之旅
C在<thread>中定义了C线程库. 创建多线程 #include <iostream> #include <thread> using namespace std; void show(int id, int count) { //线程函数for (int i 0; i < count; i) {cout << "id:" << id << ",值:&qu…...
LangChain使用大语言模型构建强大的应用程序
LangChain简介 LangChain是一个强大的框架,旨在帮助开发人员使用语言模型构建端到端的应用程序。它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互ÿ…...
程序化广告行业(72/89):Tag Manager系统代码操作与行业发展剖析
程序化广告行业(72/89):Tag Manager系统代码操作与行业发展剖析 大家好!在技术领域不断探索的过程中,我深刻体会到知识共享的重要性。写这篇博客,就是希望能和大家一起深入了解程序化广告行业,…...
数据结构实验3.3:求解迷宫路径问题
文章目录 一,问题描述二,基本要求三,算法分析(一)整体思路(二)详细步骤1. 输入迷宫大小并生成迷宫2. 定义走步规则3. 深度优先搜索(DFS)4. 输出结果 (三&…...
基于SpringBoot的线上历史馆藏系统【附源码】
基于SpringBoot的线上历史馆藏系统(源码L文说明文档) 4 系统设计 系统在设计的过程中,必然要遵循一定的原则才可以,胡乱设计是不可取的。首先用户在使用过程中,能够直观感受到功能操作的便利性,符合…...
Mybatis的springboot项目使用
删除数据 & 占位符 一般常用占位符进行数据库操作,也就是预编译sql。 在UserMapper中定义删除接口 /** 根据id删除用户*/ Delete("delete from user where id #{id}") void deleteById(Integer id);若想要获取返回值,声明为Integer (s…...
网站集群批量管理-Ansible剧本与变量
复盘内容:链接指北 查看ansible命令文档 ansible-doc -s systemd一、剧本 何为剧本: playbook 文件,用于长久保存并且实现批量管理,维护,部署的文件. 类似于脚本存放命令和变量 剧本yaml格式,yaml格式的文件:空格,冒号. 剧本未来我们批量管理,运维必会的内容. …...
HOW - React Developer Tools 调试器
目录 React Developer Tools使用Components 功能特性1. 查看和编辑 props/state/hooks2. 查找组件3. 检查组件树4. 打印组件信息5. 检查子组件 Profiler 功能特性Commit ChartFlame Chart 火焰图Ranked Chart 排名图 why-did-you-render 参考文档: React调试利器&a…...
Spring Cloud Alibaba微服务治理实战:Nacos+Sentinel深度解析
一、引言 在微服务架构中,服务发现、配置管理、流量控制是保障系统稳定性的核心问题。Spring Cloud Netflix 生态曾主导微服务解决方案,但其部分组件(如 Eureka、Hystrix)已进入维护模式。 Spring Cloud Alibaba 凭借 高性能、轻…...
《AI换脸时代的攻防暗战:从技术滥用走向可信未来》
技术迭代图谱 过去五年里,Deepfake技术经历了飞速迭代,从最初的萌芽到如今的广泛应用和对抗措施形成。2017年前后,利用深度学习进行人脸换装的技术首次在社区中出现。一位Reddit网友昵称“deepfakes”,将名人面孔替换到色情影片上…...