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

目标检测篇---faster R-CNN

目标检测系列文章

第一章 R-CNN
第二篇 Fast R-CNN


目录

  • 目标检测系列文章
  • 📄 论文标题
  • 🧠 论文逻辑梳理
      • 1. 引言部分梳理 (动机与思想)
  • 📝 三句话总结
  • 🔍 方法逻辑梳理
  • 🚀 关键创新点
  • 🔗 方法流程图
  • 关键疑问解答
    • Q1、 Anchor 的来源、生成与训练中的作用?
    • Q2 Anchor 尺寸大于感受野如何工作?


📄 论文标题

Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
作者:Shaoqing Ren, Kaiming He, Ross Girshick(fast R-CNN作者), and Jian Sun
团队:Microsoft Research


🧠 论文逻辑梳理

1. 引言部分梳理 (动机与思想)

AspectDescription (Motivation / Core Idea)
问题背景 (Problem)Fast R-CNN 已经很快了,但是它依赖的外部区域提议算法(如 Selective Search)运行在 CPU 上,速度很慢,成为了整个目标检测系统的性能瓶颈。而且,区域提议的计算与下游的检测网络是分离的,没有共享计算。
目标 (Goal)创建一个完全基于深度学习的、端到端的目标检测系统。具体来说,要设计一个内部的区域提议网络,使其能够与检测网络共享卷积特征,从而消除外部区域提议的瓶颈,实现高速且统一的检测框架。
核心思想 (Core Idea)Faster R-CNN: 提出 区域提议网络 (Region Proposal Network, RPN)RPN 是一个小型全卷积网络,它直接作用于主干网络(如 VGG/ResNet)输出的共享卷积特征图上,利用 Anchors 高效地预测出物体边界框提议及其“物体性”得分。这些提议随后被送入 Fast R-CNN 检测网络(使用同一份共享特征图)进行精确分类和位置修正。
核心假设 (Hypothesis)通过让 RPN 与检测网络共享底层的卷积计算,并将区域提议也用神经网络实现,可以构建一个统一、高效的框架,显著提升目标检测的速度(达到近实时),同时保持甚至提高检测精度。

📝 三句话总结

方面内容
❓发现的问题
  • 速度瓶颈: Fast R-CNN 检测网络本身很快 (GPU),但其依赖的外部区域提议算法 (如 Selective Search) 通常在 CPU 上运行,速度极慢 (可能耗时数秒),成为整个目标检测系统的绝对性能瓶颈
  • 计算分离与冗余: 区域提议的计算过程 (基于底层图像特征) 与下游检测网络使用的深度卷积特征完全分离的,未能共享计算,存在明显的计算冗余效率低下问题 (“missed opportunity for sharing computation”)。
  • 非端到端系统: 由于区域提议是外部独立的步骤,整个系统并非完全的端到端学习框架。
💡提出的方法 (R-CNN)
  • 解决区域提议瓶颈: 提出 区域提议网络 (Region Proposal Network, RPN)。这是一个内部的、可学习的、轻量级全卷积网络 (FCN),直接作用于主干网络输出的特征图,用于高效生成候选区域。
  • 解决计算分离: RPN 被设计为与 Fast R-CNN 检测头共享同一个主干卷积网络 (Backbone) 输出的特征图。这意味着图像最耗时的深度特征提取只需进行一次,其结果被 RPN (用于提议) 和检测头 (用于分类/回归) 共同使用,极大提高了计算效率。
  • 整合系统: 将区域提议生成整合到统一的深度神经网络框架中,使得整个检测流程更加接近端到端 (除 NMS 等后处理外)。
  • 确立了现代两阶段目标检测器(先提议、后检测)的基本范式和标杆,对后续研究产生了极其深远的影响。
