目标检测20年(二)
没有看过(一)的可以看看笔者这篇文章:
目标检测20年(一)-CSDN博客
目录
3.2 目标检测数据集和指标
3.2.1 数据集
3.2.1.1 Pascal VOC
3.2.1.2 ILSVRC
3.2.1.3 MS-COCO
3.2.1..4 Open Images
3.2.2 指标
3.3 目标检测技术演变
3.3.1 多尺度检测技术演变
3.3.1.1 特征金字塔+滑动窗口
3.3.1.2 目标建议检测
3.3.1.3 深度回归和无锚框检测
3.3.1.4 多参考/分辨率检测
3.3.2 语境启动的技术演变
3.3.2.1 局部上下文检测
3.3.2.2 全局上下文检测
3.3.2.3 上下文交互
3.3.3 难例挖掘技术演变
3.3.3.1 Bootstrap
3.3.3.2 基于深度学习检测器中的HNM
3.3.4 损失函数技术演变
3.3.4.1 分类损失
3.3.4.2 定位损失
3.3.5 非极大值抑制技术演变
3.3.5.1 贪心选择
3.3.5.2 边界框聚合
3.3.5.3 基于学习的NMS
3.3.5.4 无NMS检测器
3.2 目标检测数据集和指标
3.2.1 数据集
构建大型数据集和更少偏差对于开发先进算法至关重要。过去10年已经有许多知名数据集发布:PASCAL VOC挑战中的VOC2007、VOC2012,ImageNet大规模视觉识别挑战中的ILSVR2014.MS-COCO检测挑战中的Open Images Dataset等。下图给出了数据集的统计数据:
下图是部分数据集的一些展示:
从左至右分别是PASCAL-VOC07、ILSVRC、MS-COCO和Open Images。
下图展示了从2008到2021年一些数据集的检测精度提升:
下面对每种数据集进行单独介绍。
3.2.1.1 Pascal VOC
Pascal Vusual Object Classes是早期最重要的计算机比赛之一。数据集主要有两个版本:VOC2007和VOC2012。其中标注了20类常见目标:人、猫、自行车等。
3.2.1.2 ILSVRC
ILSVRC从2010年到2017年每年举办一次,包含使用ImageNet图像的检测挑战。该数据集包含200类检测目标,其对象实例数量比VOC大两个数量级。
3.2.1.3 MS-COCO
MS-COCO包含来自80个类别的164k图像和897k注释对象。其最大进步就是除了边界框注释外,还使用逐实例分割进一步标记每个对象,帮助精确定位。此外,它还包括更多小物体(面积小于图像1%)和更密集的物体。
3.2.1..4 Open Images
2018年引入开放图像检测(Open Images Detection,OID)挑战。挑战主要有两个任务:1、标准目标检测 2、视觉关系检测,即检测特定关系中的成对对象。标准检测任务的数据集由1910k图像和15440k在600个对象类别上标注的边界框组成。
3.2.2 指标
早期检测器的准确性采用“缺失率”和“误报率”(FPPW)作为度量标准。但逐窗口测量可能存在缺陷,无法预测完整图像的性能。 2009年,加州理工学院引入行人检测基准,评估标准改为假阳性Perimage(false positive perimage,FPPI)
VOC2007引入了今年来最常用的评价标准:mAP(mean Average Precision,平均精度)。其定义为不同召回下的平均检测精度,通常以特定类别评估。采用预测框和真实框之间IoU验证是否大于预定义阈值,例如0.5。MS-COCO AP不是固定的IoU阈值,而是在0.5到0.95之间多个阈值进行平均,对性能要求更高。
3.3 目标检测技术演变
该部分主要介绍检测系统的重要组成部分以及技术演变。首先是模型设计中多尺度和上下文启动,然后介绍训练过程中样本选择策略和损失函数设计,最后是推理中非极大值抑制。
3.3.1 多尺度检测技术演变
不同尺寸和不同长宽比的目标检测是目前主要挑战之一。多尺度的检测经历多个时期,如下图所示:
我们可以看到,2001年特征金字塔和滑动窗口提出,一直持续到2014年。2013年开始流行带目标建议和无锚框的检测,分别流行到2018年和2021年直至现在。2015年多参考的检测开始出现,多分辨率的检测紧接着出现。
最初的特征金字塔和滑动窗口即通过滑动窗口检测各区域生成尺寸更小的特征图,形成一个金字塔结构,得到特征金字塔。后来带有区域建议的检测采用了预先定义的区域建议框进行特征提取,之后无锚框的检测直接采用检测器进行特征提取,多参考检测采用多个检测器进行检测,而多结果的检测则采用多检测器多特征图进行特征提取,输出更多,精度更高,但计算量也会更大。
下面对每种方法进行介绍。
3.3.1.1 特征金字塔+滑动窗口
2004年之后人们就开始采用这汇总更直观的检测方式,如HOG、DOM。该方法在图像上滑动一个固定大小的检测窗口,而不关注“不同大小长宽比”。Girshick等人采用了“混合模型”检测具有更复杂外观的物体。针对不同长宽比物体训练多个检测器。基于样本的检测也为每个对象实例训练单个模型。
3.3.1.2 目标建议检测
目标建议是与类无关的参考框,可能包含任何目标。这样就可以避免在图像上穷举滑动窗口进行搜索。但目前单阶段检测器兴起,这种方法也淡出视野。
3.3.1.3 深度回归和无锚框检测
随着GPU计算能力的提升,多尺度检测更加直接。深度回归的思想更加简单,基于深度学习特征直接预测边界框坐标。这种方法主要有两种思路:1、基于分组方法,检测关键点(如角、中心)然后进行目标分组;2、无群法,将目标视为一个或多个点,在点的参考下回归目标属性(大小、比例等)。
3.3.1.4 多参考/分辨率检测
多参考点检测首先在图像每个位置定义一组参考点(也叫锚点,包括方框和点),之后根据参考的预测检测框。多分辨率检测则是通过网络不同层检测不同尺度目标。目前两种方法已经成为目标检测系统基本组成。
3.3.2 语境启动的技术演变
视觉目标与周围环境通常是嵌入在一个典型的语境中的,大脑会利用物体与环境关联促进视觉感知和认知。语境启动一直被用来提高检测能力,其演变过程如下:
可以看到,早在2001年之前,采用局部上下文的检测就被提出,之后在2011年上下文交互就被提出。最后2106年才开始采用全局上下文。
从左到右分别是局部上下文、全局上下文和上下文交互。局部上下文仅采用图像内部环境信息辅助生成特征图,全局上下文则会利用到图像外的信息,上下文交互则将不同上下文之间的关系和交互利用起来以生成特征图。
3.3.2.1 局部上下文检测
局部上下文即检测目标周围区域视觉信息。21世纪,Sinha等人发现局部上下文区域很大程度上提高了人脸检测性能。Dalal还发现,加入少量背景信息可以提高行人检测准确性。基于深度学习的检测器可以通过简单的扩大网络感受野或目标建议大小改进局部上下文。
3.3.2.2 全局上下文检测
全局上下文利用场景配置作为目标检测额外信息源,早期时间检测器中,整合构成场景元素统计摘要是常用的方法。目前有两种常用方法:1、深度卷积、扩展卷积、可变形卷积或池化操作接受更大感受野(有时超出输入图像)。现在也有基于注意的机制实现感受野。2、将全局上下文视作顺序信息,使用循环神经网络学习。
3.3.2.3 上下文交互
交互指视觉元素之间的约束和依赖关系。现代检测器可以采用上下文交互进行改进,主要有两类:1、单个对象之间的关系 2、对象和场景之间的关系。
3.3.3 难例挖掘技术演变
检测器训练本质是不平衡学习问题。基于滑动窗口的检测器情况下,背景和目标之间的不平衡可以达到107:1。这时,使用所有背景对训练不利,大量简单否定会盖过学习过程。难例挖掘就是为了解决该问题的。技术演变如下:
1994年Bootstrap就被提出,该方法被广泛用于解决早期计算资源不足的问题。直到2014年不采用难例挖掘的方法提出,其仅仅通过简单平衡目标类和背景类之间权重实现。2016年,Bootstrap和全新损失函数的组合推出,该方法聚焦于困难实例,算力不再是难题。
3.3.3.1 Bootstrap
该方法从一个小部分的背景样本开始训练,之后迭代增加新的误分类样本。在早期时间检测器中,该方法通常用于减少数百万个背景下的训练计算。之后成为DPM和HOG检测器解决数据不平衡技术的标准。
3.3.3.2 基于深度学习检测器中的HNM
深度学习时代,计算能力的提高导致了bootstrap的摒弃.2016年以前,Faster RCNN和YOLO采用正窗口和负窗口权重平衡以实现训练期间数据不平衡问题。然后,这并不能完全解决失衡问题,之后,bootstrap重新引入。还有种改进是重塑标准交叉熵损失设计新的损失函数,更加关注困难、错误分类的实例。
3.3.4 损失函数技术演变
损失函数用于衡量模型与数据匹配程度(即预测与真实标签的偏差)。计算损失产生模型权重的梯度,可以通过反向传播更新更好适应数据。分类损失和定位损失构成目标检测问题的监督,如以下公式所示:
t和t*是预测、真实边界框位置,对应的p是类别概率。IoU表示参考框a与真实值a*之间的交并比。是IoU阈值,通常为0.5。如果锚框不匹配任何对象,则定位损失不计入最终损失。
3.3.4.1 分类损失
分类损失用于评估预测类别与真实类别偏差程度,之前常使用MSE、L2损失(均方误差)。后来使用CE Loss。分类预测是一个概率,为了提高分类效率,提出Label Smooth增强模型泛化能力,解决噪声标签上过置信问题,设计Focal Loss解决类别不平衡和分类难度差异。
3.3.4.2 定位损失
定位损失用于优化位置和尺寸偏差。研究人员提出平滑L1损耗公式如下:
x是目标与预测值之间的差值。计算误差时,边界框四个参数视作自变量,且存在一定相关性。评估的时候采用IoU确定预测框是否与实际真实值相对应。相等Smooth L1值会产生完全不同的IoU值,IoU损失如下:
随后,一些算法对其加以改进。GIoU改进其不能优化非重叠边界框情况,即IoU=0时。基于IoU损失和G-IoU损失,将DIoU(Distance IoU)定义为预测中心点与真实值之间距离,CIoU(Complete IoU)考虑在DIoU基础上宽高比差。
3.3.5 非极大值抑制技术演变
非极大值抑制作为后处理步骤去除重复边界框以避免相邻窗口检测分数相同而导致的性能下降。目标检测早期,并非集成NMS,因为系统期望输出并不完全清楚。近20年来的演变如下:
3.3.5.1 贪心选择
这是执行NMS最流行的方法。其思想为:对于重叠检测,选择检测得分最高的边界框,同时根据预定义重叠阈值去除相邻框。虽然已成为NMS事实方法,但仍有待改进。得分最高边界框不一定时最合适的,可能会抑制附近物体,最后假阳性无法得到有效抑制。
3.3.5.2 边界框聚合
边界框聚合也是一种用于NMS的技术,其思想为将多个重叠的边界框组合或聚类成一个最终的检测。优点是充分考虑目标关系和空间布局。
3.3.5.3 基于学习的NMS
最近流行的NMS改进是基于学习的,将其视作一个过滤器,重新对原始检测进行评分,并以端到端方式将其作为网络的一部分进行训练,或者训练网络模仿NMS行为。与传统手工方法相比,该方法在改善遮挡和密集目标检测方面效果不错。
3.3.5.4 无NMS检测器
为了实现完全完全端到端目标检测训练网络,研究人员采用许多方法完成一对一标签分配(一个目标一个预测框)。通常要求机器质量高以实现不采用NMS。无纳米粒子探测器更类似人类视觉感知系统,也是未来检测一种可能方式。
相关文章:
目标检测20年(二)
没有看过(一)的可以看看笔者这篇文章: 目标检测20年(一)-CSDN博客 目录 3.2 目标检测数据集和指标 3.2.1 数据集 3.2.1.1 Pascal VOC 3.2.1.2 ILSVRC 3.2.1.3 MS-COCO 3.2.1..4 Open Images 3.2.2 指标 3.3 目…...
【linux】统信操作系统修改默认编辑模式从nano改为vim
统信操作系统修改默认编辑模式从nano改为vim 适用命令update-alternatives --config editor rootuos-PC:~# update-alternatives --config editor 有 3 个候选项可用于替换 editor (提供 /usr/bin/editor)。选择 路径 优先级 状态 ---------------------…...
在Fedora-Workstation-Live-x86_64-41-1.4中使用最新版本firefox和腾讯翻译插件让英文网页显示中文翻译
在Fedora-Workstation-Live-x86_64-41-1.4中使用最新版本firefox和腾讯翻译插件让英文网页显示中文翻译 应用——系统工具——终端 suozhangfedora:~$ rpm -aq | grep firefox firefox-131.0.2-1.fc41.x86_64 firefox-langpacks-131.0.2-1.fc41.x86_64 fedora41系统自身安装有f…...
集成学习(下):Stacking集成方法
一、Stacking的元学习革命 1.1 概念 Stacking(堆叠法) 是一种集成学习技术,通过组合多个基学习器(base learner)的预测结果,并利用一个元模型(meta-model)进行二次训练,…...
知道自己鼠标在某个竖直平面上的经纬度信息在这个竖直的平面上的实时坐标
鼠标放上去就开启map.on(mars3d.EventType.mouseMove,结合以下方法实现 callback: function (e) {// 经纬度const mpt LngLatPoint.fromCartesian(e.cartesian)const ptNew proj4Trans([mpt.lng, mpt.lat], "EPSG:4326", CRS.CGCS2000_GK_Zone_3)const …...
【技术简析】触觉智能RK3506 Linux星闪网关开发板:重新定义工业物联新标杆
在工业智能化与物联网深度融合的今天,深圳触觉智能推出首款搭载瑞芯微RK3506芯片的Linux星闪网关开发板,为大家技术解析。 RK3506-国产芯的硬核实力 作为瑞芯微2024年第四季度推出的入门级工业芯片平台,RK3506以三核Cortex-A7(1.…...
GLB文件介绍
GLB文件是由支持glTF(GL Transmission Format)标准的软件或工具生成的。glTF是一种开放的3D模型传输格式,而GLB是其二进制版本,通常用于嵌入纹理和模型数据。以下是常见的生成GLB文件的软件和工具: 1. 3D建模软件 • …...
树莓集团数字产业布局:商业智慧的多维呈现
树莓集团在数字产业的布局展现其前瞻性的商业智慧,通过多维度的战略部署,构建一个 শক্তিশালী且富有活力的数字生态系统。 全国产业园布局:构建数字产业生态链 树莓集团通过在全国范围内建设产业园,有效整合资源&#x…...
“智改数转”新风口,物联网如何重构制造业竞争力?
一、政策背景 为深化制造业智能化改造、数字化转型、网络化联接,江苏省制定了《江苏省深化制造业智能化改造数字化转型网络化联接三年行动计划(2025-2027年)》,提出到2027年,全省制造业企业设备更新、工艺…...
代码随想录第55期训练营第八天|LeetCode344.反转字符串、541.反转字符串II、卡码网:54.替换数字
前言 这是我参加的第二次训练营!!!爽!这次我将更加细致的写清每一道难题,不仅是提升自己,也希望我自己的写的文章对读者有一定的帮助! 打卡代码随想录算法训练营第55期第八天(づ&a…...
c++ XML库用法
在C中,处理XML文件的读写操作可以通过多种库来实现。以下是几个常用且简洁的库: 1. TinyXML-2 简介: TinyXML-2 是一个轻量级的C XML解析库,易于使用且性能良好。特点: 简单易用,API直观。内存占用小,适合嵌入…...
力扣算法Hot100——128. 最长连续序列
题目要求时间复杂度为O(n),因此不能使用两次循环匹配。 首先使用 HashSet 去重,并且 HashSet 查找一个数的复杂度为O(1)外循环还是遍历set集合,里面一重循环需要添加判断,这样才不会达到O( n 2 n^2 n2)判断是否进入最长序列查找循…...
spring-tx笔记
编程式事务与声明式事务的理解 补充:什么是事务? 事务是一个重要概念,尤其在数据库管理系统中。事务是指一组操作。,这些操作要么全部成功执行,要么全部不执行,确保数据的一致性和完整性 编程式事务 编…...
VulnHub-Web-Machine-N7通关攻略
一、信息收集 第一步:确定靶机IP为192.168.0.107 第二步:扫描后台及开放端口 第三步:进行敏感目录及文件扫描 http://192.168.0.107/index.html (CODE:200|SIZE:1620) http://192.168.0.107/server-status (CODE:403|SIZ…...
【PCIe 总线及设备入门学习专栏 3.1 -- PCIe 中为何只有 TLP 会被 Switch 和 RC 进行路由?】
文章目录 Overview为什么 DLLP 不需要路由呢?总结Overview 这里介绍些为什么在 PCIe 中只有 TLP(事务层数据包)会被 Switch 和 Root Complex(RC) 路由,而 DLLP(数据链路层数据包)和 Ordered Set 不会被路由。这是因为 TLP 起始于源端口的事务层,结束于目的端口的事务…...
3月21号
今天写了一些题: P1149 [NOIP 2008 提高组] 火柴棒等式 题目描述 给你 n 根火柴棍,你可以拼出多少个形如 ABC 的等式?等式中的 A、B、C 是用火柴棍拼出的整数(若该数非零,则最高位不能是 0)。用火柴棍拼数字 0∼9 的…...
以高斯(GaussDB) 为例, 在cmd 命令行连接数据,操作数据库,关闭数据库的详细步骤
以下是使用 Windows 命令行(cmd) 操作 GaussDB(以 GaussDB(for openGauss) 社区版为例) 的详细步骤,涵盖 连接数据库、基本操作、关闭数据库 的全流程: 1. 环境准备 前提条件: 安装 GaussDB&a…...
Spring Boot 3 新特性实战:从理论到实践
引言 Spring Boot 自发布以来,凭借其简洁的配置和强大的功能,迅速成为 Java 开发者的首选框架。随着 Spring Boot 3 的发布,开发者们迎来了更多令人兴奋的新特性。本文将深入探讨 Spring Boot 3 的新特性,并通过实战示例展示如何…...
在 Linux 系统中,路径(Path)用于定位文件或目录的位置。路径分为两种类型:相对路径和绝对路径。它们的核心区别在于路径的起点不同
1. 绝对路径(Absolute Path) 定义: 从根目录 / 开始的完整路径,无论当前在哪个目录下,绝对路径都能唯一指向目标位置。 特点: 以 / 开头。明确且唯一,与当前所在目录无关。 示例: …...
AI 时代的通信新范式:MCP(模块化通信协议)的优势与应用
文章目录 引言 1. 传统 API 的局限性2. MCP(模块化通信协议)的核心优势2.1 更好的模块化支持2.2 低耦合性与灵活性2.3 高性能数据传输2.4 适配分布式 AI 计算架构 3. AI 时代的 MCP 应用案例4. 结论:AI 时代的通信新范式 引言 在 AI 驱动的现…...
Jmeter旧版本如何下载
1.Jmeter最新版本下载位置 https://jmeter.apache.org/download_jmeter.cgi2.Jmeter旧版本下载位置 https://archive.apache.org/dist/jmeter/binaries稳定版本:5.4.1...
XXE漏洞
一、XXE漏洞概述 1. 定义 XXE(XML External Entity Injection)即 XML外部实体注入漏洞,攻击者通过构造恶意XML数据,利用XML解析器的外部实体加载功能,实现 文件读取、内网探测、拒绝服务(DoS)…...
麒麟操作系统安装人大金仓数据库
如果你想拥有你从未拥有过的东西,那么你必须去做你从未做过的事情 在当前数字化转型和信息安全备受重视的背景下,众多公司积极推进国产化改造进程。在操作系统领域,统信、open 欧拉、中标麒麟、银河麒麟等国产操作系统崭露头角,逐…...
嵌入式芯片与系统设计竞赛,值得参加吗?如何选题?需要学什么?怎么准备?
2025年全国大学生嵌入式芯片与系统设计竞赛已经正式启动,3月10日大赛通知正式下发,3月10日-19日各赛道的选题也陆续公布,4月25日大赛报名截止,感兴趣的同学可以及时关注! 大赛报名通知: 大赛通知丨2025年嵌…...
dfs刷题排列问题 + 子集问题 + 组和问题总结
文章目录 一、排列问题全排列II题解代码 优美的排列题解代码 二、子集问题字母大小写全排列题解代码 找出所有子集的异或总和再求和题解代码 三、组合问题电话号码的字母组合题解代码 括号生成题解代码 组合题解代码 目标和题解代码 组合总和题解代码 总结 一、排列问题 全排列…...
Win上安装Linux(虚拟机版)
目录 1、下载虚拟机Vmware Fusion 2、linux镜像文件下载(redhat版) 3、redhat镜像安装 4、第一次启动linux系统设置 1、下载虚拟机Vmware Fusion 下载地址:Vmware下载链接 2、linux镜像文件下载(redhat版) 官网…...
从零开发数据可视化
一、可视化模版展示 二、知识及素材准备 div css 布局flex布局Less原生js jquery 的使用rem适配echarts基础 相关js、images、font百度网盘下载链接: 通过百度网盘分享的文件:素材1 链接: https://pan.baidu.com/s/1vmZHbhykcvfLzzQT5USr8w?pwdwjx9…...
访问者模式
访问者(Visitor)模式属于行为型模式的一种。 访问者模式主要用于分离算法和对象结构,从而在不修改原有对象的情况下扩展新的操作。它适用于数据结构相对稳定,而操作(行为)容易变化的场景。 访问者模式允许…...
字符指针的三道例题+算法改进
目录 一.杨氏矩阵 1.初级 2.想把下标带回来 二.字符串左旋 算法改进 三.判断是否为字符串旋转结果 算法改进 四. 3个字符函数 1.strcat 2.strncat 3.strstr 一.杨氏矩阵 数字矩阵,每行从左到右递增,每列从上到下递增,编写程序在矩…...
zephyr-中国跨国并购数据(1997-2024.3.8)
Zephyr专注于提供关于跨国并购、合资和投资的数据。本次分享的Zephyr中国跨国并购数据,涵盖了从1997年到2024年3月8日的并购金额、交易类型、交易状态等详细交易记录,可为研究者分析并购趋势与模式、绩效等提供数据支持。 一、数据简介 数据名称&#x…...
UNIX网络编程笔记:套接字
套接字 什么是套接字(Socket)? 套接字(Socket) 是网络编程中的核心概念,可以理解为一种通信端点,用于实现不同设备之间的数据交换。它类似于现实中的“插座”,为应用程序提供了一套…...
协议-CAN-CANopen
是什么? 汽车工程师的总线协议为什么? 1980年代初期,由于没有可满足汽车工程师的总线协议,人们开始开发新的串行总线在底特律举行SAE会议上CAN总线诞生,称之为Automotive Serial Controller Area Network怎么做? 核心本质 两根线上特殊电平的特殊协议张嘴显性电平‘0’,…...
星越L_ 雨刷使用功能讲解
目录 1.向下拨动 2,向上拨动 3.调节雨刷的灵敏度 4.再次向上拨动 5.再向上 6.向内侧拨动 7.后雨刷开启 8.向外侧拨动 9.更换雨刷 1.向下拨动 雨刷单次工作 2,向上拨动 自动雨刷开启 3.调节雨刷的灵敏度 转动滚轮调节雨刷的灵敏度...
关于FastAPI框架的面试题及答案解析
FastAPl是一个现代、快速(高性能)的Web框架,用于构建API,基于Python3.7+的类型提示功能。它由Python开发者SebastianRamirez创建,并且使用了Starlette作为其核心组件以及Pydantic进行数据验证。 文章目录 基础篇1. FastAPI的核心优势是什么?2. 如何定义一个GET请求路由?…...
[7-01-03].SpringBoot3集成MinIo
MinIO学习大纲 一、Spingboot整合MinIo 第1步:搭建SpringBoot项目: 第2步:引入minio依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi&q…...
一个KADB测试实践
测试结果 本文档描述xxxx测试中6个典型测试场景的测试结果及背景,旨在对不同数据量,不同存储方式,不同优化器三者的组合优化进行探索,进而为未来的类似测试提供组合优化参考。 数据插入(500万) 5进程批量…...
dockerSDK-Go语言实现
前情提要 本文基于开发一个在线代码运行平台的项目需求上,所以需要挂载目录以达到获得执行文件的目的。 步骤1 首先在docker-compose 文件中,当前容器一定要跟宿主机的套接字进行挂载 version: 3.8 services: code-runner-api: build: context: . d…...
使用excel.EasyExcel实现导出有自定义样式模板的excel数据文件,粘贴即用!!!
客户要求导出的excel文件是有好看格式的,当然本文举例模板文件比较简单,内容丰富的模板可以自行设置,话不多说,第一步设置一个"好看"的excel文件模板 上面要注意的地方是{.变量名} ,这里的变量名对应的就是…...
C++ string的模拟实现
Hello!!大家早上中午晚上好,昨天复习了string的使用,今天来模拟实现一下string!!! 一、string的框架搭建 1.1首先我们需要一个string的头文件用来做变量、函数、类等声明;再需要一个test文件来做测试,还需…...
Spring AI Alibaba ChatClient使用
一、ChatClient简介 Chat Client:https://java2ai.com/docs/1.0.0-M5.1/tutorials/chat-client/ 1、ChatClient 简介 ChatClient 提供了与 AI 模型通信的 Fluent API,它支持同步和反应式(Reactive)编程模型。与 ChatModel、Messag…...
算法及数据结构系列 - 二分查找
系列文章目录 算法及数据结构系列 - BFS算法 文章目录 二分查找框架思路经典题型二分查找寻找左侧边界寻找右侧边界 刷题875. 爱吃香蕉的珂珂1011. 在 D 天内送达包裹的能力392. 判断子序列 二分查找 框架思路 int binarySearch(int[] nums, int target) {int left 0, righ…...
回归任务训练--MNIST全连接神经网络(Mnist_NN)
import torch import numpy as np import logging from torch.utils.data import TensorDataset, DataLoader from torch.utils.data import DataLoader# 配置日志 logging.basicConfig(levellogging.INFO, format%(asctime)s - %(levelname)s - %(message)s)# 定义 loss_batch…...
SvelteKit 最新中文文档教程(8)—— 部署 Node 服务端
前言 Svelte,一个语法简洁、入门容易,面向未来的前端框架。 从 Svelte 诞生之初,就备受开发者的喜爱,根据统计,从 2019 年到 2024 年,连续 6 年一直是开发者最感兴趣的前端框架 No.1: Svelte …...
【Linux】VMware17 安装 Ubuntu24.04 虚拟机
目录 安装教程 一、下载 Ubuntu 桌面版iso映像 二、安装 VMware 三、安装 Ubuntu 桌面版 VMware 创建虚拟机 挂载 Ubuntu ISO 安装 Ubuntu 系统 安装教程 一、下载 Ubuntu 桌面版iso映像 链接来自 清华大学开源软件镜像站 ISO文件地址:ubuntu-24.04.2-des…...
Python functools 模块的 @lru_cache 装饰器介绍
functools.lru_cache 是 Python 标准库 functools 模块中的一个装饰器,用于实现简单的缓存机制。它通过缓存函数的返回值来提高函数的执行效率,特别是对于那些被多次调用且参数相同的函数。 LRU 缓存机制 LRU 代表 Least Recently Used,即最…...
JavaScript基础-节点操作
在Web开发中,动态地修改网页内容是提升用户体验的重要手段之一。通过JavaScript操作DOM(文档对象模型)中的节点,我们可以轻松地实现这一目标。本文将介绍JavaScript中关于节点操作的基础知识,涵盖创建新节点、插入节点…...
【数据分享】2000—2024年我国乡镇的逐月归一化植被指数(NDVI)数据(Shp/Excel格式)
之前我们分享过2000—2024年我国省市县三级逐月归一化植被指数(NDVI)数据,该数据是基于NASA定期发布的MOD13A3数据集中的月度NDVI栅格数据(可查看之前的文章获悉详情)计算得出。很多小伙伴拿到数据后反馈是否可以处理出…...
Linux中基本命令
目录 ls pwd cd touch mkdir rm cp mv cat less head tail find grep ls 其实大部分命令都是可执行的文件,但有一些命令比如Shell内置命令,它没有对应的独立可执行文件,而是由Shell直接解释执行的。 功能:显示当前目…...
【时时三省】(C语言基础)习题2 scanf函数
山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 用下面的scanf函数输入数据,使a 3,b 7,x 8.5,y 71.82,c1 A,c2 x在键盘上应如何输入? 分析第一个 scanf 函数&…...
文件相关函数的总结与记忆
1.字符的输入输出 char ch getchar();//不需要传递参数 putchar(a)putc、getc与fputc、fgetc一致 //必须用int接受,因为返回int类型,char因为编译器不同而可能为无符号和有符号 int ch if( (ch getchar() ) ! EOF) 2.行的输入输出 也可以用于二进制…...