《边界感知的分而治之方法:基于扩散模型的无监督阴影去除解决方案》学习笔记

news2025/1/27 9:13:40

paper:Boundary-Aware Divide and Conquer: A Diffusion-Based Solution for Unsupervised Shadow Removal

目录

摘要 

 1、介绍

2、相关工作

2.1 阴影去除

2.2 去噪扩散概率模型(Denoising Diffusion Probabilistic Models, DDPM)

3、方法

3.1 动机

3.2 边界感知条件扩散方法

3.2.1 上下文条件生成 (Context Conditioned Generation)

3.2.2 光照一致性约束 (Illumination-Consistency Constraint)

3.2.3 迭代反射率保持 (Iterative Reflectance Maintenance)

3.3 影子不变的内在分解(SIID)

3.4 损失函数

4. 实验

4.1 数据集与评估指标

4.2 实验设置

4.3 对比实验

4.4 消融实验

扩散模型的效果

迭代反射率维护的效果

模拟图像集合的效果

光照一致性约束的效果


 

摘要 

近年来,深度学习方法在阴影去除任务中取得了卓越的成果。然而,大多数这些有监督方法依赖于在大量阴影与无阴影的成对图像上进行训练,这需要繁重的标注工作,并可能导致模型泛化性能较差。实际上,阴影只会对图像形成部分退化,而非阴影区域提供了丰富的结构信息,潜在地适合用于无监督学习。在本文中,我们提出了一种基于扩散模型的无监督阴影去除新方法,该方法分别对阴影区域、非阴影区域及其边界区域进行建模。我们使用一个预训练的无条件扩散模型,并融合非受损区域的信息以生成自然的无阴影图像。尽管扩散模型可以通过利用相邻的未受损上下文信息恢复边界区域的清晰结构,但由于缺乏未受损上下文,它无法处理阴影内部区域。为此,我们进一步提出了一个阴影不变的内在分解模块,以利用阴影区域中的潜在反射率,从而在扩散采样过程中保持结构一致性。在多个公开阴影去除数据集上的广泛实验表明,所提方法相比现有无监督方法取得了显著改进,甚至在某些情况下可与现有的有监督方法媲美。

 1、介绍

问题背景与挑战

阴影是由于光被部分遮挡而形成的一种普遍现象。移除阴影对于许多计算机视觉任务(如目标检测和跟踪)至关重要。然而,从单张图像中移除阴影仍然是一个开放的问题,主要原因是阴影形状和背景结构的多样性,使得难以找到通用的解决方案。传统方法通常依赖手工设计的统计特征(如光照、梯度和区域一致性)来构建优化函数,用于移除阴影区域。然而,这些方法忽略了自然图像的先验知识,其假设往往过于理想化,导致在现实场景中生成的结果不自然,并且容易产生伪影。

现有深度学习方法的局限性

近年来,基于深度学习的阴影移除方法取得了显著进展。这些方法通过监督学习,在阴影图像与无阴影图像的像素级对应关系上进行训练。然而,这类方法需要大量标注数据,并且容易导致过拟合,从而在测试集上泛化能力较差。此外,阴影移除是一个区域性退化的问题,存在丰富的上下文和结构先验。这些信息为基于无监督学习的方法提供了强大的潜力。然而,当前的一些无监督方法(如基于GAN的工作)依赖无配对的阴影和无阴影图像进行训练,由于缺乏像素级的标注,生成器可能会产生虚假的内容和伪影。

方法概述

本文提出了一种新颖的基于扩散模型的无监督阴影移除方法,仅使用带阴影的图像,而无需参考图像。我们将阴影图像中的退化区域分为两类:

  1. 阴影区域:结构信息被低光照模糊。
  2. 边界区域:包含噪声结构,但具有丰富的相邻无退化上下文信息。