⚡该方案的局限性/可改进的点
  • 训练复杂性: 原始论文提出的 4 步交替训练 (4-Step Alternating Training) 策略较为复杂、繁琐且难以完美优化(尽管后续研究提出了近似联合训练和完全端到端联合训练的方法)。
  • 超参数敏感: 模型性能,特别是 RPN 的性能,对 Anchor 的配置(如尺度 Scales, 长宽比 Aspect Ratios, 数量 k)比较敏感,这些超参数需要根据数据集和主干网络进行仔细设计和调优。
  • 两阶段本质: 尽管网络结构统一,其内部工作逻辑仍然是先由 RPN 生成 proposals,再由 Fast R-CNN 检测头对这些 proposals 进行分类和精修的两阶段 (Two-Stage) 过程,这可能在速度上不如最优化的单阶段 (One-Stage) 方法。
  • RoI Pooling 缺陷: 使用的 RoI Pooling 层存在坐标量化(取整)操作,导致 RoI 特征与其在原图对应的区域之间存在轻微的空间不对齐 (misalignment) 问题,可能影响对小物体或需要精确定位的任务(这个问题在后续的 Mask R-CNN 中由 RoI Align 层改进)。

🔍 方法逻辑梳理

Faster R-CNN 是一个高度整合的统一网络。

  • 模型输入:

    • 一张 RGB 图像。(不再需要外部 RoIs)
  • 处理流程 (Unified Network):

    1. 共享主干网络 (Shared Conv Backbone - Encoder 角色):
      • 输入: 整张图像。
      • 处理: 图像通过一系列卷积和池化层(如 VGG, ResNetconv 部分)。
      • 输出: 整张图像的共享卷积特征图 (Shared Feature Map)。
    2. 区域提议网络 (Region Proposal Network - RPN - 特殊模块):
      • 输入: 来自步骤 1 的共享特征图
      • 处理:
        • 在特征图上滑动一个小型的卷积网络(如 3x3 卷积)。
        • 在滑窗的每个位置,考虑 k 个预定义的 Anchors (不同尺度面积(128²、256²、512²)、长宽比(0.5、1、2))。
        • 通过两个并行的 1x1 卷积(分类头和回归头)对每个 Anchor 进行预测:
          • 预测 2k 个物体性得分 (Objectness Scores: object vs. background)。
          • 预测 4k 个边界框回归偏移量 (relative to anchor)。
        • 基于物体性得分筛选 Anchors,应用回归偏移量修正坐标,得到初步的 Proposals
        • Proposals 应用 NMS (非极大值抑制) 以减少冗余。【第一次使用NMS剔除多余的Anchors】
      • 输出: 一组候选区域 RoIs (例如 ~300 或 ~2000 个,坐标是相对于原始图像的)。
    3. RoI Pooling / RoI Align 层 (特殊模块):
      • 输入: 共享特征图 (来自步骤 1) + RPN 生成的 RoIs (来自步骤 2)。
      • 处理:每个 RoI,从共享特征图中提取一个固定大小 (e.g., 7x7xC) 的特征图块。(RoI Align 效果通常更好)
      • 输出:每个 RoI 输出一个固定大小的特征图块。
    4. 检测头 (Detection Head - Fast R-CNN 部分 - Decoder/Prediction 角色):
      • 输入: 来自 RoI Pooling/Align 的固定大小特征图块。
      • 处理:
        • 通过全连接层 (FC layers) 或卷积层进一步处理特征。
        • 送入两个并行的输出层:
          • Softmax 分类器 (输出 K+1 类概率 p p p)。
          • 边界框回归器 (输出 K 类对应的 4 K 4K 4K 个回归偏移量 t k t^k tk)。
      • 输出: 对每个输入的 RoI,输出其最终的类别概率 p p p 和类别相关的回归偏移量 t k t^k tk
    5. 后处理 (Post-processing - NMS):
      • 使用最终的类别分数和应用了回归偏移量后的边界框,再次进行 NMS (通常按类别进行)。
      • 输出: 最终检测结果列表。
  • 模型输出:

    • 图像中检测到的物体列表,每个物体包含:类别标签置信度分数精修后的边界框坐标
  • 训练过程:

    • 目标: 训练 RPN 网络学会生成高质量Proposals,同时训练检测头学会对这些 Proposals 进行精确分类和定位。
    • 损失函数: 联合优化 RPN 的损失 ( L c l s R P N + λ 1 L r e g R P N L_{cls}^{RPN} + \lambda_1 L_{reg}^{RPN} LclsRPN+λ1LregRPN) 和 Fast R-CNN 检测头的损失 ( L c l s F a s t + λ 2 [ u > 0 ] L r e g F a s t L_{cls}^{Fast} + \lambda_2 [u>0] L_{reg}^{Fast} LclsFast+λ2[u>0]LregFast) 。总损失是这两部分损失的和(可能有权重因子)。
    • 训练策略:
      • 4步交替训练 (Alternating Training - 原始论文提出): 比较复杂,步骤间有权重固定和微调。
        1. 训练 RPN (用 ImageNet 预训练模型初始化)。
        2. 训练 Fast R-CNN 检测网络 (用 ImageNet 预训练模型初始化,使用第1步 RPN 生成的 proposals)。此时 ConvNet 独立训练。
        3. 固定共享的 ConvNet 层,只微调 RPN 的独有层。
        4. 固定共享的 ConvNet 层,只微调 Fast R-CNN 的独有层 (FCs 等)。
      • 近似联合训练 (Approximate Joint Training - 更常用): 在一次前向传播中计算 RPN 和 Fast R-CNN 的 proposals 和损失,然后将它们的损失加起来一起反向传播更新所有权重(包括共享卷积层)。实现上有一些细节处理 RPN proposal 对后续 loss 的影响。
      • 端到端联合训练 (End-to-End Joint Training): 一些现代框架支持更彻底的端到端训练。

