李飞飞、吴佳俊团队新作:FlowMo如何以零卷积、零对抗损失实现ImageNet重构新巅峰
目录
一、摘要
二、引言
三、相关工作
四、方法
基于扩散先前的离散标记化器利用广告
架构
阶段 1A:模式匹配预训练
阶段 1B:模式搜索后训练
采样
第二阶段:潜在生成建模
五、Coovally AI模型训练与应用平台
六、实验
主要结果
分析
七、结论
论文题目:Flow to the Mode: Mode-Seeking Diffusion Autoencoders for State-of-the-Art Image Tokenization
论文链接:
https://arxiv.org/pdf/2503.11056v1
一、摘要
自VQGAN和潜在扩散模型等流行的视觉生成框架出现以来,最先进的图像生成系统一般都是两阶段系统,首先将视觉数据标记化或压缩到低维潜在空间,然后再学习生成模型。标记化训练通常采用标准方法,即根据MSE、实际损失和对抗损失的组合对图像进行压缩和重建。扩散自动编码器在之前的工作中已被提出,作为一种学习端到端感知导向图像压缩的方法,但在ImageNet-1K重构这一竞争性任务中尚未显示出最先进的性能。我们提出的FlowMo是一种基于变换器的扩散自动编码器,它能以多种压缩率实现最新的图像标记化,而无需使用卷积、对抗损失、空间对齐的二维拉编码或从其他标记化器中提炼。我们的主要见解是,FlowMo训练应分为模式匹配前训练阶段和模式搜索后训练阶段。此外,我们还进行了广泛的分析,并探索了在FlowMo标记器上训练生成模型的方法。
二、引言
扩散模型和离散自回归模型等生成模型在图像和视频内容创建方面的应用引人注目。虽然级联系统和单级系统等不太常见的系统也被探索过,但最先进的视觉生成系统一般包括两个阶段:首先,学习一个“标记器”,将像素数据压缩到一个更小、更容易处理的离散或连续潜空间;其次,在这个压缩的潜空间上训练一个生成模型。由于这种两阶段模式的优势,标记化本身已成为一个活跃的研究领域,许多重要的研究工作都非常关注标记化的训练和设计。在这项工作中,我们重点研究具有离散潜空间的标记化器。
自VQGAN以来,离散图像标记符的主流架构和训练方案已经出现。最先进的图像标记器通常是经过训练的卷积自动编码器,先将视觉数据下采样为二维、空间对齐的潜码,然后再将潜码上采样为经过精算和感知损失正则化的重构。有人提出了与这一设置不同的方法:TiTok使用了基于变压器的架构和一维潜码,但在初始蒸馏阶段依赖于传统的基于CNN的标记化器;ViT-VQGAN使用了基于变压器的编码器和解码器。但总的来说,图像标记化的基本设置仍然占主导地位。
在这项工作中,我们提出了FlowMo(Flow to the Mode,流向模式),它在技术上大大突破了当前图像标记化的技术水平。首先,在处理图像标记化任务时,我们建议使用解码器的整流目标来模拟多模态再构造分布。其次,我们使用完全基于变压器的架构,对一维潜码进行编码和解码。第三,我们对FlowMo进行了端到端优化,而不是从已有的二维标记符中进行提炼,或在二维标记符的潜在空间之上进行编码。
最重要的是,FlowMo通过一个关键的洞察力实现了最先进的性能。FlowMo是一种扩散编码器,这一系统已在之前的工作中进行过探索。然而,在最直观的感知重建基准ImageNet-1K方面,最先进的技术仍然被更传统的基于CNN或GAN的标记化器所主导。FlowMo通过以下关键见解实现了最先进的标记化:对于感知重建任务来说,对重建分布中实际上接近原始图像的模式进行采样比试图匹配所有模式更好。因此,我们将FlowMo的训练分为模式匹配前训练阶段和模式搜索后训练阶段,前者是对系统进行端到端训练,解码器上有扩散损失,就像典型的扩散自动编码器一样;后者是对系统进行训练,有选择性地放弃重建分布中不匹配的模式。
在这一阶段,系统会接受训练,选择性地放弃重建分布中不接近原始图像的模式。我们将在第3节解释这两个阶段。
尽管FlowMo在方法上与之前的研究有很大的不同,但与现有最强的多BPP标记化器相比,FlowMo仍是最先进的。我们的主要贡献如下:
-
我们基于扩散自动编码器和多模态扩散图像转换器 (MMDiT),提出了一种简单但新颖的图像标记化架构。
-
我们为扩散自编码器提出了一种新颖的两阶段训练方案,包括模式匹配前训练和模式搜索后训练。
-
在每像素0.07比特和每像素0.22比特两种情况下,我们在感知图像标记化的rFID、PSNR和其他指标方面都达到了最新水平。我们还表明,使用FlowMo标记化器训练的生成模型可以与使用传统标记化器训练的生成模型相媲美(尽管不能超越)。
-
我们对FlowMo中的系统设计选择进行了广泛的分析,概述了噪声调度、采样器设计、模型设计、量化策略和后期训练中几个微妙而关键的决定。
三、相关工作
图像标记化。最先进的视觉生成系统一般由两个阶段组成(少数例外情况是尝试直接在像素空间中学习)。第一阶段是“标记化”,通过投射到连续或离散的潜在空间,重新生成像素数据的空间或时空维度。这一范例的主导地位促使许多作品将标记化器本身作为重要组件进行研究。在这项工作中,我们研究的是具有离散潜变量的标记化器。与之前的工作不同,FlowMo是第一个基于扩散自动编码器的架构,在ImageNet-1K重建中达到了最先进的性能。扩散自动编码器 扩散模型在视觉生成中非常流行,而简化框架(如整流模型)已被进一步采用。利用扩散解码器端对端学习自动编码器的想法最早是在中提出的。随后又有许多研究跟进了这一想法,研究了用于表征学习的扩散自动编码器,特别是用于感知导向的图像压缩。扩散后训练。各种研究都试图通过专门的后训练策略来提高扩散模型样本的质量,其目的通常是灌输所需的属性,如美学质量。DDPO和DPOK探索的是强化学习目标,而DRAFT和AlignProp探索的是通过采样链进行反向传播。FlowMo采用基于反向传播的后训练策略,以适应整流的连续噪声时间表和图像标记化的独特设置。
并行工作DiTo在与我们同时进行的工作中研究了用于连续图像标记化任务的扩散自动编码器。与DiTo不同,我们专注于离散图像标记化,并与现有最强大的离散标记化器进行比较。同时,Flex-Tok提出了一种系统,在该系统中,扩散标记化器是在传统连续变异自动编码器(VAE)的潜空间之上学习的,该自动编码器经过感知损失、对抗损失和重建损失的训练。FlowMo不依赖辅助VAE。
四、方法
现有的先进标记化器在视觉生成方面取得了相当大的进步。不过,它们也有很多缺点。首先,它们需要对抗损失,这可能不稳定且难以调整。它们几乎都需要在至少一个训练阶段使用CNN,因此很难利用变压器的硬件效率和广为人知的扩展行为。最后,它们通常利用以前训练过的标记化器进行提炼,以达到最先进的性能。
FlowMo有几个关键目标。我们提出的标记符是:
-
基于扩散先前的离散标记化器利用广告
-
基于扩散。先前的离散标记化器利用广告
这就需要自适应梯度尺度计算、LeCam正则化,或对损失权重进行仔细调整以确保稳定性。相反,我们将使用扩散解码器,因为扩散模型已被证明简单、非常适合多模态建模,而且在大规模应用中非常可靠。
-
纯变换器,一维潜码。
几乎所有最先进的图像标记化框架都采用了基于CNN的架构,或预测了一个局部对齐的二维潜码,但TiTok除外,它仍然依赖于从一个基于CNN的预训练标记化器中提炼出二维潜码。虽然这些选择可能会提供有用的归纳偏差,但我们认为基于变换器的一维潜码标记器最终可能会在大型数据和模型规模上提供更高的效率和灵活性。FlowMo在基于转换器的架构中学习一维潜码,这与MMDiT类似。
-
最新技术。
在扩散自动编码器方面已经有相当多的研究,但FlowMo是第一个在ImageNet-1K上实现最先进的感知重建的技术。
FlowMo实现了这些目标,我们现在将通过对系统的阐述以及随后(在第 4 节中)通过大量的实验、消融和分析加以说明。作为一种扩散自动编码器,鉴于潜在代码c中的信息有限,重建图像x的分布(表示为p(x|c))必然是多模态的。我们的主要见解是,为了利用扩散自动编码器实现最先进的标记化,应采取多种措施使 p(x|c) 偏向于与原始图像具有高感知相似性的模式。我们通过两个关键要素来实现这一目标: (1) 3.3节中解释的模式搜索后训练,以及 (2) 3.4节中解释的移位采样器。
现在我们将详细介绍FlowMo。这是一种基于MMDiT的模拟变压器架构。然后,我们将解释两个训练阶段:模式匹配预训练(阶段1A)和模式搜索微调(阶段1B)。最后,我们将讨论在FlowMo潜在空间上的生成建模(阶段 2)和采样。
-
架构
FlowMo的结构图如图3所示。FlowMo是一个扩散自动编码器。解码器是一个条件扩散模型,用于学习重建图像的条件分布p(x|c)。
FlowMo由编码器eθ和解码器dθ组成。两者都是基于多模态扩散图像变换器(MMDiT)的变换器。给定一个经过修补的图像x∈Rn和一个初始潜码c0∈Rd(一个全为零的向量),编码器产生一个潜标记序列
cˆ然后通过无查找量化(LFQ)的量化操作q进行元素二值化,得到
按照整流,解码器被训练成从噪声到数据的速度场v建模,定义为
解码器处理xt和c的方式与编码器处理x和c0的方式相同,但通过AdaLN调制],解码器还接受时间(或噪声水平)参数t来调节每个MMDiT块。编码器eθ和解码器dθ在结构上是对称的,但大小不同,解码器更大更深。我们对所有模型都使用了μP参数化,以简化探索性配置和放大配置之间的超参数转移。
-
阶段 1A:模式匹配预训练
在第一个训练阶段,我们的目标是联合训练编码器eθ和解码器dθ,使量化后的c对x具有最大的信息量,从而使pθ(x|c)与真实分布p(x|c)相匹配,由于量化后的c只包含有限的信息,因此真实分布必然是多模态的。图 4 给出了阶段1A的完整示意图。关于理论依据,我们参考了之前在扩散自动编码器方面的研究,其中指出端到端扩散目标对应于非高斯解码器 p(x|c) 的修正变分下限。
FlowMo被训练成端到端扩散自动编码器。具体来说,FlowMo编码器和解码器是端对端训练,以优化解码器输出上的整流损失Lflow。给定噪声z∼N (0, I )、数据 x∼px 和时间(或噪声水平)t∼pt,t∈[0,1],我们定义
并优化流量匹配目标
我们还使用学习到的感知距离dperc,通过以下方式对网络的1步去噪预测进行优化
最后,在潜码c上,我们按照的方法使用LFQ的熵损失和承诺损失,即
为简单起见,这两个损失可以用有限标量量化(FSQ)代替,但我们发现LFQ 的性能稍好一些。我们在1A阶段的训练损耗为
损失权重和更多细节见补充材料。图像被重新调整为位于[-1, 1]范围内。噪声水平t是按照 Stable Diffusion 3 ,从厚尾logit-normal分布中采样的。
-
阶段 1B:模式搜索后训练
在这一阶段,我们的目标是优化解码器分布pθ(x|c),以寻求在感知上与原始图像高度相似的模式。为了实现这一目标,我们冻结了编码器,并在Lflow和后训练目标Lsample的基础上对解码器进行联合训练,后训练目标Lsample的灵感来源于之前在扩散模型后训练方面的工作。
Lsample只是对概率流ODE的n步采样的感知损失,我们通过它进行区分。我们随机采样积分的时间步t1、......、tn,以便在测试时使用不同的采样计划进行实验,并使用梯度检查点来反向传播采样链。图 5 给出了阶段1B的完整示意图。
让dti (xt)表示流量采样更新函数,即
然后,我们定义
第 1B 阶段的全部损失为
我们发现本阶段的λsample值尤为重要,因此使用λsample=0.01。Lsample的权重太小会导致rFID效果不佳,因为网络会遗忘在第1A阶段获得的实际特征;而权重太大则会导致所谓的“奖励劫持”(即解码器dθ与dperc过度拟合)或训练发散。我们在第1A阶段使用LPIPS-VGG网络作为感知网络,但在第 1B 阶段,我们使用ResNet作为感知网络。我们在补充材料中解释了这一设计选择和其他设计选择,并通过消融法证明,仅仅在Lperc中的1步去噪预测中使用ResNet网络是无效的;因此有必要引入后训练阶段。这一阶段的计算成本很高,因为它需要通过整个采样链进行反向传播。我们使用n=8,并发现它在采样时能很好地适用于其他 n。
-
采样
给定一个量化的潜码c,通过求解概率流ODE来采样给定c的重建图像的多模态分布(表示为 p(x|c))。
给定初始 x1∼N (0, I)。另外,FlowMo 也可用于计算样本对数似然,方法是按照流匹配反向求解流 ODE。
在推理时,我们用可调整的移动超参数给出的时间步距对整流ODE进行积分。图5.第1B阶段。冻结编码器eθ将输入图像编码为c,作为解码器 dθ 的条件,解码器dθ通过整个采样链的反向传播进行训练。我们还使用 Lflow 进行协同训练,这与图4中的方法相同。
ρ 表示采样时间步向低噪声水平集中。对于时间步距:
设置ρ=1相当于通常的线性间隔整流ODE采样器。在极端情况下,让ρ→∞意味着在t=1时迈出一大步,相当于给定c对x进行回归。我们使用ρ=4,这相当于在接近 t=1时迈出一大步,并将采样集中到 p(x|c) 的平均值上,同时在低噪声水平上仍然花费了大量的采样FLOP,而之前的研究表明,这一选择对rFID至关重要。我们的采样器大大提高了rFID和PSNR。
-
第二阶段:潜在生成建模
与其他使用离散空间训练自动编码器的工作一样,我们验证了我们的标记器可以用来训练高质量的第二阶段生成模型。我们使用MaskGiT,这一阶段的设置主要来自MaskGiT和TiTok。
五、Coovally AI模型训练与应用平台
如果你也想要进行模型训练或模型改进,Coovally平台满足你的要求!
Coovally平台整合了国内外开源社区1000+模型算法和各类公开识别数据集,无论是YOLO系列模型还是Transformer系列视觉模型算法,平台全部包含,均可一键下载助力实验研究与产业应用。
而且在该平台上,无需配置环境、修改配置文件等繁琐操作,一键上传数据集,使用模型进行训练与结果预测,全程高速零代码!
具体操作步骤可参考:YOLO11全解析:从原理到实战,全流程体验下一代目标检测
平台链接:https://www.coovally.com
如果你想要另外的模型算法和数据集,欢迎后台或评论区留言,我们找到后会第一时间与您分享!
六、实验
-
主要结果
标记化。对于标记化这一主要任务,所有标记化器都采用图像输入,将其编码为量化潜像,然后重建图像。所有标记化器都是在ImageNet-1K上训练的。重建质量用rFID 、PSNR、SSIM和LPIPS等指标来衡量。我们在分辨率为256×256的ImageNet-1K验证集上进行评估。
标记化器量化潜码所包含的信息量以每像素比特(BPP)为单位。
其中 S是潜码序列长度,V是标记词词汇量,标记化器的BPP计算公式为:
在不同BPP下训练的标记化器不能进行苹果对苹果的比较,因为获取更多比特会提高性能。因此,我们训练了两种模式,以匹配现有最先进的标记符。
FlowMo-Lo以0.0703 BPP进行训练,以匹配OpenMagViT-V2的BPP。FlowMo-Hi以0.219 BPP进行训练,以匹配LlamaGen-32的BPP。除了BPP之外,FlowMo-Lo和FlowMo-Hi都是完全相同的FlowMo架构。为了与我们进行比较的tokens生成器的BPP相匹配,我们修改了FlowMo tokens词汇的大小或tokens数量。就=rFID、PSNR和SSIM而言,我们在两个BPP上都取得了最先进的结果。FlowMo性能优异的唯一例外是LPIPS指标,FlowMo在该指标上仍然表现不佳。可在补充材料和我们的网站上查看具体的可视化比较。
生成。在生成任务中,我们对不同标记化器生成的编码标记序列训练生成模型MaskGiT。然后,我们通过各自的标记化器对生成的标记序列进行解码,并用图像生成指标来衡量图像质量,即FID、sFID、Inception Score以及Precision和Recall。生成指标在ImageNet-1K基准上进行评估。尽管实现了更强的标记化,但使用FlowMo作为下游生成模型的标记化器,只能改善部分生成指标,而不能改善所有生成指标。标记化质量和生成质量之间存在有趣而复杂的相互作用,我们希望在未来的工作中改进结果。
表2中的模型大小、批量大小和训练长度等训练超参数与托克生成器相同。具体来说,我们在批量大小为128、学习率为1×10-4的两个token- enizers上都训练了300个epoch。其他超参数设置见补充材料。虽然我们没有足够的资源来训练最先进的生成模型(例如,需要1,000 - 1,080个历元的训练,批量大小为1,024 - 2,048),但我们在这里的目标并不是为生成模型设定最先进的水平,而是从生成模型所提供的潜在空间的角度对标记生成器进行公平的比较。
其他比较。在表3中,我们还对FlowMo和DiTo进行了标记化比较。为了进行比较,我们使用连续潜空间训练标记化器,将Lay- erNorm作为最终编码层,并使DiTo中提出的 “噪声同步 ”增强技术。我们还均衡了总体潜空间大小,使用256个标记,标记维度为16。实验细节。我们所有的模型都是μP参数化的,因此超参数可以在探索性配置和放大配置之间“μ-转移”。我们的大部分实验是在混合硬件(A6000、L40S、A100、H100 或 H200 GPU)上进行的,ViT补丁大小为8,隐藏维度为768;这也是表4中用于消融研究的配置。
我们的最终实验(FlowMo-Lo、FlowMo-Hi)是在8×H100节点上进行的,使用的是放大模型,补丁大小为4,仅解码器的隐藏维度增加到 1152。所有其他超参数都直接进行了μ转移。我们对FlowMo-Lo进行了100个epoch的预训练,对FlowMo-Hi进行了80个epoch的预训练,然后对两者进行了约 1个epoch的后训练。在预训练中,rFID的性能没有达到饱和。更长时间的训练会耗费更多资源,但可能会进一步提高性能。
我们对FlowMo-Lo和FlowMo-Hi进行了批量大小为128、学习率为10-4的训练。我们按照EDM2,每一步对编码器和解码器的MLP块中的权重矩阵进行强制归一化,以防止激活和权重矩阵爆炸。所有模型都在PyTorch中以bfloat16的精度进行训练。我们使用Adam优化器,其值为 (β1,β2 )=(0.9,0.95),因为我们注意到,可能由于bfloat16精度或变压器序列长度较长,β2越高越不稳定。我们将编码器的学习率设置为0,训练步数为200,000 步。我们使用的是指数移动平均值,速率为0.9999。
-
分析
消融研究。我们对标记化性能进行了消融研究,分析了不同决策对rFID和其他指标的影响。实验设置与我们主要的ImageNet-1K标记化实验相同。
我们首先对表4中第 1A 阶段的设计决策进行消融研究。我们对这些决策进行分析,并在适用时参考先前的扩散自动编码器作品。在这些实验中,我们使用了减小μP宽度的配置,以提高实验效率。
双倍贴片尺寸。在视觉转换器和去肋架构中,“补丁尺寸”决定了图像转换序列的长度,补丁尺寸越小,模型的计算量越大。之前关于像素空间中基于变换器的扩散模型的研究已经指出了小补丁尺寸的重要性。我们证实了这一点:增大补丁尺寸会影响所有指标。
使用MSE训练的编码器。之前的扩散自动编码器研究已经探索了首先用MSE或基于LPIPS的回归目标来训练自动编码器,也有可能用对抗损失来训练,然后用训练得到的冻结特征作为扩散解码器的条件。虽然这种训练方式可能会提高PSNR,但为了实现最佳的rFID,必须在所有噪声水平下对整个系统进行端到端训练,以确保潜码包含有助于在所有噪声水平下进行速度估计的特征。
无感知损失。之前在扩散自动编码器方面的研究已经注意到感知损失对扩散解码器1步去噪预测的重要性。如果没有感知损失,性能就会下降。
FSQ量化。与我们的默认量化策略LFQ相比,我们发现FSQ的最终训练损失和成对度量性能略胜一筹,但却以最关键的rFID为代价。我们还尝试了其他量化技术,但LFQ的性能最佳。
对数正态噪声。用于整流训练的logit-normal噪声计划将 t∈{0, 1} 的概率质量分配为0。虽然这种方法适用于t=0(此时整流目标变得奇异),但由于我们的调节信号非常强,因此在t=1(纯噪声)时对v(xt,t)的估计至关重要。使用通常的logit-normal时间表会导致PSNR和rFID下降。取而代之,我们使用厚尾 logit-normal噪声计划:我们从 [0, 1] 上的均匀分布中抽取10%的噪声水平样本。如果不做这种修改,t=1时的速度估计值就会不准确,从而导致低PSNR和变色。示例见图 7。
非移位采样器。如第3.4节所述,我们使用时间步距t对整流ODE进行积分,时间步距按比例向t=0集中。使用线性间隔的时间步会降低性能。
无引导。与GAN标记化器相比,FlowMo的一个优势是能够利用无分类器引导和引导间隔等技术来提高感知质量。如果不在有限的时间间隔内应用分类器引导,rFID就会恶化。
表5是纳入阶段1B的消融研究。如果没有这一关键阶段,所有指标的性能都会下降。有趣的是,尽管只在Lsample上进行了训练,但这一阶段也提高了 PSNR。我们在图8中说明了FlowMo解码器在后期训练后如何保持多模态。
局限性。FlowMo的主要局限在于推理时间。FlowMo需要多次模型前向传递(我们在工作中使用了n=25步)才能从给定量化潜码的解码器中生成一个样本。相比之下,几乎所有其他标记化器都是基于GAN的,因此只需一次前向传递即可重新构建给定图像。尽管如此,将扩散模型提炼为单步或几步系统的工作仍然相当多,这些技术也适用于FlowMo。
七、结论
我们介绍了基于变压器的扩散自动编码器FlowMo,它利用扩散自动编码器的训练和采样应着眼于寻求感知高质量模式这一关键见解,实现了最先进的图像标记化。我们在256×256分辨率的竞争性ImageNet-1K基准上展示了最先进的性能,与之前的许多工作不同,我们没有使用二维空间对齐潜码、对抗损失、来自辅助标记化器的代理目标,也没有进行压缩。
相关文章:
李飞飞、吴佳俊团队新作:FlowMo如何以零卷积、零对抗损失实现ImageNet重构新巅峰
目录 一、摘要 二、引言 三、相关工作 四、方法 基于扩散先前的离散标记化器利用广告 架构 阶段 1A:模式匹配预训练 阶段 1B:模式搜索后训练 采样 第二阶段:潜在生成建模 五、Coovally AI模型训练与应用平台 六、实验 主要结果 …...
AutoDev 2.0 正式发布:智能体 x 开源生态,AI 自动开发新标杆
在我们等待了几个月之后,国内终于有模型(DeepSeek V3-0324)能支持 AutoDev 的能力,也因此是时候发布 AutoDev 2.0 了!在 AutoDev 2.0 中,你可以: 编码智能体 Sketch 进行自动化编程自动化编程的…...
PHP 应用MYSQL 架构SQL 注入跨库查询文件读写权限操作
MYSQL 注入:(目的获取当前 web 权限) 1 、判断常见四个信息(系统,用户,数据库名,版本) 2 、根据四个信息去选择方案 root 用户:先测试读写,后测试获取…...
鸿蒙-全屏播放页面(使用相对布局)---持续更新中
最终实现效果图: 实现步骤 创建FullScreenPlay.ets全品播放页面 并将其修改为启动页面。 全屏播放,屏幕必然横过来,所以要将窗口横过来。 编辑 src/main/ets/entryability/EntryAbility.ets 若写在/EntryAbility.ets中,则所有…...
第4期:重构软件测试体系——生成式AI如何让BUG无所遁形
真实战场报告 某金融系统上线前,测试团队用AI生成3000条边缘用例,发现了一个隐藏极深的并发漏洞——该BUG在传统用例覆盖下需要7年才会触发一次。这次发现直接避免了可能上亿元的资金风险! 一、测试革命:当AI遇见质量保障 场景1&…...
力扣.旋转矩阵Ⅱ
59. 螺旋矩阵 II - 力扣(LeetCode) 代码区: class Solution {const int MAX25; public:vector<vector<int>> generateMatrix(int n) {vector<vector<int>> ans;vector<int> hang;int len_nn;int arry[25][25]…...
Docker 安装部署Harbor 私有仓库
Docker 安装部署Harbor 私有仓库 系统环境:redhat x86_64 一、首先部署docker 环境 定制软件源 wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repoyum install -y yum-utils device-mapper-persistent-data lvm2…...
SQL Server 中常见的数据类型及其详细解释、内存占用和适用场景
以下是 SQL Server 中常见的数据类型及其详细解释、内存占用和适用场景: 数据类型类别数据类型解释内存占用适用场景整数类型bigint用于存储范围较大的整数,范围是 -2^63 (-9,223,372,036,854,775,808) 到 2^63-1 (9,223,372,036,854,775,807)8 字节需要…...
javascript实现一个函数,将字符串中的指定子串全部替换为另一个字符串的原理,以及多种方法实现。
大白话javascript实现一个函数,将字符串中的指定子串全部替换为另一个字符串的原理,以及多种方法实现。 在JavaScript里,要是你想把字符串里的指定子串都替换成另外一个字符串,有不少方法可以实现。下面我会详细介绍实现的原理&a…...
Python 3 与 MySQL 数据库连接:mysql-connector 模块详解
Python 3 与 MySQL 数据库连接:mysql-connector 模块详解 概述 在Python 3中,与MySQL数据库进行交互是一个常见的需求。mysql-connector是一个流行的Python模块,它提供了与MySQL数据库连接和交互的接口。本文将详细介绍mysql-connector模块…...
HCIA-Datacom高阶:基础的单区域 OSPF 与多区域 OSPF的配置
动态路由协议是实现网络高效通信的关键技术之一。开放式最短路径优先(Open Shortest Path First,OSPF)协议作为内部网关协议(IGP)的一种,因其高效性、稳定性和扩展性,在大型网络中得到了广泛应用…...
蓝桥杯单片机刷题——E2PROM记录开机次数
设计要求 使用E2PROM完成数据记录功能,单片机复位次数记录到E2PROM的地址0中。每复位一次数值加1,按下按键S4,串口发送复位次数。串口发送格式如下: Number:1 备注: 单片机IRC振荡器频率设置为12MHz。 …...
杂草YOLO系列数据集4000张
一份开源数据集——杂草YOLO数据集,该数据集适用于农业智能化、植物识别等计算机视觉应用场景。 数据集详情 训练集:3,664张高清标注图像测试集:180张多样性场景样本验证集:359张严格筛选数据 下载链接 杂草YOLO数据集分…...
Python自动化面试通关秘籍
Python自动化测试工程师面试,不仅仅是考察你的代码能力,更看重你如何在项目中灵活运用工具和框架解决实际问题。如果你正准备面试,这篇文章将为你总结最常见的高频考题及答题技巧,帮助你快速上手,通关面试,…...
机器学习的一百个概念(1)单位归一化
前言 本文隶属于专栏《机器学习的一百个概念》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见[《机器学习的一百个概念》 ima 知识库 知识库广场搜索&…...
Python 笔记 (二)
Python Note 2 1. Python 慢的原因2. 三个元素3. 标准数据类型4. 字符串5. 比较大小: 富比较方法 rich comparison6. 数据容器 (支持*混装* )一、允许重复类 (list、tuple、str)二、不允许重复类 (set、dict)1、集合(set)2、字典(dict)3、特殊: 双端队列 deque 三、数据容器的共…...
【商城实战(97)】ELK日志管理系统的全面应用
【商城实战】专栏重磅来袭!这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建,运用 uniapp、Element Plus、SpringBoot 搭建商城框架,到用户、商品、订单等核心模块开发,再到性能优化、安全加固、多端适配,乃至运营推广策略,102 章内容层层递进。无论是想…...
3.使用epoll实现单线程并发服务器
目录 1. epoll的概述 2. 多线程与epoll的处理流程 2.1 多线程处理流程 2.2 epoll处理流程 3. epoll与多线程的比较 4. epoll的操作函数 4.1 epoll_create() 4.2 epoll_ctl() 4.3 epoll_wait() 5. 示例代码 6. epoll的工作模式 7. 使用O_NONBLOCK防止阻塞 8.运行代…...
蓝桥杯真题------R格式(高精度乘法,高精度加法)
对于高精度乘法和加法的同学可以学学这几个题 高精度乘法 高精度加法 文章目录 题意分析部分解全解 后言 题意 给出一个整数和一个浮点数,求2的整数次幂和这个浮点数相乘的结果最后四舍五入。、 分析 我们可以发现,n的范围是1000,2的1000次方非常大&am…...
PyCharm操作基础指南
一、安装与配置 1. 版本选择 专业版:支持 Web 开发(Django/Flask)、数据库工具、科学计算等(需付费)。 社区版:免费,适合纯 Python 开发。 2. 安装步骤 访问 JetBrains 官网 下载对应版本。…...
21 python __name__ 与 __main__
在办公室里,每个员工都有自己的工牌,上面写着姓名和部门。 一、__name__:模块的名字 Python 模块也有类似的 "工牌"——__name__属性,它记录了模块的身份: 直接运行时 → __name__ "__main__"&…...
NixVis 开源轻量级 Nginx 日志分析工具
NixVis NixVis 是一款基于 Go 语言开发的、开源轻量级 Nginx 日志分析工具,专为自部署场景设计。它提供直观的数据可视化和全面的统计分析功能,帮助您实时监控网站流量、访问来源和地理分布等关键指标,无需复杂配置即可快速部署使用。 演示…...
elementUI el-image图片加载失败解决
是不是,在网上找了一些,都不行,这里一行代码,解决,后端返回图片路径,el-image图片加载失败的问题 解决办法, vue项目里,index.html文件里加一行代码就可 <meta name"refe…...
lxd-dashboard 图形管理LXD/LXC
前言 LXD-WEBGUI是一个完全用AngularJS编写的Web应用程序,无需应用服务器、数据库或其他后端服务支持。只需要简单地托管静态HTML和JavaScript文件,就能立即投入使用。这个项目目前处于测试阶段,提供了直观的用户界面,帮助用户便捷地管理和控制LXD实例。 安装lxd-dashboa…...
C# MemoryStream 使用详解
总目录 前言 在.NET开发中,流(Stream)是一个用于处理输入和输出的抽象类,MemoryStream是流的一个具体实现,它允许我们在内存中读写数据,就像操作文件一样,而无需涉及磁盘 I/O 操作。尤其适合需…...
(二)万字长文解析:deepResearch如何用更长的思考时间换取更高质量的回复?各家产品对比深度详解
DeepResearch的研究背景 业务背景:用更长的等待时间,换取更高质量、更具实用性的结果 当前AI技术发展正经历从“即时响应”到“深度思考”的范式转变。用户对延迟的容忍度显著提升,从传统200ms的交互响应放宽至数秒甚至数分钟,以…...
Redis场景问题1:缓存穿透
Redis 缓存穿透是指在缓存系统(如 Redis)中,当客户端请求的数据既不在缓存中,也不在数据库中时,每次请求都会直接穿透缓存访问数据库,从而给数据库带来巨大压力,甚至可能导致数据库崩溃。下面为…...
数据结构(并查集,图)
并查集 练习版 class UnionFindSet { public:void swap(int* a, int* b){int tmp *a;*a *b;*b tmp;}UnionFindSet(size_t size):_ufs(size,-1){}int UnionFind(int x){}void Union(int x1, int x2){}//长分支改为相同节点int FindRoot(int x){}bool InSet(int x1, int x2)…...
深度学习篇---断点重训模型部署文件
文章目录 前言一、断点重训(Checkpoint)文件1. 动态图(DyGraph)模式.pdparams 文件.pdopt 文件.pdscaler 文件.pdmeta 或 .pkl 文件 2. 静态图(Static Graph)模式.pdparams 和 .pdopt 文件.ckpt 文件 3. 恢…...
chromem-go + ollama + bge-m3 进行文档向量嵌入和查询
Ollama 安装 https://ollama.com/download Ollama 运行嵌入模型 bge-m3:latest ollama run bge-m3:latestchromem-go 文档嵌入和查询 package mainimport ("context""fmt""runtime""github.com/philippgille/chromem-go" )func ma…...
运维面试题(十一)
1.如果一个硬盘 IO 时阻塞了,会发生什么情况? 进程/线程挂起:发起I/O操作的进程或线程会被操作系统置为阻塞状态(等待状态),直到I/O完成。CPU资源释放:阻塞的线程会让出CPU,操作系统…...
深度学习中常见的专业术语汇总
本硕博都是搞机械的匠人,当然也想做一下交叉学科的东西,蹭一下人工智能的热点。虽然世界是个草台班子,但是来都来了,咱也要把这场戏演好。 记得之前网上爆料有位大学生发了很多水文,对,是交叉学科的&#x…...
人工智能赋能医疗:开启智慧医疗新时代
在当今数字化浪潮的推动下,人工智能(AI)技术正以前所未有的速度渗透到各个行业,其中医疗领域更是成为AI技术大放异彩的重要舞台。从疾病诊断到治疗方案制定,从医疗影像分析到药物研发,AI正在为传统医疗带来…...
stable diffusion 本地部署教程 2025最新版
前提: 需要环境 git git下载地址Git - Downloading Package 直接装即可 python3.10.6 下载地址 Python Release Python 3.10.6 | Python.org 记得python环境一定要3.10.6!!! 第一个版本 项目地址https://github.…...
[Mac]利用Hexo+Github Pages搭建个人博客
由于我这台Mac基本没啥环境,因此需要从零开始配置,供各位参考。 注意⚠️:MacBook (M4)使用/bin/zsh作为默认Shell,其对应的配置文件为~/.zshrc 参考文档: HEXO系列教程 | 使用GitHub部署静态博客HEXO | 小白向教程 文…...
罗杰斯特回归
定义 逻辑回归其实就是原来的线性回归加了激活函数,这个函数其实就是sigmoid函数,把一个回归的连续数值压缩到了0到1的空间,其实只要有函数能够满足把数值压缩到0,1之间就可以(因为0到1之间的数值就是概率值) 对于分类…...
27_promise
插入一下前端助手测试,顺手可以用来做安全 promise promise 是一个es6新增的语法 汉语:承诺的意思 作用:是专门用来解决回调地狱!!!! 什么是回调函数? <script>// 回调函数 callback回调// 就是把函数A当作参数传递到函数B中// 在函…...
【机械视觉】C#+VisionPro联合编程———【六、visionPro连接工业相机设备】
【机械视觉】C#VisionPro联合编程———【六、visionPro连接工业相机设备】 目录 【机械视觉】C#VisionPro联合编程———【六、visionPro连接工业相机设备】 前言: 连接步骤说明 一. 硬件连接 支持的相机接口类型: 连接步骤 2. 软件配置 Visio…...
红宝书第十九讲:详解JavaScript的Fetch API与Ajax请求
红宝书第十九讲:详解JavaScript的Fetch API与Ajax请求 资料取自《JavaScript高级程序设计(第5版)》。 查看总目录:红宝书学习大纲 一、基本概念:为什么需要Fetch? Fetch API是浏览器提供的现代网络请求工…...
【深度学习新浪潮】具身智能及其发展前景分析
一、具身智能的定义 具身智能(Embodied Intelligence) 是指通过物理载体(如机器人)与环境实时交互,实现感知、决策与行动闭环的智能系统。其核心在于将人工智能与物理实体结合,强调“智能源于身体与环境的互动”,而非仅依赖虚拟算法。具身智能的典型特征包括多模态感知…...
练习题:111
目录 Python题目 题目 题目分析 需求理解 关键知识点 实现思路分析 代码实现 代码解释 指定文件路径和名称: 定义要写入的内容: 打开文件并写入内容: 异常处理: 输出提示信息: 运行思路 结束语 Python题…...
第三次作业
1、将你的虚拟机的网卡模式设置为nat模式,给虚拟机网卡配置三个主机位分别为100、200、168的ip地址 首先将虚拟机在vmware编辑里将网卡模式改为nat 然后用nmcli c mod ens160 ipv4.addresses 192.168.254.100 nmcli c mod ens160 ipv4.addresses 192.168.254.200…...
Oracle数据库数据编程SQL<3.1 PL/SQL 匿名块 及 流程控制中的条件判断、循环、异常处理和随机函数应用>
PL/SQL部分 在SQL的基础上增加了一些过程化的控制语句。 过程化控制语句包括:类型定义、判断、循环、游标、异常处理(例外处理) 目录 PL/SQL匿名块 一、匿名块基本结构 1、匿名块由三个部分组成: 2、注意事项: …...
CEF 给交互函数, 添加控制台是否显示交互参数log开关
CEF 控制台添加一函数,枚举 注册的供前端使用的CPP交互函数有哪些 CEF 多进程模式时,注入函数,获得交互信息-CSDN博客 这两篇文章,介绍了注入函数,在控制台中显示 各自提供的交互函数信息。 有些场景下,我们还需要更详细的信息,比如想知道 彼此传递的参数, 如果每次调…...
如何用 Postman 正确传递 Date 类型参数,避免服务器解析错误?
如何在 Postman 中传递 Date 类型参数。调试工具如何模拟发送用户端的当前时间呢? Postman 传递 Date 类型参数教程...
从代码学习深度学习 - 含并行连结的网络(GoogLeNet)PyTorch版
文章目录 前言一、GoogLeNet的理论基础1.1 背景与创新点1.2. Inception模块的工作原理二、完整代码实现与解析2.1. 环境准备与工具函数2.2. 数据加载 - Fashion-MNIST2.3. Inception模块设计2.4. GoogLeNet完整模型2.5. 训练函数2.6. 运行训练三、训练结果与分析3.1. 性能分析3…...
进程Kill杀死后GPU显存没有释放仍然被占用,怎么杀死僵尸进程
参考链接: https://blog.csdn.net/qq_37591986/article/details/131118109 使用下面的命令: fuser -v /dev/nvidia0 | awk {print $0} | xargs kill -9一般来说他会杀掉整个用户的所有进程。...
Deepseek API+Python 测试用例一键生成与导出 V1.0.3
** 功能详解** 随着软件测试复杂度的不断提升,测试工程师需要更高效的方法来设计高覆盖率的测试用例。Deepseek API+Python 测试用例生成工具在 V1.0.3 版本中,新增了多个功能点,优化了提示词模板,并增强了对文档和接口测试用例的支持,极大提升了测试用例设计的智能化和易…...
【字符设备驱动开发–IMX6ULL】(一)简介
【字符设备驱动开发–IMX6ULL】(一)简介 一、Linux驱动与裸机开发区别 1.裸机驱动开发回顾 1、底层,跟寄存器打交道,有些MCU提供了库。 spi.c:主机驱动(换成任何一个设备之后只需要调用此文件里面的…...
MaxKB 如何通过Nginx修改浮框提示文字
在使用MaxKB做第三方嵌入的时候,总会有想Diy前端样式的场景,下面就通过Nginx的方式,实现浮框样式的改变。 一、效果对比 修改前: 修改后: 前后对比: 修改了提示文字。去掉了图标后面的白框 下面讲一下该…...