当前位置: 首页 > news >正文

Faster R-CNN:端到端的目标检测网络

本文回顾了由微软研究人员开发的 Faster R-CNN 模型。Faster R-CNN 是一种用于物体检测的深度卷积网络,在用户看来,它是一个单一的、端到端的统一网络。该网络可以准确快速地预测不同物体的位置。为了真正理解 Faster R-CNN,我们还必须快速概述一下它所进化的网络,即 R-CNN 和 Fast R-CNN。

本文首先快速回顾了基于区域的 CNN (R-CNN),这是首次尝试构建使用预训练 CNN 提取特征的物体检测模型。接下来,快速回顾了 Fast R-CNN,它比 R-CNN 更快,但不幸的是它忽略了区域提案的生成方式。Faster R-CNN 后来解决了这个问题,它构建了一个区域提案网络,可以生成区域提案,并将其输入到检测模型 (Fast R-CNN) 以检查物体。

NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割 

1、对象检测流程概述 

传统的对象检测技术遵循下图给出的 3 个主要步骤。第一步涉及生成多个区域提案。这些区域提案是可能包含对象的候选区域。这些区域的数量通常为几千个,例如 2,000 个或更多。一些生成区域提案的算法的示例是选择性搜索和 EdgeBox。

从每个区域提案中,使用各种图像描述符(例如方向梯度直方图 (HOG))提取固定长度的特征向量。该特征向量对于对象检测器的成功至关重要。即使对象由于某些变换(例如缩放或平移)而发生变化,该向量也应该充分描述对象。

然后使用特征向量将每个区域提案分配给背景类或对象类之一。随着类别数量的增加,构建可以区分所有这些对象的模型的复杂性也会增加。用于对区域提案进行分类的流行模型之一是支持向量机 (SVM)。

这个快速概述足以理解基于区域的卷积神经网络 (R-CNN) 的基础知识。

2、R-CNN 快速概览

2014 年,加州大学伯克利分校的一组研究人员开发了一种名为 R-CNN(基于区域的卷积神经网络的缩写)的深度卷积网络,它可以检测图像中的 80 种不同类型的物体。

与上图所示的物体检测技术的通用流程相比,R-CNN 的主要贡献只是基于卷积神经网络 (CNN) 提取特征。除此之外,一切都与通用物体检测流程相似。下图显示了 R-CNN 模型的工作原理。

R-CNN 由 3 个主要模块组成:

  • 第一个模块使用选择性搜索算法生成 2,000 个区域提案。
  • 在调整为固定的预定义大小后,第二个模块从每个区域提案中提取长度为 4,096 的特征向量。
  • 第三个模块使用预训练的 SVM 算法将区域提案分类为背景或对象类之一。

R-CNN 模型有一些缺点:

  • 它是一个多阶段模型,其中每个阶段都是一个独立的组件。因此,它无法进行端到端训练。
  • 它将从预训练的 CNN 中提取的特征缓存在磁盘上,以便稍后训练 SVM。这需要数百 GB 的存储空间。
  • R-CNN 依赖于选择性搜索算法来生成区域提案,这需要大量时间。此外,该算法无法针对检测问题进行定制。
  • 每个区域提案都独立地输入到 CNN 进行特征提取。这使得无法实时运行 R-CNN。

作为 R-CNN 模型的扩展,提出了 Fast R-CNN 模型以克服一些局限性。下一节将简要概述 Fast R-CNN。

3、Fast R-CNN 快速概览

Fast R-CNN是一种由 Facebook AI 研究员、前微软研究员 Ross Girshick 独自开发的物体检测器。Fast R-CNN 克服了 R-CNN 中的几个问题。顾名思义,Fast R-CNN 相对于 R-CNN 的一个优势是速度。

以下是Fast R-CNN中主要贡献的摘要:

  • 提出了一个名为 ROI Pooling 的新层,可从同一图像中的所有提案(即 ROI)中提取等长特征向量。
  • 与具有多个阶段(区域提案生成、特征提取和使用 SVM 进行分类)的 R-CNN 相比,Faster R-CNN 构建的网络只有一个阶段。
  • Faster R-CNN 在所有提案(即 ROI)之间共享计算(即卷积层计算),而不是独立进行每个提案的计算。这是通过使用新的 ROI Pooling 层来实现的,这使得 Fast R-CNN 比 R-CNN 更快。
  • Fast R-CNN 不会缓存提取的特征,因此与需要数百 GB 的 R-CNN 相比,它不需要那么多磁盘存储。
  • Fast R-CNN 比 R-CNN 更准确。