🚀 关键创新点

  • 创新点 1: 区域提议网络 (Region Proposal Network - RPN)

    • 为什么要这样做? 为了摆脱对外部、缓慢、与网络分离的区域提议算法(如 Selective Search)的依赖。
    • 不用它会怎样? 目标检测系统的速度会被区域提议步骤严重拖慢,无法实现高速检测,且提议过程无法从深度特征学习中受益。RPN 是实现速度整合的关键。
  • 创新点 2: 卷积特征共享 (Shared Convolutional Features)

    • 为什么要这样做? 区域提议和物体检测都需要对图像进行特征提取,分开做是巨大的计算浪费。这两项任务可以基于相同的底层视觉特征。
    • 不用它会怎样? 计算成本会高得多(如 R-CNN 或即使是将 SS 搬上 GPU 但仍独立计算的方案)。特征共享是 Faster R-CNN 实现效率飞跃的核心原因。
  • 创新点 3: Anchor 机制

    • 为什么要这样做? 需要一种方法让 RPN(一个相对简单的全卷积网络)能够高效地在特征图上直接预测出不同尺度、不同长宽比的物体提议。
    • 不用它会怎样? RPN 可能难以直接预测如此多样化的边界框。Anchor 提供了一组有效的、多样的参考基准,极大地简化了 RPN 的预测任务,使其可以在单一尺度的特征图上工作,避免了图像金字塔或滤波器金字塔的复杂性。
  • 创新点 4: 统一网络与端到端训练趋势

    • 为什么要这样做? 将整个目标检测流程(除了 NMS 等后处理)尽可能地统一到一个深度网络中,可以简化系统、提高效率,并可能通过联合优化提升性能。
    • 不用它会怎样? 系统会保持多阶段、多模块的状态,训练和部署更复杂,速度也受限。Faster R-CNN 代表了向更整合、更端到端的检测系统迈出的决定性一步。

总结来说,Faster R-CNN 通过革命性的 RPN 和 Anchor 机制,并将 RPN 与 Fast R-CNN 检测器基于共享的卷积特征进行整合,最终构建了一个高效、准确且相对统一的目标检测框架,成为了后续许多现代检测器的基础。


🔗 方法流程图

在这里插入图片描述
在这里插入图片描述


关键疑问解答

Q1、 Anchor 的来源、生成与训练中的作用?

  • 来源Anchors预先定义好的超参数 (不同的尺度 Scales长宽比 Aspect Ratios),不是根据当前数据集实时生成的。其设定基于经验或常见物体特性。
  • 生成Anchors 概念上是在 CNN 输出的最后一个特征图每一个空间位置上生成的。每个位置都有一整套 (k 个) 不同规格的 Anchors,它们的中心对应于特征图位置映射回原图的位置。这个生成发生在每次前向传播时。
  • 训练作用: Anchors 作为参考基准。训练 RPN 的目标是:
    1、分类: 判断每个 Anchor 是否覆盖了一个物体 (Objectness Score),通过与 Ground Truth Boxes 计算 IoU 来标记 Anchor (正/负/忽略样本),并计算分类损失
    2、回归: 对于被标记为正样本的 Anchor,学习预测出将其精确调整到对应 Ground Truth Box 所需的4 个偏移量 (dx, dy, dw, dh),并计算回归损失 (通常用 Smooth L1 Loss)。网络学习的是预测“修正量”,而不是修改 Anchor 本身。

