论文阅读:Uni-ISP Unifying the Learning of ISPs from Multiple Cameras
这是 ECCV 2024 的一篇文章,文章作者想建立一个统一的 ISP 模型,以实现在不同手机之间的自由切换。文章作者是香港中文大学的 xue tianfan 和 Gu jinwei 老师。
Abstract
现代端到端图像信号处理器(ISPs)能够学习从 RAW/XYZ 数据到 sRGB(或其逆过程)的复杂映射,为图像处理带来了新的可能性。然而,随着相机型号的多样性不断增加,长期开发和维护单个 ISP 是难以持续的,因为其本身缺乏通用性,阻碍了对多种相机型号的适应性。这篇文章提出了一种新颖的流程 —— 统一图像信号处理器(Uni - ISP),它统一了对多个相机的 ISP 学习,为多种相机型号提供了准确且通用的处理器。Uni - ISP 的核心是通过学习正向 / 逆向 ISP 及其特殊的训练方案来利用设备感知嵌入。通过这种方式,Uni - ISP 不仅提高了正向 / 逆向 ISP 的性能,还开启了现有学习型 ISP 无法实现的多种新应用。此外,由于没有由多个相机同步拍摄用于训练的数据集,文章还构建了一个真实世界的 4K 数据集 ——FiveCam,它包含由五部智能手机同步拍摄的 2400 多对 sRGB - RAW 图像。文章进行了大量实验,证明了 Uni - ISP 在正向 / 逆向 ISP 中的准确性(峰值信噪比分别提高了 + 1.5dB/2.4dB)、其在实现新应用方面的通用性以及对新相机型号的适应性。
Introduction
图像信号处理器(ISP)将相机传感器捕获的原始图像数据转换为诸如 sRGB 等可查看的格式,在决定照片的视觉质量方面起着关键作用。通过精心设计它们的 ISP,各个相机品牌塑造出了符合不同用户偏好的独特摄影风格。例如,苹果(Apple)智能手机相机以其清晰且独具特色的 “苹果感” 而广受赞誉,而徕卡(Leica)相机则因其光晕效果和浓郁的色调备受推崇,形成了标志性的徕卡风格。
近期,神经网络已被用于逼近整个图像信号处理器(ISP)或特定模块,即学习型 ISP,这带来了两大主要益处。
- 1)性能提升。神经网络强大的表征能力使学习型 ISP 能够执行具有挑战性的任务,例如对高光和阴影区域中的细节内容进行脑补。
- 2)新功能。学习型 ISP 引入了新功能,例如逆向 ISP,它能将 sRGB 图像转换回 RAW/XYZ 空间,为原始域增强和进一步处理(如去模糊、去噪、高动态范围(HDR)摄影等)提供了更大的灵活性和潜力。这些创新拓展了学习型 ISP 的应用范围和潜力。
然而,目前的方法仍然是针对单个相机型号设计和训练 ISP,这可能会限制不同 ISP 之间的协同效益。此外,通用模型在低层级视觉、高层级视觉和多模态等多个领域都展现出了优势。随着相机型号数量的增加,单个学习型 ISP 可能也缺乏广泛应用所需的通用性和适应性,从长远来看可能难以为继。
在本文中,我们旨在对来自不同相机的图像信号处理器(ISP)进行统一学习,这有两个直接的优势。
- 1)通过利用来自多个相机的 ISP 之间的协同效应来提升视觉质量。统一学习使 ISP 能够理解不同数据中的潜在共性和差异,从而使视觉表现得到整体提升。
- 2)统一学习提供了新颖的应用,超越了现有学习型 ISP 仅限于正向和逆向 ISP 的能力。这种统一学习实现了诸如跨不同相机型号的影像风格之间的转换、插值和外推等新用途。此外,它还支持基于 ISP 行为自洽性的零样本图像取证,包括图像级别的源相机识别和像素级别的图像拼接检测。
不过为多台相机学习一个具有设备感知能力的图像信号处理器(ISP)模型绝非易事,面临着诸多挑战。首先,我们发现,在现有模型中简单地混合来自多台相机的训练数据并不能带来令人满意的性能。因此,我们提出了 Uni - ISP,这是一种用于多台相机的新型统一 ISP 模型,它包含若干可优化的设备感知嵌入,用于学习不同相机的 ISP。这些设备感知嵌入使模型能够捕捉针对单个设备量身定制的特定特性,而共享的主干网络则能捕捉潜在的共性。
其次,目前的 ISP 数据集并不包含由多台相机拍摄的同步 sRGB - Raw 图像对。尽管这类数据对于学习单个 ISP 并非必需,但对于学习支持不同相机型号协同增效并能开发新应用的统一 ISP 至关重要。为解决这一问题,我们用五部智能手机搭建了一个同步相机阵列,并构建了一个新的数据集 ——FiveCam,该数据集包含 2464 对同步的、空间分辨率为 4K 的高质量 sRGB - Raw 配对图像。所采集的数据集涵盖了从风景到特写等广泛的场景,并且包含不同的光照条件,包括白天和夜晚的室内外环境。
第三,鉴于不同相机拍摄的同步照片对中不可避免地存在错位,需要一种稳健的对齐和训练方案。为了应对这一挑战,我们首先使用基于光流的方法对图像进行粗略对齐,这会在变形图像中引入频率偏差。然后,我们设计了一种频率偏差校正(FBC)损失来减轻纹理模糊。此外,我们引入了自相机 / 跨相机训练方案,以促进在相同 / 不同相机型号上的应用。
通过这三项设计,统一图像信号处理器(Uni - ISP)可应用于广泛的图像任务,例如跨不同相机型号的摄影外观转换、插值和外推。用户可以将一种相机型号的视觉特性应用到另一种相机上,实现独特的美学效果。还可以利用这些 ISP 行为的自洽性来促进零样本图像取证任务,包括源相机识别和图像拼接检测。大量实验表明,Uni - ISP 优于现有技术,在逆向 ISP 中峰值信噪比(PSNR)约高 1.5dB,在正向 ISP 中约高 2.4dB。
- 图1 :我们提出了 Uni-ISP 模型,该模型可同时统一多个相机的逆 ISP(图像信号处理)行为和正 ISP 行为的学习。
通过利用不同相机 ISP 之间的共享特性,与之前仅针对单个相机分别学习的 ISP 方法相比,我们的方法在逆 ISP 和正 ISP(A)方面能够实现更高的性能。同时,Uni-ISP 的设备感知特性使得一个已学习的 ISP 模型能够应用于新的跨相机 ISP 场景,包括摄影外观迁移(B 和 C)、内插 / 外推(D)以及零样本图像取证(E 和 F)。
Method
Overview
首先介绍正向和逆向 ISP 任务中的 XYZ 图像格式。XYZ 图像是与设备无关的辐射度量,学习 XYZ 图像与学习原始图像有相同的好处。因此我们选择将相机拍摄的原始图像处理得到的 XYZ 图像作为原始模态。具体而言,XYZ 图像是通过对真实原始图像 RAW 应用 ISP 的固定流程得到的,这个阶段使用拍摄时的白平衡、固定的线性去马赛克算法以及当前设备的 camera-to-XYZ 矩阵,且不应用伽马色调映射。在这种设置下,XYZ 图像与原始图像呈线性相关,它们可以相互转换且无损失。
图 2 展示了统一图像信号处理器(Uni - ISP)的整体流程,它包含逆向 ISP 模块 g g g 和正向 ISP 模块 h h h。我们的模型旨在学习 ISP 任务时能够识别各种摄像设备。假设我们这里讨论的图像尺寸均为 H × W H \times W H×W,通道数为 C C C。给定由相机 a 生成的 sRGB 图像 I a ∈ R H × W × C I_{a} \in \mathbb{R}^{H \times W \times C} Ia∈RH×W×C, ε a ∈ R D \varepsilon_{a} \in \mathbb{R}^{D} εa∈RD 表示针对相机 a 的尺寸为 D 的设备感知嵌入,逆向 ISP 模块 g g g 通过学习在给定输入 I a I_{a} Ia 的情况下输出相机 a 对应的 XYZ 图像 L ^ a \hat{L}_{a} L^a。
L ^ a = g ( I a , ε a ) (1) \hat{L}_{a} = g(I_{a}, \varepsilon_{a}) \tag{1} L^a=g(Ia,εa)(1)
前向 ISP 模块 h h h 学习从给定的实际 XYZ 图像 L a L_{a} La 中预测 I ^ a \hat{I}_{a} I^a
I ^ a = g ( L a , ε a ) (2) \hat{I}_{a} = g(L_{a}, \varepsilon_{a}) \tag{2} I^a=g(La,εa)(2)
模块 g ( ⋅ ) g(\cdot) g(⋅) 和 h ( ⋅ ) h(\cdot) h(⋅) 学习图像信号处理器(ISP)在不同设备间的通用属性,而设备感知嵌入 ε a \varepsilon_{a} εa 则侧重于相机 a 特定的自有属性。上述公式使我们能够通过将 g , h g, h g,h 与设备感知嵌入 $ {\varepsilon_{a}, \varepsilon_{b}, \varepsilon_{c}, …, \varepsilon_{z} }$ 一起训练,来同时学习多台相机 { a , b , c , … , z } \{a, b, c, …, z\} {a,b,c,…,z} 的 ISP 行为。
Model Design
- 图 2 Uni-ISP 的模型设计。Uni-ISP 包含两个模块,即逆 ISP 模块 g 和正 ISP 模块 h。这两个模块具有相同的结构。为了视觉上的简洁,我们将逆 ISP 模块 g 绘制成缩略图,其内部结构与正 ISP 模块 h 相同。设备感知嵌入是可优化的参数,在训练或推理过程中,它们将通过 DEIM(动态嵌入交互机制)被选择与瓶颈特征进行交互。
如图 2 所示,统一图像信号处理器(Uni - ISP)使用了逆向 ISP 模块 g g g 和正向 ISP 模块 h h h,每个模块都具有编码器-解码器架构。两个模块都包含局部特征提取块(LFEBs)用于细致的局部处理,以及全局特征操作块(GFMBs)用于大范围的图像调整,这反映了真实相机 ISP 的双重处理机制,即同时处理诸如曝光补偿和色彩校正等全局操作,以及色调映射和高光恢复等局部任务。
Local Feature Extraction Blocks 统一图像信号处理器(Uni - ISP)中的每个编码器和解码器阶段都包含四个局部特征提取块(LFEBs)。编码器阶段的 LFEBs 包含最大池化层,解码器阶段的 LFEBs 包含上采样层。每个 LFEB 包含多个卷积层、激活层、半实例归一化层以及空间 / 通道注意力层。残差连接将编码器和解码器阶段的 LFEBs 连接起来。
Global Feature Manipulation Blocks 全局 ISP 操作受到曝光时间和 ISO 等参数的显著影响,这些参数会改变照片的整体外观。我们设计的全局特征操作块(GFMBs)旨在结合这些参数来修改来自编码器局部特征提取块(LFEBs)的残差特征。然后,这些经过操作的特征会被传递到解码器阶段相应的 LFEBs。使用过的相机参数(曝光、ISO 和光圈值)是从相机生成的 JPEG 图像的 EXIF 元数据中提取出来的。
Device-aware Embedding Interaction Module 设备感知嵌入交互模块(DEIM)位于编码器和解码器阶段之间,通过与设备感知嵌入进行交互,增强了模型适应不同摄像设备的能力。给定一个设备感知嵌入 ε a \varepsilon_{a} εa,DEIM 对来自编码器阶段的瓶颈特征 B 应用基于注意力的变换,并输出 F a F_a Fa。这种设置使模型能够自适应地同时学习多台相机的 ISP 行为。
Training Scheme
文章为统一图像信号处理器(Uni - ISP)精心设计了一种特殊的训练方案,该方案包含两种训练目标,即自相机图像信号处理器(ISP)目标和跨相机 ISP 目标。
Self-Camera Training Objective
在自相机训练目标中,我们的统一图像信号处理器(Uni - ISP)同时学习多台相机的逆向和正向图像信号处理器(ISP)行为。
L I n v = ∥ L a − L ^ a ∥ 1 (3) \mathcal{L}_{Inv} = \left \| L_{a} - \hat{L}_{a} \right \|_{1} \tag{3} LInv= La−L^a 1(3)
L F o r = ∥ I a − I ^ a ∥ 1 (4) \mathcal{L}_{For} = \left \| I_{a} - \hat{I}_{a} \right \|_{1} \tag{4} LFor= Ia−I^a 1(4)
Cross-Camera Training Objective
跨相机训练目标中的目标照片是由与拍摄输入照片不同的相机拍摄的。具体而言,这种训练目标应用于正向图像信号处理器(ISP)模块 h h h 以处理相机模型转换。假设 I a I_a Ia 是由相机 a 拍摄的, I b I_b Ib 是由相机 b 拍摄的,统一图像信号处理器(Uni - ISP)的逆向 ISP 模块 g g g 将 I a I_a Ia 作为输入并预测 XYZ 图像 L ^ a \hat{L}_a L^a,这与公式 (1) 中描述的过程相同。然后,正向 ISP 模块 h 将预测的 L ^ a \hat{L}_a L^a 转换为相机 b 的 sRGB 图像 I ^ b \hat{I}_b I^b:
I ^ b = h ( ε b , L ^ a ) (5) \hat{I}_{b} = h(\varepsilon_{b}, \hat{L}_a) \tag{5} I^b=h(εb,L^a)(5)
其中, ε b \varepsilon_{b} εb 表示相机 b 的设备感知嵌入。
上面的loss 优化有一个问题,因为输入图像 I a I_a Ia 和输出真实值 I b I_{b} Ib 无法对齐,因为它们是用不同的相机拍摄的。这使得像 L1 loss 这样的像素级损失无法驱动最小化 I ^ b \hat{I}_b I^b 和 I b I_{b} Ib 之间距离的跨相机训练目标。因此,文章首先使用基于光流的方法 RAFT 来对用于跨相机训练目标的数据集进行 warp。所有由相机拍摄 b 的 sRGB 图像 I b I_{b} Ib 都将被变形为 I b w I_{b}^{w} Ibw,使其与由相机 a 拍摄的 sRGB 图像 I a I_{a} Ia 对齐。我们对数据集中每一个可能的 camera-to-camera 的 sRGB 图像对都应用这种 warp 操作。在训练过程中,任何无法对齐的区域都将被标注为遮挡区域并进行掩模处理。
- 图 3 使用光流法包裹的数据集内频率偏差示意图。与原始图像相比,包裹过程中的插值会使图像看起来模糊,消除了其高频成分。
然而,尽管基于光流的变形方法有效地对齐了这些图像,但它也在我们的数据集中引入了频率偏差。如图 3 所示,与变形前的图像相比,变形后的图像往往缺少高频细节。如果我们直接使用对齐后的图像来训练我们的模型,它将意外地在跨相机 ISP 任务中对图像进行平滑处理。为解决这个问题,我们针对跨相机训练目标提出了频率偏差校正(FBC)损失。公式(6)展示了该任务的过程。FBC 损失可写为:
L F B C = ∥ f l o w ( I ^ b ) − f l o w ( I b w ) ∥ + L f r e q ( I ^ b , I b ) (6) \mathcal{L}_{FBC} = \left \| f_{low}(\hat{I}_b) - f_{low}({I}_{b}^{w}) \right \| + \mathcal{L}_{freq}(\hat{I}_{b}, I_{b}) \tag{6} LFBC= flow(I^b)−flow(Ibw) +Lfreq(I^b,Ib)(6)
其中, f l o w f_{low} flow 表示一个低通滤波器,文章用了一个高斯模糊核实现, L f r e q \mathcal{L}_{freq} Lfreq 表示频域的 loss。
Overall Loss
整体的 loss 形式为:
L = L I n v + L F o r + L F B C + λ L N R R (7) \mathcal{L} = \mathcal{L}_{Inv} + \mathcal{L}_{For} + \mathcal{L}_{FBC} + \lambda \mathcal{L}_{NRR} \tag{7} L=LInv+LFor+LFBC+λLNRR(7)
其中 L N R R \mathcal{L}_{NRR} LNRR 是附加的中性渲染正则化项, λ \lambda λ 是它的平衡权重。当中性渲染正则化在设备感知嵌入被给定为零向量时,引导模型学习一个在 XYZ 和 sRGB 色彩空间之间执行标准色彩转换的虚拟相机。
L N R R = ∥ s ( I a ) − g ( I a , 0 ) ∥ 1 + ∥ s − 1 ( L a ) − h ( L a , 0 ) ∥ 1 (8) \mathcal{L}_{NRR} = \left \| s(I_a) - g(I_a, \mathbf{0}) \right \|_1 + \left \| s^{-1}(L_a) - h(L_a, \mathbf{0}) \right \|_1 \tag{8} LNRR=∥s(Ia)−g(Ia,0)∥1+ s−1(La)−h(La,0) 1(8)
s ( ⋅ ) , s − 1 ( ⋅ ) s(\cdot), s^{-1}(\cdot) s(⋅),s−1(⋅) 分别表示 sRGB-XYZ 和 XYZ-sRGB 之间的色彩空间转换。如果用户想要增强或减弱某台相机的摄影风格,而不与另一台相机的设备感知嵌入进行内插或外推操作,中性渲染正则化会为用户提供一个锚点。
Novel Dataset
尽管现有的 sRGB - RAW 数据集允许对逆向和正向 ISP 任务进行模型训练,但仍然需要包含由多个设备同步拍摄的 sRGB - RAW 对的数据集。这类数据集对于训练能够有效处理跨相机 ISP 任务的模型至关重要,而跨相机 ISP 任务对于诸如摄影外观转换和内插 / 外推等应用来说是至关重要的。
为应对这一挑战,我们收集了一个名为 FiveCam 的新数据集,其特点是包含来自五种不同相机型号同步拍摄的 sRGB - RAW 对。该数据集包含 2464 张高分辨率(4K)的原始图像和 JPEG 图像,代表了大约 500 个不同的场景。FiveCam 数据集中使用的相机包括苹果 iPhone 14 Pro Max、谷歌 Pixel 6 Pro、华为 P40、三星 Galaxy S20 和小米 Mi 12。所有相机都通过编程的蓝牙快门进行同步,以确保所有设备的拍摄时间一致。
图 4 展示了与其所使用的拍摄设备一同呈现的三个场景。我们的 FiveCam 数据集场景丰富多样,在多种光照条件下(从白昼到夜间环境,包括室外和室内光照)拍摄了自然景观和城市环境。
此外,我们还创建了这个数据集的 sRGB - XYZ 版本,其中所有相机的原始图像都使用拍摄时的白平衡、线性去马赛克算法进行处理,并转换为标准的相机 - 到 - XYZ 色彩空间。这个版本中的 XYZ 图像保持了线性,这使得它们对于需要保持原始图像线性的下游任务特别有益。
- 图 4 我们新数据集中 3 个场景的预览(左图)以及我们的拍摄设备(右图)。每个场景都包含来自五款智能手机相机的同步 sRGB(标准红绿蓝)-Raw(原始)图像对:苹果 iPhone 14 Pro Max、谷歌 Pixel 6 Pro、华为 P40、三星 Galaxy S20 以及小米 Mi 12。这里将原始图像可视化为 XYZ 图像,并且可以无损地转换回原始格式。
相关文章:

