神经辐射场 (NeRF) - 代码剖析 感谢 刘志松师兄 对此文的指导。 基于 Nerf-pl 的代码做进一步剖析。参考代码:Nerf-pl: https://github.com/kwea123/nerf_pl 论文信息: 网站: https://www.matthewtancik.com/nerf 论文:https://arxiv.org/pdf/2003.08934.pdf 代码:https://github.com/bmild/nerf 位置编码 NeRF的输入是一个五维向量: (物体)空间点的位置 [katex]\mathbf{x}=(x,y,z)[/katex] 和 (相机)观测方向 [katex]\mathbf{d}=(\theta, \phi)[/katex]。NeRF使用了位置编码(positional encoding)把一维的位置坐标,转换为高维的表征。例如 [katex]p\in\mathbb{R^1}[/katex], 通过函数[katex]\gamma(\cdot)[/katex]映射到 [katex]\mathbb{R^{2L}}[/katex] 空间中,这里[katex]L[/katex]指的是编码的数量,对于位置坐标,[katex]L=10[/katex];对于观测角度,[katex]L=4[/katex]。 [katex display=true] \gamma(p)=\left(\sin \left(2^{0} \pi p\right), \cos \left(2^{0} \pi p\right), \cdots, \sin \left(2^{L-1} \pi p\right), \cos \left(2^{L-1} \pi p\right)\right) [/katex] 代码实现…
神经辐射场 (NeRF) - 下 NeRF: 网站: https://www.matthewtancik.com/nerf 论文:https://arxiv.org/pdf/2003.08934.pdf 代码:https://github.com/bmild/nerf 参考文献: NeRF:用深度学习完成3D渲染任务的蹿红 【NeRF论文笔记】用于视图合成的神经辐射场技术 NeRF的数学推导 NeRF论文阅读 基本流程 NeRF的输入是一个五维向量: (物体)空间点的位置 [katex]\mathbf{x}=(x,y,z)[/katex] 和 (相机)观测方向 [katex]\mathbf{d}=(\theta, \phi)[/katex]。输出是体密度(volume density, [katex]\sigma[/katex],可以理解为透明度)和基于观测角度的物体的空间点色彩 [katex]\mathbf{c}=(r,g,b)[/katex]。 通过对每一束从相机射出的光线,计算途径空间点的色彩 [katex]\mathbf{c}[/katex] 和体密度 [katex]\sigma[/katex]。然后基于获得的空间点的色彩和体密度,进行体素渲染 (Volume Rendering)得到预测的像素值。 NeRF的网络模型(以下简称 NeRF-Model) 实现的功能实际上是 [katex]F_{\Theta}:(\mathbf{x}, \mathbf{d}) \rightarrow(\mathbf{c}, \sigma)[/katex]。实现了从 【空间点位置 + 观测角度】 到 【空间点色彩+体密度】 的映射。 辐射场体素渲染 辐射场体素渲染(Volume Rendering with Radiance Fields)…
神经辐射场 (NeRF) - 上 网站: https://www.matthewtancik.com/nerf 论文:https://arxiv.org/pdf/2003.08934.pdf 代码:https://github.com/bmild/nerf 参考文献: NeRF:用深度学习完成3D渲染任务的蹿红 【NeRF论文笔记】用于视图合成的神经辐射场技术 体素渲染 体素渲染 (Volume Rendering) [2] Kajiya J T, Von Herzen B P. Ray tracing volume densities[J]. ACM SIGGRAPH computer graphics, 1984, 18(3): 165-174. 论文中首先介绍了经典的体素渲染(volume rendering) [2] 方法。体素密度 [katex]\sigma(\mathbf{x})[/katex] 可以被理解为,一条射线 [katex]\mathbf{r}[/katex] 在经过 [katex]x[/katex] 处的一个无穷小的粒子时被终止的概率,这个概率是可微的。换句话说,有点类似于这个点的不透明度。由于一条射线上的点是连续的,自然的想法是这条射线的颜色可以由积分的方式得到。将一个相机射线标记为 [katex]\mathbf{r}(t)=\mathbf{o}+t\mathbf{d}[/katex] ,这里 [katex]\mathbf{o}[/katex] 是射线原点, [katex]\mathbf{d}[/katex] 是前述的相机射线角度,[katex]t[/katex]…
李沐老师实用机器学习笔记: Model Combination 5.1 方差和偏差 5.2 Bagging 5.3 Boosting 5.4 Stacking 模型整合(Model Combination) 授课材料 ?️ 授课视频: 授课视频【斯坦福21秋季:实用机器学习中文版】_哔哩哔哩_bilibili 5.1 方差和偏差 5.2 Bagging 5.3 Boosting 5.4 Stacking ? 课件: 讲义下载地址 7 - Model Combination Bias and variance Bagging Boosting Stacking 偏差(bias)和方差(variance) 定义 参考自: https://zhuanlan.zhihu.com/p/412268381 泛化误差可分解为偏差、方差与噪声之和。 偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了算法本身的拟合能力。 方差度量了同样大小的训练集的变动所导致的学习性能变化,即刻画了数据扰动所造成的影响。 噪声则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。 偏差度量的是单个模型的学习能力,而方差度量的是同一个模型在不同数据集上的稳定性。 设计机器学习模型时,我们需要考虑: 准。bias表示模型相对真实模型的差异。想要低bias,需要复杂化模型,增加参数,但是容易过拟合造成high variance。low…
网页数据的抓取-爬虫 实验环境 OS: windows 11 Python 3.6 Chrome (我的版本是 98.0.4758.102) 使用的python工具是 selenium. 从https://chromedriver.chromium.org/home下载对应版本的chromedriver。我的chrome版本是98,所以chromedriver也是98。把解压出来的chromedriver.exe 放到工程目录下。 参考文章: https://selenium-python-zh.readthedocs.io/en/latest/getting-started.html 测试样例 from selenium import webdriver options = webdriver.ChromeOptions() options.add_argument('headless') driver = webdriver.Chrome(executable_path="./chromedriver.exe", chrome_options=options) driver.get("https://www.baidu.com/") print(driver.title) driver.close() 流程: 首先打开一个chrome浏览器。指定chromedriver的地址 "./chromedriver.exe"。打开百度网页,输出题目。 通过百度获取天气 xpath 可以通过chrome里右键单击所需元素“检查”,后右键单击元素选择“复制”==》“复制xpath” from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import WebDriverWait…
李沐老师实用机器学习笔记: Data III 2.2 数据清理 数据往往不是完美的,经常存在很多错误,包括 丢失某些特征,异常值等, 好的机器学习模型应该容忍这些错误。 使用存在错误的数据训练模型,模型可能会收敛,但会影响精度和训练速度,而且,对于新收集的数据,也可能带来不利的影响。 因此,应当数据应该尽可能的干净。 ?️ 授课视频: 2.2 数据清理【斯坦福21秋季:实用机器学习中文版】_哔哩哔哩_bilibili ? 课件: 讲义下载地址 数据错误的类型 Outliers 离群值: 某一些值与其他的观测值显著不同 违背规则:例如,价值应当大于0 违背模式:例如,singlefamily 写成了 singlefamily, 中间多了 找出数据中存在的错误的方法 异常值检测 对于异常值的检测,我们可以使用boxplot。首先我们找出中值,并计算出25~75%的区间。在图上,这个区间是蓝色或棕色的矩形。我们找出上下1.5倍矩形框之外的值,这些值通常情况下是有问题(错误)的值。 基于规则的检测 我们可以制定规则来找出错误, 依赖性约束:基于邮编,我们可以验证城市名称。基于纳税号,我们可以验证公司名称 拒绝性(Denial)约束:例如,如果有纳税号,电话号码通常不为空 基于模式的检测 句法模式:例如检测到eng(简写),我们就知道此项应该为English 字符。 语义模式:国家应该有首都,如果国家检测到斯坦福,斯坦福没有首都,因此无效 我们通常情况下可以使用图形化界面帮助我们指定规则,这里可以使用数据工程师常用的软件,例如Trifacta(如果需要使用的话,需要进一步学习)。 2.2 数据变换 机器学习算法需要固定长度,条件固定,理想分布的输入数据。这要求了我们需要提前预处理数据。 ?️ 授课视频: 2.3 数据变换【斯坦福21秋季:实用机器学习中文版】_哔哩哔哩_bilibili ? 课件: 讲义下载地址 实数值 归一化0到1…
BoTNet (2021-01): 将 Self-Attention 嵌入 ResNet 文章:Bottleneck Transformers for Visual Recognition 论文: https://arxiv.org/abs/2101.11605 摘要: We present BoTNet, a conceptually simple yet powerful backbone architecture that incorporates self-attention for multiple computer vision tasks including image classification, object detection and instance segmentation. By just replacing the spatial convolutions with global self-attention in…
Source Paper: [ICCV'2017] https://arxiv.org/abs/1703.06868 Authors: Xun Huang, Serge Belongie Code: https://github.com/xunhuang1995/AdaIN-style Contributions In this paper, the authors present a simple yet effective approach that for the first time enables arbitrary style transfer in real-time. Arbitrary style transfer: takes a content image $C$ and an arbitrary style image $S$ as inputs,…
Source Authors: Huan Wang, Yijun Li, Yuehai Wang, Haoji Hu, Ming-Hsuan YangPaper: [CVPR2020] https://arxiv.org/abs/2003.08436Code: https://github.com/mingsun-tse/collaborative-distillation Contributions It proposes a new knowledge distillation method "Collobrative Distillation" based on the exclusive collaborative relation between the encoder and its decoder. It proposes to restrict the students to learn linear embedding of the teacher's…
Involution 内卷积 CVPR 2021 论文 作者: Duo Li, Jie Hu, Changhu Wang et al. 论文地址:https://arxiv.org/pdf/2103.06255.pdf 源码:https://github.com/d-li14/involution ...