[论文解析]Mip-Splatting: Alias-free 3D Gaussian Splatting
Mip-Splatting: Alias-free 3D Gaussian Splatting
论文地址:https://arxiv.org/abs/2403.17888
源码地址:https://github.com/autonomousvision/mip-splatting
项目地址:https://niujinshuchong.github.io/mip-splatting/
论文解读
- 两个主要贡献点, 一个3D滤波器,一个2D滤波器
- 3D滤波主要约束3D高斯的高频频率
- 2D滤波主要解决屏幕投影的膨胀和失真问题
- 这个方法对场景细节应该会有优化,可以去除细节处的毛刺和floater
- 3DGS在最近的feature更新中加入了这一特性,大家也可以参考
3D滤波器
compute_3D_filter
函数计算出需要最大采样频率 ν ^ k \hat{\nu}_k ν^k和采样间隔 T ^ \hat{T} T^,论文中更新滤波器的频次和致密化的频率是一致的
@torch.no_grad()def compute_3D_filter(self, cameras):print("Computing 3D filter")#TODO consider focal length and image widthxyz = self.get_xyzdistance = torch.ones((xyz.shape[0]), device=xyz.device) * 100000.0valid_points = torch.zeros((xyz.shape[0]), device=xyz.device, dtype=torch.bool)# we should use the focal length of the highest resolution camerafocal_length = 0.for camera in cameras:# transform points to camera spaceR = torch.tensor(camera.R, device=xyz.device, dtype=torch.float32)T = torch.tensor(camera.T, device=xyz.device, dtype=torch.float32)# R is stored transposed due to 'glm' in CUDA code, so we don't neet transpose herexyz_cam = xyz @ R + T[None, :]xyz_to_cam = torch.norm(xyz_cam, dim=1)# project to screen spacevalid_depth = xyz_cam[:, 2] > 0.2x, y, z = xyz_cam[:, 0], xyz_cam[:, 1], xyz_cam[:, 2]z = torch.clamp(z, min=0.001)x = x / z * camera.focal_x + camera.image_width / 2.0y = y / z * camera.focal_y + camera.image_height / 2.0# in_screen = torch.logical_and(torch.logical_and(x >= 0, x < camera.image_width), torch.logical_and(y >= 0, y < camera.image_height))# use similar tangent space filtering as in the paperin_screen = torch.logical_and(torch.logical_and(x >= -0.15 * camera.image_width, x <= camera.image_width * 1.15),torch.logical_and(y >= -0.15 * camera.image_height,y <= 1.15 * camera.image_height))valid = torch.logical_and(valid_depth, in_screen)# distance[valid] = torch.min(distance[valid], xyz_to_cam[valid])distance[valid] = torch.min(distance[valid], z[valid])valid_points = torch.logical_or(valid_points, valid)if focal_length < camera.focal_x:focal_length = camera.focal_x# 对应论文公式7distance[~valid_points] = distance[valid_points].max()#TODO remove hard coded value#TODO box to gaussian transform#todo:对应公式6,但是这个系数哪里有说明?filter_3D = distance / focal_length * (0.2 ** 0.5) self.filter_3D = filter_3D[..., None]
- 3D滤波应用在scale和opacity两个高斯属性上面
@propertydef get_scaling_with_3D_filter(self):scales = self.get_scalingscales = torch.square(scales) + torch.square(self.filter_3D)scales = torch.sqrt(scales)return scales@propertydef get_opacity_with_3D_filter(self):# todo:对应公式9opacity = self.opacity_activation(self._opacity)# apply 3D filterscales = self.get_scaling# scale是[N,3,1]的张量,可以通过平方和prod得到对角矩阵的行列式scales_square = torch.square(scales)det1 = scales_square.prod(dim=1)scales_after_square = scales_square + torch.square(self.filter_3D)det2 = scales_after_square.prod(dim=1)coef = torch.sqrt(det1 / det2)return opacity * coef[..., None]
关于opacity校正的部分,在repo的issue48中有深入讨论:从理论上这里对opacity的处理是有问题的,本身3D滤波不应该对不透明度进行处理,应该只对scale进行限制。但是作者实验之后发现还是存在一定的floater;问题提出人给出了实验结果,但是这种处理会增加很多的高斯,我猜测是因为限制scale之后导致整体环境的表示需要更多的高斯去拟合,导致了ply数量的增长;
- 3D滤波器选择方差(kernel size)为0.2和2D滤波的方差0.1是为了保证组合效果,作者在实验后测试的结果;
2D滤波器
- 代码实现,这里是在render的cuda算子中进行了实现;目前有人在gsplat上面进行的尝试,链接在这里
// Forward version of 2D covariance matrix computation
__device__ float4 computeCov2D(const float3& mean, float focal_x, float focal_y, float tan_fovx, float tan_fovy, float kernel_size, const float* cov3D, const float* viewmatrix)
{// The following models the steps outlined by equations 29// and 31 in "EWA Splatting" (Zwicker et al., 2002). // Additionally considers aspect / scaling of viewport.// Transposes used to account for row-/column-major conventions.float3 t = transformPoint4x3(mean, viewmatrix);const float limx = 1.3f * tan_fovx;const float limy = 1.3f * tan_fovy;const float txtz = t.x / t.z;const float tytz = t.y / t.z;t.x = min(limx, max(-limx, txtz)) * t.z;t.y = min(limy, max(-limy, tytz)) * t.z;glm::mat3 J = glm::mat3(focal_x / t.z, 0.0f, -(focal_x * t.x) / (t.z * t.z),0.0f, focal_y / t.z, -(focal_y * t.y) / (t.z * t.z),0, 0, 0);glm::mat3 W = glm::mat3(viewmatrix[0], viewmatrix[4], viewmatrix[8],viewmatrix[1], viewmatrix[5], viewmatrix[9],viewmatrix[2], viewmatrix[6], viewmatrix[10]);glm::mat3 T = W * J;glm::mat3 Vrk = glm::mat3(cov3D[0], cov3D[1], cov3D[2],cov3D[1], cov3D[3], cov3D[4],cov3D[2], cov3D[4], cov3D[5]);glm::mat3 cov = glm::transpose(T) * glm::transpose(Vrk) * T;// Apply low-pass filter: every Gaussian should be at least// one pixel wide/high. Discard 3rd row and column.// compute the coef of alpha based on the detemintant, 对应论文公式10const float det_0 = max(1e-6, cov[0][0] * cov[1][1] - cov[0][1] * cov[0][1]);const float det_1 = max(1e-6, (cov[0][0] + kernel_size) * (cov[1][1] + kernel_size) - cov[0][1] * cov[0][1]);float coef = sqrt(det_0 / (det_1+1e-6) + 1e-6);if (det_0 <= 1e-6 || det_1 <= 1e-6){coef = 0.0f;}// kernel_size=0.1, 原版3DGS这里是0.3cov[0][0] += kernel_size;cov[1][1] += kernel_size;return { float(cov[0][0]), float(cov[0][1]), float(cov[1][1]), float(coef)};
}
-
kernel_size设定为0.1,这里的链接解释了为什么选择0.1作为高斯分布的方差,和论文中阐述是一致的,主要是模拟了一个box filter,理想情况是值用1个像素内的分布,0.1的高斯分布是最接近box filter的;下图表示了不同方差对应高斯分布;在最终的数据表现上,0.1的方差效果更好,细节处应该是表现更优秀的,但是会导致更多的高斯球,这对显存和训练耗时是个挑战;
-
VanlliaGS中也对去毛刺的方案进行了实现,但是将kernel_size设置为0.3;
Reference
对采样定理的浅显解释
- 采样定理的Wiki:https://zh.wikipedia.org/zh-cn/采样定理
Nyquist-Shannon采样定理是信号处理领域的一项基本原理。它说明了如何从连续信号中准确重构离散信号。
基本概念
- 连续信号:原始的模拟信号,通常随时间连续变化。
- 离散信号(采样信号):对连续信号依照一定间隔进行采样得到的数值集合。
采样定理内容
- 采样率:采样信号的频率,即每秒对连续信号进行采样的次数,用 f s f_s fs表示。
- 最大频率(带宽):连续信号中包含的最高频率成分,用 f m a x f_{max} fmax表示。
定理:要从采样信号中完全重建原始信号,采样率必须大于两倍的最大频率: f s > 2 × f m a x f_s > 2 \times f_{max} fs>2×fmax
这个条件也称为奈奎斯特频率(Nyquist Frequency),即: f s = 2 × f m a x f_s = 2 \times f_{max} fs=2×fmax
实际意义
- 防止混叠(Aliasing):若采样率过低,信号中的高频成分将无法被正确重建,产生混叠现象,使不同频率的信号在重建时混淆在一起。
- 信号重构:在满足Nyquist频率的条件下,可以使用适当的滤波器(如低通滤波器)从采样数据中完美重构原始信号。
应用实例
- 音频处理:CD音频的采样率通常为44.1 kHz,超过人类可听频率(约20 kHz)的两倍,以确保音质。
- 图像处理:屏幕显示时,需要针对像素密度来选择适当的采样率以防止视觉伪影。
总结
Nyquist-Shannon采样定理为信号处理中的离散化提供了理论基础,指导如何选择适当的采样率来确保信号的完整重建。这对于数字音频、图像及通信系统等领域至关重要。
相关文章:
[论文解析]Mip-Splatting: Alias-free 3D Gaussian Splatting
Mip-Splatting: Alias-free 3D Gaussian Splatting 论文地址:https://arxiv.org/abs/2403.17888 源码地址:https://github.com/autonomousvision/mip-splatting 项目地址:https://niujinshuchong.github.io/mip-splatting/ 论文解读 两个主…...
MongoDB 入门使用教程
MongoDB 入门使用教程 MongoDB 是一个开源的 NoSQL 数据库,使用文档(JSON-like)存储数据,与传统的关系型数据库不同,它不依赖表结构和行列的约束。MongoDB 提供了强大的查询能力,支持高效的数据存储和检索…...
PowerBI动态路径获取数据技巧
PowerBI动态路径获取数据技巧 场景一:同事接力赛——不同电脑共用模板 (想象一下:小王做完报表要传给小李,结果路径总对不上怎么办?) 这种情况就像接力赛交接棒,每台电脑的账户名不同࿰…...
【数据结构】优先级队列
目录 1. 优先级队列概念 2. 优先级队列的模拟实现 2.1 堆的概念 2.2 堆的存储方式 2.3 堆的创建 2.3.1 向下调整的时间复杂度 2.3.2 建堆时间复杂度 2.3.3 向上调整的时间复杂度 2.4 堆的插入与删除 3. 堆的应用 4. 常用接口介绍 4.1 PriorityQueue的特性 4.2 Pri…...
Myweb项目——面试题总结
一.项目描述 项⽬概述:本项⽬在云服务上开发了⼀个后端服务器与前端⻚⾯为⼀体的⾳乐专辑 鉴赏⽹站,旨在为⽤⼾提供丰富的⾳乐专辑信息展⽰和优 质的浏览体验。 主要内容及技术: 后端开发:利⽤ C 语⾔构建后端服务器,…...
用高德API提取广州地铁线路(shp、excel)
目录 结果示例html文件——直观看出输出的效果excel文件——包括地铁的具体信息完整代码网络上现有的地铁数据要么过于老旧且不便于更新,要么过于定制化限定于具体的城市无法灵活调整得到自己真正想要的那部份数据。而使用高德的API可以非常方便得到全国各地的地铁数据,而且可…...
leetcode110 平衡二叉树
一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数。二叉树节点的高度:指从该节点到叶子节点的最长简单路径边的条数。 递归:…...
二、信息时代社会结构的转变
到了信息时代,以及在核武器的前提下,上述的社会结构的逻辑,就有了一个根 本性的转变,就是暴力的成本和收益,都在下降。 暴力的成本在降低。比如说枪支,它的制造和分发都变得非常容易。现在我们都 知道有 3D 打印,它就好像工业时代的印刷机,印刷圣经或者书籍,使知识更加 普及和容…...
Vue2+ElementUI实现无限级菜单
使用Vue2和ElementUI实现无限级菜单,通常菜单数据以树形结构存储,每个菜单包含多个子菜单 ,子菜单又可以继续包含更深层次的子菜单项。所以,需要使用递归形式,完成子项菜单的渲染。 这里,结合Element UI界面的el-menu和el-submenu组件来构建菜单结构,有子菜单时使用el-s…...
YTJ笔记——FFT、NCC
FFT算法 快速傅里叶算法 为了计算两个多项式相乘(卷积),将多项式系数表示法转换成点值表示法 F(g(x)∗f(x))F(g(x))F(f(x)) 超详细易懂FFT(快速傅里叶变换)及代码实现_傅立叶变换编程-CSDN博客 NCC算法…...
模型 隐含前提
系列文章分享模型,了解更多👉 模型_思维模型目录。隐藏的思维地基,决策的无声推手。 1 隐含前提模型的应用 1.1 金融投资决策—科技股估值隐含前提的验证 行业:金融投资 应用方向:投资逻辑验证 背景解读࿱…...
大模型微调与蒸馏的差异性与相似性分析
大模型微调与蒸馏的差异性分析 一、定义与核心目标差异 大模型微调 在预训练大模型基础上,通过少量标注数据调整参数,使模型适应特定任务需求。核心目标是提升模型在特定领域的性能,例如医疗影像分析或金融预测。该技术聚焦于垂直场景的精度…...
Ubuntu下安装vsode+qt搭建开发框架(一)
Ubuntu下安装vsode+qt搭建开发框架(一) g++的编译环境,这里不介绍,可点击这里查看 查看一下当前的g++环境 g++ --version g++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 Copyright (C) 2021 Free Software Foundation, Inc. This is free software; see the source for copyin…...
单片机-89C51部分:3、创建工程
飞书文档https://x509p6c8to.feishu.cn/wiki/Mzhnwb1qni6YkykJtqXc17XMnre 创建工程 首先创建一个文件夹,用来存放工程文件,文件夹名称最好为英文,例如Demo1。 打开软件KEIL,上方菜单栏选择Project ->new uVision Project&am…...
从零实现 registry.k8s.io/pause:3.8 镜像的导出与导入
以下是为 registry.k8s.io/pause:3.8 镜像的导出与导入操作定制的完整教程,适用于 Kubernetes 集群中使用 containerd 作为容器运行时的场景。本教程包含详细步骤、常见问题解析及注意事项。 从零实现 registry.k8s.io/pause:3.8 镜像的导出与导入 背景说明 Kuber…...
详解Adobe Photoshop 2024 下载与安装教程
Adobe Photoshop下载安装和使用教程 Adobe Photoshop,简称“PS”,是由Adobe Systems开发和发行的图像处理软件。Photoshop主要处理以像素所构成的数字图像。使用其众多的编修与绘图工具,可以有效地进行图片编辑和创造工作,…...
thinking-intervention开源程序用于DeepSeek-R1等推理模型的思维过程干预,有效控制推理思考过程
一、软件介绍 文末提供程序和源码下载 thinking-intervention开源程序用于DeepSeek-R1等推理模型的思维过程干预,有效控制推理思考过程。基于论文 《Effectively Controlling Reasoning Models through Thinking Intervention》 实现的思维干预技术,用于…...
Qt 5.15 编译路径吐槽点
在Qt 5.15以前,勾选“Shadow build”会自动将编译文件放在同一个目录下(区分编译器类型、Qt版本、debug和release等),可将代码文件和编译文件区分开,用户不用操心。但是奇葩的是,这个功能Qt 5.15居然失效了…...
【机器学习-线性回归-3】深入浅出:简单线性回归的概念、原理与实现
在机器学习的世界里,线性回归是最基础也是最常用的算法之一。作为预测分析的基石,简单线性回归为我们理解更复杂的模型提供了完美的起点。无论你是机器学习的新手还是希望巩固基础的老手,理解简单线性回归都至关重要。本文将带你全面了解简单…...
【MCP Node.js SDK 全栈进阶指南】中级篇(5):MCP客户端高级开发
在前面的系列文章中,我们主要关注了服务器端的开发,包括基础服务器构建、资源设计、身份验证与授权以及错误处理与日志系统。本篇文章将转向客户端,探讨MCP TypeScript-SDK在客户端开发中的高级应用。 客户端开发是MCP应用的重要组成部分,它连接了用户与服务器,提供了交互…...
RASP技术在DevOps中的安全应用
随着新技术的不断演进,DevOps开发模式不断被利用,Web应用程序的开发相比过往更高效。随之而来的是保护这些应用程序同样面临着巨大挑战,黑客的攻击手段不断多变,而DevOps团队成员却不都是安全专家,难以保证应用程序的安…...
2025.04.26-饿了么春招笔试题-第三题
📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 03. 魔法网格变换计数 问题描述 LYA是一位魔法研究学者,她正在研究一种特殊的魔法网格。这个网格有 n n n...
Linux线程与进程:探秘共享地址空间的并发实现与内
Linux系列 文章目录 Linux系列前言一、线程的概念二、线程与地址空间2.1 线程资源的分配2.2 虚拟地址到物理地址的转换 三 、线程VS进程总结 前言 在Linux操作系统中,线程作为CPU调度的基本单位,起着至关重要的作用。深入理解线程控制机制,是…...
数据结构手撕--【堆】
目录 编辑 定义结构体: 初始化: 插入数据: 删除: 取堆顶元素: 堆销毁: 判断堆是否为空: TopK问题: 堆其实是完全二叉树 物理结构:二叉树的层序遍历(…...
MySQL基本命令--系统+用户+表
前言:在当今数据驱动的时代,关系型数据库依然是构建信息系统的中坚力量,而MySQL作为开源领域中最广泛使用的数据库管理系统之一,以其高性能、稳定性和易用性赢得了开发者和企业的青睐。无论是在小型博客系统中承担数据存储职责&am…...
4.23-4.26学习总结 HTML—CSS常见标签和样式
页部导航栏: flex样式: 表单标签: (25行是设置点击按钮) 表单项标签: 搜索表单区域: 底部版权区域: 总结:...
使用Django框架表单
使用Django框架表单 文章目录 使用Django框架表单[toc]1.使用Form类构建表单2.表单字段与Widget控件 1.使用Form类构建表单 【创建项目和应用】 PS C:\Users\ls> cd E:\Python\ PS E:\Python> django-admin.exe startproject FormSite PS E:\Python> cd .\FormSite\…...
OpenCV第6课 图像处理之几何变换(缩放)
1.简述 图像几何变换又称为图像空间变换,它将一幅图像中的坐标位置映射到另一幅图像中的新坐标位置。几何变换并不改变图像的像素值,只是在图像平面上进行像素的重新安排。 根据OpenCV函数的不同,本节课将映射关系划分为缩放、翻转、仿射变换、透视等。 2.缩放 2.1 函数…...
Python AI图像生成方案指南
1. 简介 AI图像生成是当前最热门的AI应用领域之一,Python提供了多种工具和库来实现这一功能。本指南将介绍几种主流的AI图像生成方案及其Python实现方法。 2. 主流AI图像生成技术 2.1 生成对抗网络(GANs) 原理:由生成器和判别器组成的对抗系统 特点&am…...
【C++】stack、queue和priority_queue的模拟实现
文章目录 前言一. stack1.1 stack的介绍1.2 stack的使用1.3 stack的模拟实现 二. queue2.1 queue的介绍2.2 queue的使用2.3 queue的模拟实现 三. deque3.1 deque的原理介绍3.2 deque的缺陷3.3 为什么选择deque作为stack和queue的底层默认容器 四. priority_queue(优…...
Jmeter数据库url开关设置+常用Beanshell
1、数据库url开关设置 (79 90) jdbc:mysql://test.lemonban.com:3306/future?allowMultiQueries-true&characterEncodingUTF-8 多条查询开关:allowMultiQueriestrue 字符集配置:characterEncodingUTF-8 2、用BeanShell提取Map中的方…...
NtripShare 2025第一季度主要技术进展
GNSS方面 1、开源GNSS接收机配置软件基础版本。 2、商业版本GNSS接收机配置软件,增加PPP、文件保存、前端解算(静态、RTK-Static),前端坐标转换。 3、GNSS接收机配置软件全面适配米尔T133i硬件方案。 视觉检测方面 1、做出第…...
Linux系统编程之内存映射
概述 内存映射是操作系统提供的一种机制,使得文件或设备的内容可以直接映射到进程的虚拟地址空间中。这意味着,我们可以像访问数组一样读写文件内容,而不需要显式地调用I/O函数进行数据传输。内存映射适用于多种应用场景,包括但不…...
一文详解Adobe Photoshop 2025安装教程
Adobe Photoshop下载安装和使用教程 Adobe Photoshop,简称“PS”,是由Adobe Systems开发和发行的图像处理软件。Photoshop主要处理以像素所构成的数字图像。使用其众多的编修与绘图工具,可以有效地进行图片编辑和创造工作,…...
ShenNiusModularity项目源码学习(23:ShenNius.Admin.Mvc项目分析-8)
用户列表页面用于检索、新建、编辑、删除系统用户,同时设置用户角色。该页面对应的文件Index.cshtml位于ShenNius.Admin.Mvc项目的Areas\Sys\Views\User内,同目录下还有Modify.cshtml(新建、编辑用户)、SetRole.cshtml(…...
vue中 vue.config.js反向代理
新建一个node 服务 1 npm init -y //创建一个package.json 2.npm i express 3. 新建一个app.js 4.键入代码 const express require("express") const app express()app.get("/user",(req,res)>{res.send({"name":"good"…...
AIGC赋能智慧医疗:从影像诊断到个性化治疗的革命性突破
一、医疗AIGC技术架构 1.1 医疗场景技术挑战 医疗环节 行业痛点 AIGC解决方案 影像诊断 人工阅片效率低 多模态病灶分割与分级系统 病历管理 结构化程度低 语音转文本智能编码 药物研发 周期长成本高 分子生成与虚拟筛选 个性化治疗 方案标准化不足 基因组学临床数据融合模型 1…...
Yarn 安装与使用教程
Yarn 安装与使用教程 Yarn 是一个由 Facebook 开发的 JavaScript 包管理工具,它比传统的 npm 更加高效、可靠,并且在性能上有所提升。Yarn 主要解决了 npm 安装速度慢、并发性差、缓存机制不完善等问题,它提供了更快的安装速度、更稳定的依赖…...
机器学习之二:指导式学习
正如人们有各种各样的学习方法一样,机器学习也有多种学习方法。若按学习时所用的方法进行分类,则机器学习可分为机械式学习、指导式学习、示例学习、类比学习、解释学习等。这是温斯顿在1977年提出的一种分类方法。 有关机器学习的基本概念,…...
【学习笔记】检索增强生成(RAG)技术
检索增强生成(RAG)技术:原理、实现与发展趋势 1. RAG技术概述 检索增强生成(Retrieval-Augmented Generation,RAG)是一种将信息检索与生成模型相结合的技术,旨在增强大型语言模型的知识能力和…...
计算机视觉——对比YOLOv12、YOLOv11、和基于Darknet的YOLOv7的微调对比
概述 目标检测领域取得了巨大进步,其中 YOLOv12、YOLOv11 和基于 Darknet 的 YOLOv7 在实时检测方面表现出色。尽管这些模型在通用目标检测数据集上表现卓越,但在 HRSC2016-MS(高分辨率舰船数据集) 上对 YOLOv12 进行微调时&…...
Pygame跨平台打包:将游戏发布到Windows、Mac和Linux
Pygame跨平台打包:将游戏发布到Windows、Mac和Linux 引言 在游戏开发的世界中,Pygame 是一个非常受欢迎的库,它使得使用 Python 编写 2D 游戏变得简单而有趣。然而,当你完成了一个游戏并希望将其发布给更多的玩家时,如何将你的游戏打包成可以在不同操作系统上运行的可执…...
关于图论的知识
如果一个无向图有 $n\times (n-1)\div 2$ 条边,称为**完全图** 如果一个完全图任意两个点都可以互相到达,称为**连通图** 一个包含 $dfs$ 与 $bfs$ 的图的遍历程序 程序可做到的: 1、每一行输出一个 **搜索树** 2、$dfs$ 与 $bfs$ 并存 c…...
365打卡第R3周: RNN-心脏病预测
🍨 本文为🔗365天深度学习训练营中的学习记录博客 🍖 原作者:K同学啊 🏡 我的环境: 语言环境:Python3.10 编译器:Jupyter Lab 深度学习环境:torch2.5.1 torchvision0…...
如何解决IDE项目启动报错 error:0308010C:digital envelope routines::unsupported 问题
如何解决IDE项目启动报错 error:0308010C:digital envelope routines::unsupported 问题 在现代软件开发过程中,开发人员通常使用集成开发环境(IDE)如IntelliJ IDEA、Visual Studio Code(VSCode)等进行Node.js项目开发…...
嵌入式学习笔记 - HAL_xxx_MspInit(xxx);函数
使用cubeMX生成的HAL库函数中,所有外设的初始化函数HAL_xxx_Init(&xxxHandle)中都存在有此调用函数,此调用函数其实是对各外设模块比如UART,I2C等的底层硬件初始化,包括UART时钟,以及UART用到的GPIO的工作模式以及…...
Dify框架面试内容整理-Dify框架
什么是Dify框架? Dify框架是一个开源的AI应用开发平台,专注于帮助开发者和非技术人员快速构建、部署和管理基于大语言模型(如GPT系列、国产开源模型)的应用。 Dify框架的特点:...
计算机网络的五层结构(物理层、数据链路层、网络层、传输层、应用层)到底是什么?
文章目录 五层结构1. 物理层(Physical Layer)2. 数据链路层(Data Link Layer)3. 网络层(Network Layer)4. 传输层(Transport Layer)5. 应用层(Application Layer…...
【计算机视觉】CV实战项目 -深度解析PaddleSegSharp:基于PaddleSeg的.NET图像分割解决方案
深度解析PaddleSegSharp:基于PaddleSeg的.NET图像分割解决方案 技术背景与项目概述核心功能与特点实战部署指南环境要求硬件要求软件依赖 项目结构快速开始1. 获取项目2. 准备模型文件3. 运行示例 高级使用技巧模型切换背景替换性能优化 常见问题与解决方案技术原理…...
面试新收获-大模型学习
大模型原理 Transformer 架构与自注意力机制 Transformer 是当前大多数大模型采用的核心架构,由编码器-解码器组成,摒弃了传统 RNN 的顺序处理方式。Transformer 中关键在于多头自注意力机制(Multi-Head Self-Attention)…...