论文阅读:Uni-ISP Unifying the Learning of ISPs from Multiple Cameras
这是 ECCV 2024 的一篇文章,文章作者想建立一个统一的 ISP 模型,以实现在不同手机之间的自由切换。文章作者是香港中文大学的 xue tianfan 和 Gu jinwei 老师。 Abstract 现代端到端图像信号处理器(ISPs)能够学习从 RAW/XYZ 数据…...

AntD表单自定义组件
前言 表单可以说是前端最常见的一种组件,特别是在进行搜索的时候使用的最频繁,自定义表单组件,丰富了搜索框的类型,使数据展现的更灵活 内容讲解 1、官方介绍 AntD-Formhttps://ant.design/components/form-cn#form-demo-cust…...

19-简单理解JavaScript中的Promise:手写Promise实现
笔记分享 在现代JavaScript开发中,异步编程是不可避免的一部分。为了更好地处理异步操作,ES6引入了Promise。Promise使得异步代码更具可读性和可维护性。通过手写一个完整的Promise实现,可以帮助你更深入地理解其工作原理。本文将详细介绍Pr…...

elementUI input 禁止内容两端存在空格,或者是自动去除两端空格
需求 项目中有需求:输入框中禁止内容两端存在空格,或者是自动去除两端空格。 解决方法 vue的api文档中有过介绍,使用.trim可以去掉用户输入内容中两端的空格,如下图 代码 <el-input v-model.trim"name" cleara…...

