BRDF101 概述 本文基于知乎Maple对brdf的文章,在此基础又收集了一些其它来源的关于brdf的文章,希望能够完全理解记忆相关知识关于JakubBoksansky的文章,看的过程中又去搜集了很多其它文章来理解,发现已经超出了我目前的知识厚度,因此只会简单的翻译一下我能理解的部分,感兴趣的可以自行看原文。侵删 Maple 文章地址:https://zhuanlan.zhihu.com/p/21376124文章讨论了BRDF(BidirectionalReflectanceDistributionFunction)双向分布反射函数介绍了辐射度量学、BRDF定义、如何使用BRDF计算 Sc...

  Ly5WKgqR6znz   15天前   21   0   0 计算机图形学

d3d12龙书阅读----绘制几何体(上) 本节主要介绍了构建一个简单的彩色立方体所需流程与重要的api下面主要结合立方体代码分析本节相关知识 顶点 输入装配器阶段的输入首先,我们需要定义立方体的八个顶点顶点结构体: structVertex { XMFLOAT3Pos; XMFLOAT4Color; }; 当然,对于更复杂的情况,我们不仅要定义顶点的位置与颜色,还要包括法线向量、纹理x坐标、纹理y坐标等等但在这里情形比较简单之后,我们还需要定义一个顶点结构体描述子数组,被称为输入布局描述数组中的每个成员与顶点结构体的成员一一对应,同时也与顶点着色器中的参数对应: std::vector&l...

  Ly5WKgqR6znz   2024年03月27日   31   0   0 游戏开发

