一、CLIP技术

CLIP,全称 Contrastive Language-Image Pre-training(对比语言-图像预训练),是由 OpenAI 在 2021 年提出的一个里程碑式的模型。它的核心思想在于利用自然语言作为监督信号来学习强大的视觉表示,从而打破了传统计算机视觉模型训练方式的诸多限制。

1.1  核心思想与解决的问题

1.传统CV模型的痛点:

  • 需要大量标注数据: 训练高性能的图像分类、检测等模型需要海量、精确标注的数据集(如ImageNet),标注成本高昂。
  • 任务特定性: 模型通常是针对特定任务(如识别1000种物体)进行训练的,泛化能力有限。要处理新任务(如识别新物体类别),通常需要重新收集标注数据并微调模型。
  • 零样本能力弱: 传统模型很难识别训练数据中从未出现过的类别(零样本学习)。

2.CLIP的创新解决方案:

  • 利用“自然语言监督”: 不再依赖人工标注的固定类别标签(如“猫”、“狗”的one-hot向量),而是直接使用图像及其对应的自然语言描述文本作为训练数据。这些文本描述可以来自互联网(如图像的alt文本、标题、描述段落)。

  • 学习一个“多模态嵌入空间”: CLIP的目标是学习一个共享的、联合的嵌入空间。在这个空间里:

    • 语义相似的图像和描述它们的文本的嵌入向量距离很近。

    • 语义不相关的图像文本的嵌入向量距离很远。

  • “对比学习”是关键机制: 模型通过对比学习来达成上述目标。在训练时,它看到一个批次(batch)的图像-文本对。对于每一张图像,模型的任务是找出批次中与其最匹配的文本描述(正样本),并远离其他所有不匹配的文本(负样本)。反之亦然,对于每个文本,找出最匹配的图像。这种在批次内进行大量负样本对比的方式效率很高。

1.2  CLIP的架构

CLIP 是一个双塔式架构,包含两个独立的编码器:

(1)图像编码器:

将输入的图像编码成一个固定长度的特征向量(图像嵌入)。

可以使用各种视觉主干网络,如:

  • ResNet: 标准卷积神经网络,在CLIP论文中使用了多个变体(ResNet-50, ResNet-101等)。
  • Vision Transformer: 基于Transformer架构,将图像分割成小块(patches)进行处理,在CLIP中表现通常更优(如ViT-B/32, ViT-B/16, ViT-L/14等)。

输出:一个 d 维的向量。

(2)文本编码器:

将输入的文本描述(句子或短语)编码成一个固定长度的特征向量(文本嵌入)。

通常基于Transformer架构(如GPT-2的变体)。

输出:一个 d 维的向量(与图像嵌入维度相同)。

(3)对比损失函数:

模型的核心是计算一个批次内所有图像嵌入和所有文本嵌入之间的相似度矩阵(通常是余弦相似度)。然后使用对称的对比损失(如InfoNCE Loss)进行优化:

  • 对于每个图像,目标是最大化与其配对文本的相似度,同时最小化与批次内其他所有文本的相似度。
  • 对于每个文本,目标是最大化与其配对图像的相似度,同时最小化与批次内其他所有图像的相似度。

1.3  训练过程

  1. 海量数据: CLIP 在超大规模的图像-文本对数据集上进行训练。OpenAI 使用的数据集包含约 4亿个 从互联网公开收集的图像-文本对。

  2. 预训练目标: 训练的唯一目标就是最小化上述的对比损失函数。模型没有直接学习任何特定的视觉任务(如分类、检测),而是学习图像内容和文本描述之间的广泛关联。

  3. 规模效应: CLIP 的成功很大程度上依赖于模型规模(参数量)和数据规模的巨大。更大的模型和更多的数据带来了显著更好的性能。

1.4  CLIP的强大能力与优势

(1)零样本迁移: 这是 CLIP 最革命性的能力!

原理: 因为 CLIP 学习的是一个联合的图像-文本嵌入空间,并且文本编码器能够理解自然语言。所以,对于一个全新的分类任务,用户只需提供类别的文本描述(例如:“一张狗的照片”,“一张猫的照片”,“一辆汽车的照片”),CLIP 就能直接进行预测,无需任何特定于该任务的训练数据或微调

如何工作:

  • 将测试图像输入图像编码器,得到图像嵌入。
  • 将所有候选类别的文本描述(例如,“这是一张{狗}的照片”的模板填充)输入文本编码器,得到一组文本嵌入。
  • 计算图像嵌入与每个文本嵌入的余弦相似度。
  • 相似度最高的文本描述对应的类别,就是模型的预测结果。