Q2 Anchor 尺寸大于感受野如何工作?

Anchor 是预测的参考框架,RPN 的预测是基于其感受野内的特征进行的。

网络学习的是将感受野内的局部特征与“应该使用哪种规格的 Anchor”以及“应该如何对该 Anchor 进行相对调整”这两者关联起来。

即使感受野小于 Anchor,内部特征也可能足够指示一个大物体的存在及大致的调整方向。对于大物体,多个相邻位置的预测会共同作用。【管中窥豹,可知豹外貌】

相关文章:

目标检测篇---faster R-CNN

目标检测系列文章 第一章 R-CNN 第二篇 Fast R-CNN 目录 目标检测系列文章📄 论文标题🧠 论文逻辑梳理1. 引言部分梳理 (动机与思想) 📝 三句话总结🔍 方法逻辑梳理🚀 关键创新点🔗 方法流程图关键疑问解答…...

【计算机视觉】CV实战项目- 深度解析FaceAI:一款全能的人脸检测与图像处理工具库

深度解析FaceAI:一款全能的人脸检测与图像处理工具库 项目概述核心功能与技术实现1. 人脸检测与识别2. 数字化妆与轮廓标识3. 性别与表情识别4. 高级图像处理 实战指南:项目运行与开发环境配置典型应用示例常见问题与解决方案 学术背景与相关研究项目扩展…...

Linux下编译opencv-4.10.0(静态链接库和动态链接库)

1. 安装依赖 在编译之前,确保系统中安装了必要的依赖工具和库。运行以下命令安装: sudo apt update sudo apt-get install build-essential sudo apt-get install cmake git libgtk2.0-dev pkg-config sudo apt-get install libavcodec-dev libavforma…...

OpenBMC:BmcWeb login创建session