Fast R-CNN 的一般架构如下所示。与 R-CNN 中的 3 个阶段相比,该模型由一个阶段组成。它只接受图像作为输入并返回检测到的对象的类概率和边界框。

最后一个卷积层的特征图被馈送到 ROI Pooling 层。原因是从每个区域提案中提取固定长度的特征向量。下面的 GIF 显示了 ROI Pooling 层的工作原理。

简而言之,ROI Pooling 层的工作原理是将每个区域提案拆分成一个单元格网格。最大池化操作应用于网格中的每个单元格以返回单个值。所有单元格的所有值都代表特征向量。如果网格大小为 2×2,则特征向量长度为​​ 4。

有关 ROI Pooling 层的更多信息,请查看这篇文章。

然后,使用 ROI Pooling 提取的特征向量被传递到一些 FC 层。最后一个 FC 层的输出分为 2 个分支:

  • Softmax 层用于预测类别得分
  • FC 层用于预测检测到的对象的边界框

在 R-CNN 中,每个区域提案都独立于其他区域提案输入到模型中。这意味着如果处理单个区域需要 S 秒,则 N 个区域需要 S*N 秒。Fast R-CNN 比 R-CNN 更快,因为它在多个提案之间共享计算。

R-CNN 从每幅图像中采样单个 ROI,而 Fast R-CNN 则从同一幅图像中采样多个 ROI。例如,R-CNN 从 128 张不同的图像中选择一批 128 个区域。因此,总处理时间为 128*S 秒。

对于 Faster R-CNN,可以从仅 2 张图像(每幅图像 64 个区域)中选择一批 128 个区域。当从同一幅图像中采样区域时,它们的卷积层计算是共享的,这减少了时间。因此,处理时间降至 2*S。但是,从同一幅图像中采样多个区域会降低性能,因为所有区域都是相关的。

尽管 Fast R-CNN 模型具有优势,但它有一个关键的缺点,因为它依赖于耗时的选择性搜索算法来生成区域提议。选择性搜索方法无法针对特定的对象检测任务进行定制。因此,它可能不足以准确检测数据集中的所有目标对象。

在下一节中,我们将介绍 Faster R-CNN。Faster R-CNN 构建了一个用于生成区域提议的网络。

4、Faster R-CNN

Faster R-CNN 是 Fast R-CNN 的扩展。顾名思义,Faster R-CNN 比 Fast R-CNN 更快,这要归功于区域提议网络 (RPN)。

本文的主要贡献是:

  • 提出区域提议网络 (RPN),这是一个完全卷积网络,可生成具有各种尺度和长宽比的提议。RPN 实现了注意神经网络的术语,以告诉对象检测 (Fast R-CNN) 在哪里查看。
  • 本文没有使用图像金字塔(即图像的多个实例但尺度不同)或过滤器金字塔(即具有不同大小的多个过滤器),而是引入了锚框的概念。锚框是具有特定尺度和长宽比的参考框。有了多个参考锚框,单个区域就会存在多个尺度和长宽比。这可以被认为是参考锚框的金字塔。然后将每个区域映射到每个参考锚框,从而检测不同尺度和长宽比的对象。
  • 卷积计算由 RPN 和 Fast R-CNN 共享。这减少了计算时间。

下图显示了 Faster R-CNN 的架构。它由 2 个模块组成:

  • RPN:用于生成区域提议。
  • Fast R-CNN:用于检测提议区域中的对象

RPN 模块负责生成区域提议。它应用了神经网络中的注意力概念,因此它指导 Fast R-CNN 检测模块在图像中寻找对象的位置。

请注意,卷积层(例如计算)是如何在 RPN 和 Fast R-CNN 模块之间共享的。

Faster R-CNN 的工作原理如下:

  • RPN 生成区域提案。
  • 对于图像中的所有区域提案,使用 ROI Pooling 层从每个区域中提取固定长度的特征向量。
  • 然后使用 Fast R-CNN 对提取的特征向量进行分类。
  • 除了返回边界框外,还返回检测到的对象的类别分数。

5、区域提议网络 (RPN)