意义: 极大地提高了模型的泛化性和灵活性,可以轻松扩展到成千上万甚至更多的新类别。

(2)强大的泛化能力: 由于在极其多样化的互联网数据上训练,CLIP 对各种分布变化、抽象概念、风格迁移等表现出惊人的鲁棒性,在许多基准测试上超越了特定任务训练的监督模型。

(3)成为强大的视觉特征提取器/基础模型: CLIP 学习到的图像编码器可以作为一个通用的、高质量的视觉特征提取器:

  • 提取的图像嵌入可以输入到下游任务的简单线性分类器或小型网络中,进行快速微调(Few-shot learning)。
  • 作为更大系统(如图像生成模型DALL·E 2, Stable Diffusion)的组成部分,提供强大的视觉语义理解能力。

(4)多模态理解桥梁: CLIP 自然地架起了视觉和语言之间的桥梁,促进了多模态研究的发展。

1.5  应用场景

  1. 零样本图像分类: 如上所述,直接使用文本提示进行分类。

  2. 图像检索: 用文本搜索图像(文本->图像)或用图像搜索相关文本/图像(图像->文本/图像)。

  3. 图像生成引导: 为文本到图像生成模型(如DALL·E 2, Stable Diffusion)提供关键的文本-图像对齐监督,用于计算指导生成的损失(如CLIP guidance, CLIP score)。

  4. Few-shot 和 Transfer Learning: 在少量标注数据上微调CLIP图像编码器顶部的分类器,快速适应新任务。

  5. 图像描述(Captioning): 结合生成模型,可以利用CLIP的嵌入空间生成图像的文本描述。

  6. 视觉问答(VQA): 作为理解图像和问题语义的基础组件。

  7. 内容审核: 根据文本策略识别不符合要求的图像。

  8. 机器人学: 帮助机器人理解自然语言指令与视觉场景的关联。

1.6  局限性与挑战

  1. 计算成本高: 训练需要海量数据和巨大的计算资源(GPU/TPU集群)。

  2. 抽象和细粒度任务: 在需要非常精细区分(如不同品种的狗)、计数或理解复杂空间关系、因果关系的任务上表现可能不如专门设计的模型。

  3. 对提示词敏感: 零样本性能对提示词模板(prompt engineering)的选择比较敏感,需要仔细设计提示词。

  4. 数据偏见: 由于训练数据来自互联网,不可避免地继承了其中的社会偏见(如性别、种族、文化等),可能导致模型产生有偏见的输出。

  5. 超出分布泛化: 虽然泛化能力强,但在与训练数据分布差异极大的极端情况下,性能仍可能显著下降。

  6. 难以解释性: 像其他大型深度学习模型一样,其内部决策过程是黑盒,难以完全解释。

1.7  总结

CLIP 通过利用自然语言作为监督信号,结合海量数据和对比学习,成功地学习了一个强大的联合图像-文本表示空间。其零样本迁移能力是计算机视觉领域的一个重大突破,极大地降低了将视觉模型应用于新任务的门槛,并展示了大规模多模态预训练的惊人潜力。CLIP 不仅本身是一个强大的工具,更重要的是,它开创了一种新的范式,启发了后续大量多模态模型(如ALIGN, Florence, LiT等)的研究和发展,并成为当前生成式AI浪潮(如文生图)不可或缺的关键技术组件之一。尽管存在局限,CLIP 无疑是计算机视觉和人工智能发展历程中的一个重要里程碑。

关键论文: Learning Transferable Visual Models From Natural Language Supervision (Radford et al., OpenAI, 2021)

开源实现: OpenAI 官方提供了CLIP的代码和预训练模型(在GitHub上搜索 openai/clip),社区也有众多复现和改进版本。

二、BERT技术

需要明确的是:BERT 本身是一个纯文本的自然语言处理(NLP)模型。它在 CV 领域的“出现”和广泛应用,主要体现在两个方面:

  1. Transformer 架构的引入: BERT 的巨大成功证明了 Transformer 架构 在处理序列数据(尤其是文本)上的强大能力。这直接启发了研究者将 Transformer 应用于图像数据,催生了像 Vision Transformer 这样的纯视觉模型,彻底改变了 CV 模型的设计范式。

  2. 多模态融合: BERT 的思想和架构被扩展用于同时处理和理解图像和文本(多模态数据),产生了如 VL-BERT, VisualBERT, LXMERT 等模型,极大地推动了视觉-语言任务的发展。