OpenBMC:BmcWeb login认证-CSDN博客 完成用户的认证后,还需要为该用户创建session,从而为后续的rest api访问铺平道路 inline void handleLogin(const crow::Request& req,const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {...auto session =persisten…...

Java高频面试之并发编程-07

hello啊&#xff0c;各位观众姥爷们&#xff01;&#xff01;&#xff01;本baby今天来报道了&#xff01;哈哈哈哈哈嗝&#x1f436; 面试官&#xff1a;线程之间有哪些通信方式&#xff1f; 在 Java 多线程编程中&#xff0c;线程间通信&#xff08;Inter-Thread Communica…...

四、Python编程基础04

这里写目录标题 一、集合[了解]二、函数1. 函数定义与调用2. 函数返回值 三、模块和包1. 登录案例2.登录案例优化3. 随机数案例 四、异常五、web自动化测试1、selenium介绍2、环境搭建具体安装步骤请看 3、入门案例3.1 自动化测试步骤3.2 案例 一、集合[了解] 1, 集合 set, 表…...

专家系统的一般结构解析——基于《人工智能原理与方法》的深度拓展

不同的专家系统,其功能与结构都不尽相同,但一般都包括人机接口、推理机、知识库及其管理系统、数据库及其管理系统、知识获取机构、解释机构这六个部分,如下图所示。 一、人机接口(Human-Computer Interface, HCI) (一)基本思想与定义 1. 核心思想:双向交互的桥梁 人…...

手搓雷达图(MATLAB)

看下别人做出来什么效果 话不多说&#xff0c;咱们直接开始 %% 可修改 labels {用户等级, 发帖数, 发帖频率, 点度中心度, 中介中心度, 帖子类型计分, 被列为提案数}; cluster_centers [0.8, 4.5, 3.2, 4.0, 3.8, 4.5, 4.2; % 核心用户0.2, 0.5, 0.3, 0.2, 0.1, 0.0, 0.0;…...

FastMCP与FastAPI:构建自定义MCP服务器

FastMCP与FastAPI&#xff1a;构建自定义MCP服务器 模型上下文协议(Model Context Protocol, MCP)是一种让AI模型与外部工具和服务交互的标准。本文将介绍FastMCP和FastAPI&#xff0c;并通过实例展示如何创建自定义MCP服务器。 MCP基础概念 MCP允许语言模型: 访问外部工具…...

基于 springboot+vue+elementui 的办公自动化系统设计(

基于 springbootvueelementui 的办公自动化系统设计(前端代码在oa文件夹里) 系统主要功能&#xff1a; 1、统一的信息发布平台&#xff1a;公告栏&#xff0c;公司活动&#xff0c;项目进度&#xff0c;公司周报 2、统一的文件管理平台&#xff1a;收文管理、发文管理。文件查询…...

Java发展史及版本详细说明

Java发展史及版本详细说明 1. Java 1.0&#xff08;1996年1月23日&#xff09; 核心功能&#xff1a; 首个正式版本&#xff0c;支持面向对象编程、垃圾回收、网络编程。包含基础类库&#xff08;java.lang、java.io、java.awt&#xff09;。支持Applet&#xff08;浏览器嵌入…...

高企复审奖补!2025年合肥市高新技术企业重新认定奖励补贴政策及申报条件

一、合肥市高新技术企业重新认定奖励补贴政策 &#xff08;一&#xff09;高新区高新技术企业重新认定复审补贴奖励 重新认定为国家高新技术企业的给予5万元一次性奖励。 &#xff08;二&#xff09;经开区高新技术企业重新认定复审补贴奖励 对重新认定的企业&#xff0c;给…...

elementui日历显示红点及根据日程范围判断是否有红点

生成指定日期范围内的所有日期 generateDateRange(startStr, endStr) {const dates []; 日期列表const start new Date(startStr); 日程开始日期const end new Date(endStr); 日程结束日期end.setHours(23, 59, 59, 999); 结束的那一天设置为23点59分59秒// 生成日期范围内…...

第六章 QT基础:5、QT的UDP网络编程

在 Qt 中&#xff0c;QUdpSocket 类用于实现基于 UDP 协议的网络通信。UDP&#xff08;用户数据报协议&#xff09;是一种无连接的协议&#xff0c;与 TCP 不同&#xff0c;它不需要建立连接&#xff0c;因此它的传输速度较快&#xff0c;但也不保证数据的可靠传输。 1. Qt UDP…...

JAVA设计模式——(五)享元模式(Flyweight Pattern)

JAVA设计模式——&#xff08;五&#xff09;享元模式&#xff08;Flyweight Pattern&#xff09; 概念理解实现创建内部状态定义享元工厂测试 适用性 概念 使共享对象可以有效的支持大量的细粒度对象。主要采用池技术实现。 理解 享元模式主要解决大量对象的共享&#xff0…...

电竞俱乐部护航点单小程序,和平地铁俱乐部点单系统,三角洲护航小程序,暗区突围俱乐部小程序

电竞俱乐部护航点单小程序开发&#xff0c;和平地铁俱乐部点单系统&#xff0c;三角洲护航小程序&#xff0c;暗区突围俱乐部小程序开发 端口包含&#xff1a; 超管后台&#xff0c; 老板端&#xff0c;打手端&#xff0c;商家端&#xff0c;客服端&#xff0c;管事端&#x…...

mybatis log convert使用

1. idea 搜索插件 mybatis log convert. 安装后重启idea 启动程序. 日志打印后选中输出的内容右键。这里随意选中一段日志做演示 必须要在console中复制才能使用这个日志解析 2. 还有一种用法。没找到...

[U-Net]DA-TRANSUNET

论文题目:DA-TRANSUNET: INTEGRATING SPATIAL AND CHANNEL DUAL ATTENTION WITH TRANSFORMER U-NET FOR MEDICAL IMAGE SEGMENTATION ∗ 中文题目:DA-TRANSUNET:结合空间和通道双注意力与Transformer U-NET的医学图像分割算法 0摘要 精确的医学图像分割对疾病定量和治疗评…...

AI大模型从0到1记录学习 数据结构和算法 day20

4.3 分治算法 4.3.1 概述 分治算法的基本思想为&#xff1a;将原问题递归的分解为若干个&#xff08;通常是两个以上&#xff09;规模较小、相互独立且性质相同的子问题&#xff0c;直到子问题足够简单&#xff0c;简单到可以直接求解。然后再返回结果&#xff0c;逐个解决上层…...

面阵相机中M12镜头和远心镜头的区别及性能优势

以下是关于面阵相机中M12镜头和远心镜头的区别及性能优势的详细分析&#xff0c;结合知识库内容整理如下&#xff1a; 一、M12镜头与远心镜头的核心区别 1. 设计原理与光学特性 特性M12镜头远心镜头光学设计标准镜头设计&#xff0c;无特殊光学校正&#xff0c;依赖传统光路。…...

[创业之路-385]:企业法务 - 初创公司如何做好商业秘密的管理

一、商业秘密的定义与价值 定义&#xff1a; 商业秘密是企业的核心资产&#xff0c;包括技术信息&#xff08;如算法、配方&#xff09;和经营信息&#xff08;如客户名单、定价策略&#xff09;&#xff0c;具有非公开性、商业价值、保密性三大特征。价值&#xff1a; 初创公…...

Qt5.15.2+OpenCV4.9.0开发环境搭建详细图文教程(OpenCV使用Qt自带MinGW编译的全过程,包教包会)

【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! 《项目案例分享》 《极客DIY开源分享》 《嵌入式通用开发实战》 《C++语言开发基础总结》 《从0到1学习嵌入式Linux开发》 《QT开发实战》 《Android开发实战》 《实用硬件方案设计》 《结构建模设…...

怎么实现RAG检索相似文档排序:similarities

怎么实现RAG检索相似文档排序:similarities top_5_indices = similarities.argsort()[-5:][::-1] 这行代码的作用是从一组相似度得分中获取相似度最高的5个元素的索引。 similarities:这是一个包含了某个问题与所有文档之间余弦相似度得分的一维数组(假设 similarities 是通…...

NLP高频面试题(五十三)——深度学习正则化详解

一、动因篇 为什么要正则化? 深度神经网络通常包含数以万计甚至数以亿计的参数,模型容量极大,极易在有限的训练数据上“记住”噪声与异常样本,从而出现过拟合(overfitting)现象。过拟合导致模型在训练集上表现优异,但在测试集或真实场景中泛化能力大幅下降。正则化(r…...

2.idea查看某个类的方法名称和实现

2.idea查看某个类的方法名称和实现 ctrl鼠标左键单击类名 点击侧边栏Structure可看到方法名称的统计&#xff0c;这样直观...

FeignClient用法笔记

1. FeignClient简介 在微服务架构中总需要各个服务相互调用&#xff0c;各个服务又是以接口方式暴露&#xff0c;所以需要Http远程调用&#xff1b;为了简化调用&#xff0c;Spring Cloud OpenFeign 库提供了org.springframework.cloud.openfeign.FeignClient 注解&#xff1a…...

【Redis】 Redis中常见的数据类型(二)

文章目录 前言一、 List 列表1. List 列表简介2.命令3. 阻塞版本命令4. 内部编码5. 使用场景 二、Set 集合1. Set简单介绍2. 普通命令3 . 集合间操作4. 内部编码5. 使用场景 三、Zset 有序集合1.Zset 有序集合简介2. 普通命令3. 集合间操作4. 内部编码5. 使用场景 结语 前言 在…...

电力作业安全工器具全解析:分类、配置与检查要点

在电力行业&#xff0c;每一次作业都面临潜在危险&#xff0c;安全工器具是保障作业人员生命安全的关键。今天&#xff0c;金能电力带大家深入了解电力作业中常见的安全工器具&#xff0c;以及它们的检查与使用要点。 电力作业中安全工器具种类繁多。绝缘安全工器具因直接关联带…...

PowerBI-使用参数动态修改数据源路径

PowerBI-使用参数动态修改数据源路径 在PowerQuery中可以使用参数&#xff0c;通过参数我们可以将多个文件路径相同的字符串进行替换。 以一个案例分享下过程&#xff1a; 第一步&#xff0c;导入一个含有多个sheet表的EXCEL工作薄&#xff0c;点击转换数据&#xff0c;如图…...

Temperature

模型中Temperature参数的详细解释 ​​Temperature​​ 是生成模型&#xff08;如GPT、LLaMA等&#xff09;中用于控制输出多样性和随机性的关键超参数。它通过调整模型预测概率分布的平滑程度&#xff0c;直接影响生成文本的创造性与稳定性。 模型中Temperature参数的详细解…...

C++ 日志系统实战第二步:不定参数函数解析

全是通俗易懂的讲解&#xff0c;如果你本节之前的知识都掌握清楚&#xff0c;那就速速来看我的项目笔记吧~ 相关技术知识补充 不定参宏函数 在 C 语言中&#xff0c;不定参宏函数是一种强大的工具&#xff0c;它允许宏接受可变数量的参数&#xff0c;类似于不定参函数&#…...

【高并发】 MySQL锁优化策略

在数据库高并发场景中&#xff0c;行锁、表锁和高并发处理是密切相关的概念&#xff0c;它们共同影响着系统的并发性能和数据一致性。以下是三者的详细解释及高并发处理的策略&#xff1a; 1. 行锁&#xff08;Row-Level Locking&#xff09; 行锁是数据库中最小的锁粒度&…...

C语言——填充矩阵

C语言——填充矩阵 一、问题描述二、格式要求1.输入形式2.输出形式3.样例 三、实验代码 一、问题描述 编程实现自动填充nn矩阵元素数值&#xff0c;填充规则为&#xff1a;从第一行最后一列矩阵元素开始按逆时针方向螺旋式填充数值1&#xff0c;2&#xff0c;…&#xff0c;nn…...

CSS3 基础(背景-文本效果)

二、背景效果 属性功能示例值说明background设置背景颜色或渐变background: linear-gradient(45deg, #4CAF50, #FF5722);设置背景颜色、图片或渐变效果。background-size调整背景图片大小background-size: cover;设置背景图片的显示大小&#xff0c;如 cover 或 contain。back…...

点云配准算法之NDT算法原理详解

一、算法概述 NDT&#xff08;Normal Distributions Transform&#xff09;最初用于2D激光雷达地图构建&#xff08;Biber & Straer, 2003&#xff09;&#xff0c;后扩展为3D点云配准。它将点云数据空间划分为网格单元&#xff08;Voxel&#xff09;&#xff0c;在每个体…...

springboot在eclipse里面运行 run as 是Java Application还是 Maven

在 Eclipse 里运行 Spring Boot 项目时&#xff0c;既可以选择以“Java Application”方式运行&#xff0c;也可以通过 Maven 命令来运行&#xff0c;下面为你详细介绍这两种方式及适用场景。 以“Java Application”方式运行 操作步骤 在项目中找到带有 SpringBootApplicat…...

Redis 基础和高级用法入门

redis 是什么&#xff1f; Redis是一个远程内存数据库&#xff0c;它不仅性能强劲&#xff0c;而且还具有复制特性以及为解决问题而生的独一无二的数据模型。Redis提供了5种不同类型的数据结构&#xff0c;各式各样的问题都可以很自然地映射到这些数据结构上&#xff1a…...

使用vue2开发一个在线旅游预订平台-前端静态网站项目练习

hello,大家好&#xff0c;今天给大家再分享一个前端vue2练习项目-在线旅游预订平台。我们在学习编程的时候&#xff0c;除了学习编程的基础知识&#xff0c;为了让我们快速的掌握一门编程技术&#xff0c;肯定离不开各种项目的练习&#xff0c;今天分享的这个前端练习项目&…...

Ext Direct 功能与使用详解

Ext Direct 是 Ext JS 框架中的一个功能模块,旨在简化前端 JavaScript 应用与后端服务器之间的通信。其核心思想是通过远程过程调用(RPC)协议,将服务器端的方法透明地映射为前端可直接调用的 JavaScript 函数,从而减少手动编写 Ajax 请求和处理响应的代码量。 一、Ext Dir…...

Android移动应用开发入门示例:Activity跳转界面

介绍如何使用LinearLayout布局实现基本的UI设计&#xff0c;并实现两个Activity之间的跳转&#xff0c;适合刚接触Android Studio的新手学习。我们将使用Java语言开发&#xff0c;布局采用XML文件。以下为完整源码与运行说明&#xff1a; 案例前的准备工作&#xff1a; 1.1XM…...

【hadoop】HBase分布式数据库安装部署

一、HBase集群的安装与配置 步骤&#xff1a; 1、使用XFTP将HBase安装包hbase-1.2.0-bin.tar.gz发送到master机器的主目录。 2、解压安装包&#xff1a; tar -zxvf ~/hbase-1.2.0-bin.tar.gz 3、修改文件夹的名字&#xff0c;将其改为hbase&#xff0c;或者创建软连接也可…...

理解npm的工作原理:优化你的项目依赖管理流程

目录 什么是npm npm核心功能 npm 常用指令及其作用 执行npm i 发生了什么? 1. 解析命令与参数 2. 检查依赖文件 3. 依赖版本解析与树构建 4. 缓存检查与包下载 5. 解压包到 node_modules 6. 更新 package-lock.json 7. 处理特殊依赖类型 8. 执行生命周期脚本 9. …...

【Python笔记 04】输入函数、转义字符

一、Input 输入函数 prompt是提示&#xff0c;会在控制台显示&#xff0c;用作提示函数。 name input("请输入您的姓名&#xff1a;") print (name)提示你输入任意信息&#xff1a; 输入input test后回车&#xff0c;他输出input test 二、常用的转义字符 只讲…...

MySQL数据库基本操作-DQL-基本查询

数据库的操作中&#xff0c;查询是最重要的 一、基本查询-数据准备 -- 数据准备 create database if not exists mydb2; use mydb2; create table product( pid int primary key auto_increment, pname varchar(20) not null, price double, category_id varchar(20) …...

13、性能优化:魔法的流畅之道——React 19 memo/lazy

一、记忆封印术&#xff08;React.memo&#xff09; 1. 咒语本质 "memo是时间转换器的记忆晶石&#xff0c;冻结无意义的能量波动&#xff01;" 通过浅层比较&#xff08;shallowCompare&#xff09;或自定义预言契约&#xff0c;阻止组件在props未变时重新渲染。 …...

低代码平台开发手机USB-HID调试助手

项目介绍 USB-HID调试助手是一种专门用于调试和测试USB-HID设备的软件工具。USB-HID设备是一类通过USB接口与计算机通信的设备&#xff0c;常见的HID设备包括键盘、鼠标、游戏控制器、以及一些专用的工业控制设备等。 主要功能包括&#xff1a; 数据监控&#xff1a;实时监控和…...

Langchain_Agent+数据库

本处使用Agent数据库&#xff0c;可以直接执行SQL语句。可以多次循环查询问题 前文通过chain去联系数据库并进行操作&#xff1b; 通过链的不断内嵌组合&#xff0c;生成SQL在执行SQL再返回。 初始化 import os from operator import itemgetterimport bs4 from langchain.ch…...

Code Splitting 分包策略

以下是关于分包策略(Code Splitting)的深度技术解析,涵盖原理、策略、工具实现及优化技巧: 一、分包核心价值与底层原理 1. 核心价值矩阵 维度未分包场景合理分包后首屏速度需加载全部资源仅加载关键资源缓存效率任意修改导致全量缓存失效按模块变更频率分层缓存并行加载单…...

AI 开发入门之 RAG 技术

目录 一、从一个简单的问题开始二、语言模型“闭卷考试”的困境三、RAG 是什么—LLM 的现实世界“外挂”四、RAG 的七步流程第一步&#xff1a;加载数据&#xff08;Load&#xff09;第二步&#xff1a;切分文本&#xff08;Chunking&#xff09;第三步&#xff1a;向量化&…...

day36图像处理OpenCV

文章目录 一、图像预处理18 模板匹配18.1模板匹配18.2 匹配方法18.2.1 平方差匹配18.2.2 归一化平方差匹配18.2.3 相关匹配18.2.4 归一化相关匹配18.2.5 相关系数匹配18.2.6 归一化相关系数匹配 18.3 绘制轮廓18.4案例 一、图像预处理 18 模板匹配 18.1模板匹配 模板匹配就是…...