Stable Diffusion的基本原理
Stable Diffusion 基本原理 Stable Diffusion 中文译为"稳定的扩散": Stable:稳定 Diffusion:扩散 整个 SD 系统基于扩散算法生成图像,其核心原理是"生噪到去噪"的过程: 正向扩散:增加噪声点(生噪) 反向扩散:消除噪声点(去噪) 在图像生成时,系统会: 先将图片铺满噪声点 根据设定的步数(steps)逐步降噪 通过删除噪声点最终形成目标图像 可以形象的想象为睁眼-眯眼-睁眼的过程 文本编码:CLIP 的作用 当输入提示词(如"One Beautiful Girl")时,AI 并不能直接理解人类语言。这类似于只会讲中文的人与只会讲英文的人交流,需要一个"翻译"环节。 在 AI 世界中,这个翻译就是 CLIP(Contrastive Language-Image Pre-training): CLIP 是文本编码器(Text...
RAG是什么?宗述与详解
RAG教程|博文|GitHub推荐: YouTube: [RAG 工作机制详解——一个高质量知识库背后的技术全流程]((105) RAG 工作机制详解——一个高质量知识库背后的技术全流程 - YouTube) GitHub: All-in-RAG | 大模型应用开发实战:RAG技术全栈指南 GitHub - ZBayes/basic_rag: basic framework for rag(retrieval augment generation) CSDN: RAG原理、综述与应用全解析【万字长文】 RAG是什么?一文讲明白所有RAG概念!附带完整RAG实践过程 RAG基本概念 一个简单的RAG案例 许多纯小白对于大模型和RAG可能并没有一个具体的概念,现以下面的的简单案例介绍以下: 想象一下,你开了一家网店,生意越来越火,客服消息回不过来了。你听说现在AI很厉害,于是买了一个基于“Deepseek”大模型的AI客服机器人。 第一天上线,你就发现了问题: 顾客问:“你们最新款的iPhone...
MCP是什么?宗述和概念梳理
MCP教程|博文|网址推荐 CSDN: MCP是什么,一篇搞懂MCP爆火的其中奥秘! 什么是MCP和A2A?一文搞懂MCP和A2A,非常详细收藏这一篇就够了_mcp a2a-CSDN博客 MCP协议是什么?MCP入门实战-CSDN博客 YouTube: MCP是啥?技术原理是什么?一个视频搞懂MCP的一切。Windows系统配置MCP,Cursor,Cline 使用MCP
纹理Texture
什么是 Texture? **Texture(纹理)**是计算机图形学中用于增强图像细节和真实感的一种图像或数据贴图。它的本质是一种二维或多维数据(通常是图片),用于为图形表面提供颜色、法线、反射、透明度等信息。 ✅ 简单理解:纹理就是“皮肤”,贴在 3D 模型或 2D 表面上,用来增加细节,不用再建更多几何结构。 纹理映射(Texture Mapping) 纹理映射是一种将二维纹理图像(通常为位图)“贴”到三维模型表面的方法,目的是在不增加几何体复杂度的前提下,为三维物体提供更细致的视觉效果。通过纹理映射,物体表面可以拥有丰富的颜色、图案、细节等信息,而不需要额外的多边形面片。 如上图所示:3D物体的表面其实都是2D的,比如地球仪,将地球仪上的图撕下来,可以平铺成一张2D的图物体的表面,通过这种方式可以和一张图有一一对应的关系,这张图就叫纹理, 将这张图平铺/裁剪/拉伸到任何物体表面,就叫纹理映射,纹理上的坐标系通常以UV来表示。 UV坐标系 UV 坐标系统:这是一种标准的坐标系统,用来描述如何将纹理与物体表面的几何形状进行对应。纹理坐标的值通常在 [0, 1]...
着色Shading
Shading是图形学中决定物体表面外观的关键技术,它模拟光线与物体表面的交互过程。 什么是Shading? Shading是指计算物体表面颜色和明暗的过程,通过模拟光线与材质相互作用来产生逼真的视觉效果。 局部着色(Shading is Local) 定义为:计算特定着色点处反射到相机的光线 其关键要素一般为: l 光线照射方向向量 n 着色点表面法向量 v 观察视角方向 以及一个关键的表面参数(比如颜色color,光泽度shininess) 基础光照现象 如上图所示,**镜面高光(Specular highlights)**在杯口和把手转折处形成明亮的聚焦光斑,体现了光滑表面对光源的直接反射;**漫反射(Diffuse reflection)**在杯身侧面形成均匀的色彩渐变,如淡绿色杯子柔和的明暗过渡,反映了朗伯体表面的均匀散射特性;**环境光(Ambient lighting)**则使背光面(如棕色杯子底部)保持基础可见性,代表间接光照的简化模拟。 漫反射与兰伯特余弦定律(Lambert’s Cosine...
光栅化Rasterization
什么是光栅化? 光栅化是 将几何图元(如三角形、线段)转换为屏幕上的像素(或片元)的过程,是实时3D渲染的核心步骤。它通过计算图元覆盖的像素区域,并插值顶点属性(颜色、深度等),最终生成可供显示的2D图像。 显示器模型 图形学中,屏幕就认为是一个装了像素的二维数组。如数组大小1920*1080,每个数组为一个像素点,像素是最小单位,每个像素由RBG的四维矩阵构成。 如上图所示像素的坐标以左下角为准,如图中蓝色像素坐标为(2,1) 像素的中心为(x+0.5,y+0.5) 视口变换 在进行了上节课的透视投影变换操作之后,所有物体都处在了[-1,1]³的立方体中,接下来就要把他画在屏幕上。 要将将[-1,1]³中的东西显示到屏幕上,我们可以考虑以下步骤: 暂时忽略z坐标 将[-1,1]²变换到xy平面[0, width] x [0, height] 这个过程称为视口变换,其矩阵示意如下: Mviewport=(width200width20height20height200100001)M_{\text{viewport}} =...
图形学基础概念-变换Transformation
变换Transformation是计算机图形学中的基础概念,用于描述和操作物体在二维或三维空间中的位置、方向和大小。 基本变换类型 缩放变换(Scale) 如图所示的坐标轴内物体缩放,其数学变换公式为: x′=s⋅xy′=s⋅y\begin{aligned} x' &= s \cdot x \\ y' &= s \cdot y \end{aligned} x′y′=s⋅x=s⋅y 矩阵格式表述为: [x′y′]=[s00s][xy]\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} s & 0 \\ 0 & s \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} [x′y′]=[s00s][xy] 而以此推广为非对称缩放变化: 此处的矩阵表述如下所示: S=[sx00sy]=[0.5001.0]S = \begin{bmatrix} s_x & 0 \\ 0 &...
图形学概述与数学基础
基本概念 计算机图形学是什么? 计算机图形学(Computer Graphics)是研究如何在计算机中表示、生成、处理和显示图形的学科。它结合了数学、物理学、计算机科学和艺术等多个领域的知识,致力于解决如何在计算机上创建和操作视觉内容的问题,其最直观的用途包括如下四个方面。 图形表示:研究如何在计算机中表示2D和3D图形对象 图形生成:如何从模型数据生成可视图像 图形处理:对已有图形进行变换、编辑和优化 图形显示:如何将生成的图形高效地显示在输出设备上 图形学(CG)与其他学科的关系 计算机视觉(CV):图形学是"从模型到图像",计算机视觉是"从图像到模型" 图像处理:图形学绘制(渲染)图像,图像处理修改已有图像 计算几何:提供图形学所需的几何算法 人机交互:图形学为HCI提供可视化界面 为什么要学图形学? 因为图形学很酷! 线性代数基础 向量的点乘(Dot Product) 两个向量的点乘结果是一个标量 a⃗⋅b⃗=∥a⃗∥∥b⃗∥cosθ\vec{a} \cdot \vec{b} = \|\vec{a}\|...
C++设计模式详解
什么是设计模式 引用**克里斯托弗·亚历山大(Christopher Alexander)**在1977年的著作《A Pattern Language: Towns, Buildings, Construction》中提出了关于设计模式的经典定义。 英文原版: “Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice.” — Christopher Alexander, A Pattern Language,...
C++中的堆,栈与内存管理
堆,栈与内存管理 C++ 提供了多种内存管理机制,让程序员可以精细控制内存的分配和释放。 Stack栈内存 由编译器自动分配和释放 存储局部变量、函数参数等 大小有限,通常几MB 分配和释放速度快 Stack是存在于某作用域(scope)的一块内存空间(memory space).例如当调用函数,函数本身就会形成一个stack用来放置它所接收的参数,以及返回地址.在函数本体(function body)内声明的任何变量,其所使用的内存块都取自该函数的stack. Heap堆内存 由程序员手动分配和释放 使用 new/delete 或 malloc()/free() 大小受系统可用内存限制 分配和释放速度较慢 Heap也叫system heap,是操作系统提供的一块global内存空间,程序可以通过动态分配(dynamic allocated)从其中获得区块. ⚠Warning! 程序中使用new/...