因此,当我们谈论“计算机视觉里面的 BERT 技术”,核心是指 Transformer 架构及其思想在视觉任务和多模态任务中的应用。下面我们分几个关键部分详细阐述:

2.1  Transformer 架构的核心思想(源于 NLP,应用于 CV)

Transformer超详细全解!含代码实战_transformer块-CSDN博客https://blog.csdn.net/qq_54708219/article/details/148997862?spm=1001.2014.3001.5502BERT 的核心是 Transformer 编码器。其关键思想对 CV 产生革命性影响的有:

(1)自注意力机制:

是什么: 允许序列中的每个元素(如单词、图像块)根据它与序列中所有其他元素的关系来计算其表示(权重)。它学习“关注”序列中最重要的部分。

对 CV 的意义:

  • 打破局部性限制: 传统的 CNN 主要依赖局部感受野和空间不变性。自注意力可以捕获图像中任意两个区域(即使相隔很远)之间的长程依赖关系。例如,理解“车轮”属于“汽车”,即使它们位于图像两端。
  • 动态特征聚焦: 模型可以根据当前输入内容动态决定哪些区域更重要,而不是像 CNN 那样使用固定的卷积核。
  • 全局上下文理解: 为每个图像块提供整个图像的上下文信息。

(2)摒弃循环和卷积:

Transformer 完全依赖自注意力和前馈神经网络,消除了 RNN 的顺序处理瓶颈和 CNN 的局部归纳偏置。

对 CV 的意义: 提供了一种全新的、更灵活的架构范式,特别适合处理需要全局理解的任务(如图像分类、目标检测)和大规模并行计算。

(3)位置编码:

由于自注意力本身不考虑顺序,Transformer 需要显式地注入位置信息(通过正弦波或可学习的位置嵌入)。

对 CV 的意义: 在将图像输入 Transformer 之前,必须将图像分割成块(Patches)并展平为序列。位置编码至关重要,它告诉模型各个图像块在原始图像中的空间位置关系,弥补了序列化过程中丢失的二维结构信息。

2.2  纯视觉 Transformer - Vision Transformer

Vision Transformer (ViT) 介绍-CSDN博客https://blog.csdn.net/qq_54708219/article/details/149485527?spm=1001.2014.3001.5502开山之作: An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale (ViT, ICLR 2021)

核心思想: 直接将 Transformer 编码器应用于图像分类任务。

关键步骤:

  1. 图像分块: 将输入图像 H x W x C 分割成 N 个固定大小的块(如 16x16 像素)。N = (H * W) / (P * P),其中 P 是块大小。

  2. 块展平和线性投影: 将每个块展平为向量 (P*P*C),然后通过一个可学习的线性层(全连接层)投影到一个固定的维度 D(Transformer 的隐层维度)。这相当于将每个图像块映射成一个“词向量”。

  3. 添加位置编码: 为每个块添加一个可学习的位置嵌入向量(1D 或 2D)。这是保留空间信息的关键。

  4. 添加分类令牌: 在块序列的开头添加一个特殊的可学习向量 [class] token(类似于 BERT 的 [CLS] 令牌)。这个令牌在 Transformer 最后一层的输出状态将用作整个图像的表示,输入分类头进行预测。

  5. Transformer 编码器堆叠: 将处理后的块序列(包含 [class] token)输入到由多个 Transformer 编码器层堆叠而成的模型中。每个层包含多头自注意力(MSA)和多层感知机(MLP),并应用 Layer Normalization (LN) 和残差连接。

  6. MLP 分类头: 取出最后一层输出的 [class] token 向量,通过一个小型 MLP 进行分类预测。

意义:

  • 证明了 Transformer 可以作为一种强大的通用视觉骨干网络,不依赖于 CNN。

  • 大规模数据集(如 JFT-300M)上预训练后,ViT 在 ImageNet 等基准测试上达到了与或超过当时最先进 CNN(如 EfficientNet)的性能。

  • 开启了视觉 Transformer 的研究热潮,后续涌现了大量改进模型(DeiT, Swin Transformer, PVT, BEiT, MAE 等)。

2.3  多模态视觉-语言 BERT

这是 BERT 思想在 CV 领域最直接的延伸:构建能够同时理解图像和文本的单一模型,用于视觉问答(VQA)、图像描述(Captioning)、图文检索等任务。核心思路是将 BERT 的掩码语言模型(MLM)和下一句预测(NSP)任务扩展到包含视觉信息。