我们的方法通过整合扩散模型的生成能力和内在分解的细节保留能力,对两种区域进行统一恢复,从而实现互补。具体而言,我们利用一个预训练的无条件扩散模型,以非退化区域信息为指导,生成自然的无阴影图像,并抑制伪影。虽然扩散模型可以利用相邻的非退化上下文信息,有效恢复边界区域的清晰结构和标准光照,但对孤立的阴影区域却表现不佳。为了解决这一问题,我们提出了一种阴影不变内在分解模型,确保扩散采样过程中所有中间结果的反射率一致性,从而揭示阴影区域中的结构细节。实验表明,该方法在多个广泛使用的阴影移除数据集上性能优越,不仅显著超过现有无监督方法,还在某些情况下与监督方法的性能相当。

主要贡献

  1. 提出了基于扩散模型的无监督阴影移除新方法,将退化区域分为阴影区域和边界区域,通过扩散和内在分解的结合,实现两者的统一恢复。
  2. 提出了阴影不变内在分解模型,保证扩散采样过程中反射率的一致性,有效恢复阴影区域的结构细节。
  3. 在多个公开数据集上进行了广泛的实验,证明了该方法在无监督方法中具有显著优势,并在部分场景下与监督方法相当。

2、相关工作

2.1 阴影去除

传统阴影去除方法依赖于先验信息,例如梯度、光照以及区域一致性等。这些方法基于理想条件假设构建,但在实际应用中会导致明显的阴影边界伪影。
近年来,基于深度学习的阴影去除方法通过大规模成对数据集(阴影图像与无阴影图像)提升了去除性能。然而,这些方法面临标注难度大且模型容易过拟合的问题。

受无监督或弱监督图像转换方法启发,部分研究开始利用生成对抗网络(GAN)在无配对的阴影和无阴影图像上生成无阴影图像。例如:

  • Hu 等人提出基于掩码的循环一致性约束,学习同时生成阴影和去除阴影的能力。
  • Jin 等人提出 DC-ShadowNet,利用无监督域分类器处理软阴影和硬阴影的去除问题。
  • Liu 等人设计了一种方法,通过生成配对的阴影和无阴影图像,训练去阴影子网络。

然而,这些技术通常会面临颜色失真和伪造内容(如伪影)的风险。

2.2 去噪扩散概率模型(Denoising Diffusion Probabilistic Models, DDPM)

生成模型已经广泛应用于图像超分辨率、图像修复、低光增强和去模糊等任务。最近,扩散概率模型通过建模从标准正态分布到数据分布的过程,在生成高质量图像方面表现优异。然而,直接从头训练特定任务的条件扩散模型需要大量的计算资源和时间。
为解决该问题,另一种研究方向是通过引导预训练的无条件扩散模型的采样过程来生成具有特定语义的图像。例如:

  • Choi 等人通过参考图像的低频分量控制扩散模型的采样过程,生成高质量图像。
  • Wang 等人采用一种范围-零空间分解技术,在采样过程中保持数据一致性,并迭代优化零空间内容。
  • Chung 等人引入流形约束项,通过交替投影的方法指导采样路径,在多种逆问题中表现优异。

现有工作主要集中于特定退化场景的图像修复任务,而本文探索了在退化不确定情况下的扩散模型应用于阴影去除问题的潜力。

3、方法

3.1 动机

我们设计阴影去除算法的动机如下所述。假设阴影图像为 x,对应的阴影掩码为m,而无阴影图像为 y。我们定义一个边界提取器B(\cdot),用以通过膨胀和腐蚀操作的残差提取阴影边界区域(半影),从而得到边界掩码 m_b = B(m)。阴影图像可以被分为三个区域:阴影区域(全影)x_s、边界区域(半影)x_b和无阴影区域 x_{ns},如图所示。

 

阴影去除作为区域依赖的修复问题

阴影去除是一个修复任务,其面临区域依赖的退化问题,可将其视为一个条件区域化的图像修复问题:

区域间信息的差异性利用:

对于不同的区域,阴影去除所依赖的信息有所不同。非阴影区域 x_{ns} 的上下文信息和阴影区域x_s​ 的潜在结构信息可以提高对退化区域(即x_b + x_s)的预测能力。

不同区域对阴影去除贡献的信息量不同。例如,边界区域由于邻近丰富的信息具有较低的预测不确定性,而内层阴影区域由于距离有效区域较远,具有较高的不确定性。因此,在恢复内层阴影区域时需要引入更多的信息和约束。