d3d12龙书阅读----d3d渲染流水线 输入装配器阶段 在输入装配器阶段,会从显存中读取顶点与索引这种几何数据,然后根据图形基元的类型,根据索引将顶点组装起来。 d3d中的图形基元 我们来看看几种常见的图形基元类型: typedef enumD3D12_PRIMITIVE_TOPOLOGY_TYPE { D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED =0, D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT =1, D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE =2, D3D12_PRIMITIVE_TOPOLO...

  Ly5WKgqR6znz   2024年03月16日   37   0   0 游戏开发

d3d12龙书阅读----Direct3D的初始化 使用d3d我们可以对gpu进行控制与编程,以硬件加速的方式来完成3d场景的渲染,d3d层与硬件驱动会将相应的代码转换成gpu可以执行的机器指令,与之前的版本相比,d3d12大大减少了cpu的开销,同时也改进了对多线程的支持,但是使用的api也更加复杂。接下来,我们将先介绍在d3d初始化中一些重要的概念,之后通过具体的代码进行介绍。 组件对象模型(com) COM在D3D编程中提供了一种结构化和标准化的方式来处理对象和接口,有助于简化图形编程的复杂性,并提高代码的兼容性和可维护性在使用com对象时,com对象会统计其引用次数,因此,在使用完co...

  Ly5WKgqR6znz   2024年03月12日   47   0   0 游戏开发

d3d12龙书阅读----数学基础向量代数、矩阵代数、变换 directx采用左手坐标系 点积与叉积 点积与叉积的正交化 使用点积进行正交化 使用叉积进行正交化 矩阵与矩阵乘法 转置矩阵单位矩阵逆矩阵矩阵行列式 变换 旋转矩阵 坐标变换 利用DirectXMath库进行向量运算、矩阵运算以及空间变换 头文件与命名空间 核心向量类型XMVECTOR FMVECTORGMVECTORHMVECTORCMVECTORXM_CALLCONV XMFLOAT与XMVECTOR之间的相互转换 向量的初始化 向量的运算 XMMATRIX定义与初始化 XMMATRIXFXMMATRIXCXMMT...

  Ly5WKgqR6znz   2024年02月19日   61   0   0 游戏开发

透视深度插值矫正与抗锯齿分析 深度插值的差错原因 透视深度插值公式推导 games101中的错误 msaa与ssaa简要定义 games101中ssaa的实现 games101中msaa的实现 深度插值的差错原因 当投影的图形与投影的平面不平行时,这时进行透视投影,从上图中可以看出,投影平面上的线段时均匀的,但是在原图形上的线段是非均匀的,这只是一个例子,但也可以看出投影会导致图形的变形,在我们利用重心坐标,进行深度插值时原空间中的重心坐标会发生变形,导致我们得到的深度不是正确的,这一点在对纹理坐标进行插值时尤其明显 透视深度插值公式推导 虽然在原空间与投影平面上的三角形可能发生变形,...

  Ly5WKgqR6znz   2023年12月03日   12   0   0 计算机图形学

在学习了一些games101的课程之后,我还是有点困惑,尤其是对于课程讨论的空间的变换,幸而最在做games101的第五次作业时,查询资料找到了scratchpixel这个网站,看了一些文章,终于把脑子里的一团乱麻组织起来了,也就有了这篇关于图形学的第一篇博客。想要更好的理解这篇博客,强烈推荐先学习games101中关于transformation,rasterization和raytracing的第一部分以下内容参考:https://www.scratchapixel.com/lessons/3d-basic-rendering/computing-pixel-coordinates-of-...

  Ly5WKgqR6znz   2023年11月05日   41   0   0 计算机图形学

这节课中介绍了循环神经网络的第二部分,主要引入了注意力机制,介绍了注意力机制的应用以及如何理解,在此基础上建立了注意力层以及transformer架构 注意力机制 注意力机制 应用与理解 注意力层 transformer 注意力机制 上次我们没有提到sequencetosequence的RNN结构:以文字翻译应用为例,我们可以看到它由编码器与解码器组成,先是将我们要翻译的句子拆分成一个个输入向量,和之前vanilla架构做的事情一样,经过权重矩阵不断生成新的隐藏层,最终得到最初的解码状态与一个上下文向量,相当于把原始的信息都编码到这两个结果之中,然后解码器再利用上下文向量与s,不断生成...

  Ly5WKgqR6znz   2023年11月02日   52   0   0 AI综合

这节课中介绍了循环神经网络的第一部分,主要介绍了循环神经网络的基本概念,vanilla循环网络架构,RNN的一些应用,vanilla架构的问题,更先进的rnn架构比如GRU和LSTM 循环神经网络基本知识 vanilla循环网络架构 应用与理解 vanilla架构的问题 LSTM vanilla循环网络架构 在之前的讨论中,我们往往以图像分类问题为基础然后展开,训练网络,输入图像,然后我们可以得到相应的图像标签,但在实际中,我们可能还会需要处理一些序列问题,比如说输入一个图像,我们希望能得到一组单词,表示图像的内容,或者说输入一个视频也就是输入一系列的图像,得到一个标签,或者说输入一组...

  Ly5WKgqR6znz   2023年11月02日   31   0   0 AI综合

这节课中介绍了训练神经网络的第一部分,包括激活函数的选择,权重初始化,数据预处理以及正则化方法 训练神经网络1 激活函数 数据预处理 权重初始化 正则化方法 激活函数 这部分主要讨论我们之前提到的几种激活函数的利弊:首先我们看sigmoid函数,这种激活函数有着激活函数中常见的优点与缺点:优点方面,它可以使数据分布在0-1之间,可以很好地表示神经元的饱和放电现象缺点方面我们考虑使用这个激活函数进行梯度的反向传播:我们可以看到在x=10或者x=-10时,传播的梯度都会接近于0,导致后面的所有梯度均变为0,这就会导致梯度消失,我们的神经网络无法学习同时,sigmoid激活函数的输出并不是以...

  Ly5WKgqR6znz   2023年11月02日   36   0   0 AI综合

这节课中介绍了训练神经网络的第二部分,包括学习率曲线,超参数优化,模型集成,迁移学习 训练神经网络2 学习率曲线 超参数优化 模型集成 迁移学习 学习率曲线 在训练神经网络时,一个常见的思路就是刚开始迭代的时候学习率较大,然后随着迭代次数的增加,学习率逐渐下降,下面我们就来介绍几种学习率下降的方法:第一种方法是我们在某些特定的迭代节点,将学习率乘以某个值比如0.1,这种方法显然又引入了更多的超参数,我们不想这样做,所以又设计了其它的下降曲线比如上图的coslinear等等我们有时会发现保持学习率不变也是个不错的选择实际上不同下降方法之间没有明显的对比统计,大多是根据不同领域习惯选择不同...

  Ly5WKgqR6znz   2023年11月02日   36   0   0 AI综合

矩阵微分基础知识 定义 重要结论 应用 定义 (1)向量对标量求导矩阵对标量求导我们可以看到上述求导过程实际上就是不同函数对变量求导,然后按照向量或者矩阵的形式排列,注意这里结果的结构应该与函数的结构保持一致 (2)标量对向量求导标量对矩阵求导这里的理解使同一个函数对不同的变量求导,然后注意结果要和变量的形式保持一致,比如对向量求导,向量如果是\(n\times1\)的列向量,结果也是\(n\times1\)的列向量,如果是行向量结果也是行向量,如果是\(m\timesn\)的矩阵,结果也是同样大小的矩阵 (3)向量对向量求导我们可以将上述过程看作函数向量中的每个元素对变量向量求导,这...

  Ly5WKgqR6znz   2023年11月02日   25   0   0 其他技术区

这节课中介绍了卷积网络的基本组成部分(全连接层,激活函数,卷积层,池化层,标准化等),下节课讨论了卷积神经网络的发展历史以及几种经典结构是如何构建的 卷积网络组成部分 前言 卷积层 池化层 normalization 前言 在之前提到的全连接神经网络中,我们直接把一个比如说32323的图像展开成一个30721的向量,然后使用向量与权重矩阵点积得到结果,这实际上是不太合理的,从某种意义上说,我们破坏了原本图像的空间信息,把它简单的看成一个一维向量,而在卷积神经网络中,我们引入了卷积层,能够帮助我们在保存原本图像的空间信息的情况下,对图像特征进行提取 卷积层 如上图所示我们引入了一个卷积核...

  Ly5WKgqR6znz   2023年11月02日   46   0   0 AI综合

这节课中主要讨论了卷积神经网络的发展历史以及几种经典结构是如何构建的 卷积网络经典结构 AlexNet VGG GoogleNet ResidualNetwork AlexNet 在2012年的时候,Alexnet神经网络提出,这时网络的架构比如说各个层之间要如何排列组合,使用多少卷积层池化层,每个层又如何设置超参数其实没有什么规律,主要通过实验与试错:但是我们通过对内容容量,可学习参数以及浮点运算次数的计算,可以看到一些有趣的规律,绝大多数的内容容量都使用在了卷积层,绝大多数的可学习的参数都在全连接层,绝大多数的浮点运算都发生在卷积层在2013年又提出了ZFNet,其实只是一个更大的...

  Ly5WKgqR6znz   2023年11月02日   51   0   0 AI综合

全连接神经网络模块化实现 Linear与Relu单层实现 LossLayer实现 多层神经网络 不同梯度下降方法 Dropout层 今天这篇博文针对Assignment3的全连接网络作业,对前面学习的内容进行一些总结 在前面的作业中我们建立神经网络的操作比较简单,也不具有模块化的特征,在A3作业中,引导我们对前面的比如linearlayer,Relulayer,Losslayer以及dropoutlayer(这个前面课程内容未涉及但是在cs231n中有出现),以及梯度下降不同方法(SGD,SGD+Momentum,RMSprop,Adam)等等进行模块化的实现 Linear与Relu单...

  Ly5WKgqR6znz   2023年11月02日   34   0   0 AI综合

UMICHCVNeuralNetwork 对于传统的线性分类器,分类效果并不好,所以这节引入了一个两层的神经网络,来帮助我们进行图像分类可以看出它的结构十分简单,x作为输入层,经过max(0,W1x)到达h隐藏层,再经过W2到达s输出层如果我们对隐藏层的结果进行可视化,我们可以看到如下的图像:相对于之前线性分类器每类提供的单一的模板,显然神经网络能够为我们提供更多的选择,这也是为什么它能帮助进行分类的一个重要原因如果我们想要扩展网络层数,也可以这样做:这样就得到了一个更复杂的神经网络注意到上述表达式均包含一个max表达式,它的作用是什么?实际上这个函数通常被称为ReLu函数,作为激活函数,目的...

  Ly5WKgqR6znz   2023年11月02日   41   0   0 机器学习

UMICHCVNeuralNetwork 既然谈到神经网络,我们肯定要讨论在神经网络中是如何进行梯度的计算以及参数的优化的传统的方法就是我们手动计算梯度,但是随着神经网络层数的增加,这种方法显然过于复杂因此我们引入了计算图的概念,从一个简单的例子出发:我们可以把一个(x+y)z的计算式拆分成上图所示,向前传播就是计算出我们的输出结果,一步步而反向传播是为了计算梯度,比如说我们想要f对x,y,z的偏导求f对y的偏导我们可以根据链式法则来计算:用专业的语言,我们要求下游梯度,现在我们在当前一个节点,可以很容易求出当前梯度,上游再将之前计算出的上游梯度传递给我们,我们就可以计算出下游梯度: 举一个更...

  Ly5WKgqR6znz   2023年11月02日   41   0   0 机器学习

UMICHCVLinearClassifiers 在上一篇博文中,我们讨论了利用损失函数来判断一个权重矩阵的好坏,在这节中我们将讨论如何去找到最优的权重矩阵想象我们要下到一个峡谷的底部,我们自然会选择下降最快的斜坡,换成我们这个问题就是要求权重矩阵相对于损失函数的梯度函数,最简单的方法就是使用定义法:我们也可以使用解析梯度,这里需要用到矩阵对向量,矩阵对标量求导的一些知识,在后面我们也会采用反向传播的方法,因为自己手算微积分毕竟比较容易出错,尤其是涉及到很多层神经网络的时候。在作业assignment2的第一个线性分类器的实现中,我们会使用两张种损失函数,分别是svm与softmax函数,需要...

  Ly5WKgqR6znz   2023年11月02日   19   0   0 机器学习

UMICHCVImageClassification---KNN 在本节课中,首先justin老师为我们介绍了图像分类了基础概念以及其用途,这里就不多涉及了 接着我们思考图像分类问题,如果我们想要直接通过某种算法来实现图像分类,显然是比较棘手的,于是引入了机器学习的思想,即用数据驱动,用数据去训练我们的分类器,再用新的图像来评估我们分类器的性能 然后介绍了几个常见的用于图像分类的数据集,比如说MINIST,CIFAR100,CIFAR10,IMAGENET,Place365等等 接下来介绍了图形分类中一种常用的算法,也是我们作业中要去完成的算法即NearestNeighborClassifie...

  Ly5WKgqR6znz   2023年11月01日   26   0   0 机器学习

UMICHCVLinearClassifiers 对于使用线性分类器来进行图片分类,我们可以给出这样的参数化方法:而对于这样一个式子,我们怎么去理解呢?首先从代数的角度,这个f(x,W)就是一张图片的得分,我们可以将一张图片所有的像素点输入,乘以一个权重矩阵,再加上一个偏置项b,就得到f(x,W)举个具体的例子:上面权重矩阵有三行分别对应三种类别,有四列每列对应着一个像素点的权重,最终得到的结果也是一个三行的矩阵,每一行对应着该图片在每个类别上面的得分下面这张图应该会更加直观:对于f(x,W)=Wx+b这个式子,我们也可以选择把偏置项合并,呈现下面这个形式: 其次我们从可视化的角度来看,线性分...

  Ly5WKgqR6znz   2023年11月01日   17   0   0 机器学习
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~