R-CNN 和 Fast R-CNN 模型依赖于选择性搜索算法来生成区域提议。每个提议都被输入到预先训练的 CNN 中进行分类。本文提出了一种称为区域提议网络 (RPN) 的网络,它可以生成区域提议。这有一些优点:

  • 现在使用可以根据检测任务进行训练和定制的网络来生成区域提议。
  • 由于提议是使用网络生成的,因此可以对其进行端到端训练以针对检测任务进行定制。因此,与选择性搜索和 EdgeBoxes 等通用方法相比,它可以生成更好的区域提议。
  • RPN 使用与 Fast R-CNN 检测网络中使用的相同卷积层来处理图像。因此,与选择性搜索等算法相比,RPN 不需要额外的时间来生成提议。
    由于共享相同的卷积层,RPN 和 Fast R-CNN 可以合并/统一为单个网络。因此,训练只需进行一次。

RPN 处理与 Fast R-CNN 共享的最后一个卷积层返回的输出特征图。如下图所示。基于大小为 nxn 的矩形窗口,滑动窗口穿过特征图。对​​于每个窗口,都会生成多个候选区域提案。这些提案不是最终提案,因为它们将根据其“对象性得分”(如下所述)进行筛选。

6、锚点

根据下图,最后一个共享卷积层的特征图通过大小为 nxn 的矩形滑动窗口,其中对于 VGG-16 网络,n=3。对于每个窗口,生成 K 个区域提案。每个提案都根据称为锚点框的参考框进行参数化。锚点框的 2 个参数是:

  • 缩放比例
  • 长宽比

通常,有 3 个比例和 3 个长宽比,因此总共有 K=9 个锚点框。但 K 可能不同于 9。换句话说,每个区域提案都会生成 K 个区域,其中 K 个区域中的每一个在比例或长宽比上都有所不同。下图显示了一些锚点变化。

使用参考锚点(即锚框),使用单一尺度的单一图像,同时能够提供尺度不变的物体检测器,因为锚点存在于不同的尺度上。这避免了使用多个图像或过滤器。多尺度锚点是跨 RPN 和 Fast R-CNN 检测网络共享特征的关键。

对于每个 nxn 区域提议,提取一个特征向量(ZF 网络的长度为 256,VGG-16 网络的长度为 512)。然后,将该向量馈送到 2 个兄弟全连接层:

  • 第一个 FC 层名为 cls,表示一个二元分类器,为每个区域提议生成对象性分数(即该区域是否包含对象,或是否是背景的一部分)。
  • 第二个 FC 层名为 reg,它返回一个定义区域边界框的 4-D 向量。

第一个 FC 层(即二元分类器)有 2 个输出。第一个用于将该区域分类为背景,第二个用于将该区域分类为对象。下一节将讨论如何将对象性分数分配给每个锚点以及如何使用它来生成分类标签。

7、对象性得分

cls 层为每个区域提案输出一个包含 2 个元素的向量。如果第一个元素为 1,第二个元素为 0,则区域提案被归类为背景。如果第二个元素为 1,第一个元素为 0,则该区域表示对象。

为了训练 RPN,每个锚点都会根据交并比 (IoU) 获得正或负的对象性得分。

IoU 是锚点框与真实框的交集面积与 2 个框的并集面积之比。 IoU 的范围从 0.0 到 1.0。当没有交集时,IoU 为 0.0。随着 2 个框彼此靠近,IoU 会增加,直到达到 1.0(当 2 个框 100% 相同时)。

接下来的 4 个条件使用 IoU 来确定为锚点分配正或负的客观性得分:

  • 与任何真实框的 IoU 重叠度高于 0.7 的锚点将被赋予正的客观性标签。
  • 如果没有 IoU 重叠度高于 0.7 的锚点,则为与真实框具有最高 IoU 重叠度的锚点分配正标签。
  • 当所有真实框的 IoU 重叠度小于 0.3 时,将负的客观性得分分配给非正的锚点
  • 负的客观性得分意味着锚点被归类为背景。

既不是正的也不是负的锚点对训练目标没有贡献。

我第一次阅读这篇论文时,对第二和第三个条件感到困惑。所以,让我们进一步澄清一下。

假设有 3 个区域提案与 3 个锚点相关联,它们与 3 个真实框的 IoU 分数如下所示。因为有一个锚点的 IoU 分数为 0.9,高于 0.7,所以它与该真实框的 IoU 分数为正,与所有其他框的 IoU 分数为负。

0.9, 0.55, 0.1

这是对锚点进行分类的结果:

positive, negative, negative

第二个条件意味着当没有锚点的 IoU 重叠分数高于 0.7 时,则搜索具有最高 IoU 的锚点并为其分配正的客体性分数。预计最大 IoU 分数小于或等于 0.7,但令人困惑的是,论文中没有提到 IoU 分数的最小值。