Retinex 模型的启发:

Retinex 理论能够很好地分离阴影区域的光照变化,同时保持图像的内在结构不变。根据 Retinex 理论,一幅输入图像可以分解为反射图(reflectance image)和光照图(illumination image)的乘积。

如上图所示,在阴影区域中,从阴影图像到无阴影图像的光照变换是一个简单的线性过程,而在边界区域,建模阴影边界的复杂且快速变化则更加困难。

理想情况下,阴影退化只影响光照图,而反射图在不同阴影区域保持恒定。因此,反射图为推断采样动态中的结构细节提供了可靠的线索。

3.2 边界感知条件扩散方法

我们提出了一种无监督边界感知条件扩散方法 (BCDiff) 来解决阴影去除问题,其流程如图所示。本方法将阴影去除重新表述为一种基于条件的区域修复问题,通过将预训练的无条件去噪扩散概率模型与内在分解相结合,引入更多信息和约束以更好地恢复阴影内部区域。

3.2.1 上下文条件生成 (Context Conditioned Generation)

直观上,非阴影区域 (x^{ns}​) 是未受污染的,因此可以在任意时间步t下直接采样其中间图像 x^{ns}_t

x^{ns}_{t-1} \sim \mathcal{N}\left(\sqrt{\bar{\alpha}_t}x, (1-\bar{\alpha}_t)I\right)

而对于受污染区域(即边界和阴影区域,记作 x^{b+s}),可以通过进行采样:

x^{b+s}_{t-1} \sim \mathcal{N}\left(\mu_\theta(x_t, t), \Sigma_\theta(x_t, t)\right)

为了得到整体的中间图像 x'_{t-1},我们利用掩码m^{b+s}将受污染区域和未受污染区域空间组合起来:

x'_{t-1} = m^{b+s} \circ x^{b+s}_{t-1} + (1 - m^{b+s}) \circ x^{ns}_{t-1}

其中,m^{b+s} 表示受污染区域的掩码。

3.2.2 光照一致性约束 (Illumination-Consistency Constraint)

在扩散采样过程中,我们约束阴影和非阴影区域之间的光照一致性。为了实现这一点,我们计算 x_t中阴影区域和非阴影区域的均值,作为光照近似值。

通过分类器梯度调节扩散生成,我们引入用于计算阴影和非阴影区域光照均值差异的损失梯度,并扩展:

\hat{\epsilon} = \epsilon_\theta(x_t, t) - \sqrt{\bar{\alpha}_t} \nabla_{x_t} \left| u^s_t - u^{ns}_t \right|

x^{b+s}_{t-1} = \frac{1}{\sqrt{\alpha_t}}(x_{t}-\frac{\beta _{t}}{\sqrt{\alpha_{t-1}}}\hat\epsilon)+ \sigma_t z, \quad z \sim \mathcal{N}(0, I)

其中,u^s_tu^{ns}_t分别表示x_t 中阴影和非阴影区域的光照均值。通过采样过程中引入梯度,我们可以使预训练扩散模型生成的结果具有一致的光照。

3.2.3 迭代反射率保持 (Iterative Reflectance Maintenance)

阴影去除的另一个关键点是生成过程中保留阴影图像的结构信息。与边界区域丰富的邻近非污染信息不同,阴影内部区域往往孤立。因此,我们利用隐藏在阴影区域中的结构信息作为辅助,以进一步约束保真度。

如图所示,我们引入一个阴影不变内在分解模型 (SIID) D,将原始阴影图像x和中间图像x'_{t-1} 分解为反射率和光照图 \{r, l\}\{r_{t-1}, l_{t-1}\}

x'_{0|t-1} = \frac{1}{\sqrt{\bar{\alpha}_t}} x'_{t-1} - \hat{\epsilon} \sqrt{1 - \bar{\alpha}_t}