核心思想: 输入同时包含图像区域特征(或图像块嵌入)和文本标记(Token)嵌入。模型通过 Transformer 学习它们之间的跨模态交互。

通用架构:

  1. 视觉特征提取:

    • 早期模型:使用预训练的目标检测器(如 Faster R-CNN)提取图像中显著区域的特征(Region Features)和其位置编码(Bounding Box Features)。

    • 现代模型:越来越多地直接使用 ViT 或类似架构输出的图像块嵌入序列(Patch Embeddings)。

  2. 文本特征提取: 使用类似 BERT 的 WordPiece 分词器,得到文本标记序列。

  3. 输入表示:

    • 将图像特征(每个区域或每个块作为一个元素)和文本标记拼接成一个长序列

    • 为每个元素添加类型嵌入(Type Embedding)以区分是视觉输入还是语言输入。

    • 为每个元素添加位置嵌入(对于文本是序列位置,对于图像是空间位置或区域坐标)。

    • 在序列开头添加特殊的 [CLS] 令牌(用于整体表示)和 [SEP] 令牌(分隔图像和文本序列)。

  4. 多模态 Transformer 编码器: 将整个拼接序列输入一个标准的 Transformer 编码器(或针对多模态优化的变体)。模型在编码过程中,自注意力机制允许图像区域关注文本词,文本词也关注图像区域,从而学习跨模态的联合表示。

  5. 任务特定输出头: 根据下游任务设计输出头:

    • VQA: 通常取 [CLS] 令牌的输出向量,输入分类器预测答案。

    • 图文检索: 取 [CLS] 令牌输出作为图像-文本对的联合表示,计算匹配分数。

    • 图像描述: 可以结合解码器(如 Transformer 解码器)进行文本生成。

代表性模型:

  • VL-BERT: 统一处理视觉和语言元素,使用 Faster R-CNN 提取区域特征。

  • VisualBERT: 架构简洁,直接将区域特征序列与文本序列拼接输入 Transformer。

  • LXMERT: 包含三个编码器:语言编码器、视觉编码器、跨模态编码器,结构更复杂但性能优异。

  • UNITER: 强调使用多种预训练任务(MLM, MRFR, ITM, WRA)。

  • Oscar/VinVL: 利用检测到的物体标签词(Object Tags)作为锚点(Anchor Points)来促进图像和文本的语义对齐。

  • SimVLM: 使用前缀语言建模(PrefixLM)进行单流多模态预训练,结合了生成能力。

预训练任务(关键): 多模态 BERT 模型通常在大型图文对数据集(如 COCO, Visual Genome, Conceptual Captions)上进行预训练,常用任务包括:

  • 掩码语言建模: 随机掩码部分文本词,模型根据上下文(包括未被掩码的词和所有图像信息)预测被掩码的词。

  • 掩码区域建模: 随机掩码部分图像区域的特征(或对应的图像块),模型根据上下文(包括其他图像区域和所有文本)预测被掩码区域的特征或所属类别(类似 BEiT)。

  • 图文匹配: 输入一个图像和一个文本,模型预测该文本是否描述该图像(是正样本还是负样本)。通常取 [CLS] 令牌输出做二分类。

意义:

  • 显著提升了 VQA、图像描述、图文检索等视觉-语言理解任务的性能。

  • 证明了 Transformer 架构是处理多模态信息融合的强大框架。

  • 推动了通用多模态理解模型的发展(如后续的 CLIP、ALIGN 等对比学习模型,以及更大的多模态大模型如 Flamingo, GATO, Kosmos, GPT-4V)。

2.4  BERT/CV 技术的优势与挑战

优势:

  1. 强大的长程依赖建模: 自注意力机制能有效捕捉全局上下文。

  2. 灵活性: Transformer 架构相对统一,易于扩展和适应不同模态(图像、视频、文本、语音)。

  3. 可扩展性: 模型性能通常随着模型规模(参数量)和数据量的增加而显著提升。

  4. 多模态融合能力: 为跨模态理解和生成提供了天然的基础。

  5. 预训练-微调范式的成功: 大规模预训练模型在下游任务上微调效果极佳,减少了对特定任务大量标注数据的依赖。