预计最小值应为 0.5。因此,如果锚点框的 IoU 分数大于 0.5 但小于或等于 0.7,则为其分配正的客体性分数。

假设锚点的 IoU 分数如下所示。因为最高的 IoU 分数是第二个,其值为 0.55,所以它符合第二个条件。因此,它被分配了一个正的 objectness 分数。

0.2, 0.55, 0.1

以下是对锚点进行分类的结果:

negative, positive, negative

第三个条件规定,当一个锚点与所有真实框的 IoU 分数小于 0.3 时,则为该锚点分配一个负的 objectness 分数。对于接下来的 IoU 分数,由于所有 IoU 分数都小于 0.3,因此在 3 种情况下为该锚点分配一个负分数。

0.2, 0.25, 0.1

以下是对锚点进行分类的结果:

negative, negative, negative

根据第四个条件,当一个锚点的 IoU 分数大于或等于 0.3 但小于或等于 0.5 时,它既不被分类为正也不被分类为负。此锚点不用于训练分类器。

对于以下 IoU 分数,锚点未分配任何标签,因为所有分数都在 0.3 和 0.5 之间(含)。

0.4, 0.43, 0.45

下一个等式总结了这 4 个条件。

请注意,第一个条件(0.7 < IoU)通常足以将一个锚点标记为正(即包含一个对象),但作者更喜欢提及第二个条件(0.5 < IoU <= 0.7),因为在极少数情况下不存在 IoU 为 0.7 的区域。

8、RPN 和 Fast R-CNN 之间的特征共享

Fast R-CNN 架构中的 2 个模块,即 RPN 和 Fast R-CNN,是独立的网络。它们每个都可以单独训练。相比之下,对于 Faster R-CNN,可以构建一个统一的网络,其中 RPN 和 Fast R-CNN 可以同时训练。

核心思想是 RPN 和 Fast R-CNN 共享相同的卷积层。这些层仅存在一次,但在 2 个网络中使用。可以称之为层共享或特征共享。请记住,锚点使得 Faster R-CNN 中的 2 个模块之间可以共享特征/层。

9、训练 Faster R-CNN

Faster R-CNN 论文提到了在共享卷积层的同时训练 RPN 和 Fast R-CNN 的 3 种不同方法:

  • 交替训练
  • 近似联合训练
  • 非近似联合训练

9.1 交替训练

第一种方法称为交替训练,其中首先训练 RPN 以生成区域提案。共享卷积层的权重基于 ImageNet 上的预训练模型进行初始化。RPN 的其他权重随机初始化。

在 RPN 生成区域提案的框后,RPN 和共享卷积层的权重都会进行调整。

RPN 生成的提案用于训练 Fast R-CNN 模块。在这种情况下,共享卷积层的权重使用 RPN 调整后的权重进行初始化。其他 Fast R-CNN 权重随机初始化。在训练 Fast R-CNN 时,Fast R-CNN 和共享层的权重都会进行调整。共享层中调整后的权重再次用于训练 RPN,并重复该过程。

根据论文,交替训练是训练这两个模块的首选方式,并应用于所有实验。

9.2 近似联合训练

第二种方法称为近似联合训练,其中 RPN 和 Fast R-CNN 都被视为单个网络,而不是两个单独的模块。在这种情况下,区域提案由 RPN 生成。

不更新 RPN 或共享层的权重,提案直接输入 Fast R-CNN,后者检测对象的位置。只有在 Fast R-CNN 产生输出后,Faster R-CNN 中的权重才会调整。

由于在生成区域提案后不更新 RPN 和共享层的权重,因此会忽略相对于区域提案的权重梯度。与第一种方法相比,这会降低该方法的准确性(即使结果接近)。另一方面,训练时间减少了约 25-50%。

9.3 非近似联合训练

在近似联合训练方法中,使用 RoI Warping 层来计算相对于建议边界框的权重梯度。

9.4 缺点

Faster R-CNN 的一个缺点是,RPN 的训练方式是,所有 256 个小批量的锚点都是从一张图像中提取的。由于一张图像中的所有样本可能相关(即它们的特征相似),因此网络可能需要很长时间才能达到收敛。

10、Mask R-CNN

作为 Faster R-CNN 的扩展,Mask R-CNN 模型包含另一个分支,该分支为每个检测到的对象返回一个掩码。

11、结束语