r, l = D(x), \quad r_{t-1}, l_{t-1} = D(x'_{0|t-1})

由于阴影理想情况下仅影响光照图,因此在扩散采样的迭代过程中,我们要求x_{t-1}的反射率与原始阴影图像 x 在阴影区域内保持一致。基于边界掩码 m^b,我们通过以下公式分别恢复边界和阴影区域:

\hat{x}_{0|t-1} = m_b \circ r_{t-1} \circ l_{t-1} + (1 - m_b) \circ r \circ l_{t-1}

最终,通过从p(x_{t-1} | x_t, \hat{x}_{0|t-1}) 中采样得到x_{t-1}

3.3 影子不变的内在分解(SIID)

内在图像分解任务

内在图像分解(Intrinsic Image Decomposition)是将输入图像分解为反射率图(reflectance map, rrr)和光照图(illumination map, lll)的乘积:

v = r \circ l

影子不变内在分解(SIID)模型的核心思想是,借助该分解来揭示影子区域的内部结构,从而在扩散采样过程中更好地还原影子区域的真实信息。

影子图像集的模拟

为了构造具有相同场景但不同影子条件的图像数据集 X,本文采用了一种基于影子模拟的方法:

给定一张影子图像 x 和对应的影子掩码 m,首先得到没有影子的背景图像x^{(0)} = (1 - m) \circ x

使用随机预定义参数\theta^{(i)}和外部掩码集中的二值化模式 m^{(i)} 生成带有不同影子条件的图像: x^{(i)} = \phi(x^{(0)}, m^{(i)}, \theta^{(i)}), \quad i \in \{1, 2, \dots, n\}其中,\phi(\cdot)  是影子合成算法。

最终生成的数据集包含n+1张图像:\{x^{(i)}\}_{i=0}^n

然后,SIID 模型在合成图像集上进行训练,得到反射率集 \{r^{(i)}\}_{i=0}^n和光照集\{l^{(i)}\}_{i=0}^n​。

3.4 损失函数

(1)重建损失(Reconstruction Loss, LreconL_{\text{recon}}Lrecon​)
根据反射率的影子不变性,当图像x^{(i)} 的反射率 r^{(i)}与另一图像 x^{(j)}的光照l^{(j)}配对时,应能够重建 x^{(j)}

L_{\text{recon}} = \sum_{i=1}^n \sum_{j=1}^n \| r^{(i)} \circ l^{(j)} - x^{(j)} \|_1

(2)一致性损失(Consistency Loss, LconsL_{\text{cons}}Lcons​)
假设无影区域的反射率为真实值(即r^{(0)})。模型预测的所有反射率 r^{(i)}应接近于 r^{(0)}

L_{\text{cons}} = \sum_{i=1}^n \| r^{(i)} - r^{(0)} \|_1

平滑损失(Smoothness Loss, LsmoL_{\text{smo}}Lsmo​)
假设光照图l^{(i)}的变化在物体表面是局部连续的,因此通过全变分正则化(TV)约束其梯度(边界区域除外):

L_{\text{smo}} = \sum_{i=1}^n \| \nabla l^{(i)} \circ (1 - B(m^{(i)})) \|_1

其中,B(m^{(i)})表示边界掩码。

边界平滑损失(Boundary Smoothness Loss, LbounL_{\text{boun}}Lboun​)
约束反射率图r^{(i)}在边界区域应尽量保持平滑:

L_{\text{boun}} = \sum_{i=1}^n \| \nabla r^{(i)} \circ B(m^{(i)}) \|_1

4. 实验

4.1 数据集与评估指标

数据集
ISTD数据集包含1,870组三元组,分别由阴影图像、阴影掩码和无阴影图像组成,分辨率为480×640。其中,1,330组三元组用于训练,540组用于测试。由于无监督方法无法从真实的无阴影样本中学习标准光照,我们使用调整后的测试集,以减少原始数据集中阴影和无阴影图像之间非阴影区域的光照差异。

评估指标
按照之前的工作,我们使用均方根误差(RMSE)、峰值信噪比(PSNR)和结构相似性(SSIM)作为评估指标。RMSE在LAB颜色空间计算,而PSNR和SSIM在RGB颜色空间计算。更低的RMSE值表示恢复输出与真实值之间的重建误差更小,而更高的PSNR和SSIM值表示结果更优。

4.2 实验设置

我们的方法使用PyTorch实现,并在一块NVIDIA RTX A5000 GPU上运行。

我们的阴影去除方法无需训练,依赖于一个预训练的无条件扩散模型。

在所有实验中,我们设置扩散步数 T=250。

采样批量大小为3。

B(\cdot)中的膨胀和腐蚀操作核为半径为8像素的圆盘。

分解模型基于最新的Transformer架构图生图模型进行修改。

我们的分解模型训练中的损失权重 \{\lambda_1, \lambda_2, \lambda_3\}经经验设置为 \{1, 1, 0.1\}

模拟阴影图像的数量设置为 n=4。

4.3 对比实验

我们将提出的无监督方法与多种最新的方法进行了比较,包括:

传统方法:Gong et al.、Yang et al.  和 Guo et al.;

有监督方法(使用配对的阴影和无阴影图像进行训练):DSC、DHAN、SP+M-Net 、Fu et al. 、BMNet  和 SG-ShadowNet ;

无监督方法(不使用配对的阴影和无阴影图像进行训练):MaskShadow-GAN 、LG-ShadowNet 、DC-ShadowNet 、Le et al.  和 G2R 。

所有对比方法的阴影去除结果均引用自原论文或使用其官方实现复现。我们按照大多数先前研究 ,以 256 × 256 的分辨率进行评估。

表展示了 ISTD 数据集测试集的定量结果。Gong et al.通过一系列预定义先验来处理任务,然而这些先验过于严格,难以扩展到现实场景。对于有监督方法,它们共享相同类型的训练数据,包括阴影和无阴影图像对,通过训练数据学习从阴影图像到无阴影图像的映射。但在扩展到某些未见场景时,它们的性能可能会大幅下降。相比之下,我们提出的无监督方法利用了上下文的非阴影区域,并将分解模型适配于测试数据,即使在训练阶段没有使用真实数据(GT),也能取得比部分有监督方法更好的结果。此外,一些无监督方法(如 MaskShadow-GAN 、LG-ShadowNet 和 DC-ShadowNet )使用未配对的阴影和无阴影图像进行训练,而我们的模型仅通过阴影图像学习,仍能优于这些方法。Le et al.和 G2R  的设置与我们一致,均不需要无阴影图像。在与最新的无监督方法 G2R [29] 的对比中,我们在阴影区域的 PSNR 上提高了约 2.5dB。此外,我们验证了使用检测得到的阴影掩膜作为输入时的性能,结果标注为“w/ detected mask”。使用检测掩膜时,我们的方法性能会略微下降。

图展示了我们方法和其他最新方法在 ISTD 数据集上的定性结果。在第一行的小阴影区域示例中,由于阴影图像中丰富的上下文信息,无监督方法表现更好。我们的方法在保持结构信息和抑制边界伪影方面优于 SP+M-Net(有监督方法)。此外,与其他方法相比,我们的方法恢复的结果更加自然。例如,SP+M-Net 、Le et al. 和 G2R 的结果虽然变亮了,但与周围颜色和光照不一致,而我们的方法则能够获得更高一致性的结果。

4.4 消融实验

为了验证所提方法中每个关键组件的有效性,我们在ISTD数据集上针对几个模型变体进行了实验。同时,我们还在补充材料中提供了分解模型中损失函数的消融研究结果。

扩散模型的效果

我们提出使用扩散模型(采样过程)作为一种自然图像先验,来抑制生成结果中的伪影,并根据上下文信息校正阴影区域的光照。我们在ISTD数据集上进行了实验以验证扩散模型的效果。在表中,我们提供了没有扩散模型时的阴影去除性能,其中我们仅保留分解模型,并将分解得到的反射率图视为恢复后的无阴影结果。我们发现,所有指标的性能均有所下降,特别是SSIM指标从0.962降至0.952。

迭代反射率维护的效果

为了生成包含阴影区域隐藏的结构信息的无阴影图像,我们提出在扩散采样过程中进行迭代反射率维护。我们进行了实验,将每次迭代中的反射率替换去除,即在采样阶段丢弃。我们发现所有指标的性能明显下降,这表明生成的无阴影图像失去了大量的真实性。

模拟图像集合的效果

我们探索了用于同一场景的模拟图像集合是否能相比于单一模拟阴影图像提高分解性能。具体来说,我们将模拟阴影图像的数量设置为n=1(在表2中表示为“w/o simulated set”),性能会有所下降,特别是在阴影区域。在训练阶段未学习到各种光照条件时,由于模拟和真实阴影图像之间的域间差异,分解模型容易错误地将某些结构和颜色组件排除在反射率之外,从而导致结果中出现严重的伪影。

光照一致性约束的效果

我们还进行了实验,以验证扩散采样过程中光照一致性约束的有效性(在表2中表示为“w/o illumination constraint”)。具体而言,我们用DDPM中的原始去噪步骤替换公式(8)和(9):

x_{t-1} = \frac{1}{\sqrt{\bar{\alpha}_t}} \left( x_t - \frac{\beta_t}{\sqrt{\bar{\alpha}_{t-1}}} \epsilon_\theta(x_t, t) \right) + \sigma_t z

其中 z \sim N(0, I)。性能在没有光照约束的情况下会下降,这表明光照约束能够进一步增强恢复结果的光照一致性。

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

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

相关文章

java后端之事务管理

Transactional注解:作用于业务层的方法、类、接口上,将当前方法交给spring进行事务管理,执行前开启事务,成功执行则提交事务,执行异常回滚事务 spring事务管理日志: 默认情况下,只有出现Runti…

数据结构——概念与时间空间复杂度

目录 前言 一相关概念 1什么是数据结构 2什么是算法 二算法效率 1如何衡量算法效率的好坏 2算法的复杂度 三时间复杂度 1时间复杂度表示 2计算时间复杂度 2.1题一 2.2题二 2.3题三 2.4题四 2.5题五 2.6题六 2.7题七 2.8题八 四空间复杂度 1题一 2题二 3…

牛客周赛 Round 78 A-C

A.时间表查询! 链接:https://ac.nowcoder.com/acm/contest/100671/A 来源:牛客网 题目描述 今天是2025年1月25日,今年的六场牛客寒假算法基础集训营中,前两场比赛已经依次于 20250121、20250123 举行;而…

HTML-新浪新闻-实现标题-样式1

用css进行样式控制 css引入方式: --行内样式:写在标签的style属性中(不推荐) --内嵌样式:写在style标签中(可以写在页面任何位置,但通常约定写在head标签中) --外联样式&#xf…

能说说MyBatis的工作原理吗?

大家好,我是锋哥。今天分享关于【Redis为什么这么快?】面试题。希望对大家有帮助; 能说说MyBatis的工作原理吗? MyBatis 是一款流行的持久层框架,它通过简化数据库操作,帮助开发者更高效地与数据库进行交互。MyBatis…

MFC程序设计(四)窗口创建机制

钩子函数 钩子属于win32技术,具有优先勾取消息的权利:当一个消息产生时,钩子勾取消息进行处理,然后消息才送回程序 接下来以一个勾取窗口创建消息的钩子为例进行讲解 钩子类型有键盘钩子,鼠标钩子,WH_CBT…

【JavaEE进阶】Spring留言板实现

目录 🎍预期结果 🍀前端代码 🎄约定前后端交互接口 🚩需求分析 🚩接口定义 🌳实现服务器端代码 🚩lombok介绍 🚩代码实现 🌴运行测试 🎄前端代码实…

Unity开发一个单人FPS游戏的教程总结

这个系列的前几篇文章介绍了如何从头开始用Unity开发一个FPS游戏,感兴趣的朋友可以回顾一下。这个系列的文章如下: Unity开发一个FPS游戏_unity 模仿开发fps 游戏-CSDN博客 Unity开发一个FPS游戏之二_unity 模仿开发fps 游戏-CSDN博客 Unity开发一个F…

论文速读|Is Cosine-Similarity of Embeddings Really About Similarity?WWW24

论文地址: https://arxiv.org/abs/2403.05440 https://dl.acm.org/doi/abs/10.1145/3589335.3651526 bib引用: inproceedings{Steck_2024, series{WWW ’24},title{Is Cosine-Similarity of Embeddings Really About Similarity?},url{http://dx.doi.o…

71.在 Vue 3 中使用 OpenLayers 实现按住 Shift 拖拽、旋转和缩放效果

前言 在前端开发中,地图功能是一个常见的需求。OpenLayers 是一个强大的开源地图库,支持多种地图源和交互操作。本文将介绍如何在 Vue 3 中集成 OpenLayers,并实现按住 Shift 键拖拽、旋转和缩放地图的效果。 实现效果 按住 Shift 键&#…

PyQt6医疗多模态大语言模型(MLLM)实用系统框架构建初探(上.文章部分)

一、引言 1.1 研究背景与意义 在数字化时代,医疗行业正经历着深刻的变革,智能化技术的应用为其带来了前所未有的发展机遇。随着医疗数据的指数级增长,传统的医疗诊断和治疗方式逐渐难以满足现代医疗的需求。据统计,全球医疗数据量预计每年以 48% 的速度增长,到 2025 年将…

250125-package

1. 定义 包就是文件夹,作用是在大型项目中,避免不同人的编写的java文件出现同名进而导致报错;想象一个场景,在一个根目录中,每一个人都有自己的一个java文件夹,他可以将自己编写的文件放在该文件夹里&…

FastExcel的使用

前言 FastExcel 是一款基于 Java 的开源库,旨在提供快速、简洁且能解决大文件内存溢出问题的 Excel 处理工具。它兼容 EasyExcel,提供性能优化、bug 修复,并新增了如读取指定行数和将 Excel 转换为 PDF 的功能。 FastExcel 的主要功能 高性…

Redis实战(黑马点评)——关于缓存(缓存更新策略、缓存穿透、缓存雪崩、缓存击穿、Redis工具)

redis实现查询缓存的业务逻辑 service层实现 Overridepublic Result queryById(Long id) {String key CACHE_SHOP_KEY id;// 现查询redis内有没有数据String shopJson (String) redisTemplate.opsForValue().get(key);if(StrUtil.isNotBlank(shopJson)){ // 如果redis的数…

python3+TensorFlow 2.x(三)手写数字识别

目录 代码实现 模型解析: 1、加载 MNIST 数据集: 2、数据预处理: 3、构建神经网络模型: 4、编译模型: 5、训练模型: 6、评估模型: 7、预测和可视化结果: 输出结果&#xff…

基础项目——扫雷(c++)

目录 前言一、环境配置二、基础框架三、关闭事件四、资源加载五、初始地图六、常量定义七、地图随机八、点击排雷九、格子类化十、 地图类化十一、 接口优化十二、 文件拆分十三、游戏重开 前言 各位小伙伴们,这期我们一起学习出贪吃蛇以外另一个基础的项目——扫雷…

[操作系统] 深入进程地址空间

程序地址空间回顾 在C语言学习的时,对程序的函数、变量、代码等数据的存储有一个大致的轮廓。在语言层面上存储的地方叫做程序地址空间,不同类型的数据有着不同的存储地址。 下图为程序地址空间的存储分布和和特性: 使用以下代码来验证一下…

OpenCV:图像处理中的低通滤波

目录 简述 什么是低通滤波? 各种滤波器简介与实现 方盒滤波 均值滤波 中值滤波 高斯滤波 双边滤波 各种滤波的对比与应用场景 相关阅读 OpenCV基础:图像变换-CSDN博客 OpenCV:图像滤波、卷积与卷积核-CSDN博客 简述 低通滤波是一…

32、【OS】【Nuttx】OSTest分析(1):stdio测试(二)

背景 接上篇wiki 31、【OS】【Nuttx】OSTest分析(1):stdio测试(一) 继续stdio测试的分析,上篇讲到标准IO端口初始化,单从测试内容来说其实很简单,没啥可分析的,但这几篇…

OpenAI掀桌子!免费版ChatGPT,提供o3-mini模型!

逆天免费用 今天凌晨,OpenAI联合创始人兼首席执行官Sam Altman宣布了一个大消息——免费版ChatGPT,将提供o3-mini模型! 网页们纷纷不淡定了 看来OpenAI,这o3-mini还没正式上线呢,就免费开放使用了。 不过还是要感谢…