Go语言24小时极速学习教程(一)基础语法
Go语言(也称为Golang)是一种由Google开发的编程语言,以其简洁、高效和并发支持而闻名。从本文开始,将带你快速完成Go语言的学习,如果你之前有过Java或者C语言的基础,学习它将很容易,本教程忽略环…...

LLMs之Code:Qwen2.5-Coder的简介、安装和使用方法、案例应用之详细攻略
LLMs之Code:Qwen2.5-Coder的简介、安装和使用方法、案例应用之详细攻略 导读:这篇论文介绍了Qwen2.5-Coder系列模型,这是一个针对代码生成的强大开源大型语言模型。 >> 背景痛点:现有代码大型语言模型的不足:虽然…...

pytest结合allure做接口自动化
这是一个采用pytest框架,结合allure完成接口自动化测试的项目,最后采用allure生成直观美观的测试报告,由于添加了allure的特性,使得测试报告覆盖的内容更全面和阅读起来更方便。 1. 使用pytest构建测试框架,首先配置好…...

TypeScript简介:TypeScript是JavaScript的一个超集
官方描述:TypeScript 是 JavaScript 的一个超集 GitHub官网:https://github.com/Microsoft/TypeScript TypeScript is a superset of JavaScript that compiles to clean JavaScript output. TypeScript 是 JavaScript 的一个超集,支持 EC…...