本文回顾了一种用于对象检测的深度卷积神经网络 Faster R-CNN,它可以准确地检测和分类图像中的对象。

本文首先回顾了任何对象检测模型的通用步骤。然后,它快速回顾了 R-CNN 和 Fast R-CNN 模型的工作原理,以便了解 Faster R-CNN 正在克服哪些挑战。

Faster R-CNN 是一个端到端训练的单阶段模型。它使用一种新颖的区域提议网络 (RPN) 来生成区域提议,与传统算法(如选择性搜索)相比,这节省了时间。它使用 ROI 池化层从每个区域提议中提取固定长度的特征向量。

我们看到的 Faster R-CNN 的一个缺点是,对于 RPN,小批量中的所有锚点都是从单个图像中提取的。由于来自单个图像的所有样本可能存在相关性(即它们的特征相似),因此网络可能需要很长时间才能达到收敛。

话虽如此,Faster R-CNN 是一种最先进的物体检测模型。此后,Mask R-CNN 已基于 Faster R-CNN 构建,以返回每个检测到的物体的物体掩码。


原文链接:Faster R-CNN快速指南 - BimAnt

相关文章:

Faster R-CNN:端到端的目标检测网络

本文回顾了由微软研究人员开发的 Faster R-CNN 模型。Faster R-CNN 是一种用于物体检测的深度卷积网络&#xff0c;在用户看来&#xff0c;它是一个单一的、端到端的统一网络。该网络可以准确快速地预测不同物体的位置。为了真正理解 Faster R-CNN&#xff0c;我们还必须快速概…...

如何给 MySQL 表和列授予权限?(官方版)

目录 授予表级别权限 授予列级别权限 如何给MySQL表和列授予权限是MySQL数据操作中非常重要的步骤&#xff0c;也是企业级使用MySQL数据库的起步点&#xff0c;以下分别参照官方教程整理的MySQL数据库的权限操作。 以下的语句可以直接使用MySQL的命令行进行操作&#xff08;如何…...

攻防世界testre做法(考点:base58)

在做这道题目之前&#xff0c;我们先来简单了解一下base64加密和base58加密&#xff0c;先来说一些预备知识&#xff0c;bit为1个位&#xff0c;即一个0或1&#xff0c;八个位组成一个字节&#xff0c;即八个二进制数。 base64编码原理&#xff1a;1&#xff0c;在使用base64加…...

计算机视觉与模式识别实验1-1 图像的直方图平衡

文章目录 &#x1f9e1;&#x1f9e1;实验流程&#x1f9e1;&#x1f9e1;1.读入图像‘rice.png’&#xff0c;在一个窗口中显示灰度级n64&#xff0c;128和256的图像直方图。2.调解图像灰度范围&#xff0c;观察变换后的图像及其直方图的变化。3.分别对图像‘pout.tif’和‘ti…...

【C++课程学习】:C++入门(函数重载)

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;C课程学习 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 &#x1f308;函数重载&#xff1a; &#x1f349;1.参数个数不同&#xff1a; &#x1f349;2.参数…...

skywalking介绍及搭建

链路追踪框架比对&#xff1a; skywalking安装部署&#xff1a; 下载地址&#xff1a;Downloads | Apache SkyWalking 配置微服务与skywalking整合&#xff1a; copy agent/optional-plugins/apm-spring-cloud-getway-xx.jar到plugins&#xff0c;然后重启skywalking 监控界面…...

分析示例 | Simufact焊接工艺仿真变形精确预测汽车结构

导语 焊接是汽车制造过程中一个关键环节&#xff0c;白车身、发动机、底盘和变速箱等都离不开焊接工艺的应用&#xff0c;主要涉及气保焊、电阻点焊、激光焊、电子束焊等多种焊接工艺。由于汽车车型众多、成形结构复杂、汽车制造质量、效率、成本等方面的综合要求。如何高效、…...

模式识别选择题

影响K-均值聚类算法效果的主要因素之一是什么&#xff1f; A. 初始聚类中心的选取 B. 样本输入顺序 C. 模式相似性测度 D. 分类准则 答案&#xff1a;A支持向量机&#xff08;SVM&#xff09;在处理非线性问题时&#xff0c;通常使用什么方法&#xff1f; A. 引入核函数 B. 增加…...

【Java基础】线程方法

start()&#xff1a;启动线程&#xff0c;使线程进入就绪状态。 run()&#xff1a;线程执行的代码逻辑&#xff0c;需要重写该方法。 停止线程 void interrupt() 中断线程&#xff0c;让它重新去争抢cpu 如果目标线程长时间等待&#xff0c;则应该使用interrupt方法来中断等待…...