挑战与局限:

  1. 计算和内存开销巨大: 自注意力的计算复杂度是序列长度的平方级 O(n²)。处理高分辨率图像(导致序列很长)时,计算和显存消耗非常大。这是视觉 Transformer 面临的主要瓶颈之一(催生了 Swin Transformer 等引入局部窗口和层级结构的模型)。

  2. 数据饥渴: ViT 和大型多模态 BERT 需要极其海量的预训练数据才能发挥最佳性能,否则可能不如在小数据上精心设计的 CNN。

  3. 缺乏空间归纳偏置: CNN 天然具有平移不变性和局部性等对图像友好的先验知识。Transformer 需要从头学习这些结构信息,位置编码的表示能力是关键。

  4. 解释性差: 如同其他大型深度学习模型,Transformer 内部的决策过程是黑盒,难以解释其关注点和推理逻辑。

  5. 对局部细节的敏感性: 一些研究表明,ViT 可能在某些需要精细局部判别或对局部扰动敏感的任务上不如 CNN。

2.5  总结

BERT 技术本身是 NLP 的里程碑,但它所基于的 Transformer 架构及其核心思想(尤其是自注意力)彻底重塑了计算机视觉

  1. 纯视觉: 催生了 Vision Transformer 及其众多变体,成为与 CNN 并驾齐驱甚至在某些方面超越 CNN 的主流视觉骨干网络。

  2. 多模态: 推动了 VL-BERT 等一系列视觉-语言 Transformer 模型的发展,极大提升了视觉-语言联合理解与推理的能力,是构建通用多模态人工智能的关键技术。

虽然面临计算开销、数据需求等挑战,但 Transformer 在 CV 领域的成功应用无疑是深度学习发展史上的一个重要转折点,它模糊了不同模态处理模型的界限,为构建更通用、更强大的感知和理解模型铺平了道路。理解 Transformer 及其在视觉和多模态中的应用,是掌握现代计算机视觉前沿技术的关键。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用户组权限及高级权限管理:从基础到企业级 sudo 提权实战

用户组权限及高级权限管理:从基础到企业级 sudo 提权实战 在 Linux/Unix 系统里,权限管理不是一个可有可无的小功能,而是系统安全的第一道防线。无论是个人电脑、企业服务器还是云环境,权限配置直接影响系统的稳定性和安全性。一、…

oracle-plsql理解和操作

1、plsql的概念PL/SQL(Procedural Language/SQL)是一种过程化语言,属于第三代语言,它与C、C、Java等语言一样关注于处理细节,可以用来实现比较复杂的业务逻辑。它允许SQL的数据操纵语言和查询语句包含在块结构(block_structured)和代码过程语…

数据库恢复技术:保障数据安全的关键

文章目录前言数据库恢复技术一、事务的基本概念二、数据库恢复概述三、故障类型与恢复策略1. 故障分类2. 恢复策略与步骤四、恢复实现技术1. 数据转储(备份)2. 日志文件(Logging)3. 检查点技术(Checkpoint)…

C++归并排序

1 算法核心思想归并排序是一种高效的排序方式,需要用到递归来实现,我们先来看一下动图演示:算法核心思想如下:1.将数组尽量平均分成两段。2.将这两段都变得有序(使用递归实现)。3.将两段合并。2 代码实现首…

机器学习算法篇(四)决策树算法

目录 一、决策树概述 1.1 概述 1.2 基本数学原理 二、熵原理形象解读与计算 2.1 熵的概念 2.2 熵的计算示例 2.3 条件熵 三、决策树构造实例 3.1 数据集示例 3.2 计算信息增益 3.3 递归构建决策树 四、信息增益和信息增益率 4.1 信息增益的缺陷 4.2 信息增益率 4…

React 状态管理入门:从 useState 到复杂状态逻辑

作为前端新手,在学习 React 时,useState 往往是我们接触的第一个 Hook。很多人最初会觉得它只能处理简单的计数器之类的状态,但实际上,useState 配合其他 Hook(尤其是 useEffect)可以轻松管理各种复杂状态。…

DirectX 修复工具检测 C++ 异常的七大解决方法

在使用电脑的过程中,尤其是在进行与图形处理、游戏运行或多媒体应用相关的操作时,我们可能会用到 DirectX 修复工具。然而,有时这个工具在运行时会检测到 C 异常,这无疑给我们带来了困扰。那么,当遇到这种情况时&#…

0.2. RAII原则:嵌入式C++的基石 (Resource Acquisition Is Initialization)

在C语言的世界里,我们背负着一项沉重而危险的职责:手动管理所有资源。无论是 malloc 后的 free,fopen 后的 fclose,还是获取互斥锁后的释放,程序员都必须在代码的每一个可能的退出路径上,确保资源被正确释放…

Uniworld-V1、X-Omni论文解读