【循环测试试题2】小X与三次方
题目描述 卡卡西要过 10 岁生日啦!今年,她特别想要一份与众不同的礼物,那就是一条能在阳光下发出五光十色耀眼光芒的水晶项链。她把这个想法告诉了妈妈。妈妈对卡卡西神秘的一笑,透露道:“邻居芭比阿姨家有个后花园。…...

【Python · PyTorch】卷积神经网络(基础概念)
【Python PyTorch】卷积神经网络 CNN(基础概念) 0. 生物学相似性1. 概念1.1 定义1.2 优势1.2.1 权重共享1.2.2 局部连接1.2.3 层次结构 1.3 结构1.4 数据预处理1.4.1 标签编码① One-Hot编码 / 独热编码② Word Embedding / 词嵌入 1.4.2 归一化① Min-…...

深入描述dts和dtsi的区别
QA:dts和dtsi的区别 在嵌入式 Linux 系统中,DTS(Device Tree Source)和 DTSI(Device Tree Source Include)是描述硬件设备树的文件格式。它们本质上是同一种语法的文件,但在使用上有一定区别。…...

京准时钟:一种北斗卫星校时器的结构设计
京准时钟:一种北斗卫星校时器的结构设计 京准时钟:一种北斗卫星校时器的结构设计 1、有关时间的一些基本概念: 时间与频率之间互为倒数关系,两者密不可分,时间标准的基础是频率标准,由晶体振荡器决定时间…...

