Deep Learning Systems HW0
这里回顾HW0,主要是熟悉代码和复现一些基本的反传。
课程主页:
https://dlsyscourse.org/
https://forum.dlsyscourse.org/
https://mugrade-online.dlsyscourse.org/
参考资料:
https://github.com/hsjeong5/MNIST-for-Numpy/blob/master/mnist.py
https://mattpetersen.github.io/load-mnist-with-numpy
Question 1: A basic add function, and testing/autograding basics这部分没有难度,主要是熟悉代码:
def add(x, y):
""" A trivial 'add' function you should implement to get used to the
autograder and submission system. The solution to this problem is in ...
Deep Learning Systems 开发环境配置
最近开始学习Deep Learning Systems,这里介绍下开发环境配置的问题。
课程主页:
https://dlsyscourse.org/
https://forum.dlsyscourse.org/
https://mugrade-online.dlsyscourse.org/
参考资料:
https://github.com/WassimBenzarti/colab-ssh
https://www.youtube.com/watch?v=RMCRwjnv2MI
https://github.com/astrada/google-drive-ocamlfuse
准备工作在线版本可以填一个表格,然后老师会邀请你,可以使用CMU的作业检测系统,最后完成课程也会有一个证书。
一些问题
这次开发环境配置的最主要问题是,老师提供的作业都是google colab的形式,这样无法在线编辑代码,开发效率较低,网上提供的基于ssh的插件并不好用,最后查了资料之后还是利用google云端硬盘客户端和vscode最香(windows);在linux环境,由于没有google云端硬盘客 ...
GAMES101 HW3
这里回顾GAMES101 HW3,这次作业的内容是Pipeline and Shading。
课程主页:
https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html
课程作业:
http://games-cn.org/forums/topic/allhw/
课程视频:
https://www.bilibili.com/video/BV1X7411F744?spm_id_from=333.337.search-card.all.click
参考资料:
https://logic-three-body.github.io/post/games101-greaterassignment3-shader-and-graphic-pipeline/
https://games-cn.org/forums/topic/zuoye3faxiantietugenweiyitietulidekhhekndoushisha/
http://games-cn.org/forums/topic/%e4%bd%9c%e4%b8%9a3%e6%9 ...
GAMES102 Lecture 10 Geometry 1 (Introduction)
这里回顾GAMES101 Lecture 10,这一讲完成了着色,并介绍了几何(基本表示方法)。
课程主页:
https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html
课程作业:
http://games-cn.org/forums/topic/allhw/
课程视频:
https://www.bilibili.com/video/BV1X7411F744?spm_id_from=333.337.search-card.all.click
本讲内容这一讲介绍的内容:
纹理的应用;
几何导论(本课程的第二部分!)
几何示例;
几何的各种表示;
纹理的应用纹理有很多用途,在现代GPU中,纹理 = 内存 + 范围查询(过滤)
将数据带入fragment计算的通用方法
许多应用
环境照明
存储微几何
程序纹理
实体造型
体绘制
环境光照(Environment Map)一个房间内,来自四面八方都有光,如果可以把任意一个方向的光都记录下来,这就是环境光照。纹理可以用来描述环境光照,环境光可以渲染其他物体,效果如 ...
GAMES102 Lecture 9 Shading 3 (Texture Mapping cont)
这里回顾GAMES101 Lecture 9,着色(插值、高级纹理映射)。
课程主页:
https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html
课程作业:
http://games-cn.org/forums/topic/allhw/
课程视频:
https://www.bilibili.com/video/BV1X7411F744?spm_id_from=333.337.search-card.all.click
本讲内容:
着色(第三部分)
重心坐标
纹理查询
纹理的应用
三角形内插值:重心坐标我们为什么要在三角形内插值?
在顶点指定值;
获得三角形内平滑变化的值;
我们要插值什么?
纹理坐标、颜色、法线向量;
我们如何插值?
重心坐标;
重心坐标介绍重心坐标是指利用$(\alpha, \beta, \gamma)$描述三角形内点$(x,y )$的坐标系:
(x, y)=\alpha A+\beta B+\gamma C\\
\alpha+\beta+\gamma=1图示:
证明:
假设 ...
GAMES102 Lecture 8 Shading 2 (Illumination Shading and Graphics Pipeline)
这里回顾GAMES101 Lecture 8,着色(光照与基本着色模型)。
课程主页:
https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html
课程作业:
http://games-cn.org/forums/topic/allhw/
课程视频:
https://www.bilibili.com/video/BV1X7411F744?spm_id_from=333.337.search-card.all.click
引子上讲介绍了着色,即:
Blinn-Phong反射模型
漫反射
高光项
环境光照
备注:着色是指在特定的阴影点
本讲将继续介绍着色模型,具体来说,会介绍:
Blinn-Phong反射模型
高光项和环境光照
着色频率
图形管道
漫反射项(Blinn-Phong反射模型)漫反射的着色效果和$\mathbf v$无关,因为计算公式为:
L_d=k_d\left(I / r^2\right) \max (0, \mathbf{n} \cdot \mathbf{l})高光项(Blinn-Pho ...
GAMES101 Lecture 7 Shading 1 (Illumination Shading and Graphics Pipeline)
这里回顾GAMES101 Lecture 7,着色(光照与基本着色模型)。
课程主页:
https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html
课程作业:
http://games-cn.org/forums/topic/allhw/
课程视频:
https://www.bilibili.com/video/BV1X7411F744?spm_id_from=333.337.search-card.all.click
本讲的内容如下:
可见性/遮挡
Z-buffering
着色
照明和阴影
Graphics Pipeline
画家算法可见性是指把许多物体放在屏幕上,由于有多个物体,所以自然涉及到顺序问题,即如何摆放物体,使得最后产生的图是“正确”的。最直观的想法是先画最远的物体,然后画次远的物体,以此类推,这就是画家算法。注意到画家算法无法处理物体相互重叠的情形:
补充:对于$n$个三角形,画家算法的时间复杂度为$O(n\log n)$。
Z-Buffer思想为了解决之前的问题,Z-Buffer诞生了, ...
torch/numpy中max和argmax的关系
今天在使用torch/numpy中的argmax碰到一点问题,花了一些时间总算理解了其和max关系,这里简单总结一下。
参考资料:
https://stackoverflow.com/questions/40357335/numpy-how-to-get-a-max-from-an-argmax-result
https://numpy.org/doc/stable/reference/generated/numpy.ix_.html
https://pytorch.org/docs/stable/generated/torch.meshgrid.html
https://docs.scipy.org/doc/numpy-1.10.1/reference/arrays.indexing.html#advanced-indexing
数学角度理解从数学角度来说,这个问题很简单,假设$m$维数组$x\in \mathbb R^{n_0\times n_1\times \ldots \times n_{m-1}}$,假设在最后一个维度求$\arg\max$,那么:
x[\arg\ma ...
GAMES101 Lecture 6 Rasterization 2
(Antialiasing and Z-Buffering)
这里回顾GAMES101 Lecture 6,光栅化(深度测试与抗锯齿)。
课程主页:
https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html
课程作业:
http://games-cn.org/forums/topic/allhw/
课程视频:
https://www.bilibili.com/video/BV1X7411F744?spm_id_from=333.337.search-card.all.click
本讲的内容如下:
抗锯齿
采样理论
实际中的抗锯齿
可见性/遮挡
Z-buffering
回顾上一讲的内容,目前的问题在于锯齿状较为明显:
本节的内容是如何缓解这个问题。
回顾采样在计算机图形学中无处不在:
光栅化 = 采样2D位置
照片 = 采样图像传感器平面
视频 = 采样时间
同样,采样产生的走样问题在计算机图形学中无处不在:
锯齿:
摩尔纹(忽略图像奇数行和列):
车轮幻觉(虚假运动):
走样问题可以总结如下:
锯齿:空间采样
摩尔纹:图像欠采样
车轮效应:时间中采样
...
GAMES101 Lecture 5 Rasterization 1 (Triangles)
这里回顾GAMES101 Lecture 5,光栅化(三角形的离散化)。
课程主页:
https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html
课程作业:
http://games-cn.org/forums/topic/allhw/
课程视频:
https://www.bilibili.com/video/BV1X7411F744?spm_id_from=333.337.search-card.all.click
本讲内容:
完成变换
视口(viewpoint)变换
光栅化
不同的光栅显示
光栅化三角形
遮挡和可见性
透视投影透视投影转换为标准立方体需要知道$l, r,b, t,{f}, {n}$,一般来说说$f, n$为直接给定,而对于$l,r,b,t$,有时人们更喜欢使用垂直视野(field-of-view, fovY)和纵横比(aspect ratio)(假设对称,即$l = -r, b = -t$),图示如下:
fovY,aspect和$l, r, b,t$的转换关系为:
\begin{al ...
GAMES101 Lecture 4 Transformation Cont
这里回顾GAMES101 Lecture 4,变换(续)。
课程主页:
https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html
课程作业:
http://games-cn.org/forums/topic/allhw/
课程视频:
https://www.bilibili.com/video/BV1X7411F744?spm_id_from=333.337.search-card.all.click
参考资料:
https://zh.m.wikipedia.org/zh-hans/%E7%BD%97%E5%BE%B7%E9%87%8C%E6%A0%BC%E6%97%8B%E8%BD%AC%E5%85%AC%E5%BC%8F
https://www.cnblogs.com/wtyuan/p/12324495.html
https://wuli.wiki/online/TriCro.html
本讲内容
3D变换
观测变换
视图/相机(view/camera)变换
投影(projection)变换
正交投影
透视投影 ...
GAMES101 Lecture 3 Transformation
这里回顾GAMES101 Lecture 3,变换。
课程主页:
https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html
课程作业:
http://games-cn.org/forums/topic/allhw/
课程视频:
https://www.bilibili.com/video/BV1X7411F744?spm_id_from=333.337.search-card.all.click
为什么学习变换模型变换(modeling)常见的例子有旋转和伸缩。
视图变换(viewing)从3D到2D的投影:
2D变换矩阵表示很容易将常见的2D变换利用矩阵表示。
伸缩变换
\left[\begin{array}{l}
x^{\prime} \\
y^{\prime}
\end{array}\right]=\left[\begin{array}{cc}
s_x & 0 \\
0 & s_y
\end{array}\right]\left[\begin{array}{l}
x \\
y
\end{array}\rig ...