目录 一、Uniworld-V1 1、概述 2、架构 3、训练过程 4、实验 二、X-Omni 1、概述 2、方法 一、Uniworld-V1 1、概述 动机:当前统一模型虽然可以实现图文理解和文本生成任务,但是难以实现图像感知(检测/分割)与图像操控&am…

安全常见漏洞

一、OWASP Top 101.注入漏洞(1)SQL 注入原理:通过用户输入注入恶意SQL代码示例:sql-- 恶意输入OR 11 -- 可能被注入的SQL SELECT * FROM users WHERE username OR 11 AND password (2)防护措施:使用参数化查询使用ORM框架实施最小权限原则…

管网遥测终端机——管网安全与效率的守护者

管网遥测终端机是一款智能化的管网监测与管理设备,它采用先进的物联网技术和自动化控制技术,能够全天候不间断地对管网系统进行实时监测。该设备通过集成高精度传感器、稳定可靠的通信模块和强大的数据处理单元,构建了一套完整的管网运行数据…

AIIData商业版v1.4.1版本发布会

🔥🔥 AllData大数据产品是可定义数据中台,以数据平台为底座,以数据中台为桥梁,以机器学习平台为中层框架,以大模型应用为上游产品,提供全链路数字化解决方案。 ✨杭州奥零数据科技官网&#xff…

【Layui】调整 Layui 整体样式大小的方法

Layui 的默认样式确实偏大,但你可以通过以下几种方法来调整整体大小: 使用缩放方法(最简单) 在 HTML 的 中添加以下 CSS: <style> html {font-size: 14px; /* 调整基础字体大小 */transform: scale(

MySQL连接数调优实战:查看与配置

MySQL HikariCP 连接数调优实战&#xff1a;如何查看用量 & 合理配置 max_connections 在做 Java 后端开发时&#xff0c;我们经常会遇到 MySQL 连接数配置问题&#xff0c;比如&#xff1a; max_connections 配多少合适&#xff1f;HikariCP 的 maximum-pool-size 要不要…

周志华院士西瓜书实战(一)线性规划+多项式回归+逻辑回归+决策树

目录 1. 线性规划 2. 多项式回归 3. 逻辑回归手写数字 4. Pytorch MNIST 5. 决策树 1. 线性规划 先生成 Y1.5X0.2ε 的&#xff08;X,Y&#xff09;训练数据 两个长度为30 import numpy as np import matplotlib.pyplot as plt def true_fun(X): # 这是我们设定的真实…

端到端供应链优化案例研究:需求预测 + 库存优化(十二)

本篇文章聚焦于供应链中的库存优化&#xff0c;技术亮点在于通过机器学习改进预测精度&#xff0c;成功将预测误差降低25%&#xff0c;并在六个月内实现库存过剩减少40%。该方法适用于需要优化库存和提升服务水平的商业场景&#xff0c;特别是制药行业&#xff0c;帮助企业在降…

Harbor 企业级实战:单机快速上手 × 高可用架构搭建 × HTTPS安全加固

文章目录一、建立项目二、命令行登录harbor&#xff08;配置在客户端即可&#xff09;三、给本地镜像打标签并上传到harbor四、下载harbor的镜像五、创建自动打标签上传镜像脚本六、修改harbor配置七、实现harbor高可用7.1 安装第二台harbor主机7.2 新建目标&#xff0c;输入第…

进程管理、系统高负载、cpu超过800%等实战问题处理

进程管理与高负载实战&#xff1a;CPU 飙到 800% 时的分析与处理 在生产环境中&#xff0c;系统高负载和 CPU 异常占用是运维工程师最常面对的场景之一。 这篇文章将从进程管理基础讲起&#xff0c;到高负载问题定位&#xff0c;再到CPU 占用 800% 的实战处理&#xff0c;帮助你…

控制建模matlab练习12:线性状态反馈控制器-①系统建模

此练习&#xff0c;主要是使用状态空间方程来设计控制器的方法和思路&#xff1a; ①系统建模&#xff1b; ②系统的能控性&#xff1b; ③极点配置&#xff1b; ④最优化控制LQR&#xff1b; ⑤轨迹追踪&#xff1b; 以下是&#xff0c;第①部分&#xff1a;系统建模&#xff…

bytearray和bytes

bytearray和bytes不一样的地方在于&#xff0c;bytearray是可变的。 str 人生苦短&#xff0c;我用Python! bytes bytearray(str.encode()) bytes bytearray(b\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!) str bytes.d…