【WiFi】ubuntu20.4 WiFi6 无线抓包环境搭建及使用
环境说明 笔记本电脑,无线网卡AX200,安装ubuntu20.04 安装无线网卡工具aircrack-ng sudo apt-get install aircrack-ng 安装wireshark sudo add-apt-repository ppa:wireshark-dev/stable sudo apt update sudo apt -y install wireshark sudo apt -…...

《Java核心技术 卷I》用户界面AWT事件继承层次
AWT事件继承层次 EventObject类有一个子类AWTEvent,它是所有AWT事件类的父类。 Swing组件会生成更多其他事件对象,都直接拓展自EventObject而不是AWTEvent。 AWT将事件分为底层(low-level)事件和语义事件。 语义事件:表示用户的动作事件&…...

蓝牙 HFP 协议详解及 Android 实现
文章目录 前言一、什么是蓝牙 HFP 协议?HFP 的核心功能HFP 的核心功能HFP 在 Android 中的典型应用场景 二、HFP 协议的工作流程HFP 的连接流程 三、HFP 在 Android 的实现1. 检查蓝牙适配器状态2. 发现并检测支持 HFP 的设备3. 获取 BluetoothHeadset 服务4. 连接设…...

sqli-labs靶场17-20关(每日四关)持续更新!!!
Less-17 打开靶场,发现页面比之前多了一行字 翻译过来就是,密码重置,大家肯定会想到,自己平时在日常生活中怎么密码重置,肯定是输入自己的用户名,输入旧密码,输入新密码就可以了,但…...