C++之动态数组

C给我们提供了一个叫Vector的类&#xff0c;这个Vector在std命名空间中。这个Vector有点像一个集合&#xff0c;一个不强制其实际元素具有唯一性的集合&#xff0c;和数组一样&#xff0c;但是和C普通的数组又不太一样&#xff0c;和标准的数组不同当你创建Vector时&#xff0c…...

使用 image-combiner 开源项目实现对海报图片的生成

1&#xff1a;gitee 项目地址 image-combiner: ImageCombiner是一个专门用于Java服务端图片合成的工具&#xff0c;没有很复杂的功能&#xff0c;简单实用&#xff0c;从实际业务场景出发&#xff0c;提供简单的接口&#xff0c;几行代码即可实现图片拼合&#xff08;当然用于…...

【缓存】框架层常见问题和对策

缓存是为了加快读写速度&#xff0c;再了解redis这类框架层的缓存应用之前&#xff0c;我们不妨先思考下操作系统层面的缓存解决方案&#xff0c;这样有助于我们更深的理解缓存&#xff0c;哪些是系统层面的&#xff0c;哪些是服务层面。 以下是一些常见的缓存问题及其解决方案…...

【FAS】《CN103106397B》

原文 CN103106397B-基于亮瞳效应的人脸活体检测方法-授权-2013.01.19 华南理工大学 方法 / 点评 核心方法用的是传统的形态学和模板匹配&#xff0c;亮点是双红外发射器做差分 差分&#xff1a;所述FPGA芯片控制两组红外光源&#xff08;一近一远&#xff09;交替亮灭&…...

3D按F3为什么显示不出模型?---模大狮模型网

对于3D建模软件的用户来说&#xff0c;按下F3键通常是用来显示或隐藏模型的功能之一。然而&#xff0c;有时当按下F3键时&#xff0c;却无法正确显示模型&#xff0c;这可能会让用户感到困惑。模大狮将探讨这种情况发生的可能原因以及解决方法&#xff0c;帮助设计师们更好地理…...

C++设计模式——Adapter适配器模式

一&#xff0c;适配器模式简介 适配器模式是一种结构型设计模式&#xff0c;用于将已有接口转换为调用者所期望的另一种接口。 适配器模式让特定的API接口可以适配多种场景。例如&#xff0c;现有一个名为"Reader()"的API接口只能解析txt格式的文件&#xff0c;给这…...

Python文本处理利器:jieba库全解析

文章目录 Python文本处理利器&#xff1a;jieba库全解析第一部分&#xff1a;背景和功能介绍第二部分&#xff1a;库的概述第三部分&#xff1a;安装方法第四部分&#xff1a;常用库函数介绍1. 精确模式分词2. 全模式分词3. 搜索引擎模式分词4. 添加自定义词典5. 关键词提取 第…...

【C/C++】C语言如何实现类似C++的智能指针?

在C中&#xff0c;智能指针是为了自动化资源管理而引入的工具。比如std::unique_ptr和std::shared_ptr等&#xff0c;它们管理着所持有对象的生命周期&#xff0c;可以在智能指针被销毁时自动释放其所持有的资源。在C语言中&#xff0c;虽然没有直接的智能指针概念&#xff0c;…...

九大微服务监控工具详解

Prometheus Prometheus 是一个开源的系统监控、和报警工具包&#xff0c;Prometheus 被设计用来监控“微服务架构”。 主要解决&#xff1a; 监控和告警&#xff1a;Prometheus 可以对系统、和应用程序进行实时监控&#xff0c;并在出现问题时发送告警&#xff1b;数据收集和…...

java aliyun oss上传和下载工具类

java aliyun oss上传和下载工具类 依赖 <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.8.0</version></dependency>工具类 import com.alibaba.fastjson.JSON; import c…...

P7 品牌管理

逆向生成页面 新增菜单—商品系统的品牌管理 —product/brand 在代码生成器得到的文件中&#xff0c; main-resources-src-views-modules-product brand.vue、brand-add-or-update.vue放到category.vue同级vue文件有新增、删除按钮&#xff0c;但页面未显示&#xff0c;是因…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全&#xff0c;让Comfyui导出的图像不包含工作流信息&#xff0c;导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo&#xff08;推荐&#xff09;​​ 在 save_images 方法中&#xff0c;​​删除或注释掉所有与 metadata …...