动态规划-完全背包问题——518.零钱兑换II
1.题目解析 建议先看 322.零钱兑换可以 更加轻松的理解本题 题目来源 518.零钱兑换——力扣 测试用例 2.算法原理 1.状态表示 本题要求返回所有情况,所以dp值就代表所有的方法数,即 dp[i][j]:在[1,i]个硬币中选择不同面值的硬币,…...

[模板总结] - 单向链表LinkedList操作
题目汇总 Leetcode 21, 82, 160, 206, 237, 268 Leetcode 21. 合并两个有序链表 归并排序的思路,创建一个哨兵节点从两个链表中按大小插入即可。 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(…...

fastadmin多个表crud连表操作步骤
1、crud命令 php think crud -t xq_user_credential -u 1 -c credential -i voucher_type,nickname,user_id,voucher_url,status,time --forcetrue2、修改控制器controller文件 <?phpnamespace app\admin\controller;use app\common\controller\Backend;/*** 凭证信息…...

山西省网络建设与运维第十八届职业院校技能大赛(样题)
集团计划把部分业务由原有的 X86 架构服务器 上迁移到 ARM 架构服务器上,同时根据目前的部分业务需求进行了部分 调整和优化。 一、 X86 架构计算机安装与管理 1、PC1系统为 ubuntu-desktop-amd64 系统,登录用户为 xiao,密码为 Key-1122。在对…...

服务端高并发分布式结构进阶之路
序言 在技术求知的旅途中,鉴于多数读者缺乏在中大型系统实践中的亲身体验,难以从宏观角度把握某些概念,因此,本文特选取“电子商务应用”作为实例,详细阐述从百级至千万级并发场景下服务端架构的逐步演变历程。同时&am…...

分布式微服务项目,同一个controller不同方法间的转发导致cookie丢失,报错null pointer异常
源码: /***添加商品进入购物车*/ GetMapping("/addToCart") public String addToCart(RequestParam("num") Integer num, RequestParam("skuId") Long skuId, RedirectAttributes redirectAttributes) {System.out.println("nu…...

STM32 ADC --- 任意单通道采样
STM32 ADC — 单通道采样 文章目录 STM32 ADC --- 单通道采样cubeMX配置代码修改:应用 使用cubeMX生成HAL工程 需求:有多个通道需要进行ADC采样,实现每次采样只采样一个通道,且可以随时采样不同通道的功能。 cubeMX配置 这里我们…...

vscode中执行git合并操作需要输入合并commit信息,打开的nano小型文本编辑器说明-
1.前提: VScode中的git组件执行任何合并动作的时候需要提交远程合并的commit信息,然后编辑器自动打开的是nano文本编辑器 2.nano编辑器说明: 1.保存文件:按 Ctrl O,然后按 Enter 来保存文件。 2.退出编辑器…...

蓝桥杯每日真题 - 第7天
题目:(爬山) 题目描述(X届 C&C B组X题) 解题思路: 前缀和构造:为了高效地计算子数组的和,我们可以先构造前缀和数组 a,其中 a[i] 表示从第 1 个元素到第 i 个元素的…...

【Git】Git Clone 指定自定义文件夹名称:详尽指南
目录 引言一、git clone 基本语法二、默认行为:没有指定文件夹名称时三、如何指定自定义文件夹名称四、高级使用技巧:动态文件夹名称4.1 基于日期命名文件夹4.2 基于版本标签(Tag)动态命名文件夹4.1 基于日期命名文件夹4.2 基于版…...

终端快捷键学习笔记
以下是优化润色后的内容: 终端快捷键学习笔记 前言 终端(Terminal)是开发者、系统管理员以及技术人员常用的重要工具,它为我们提供了直接与操作系统交互的方式。不同操作系统中的终端使用体验存在差异,尤其在 Linux、…...

Go语言24小时极速学习教程(四)MySQL数据库的增删改查
通过前几篇想必你已经知道该如何使用Go语言写一些简单的程序了,那么从这一篇开始,我们开始探究如何用go语言能够写真正的企业级应用。第一步我们实现先能让程序对数据库进行增删改查,这里以MySQL为例。 1. 导入必要的包 首先需要导入databa…...

04 - Clickhouse-21.7.3.14-2单机版安装
目录 一、准备工作 1、确定防火墙处于关闭状态 2、CentOS 取消打开文件数限制 3、安装依赖 4、CentOS取消SELINUX 二、单机安装 2.1、下载安装 2.2、安装这4个rpm包 2.3、修改配置文件 2.4、启动服务 2.5、关闭开机自启 2.6、使用Client连接server 一、准备工作 1…...

多项式回归
以多元线性回归和特征工程的思想来想出一种称为多项式回归的新算法,它可以让您拟合曲线,非线性函数,您的数据。假设你有一个住房看起来像这样的数据集,其中特征x是以平方英尺为单位的大小。它看起来不像一条直线非常适合这个数据集…...