神经辐射场 (NeRF) – 代码剖析
神经辐射场 (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) - 下 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) – 上
神经辐射场 (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]…
对极几何(Epipolar Geometry)
对极几何(Epipolar Geometry) 参考文献: 对极几何与基本矩阵 视觉SLAM 十四讲——对极约束求解相机运动(2D-2D) 视频(【高翔】视觉SLAM十四讲):https://www.bilibili.com/video/BV16t411g7FR?p=6 视觉SLAM十四讲 PDF 目的 我们希望求取两帧图像[katex]I_1[/katex]和 [katex]I_2[/katex] 之间的运动,设第一帧到第二帧的运动为R; t。两个相机中心分别为[katex]O_1[/katex];[katex]O_2[/katex]。现在,考虑I1 中有一个特征点[katex]p_1[/katex],它在[katex]I_2[/katex] 中对应着特征点[katex]p_2[/katex]。我们晓得图像上这两个点对应的是空间中的同一个点[katex]P[/katex]。即 [katex]p_{1}=K P, \quad p_{2}=K(R P+t)[/katex]。[katex]K[/katex] 为相机内参矩阵. 本质矩阵(Essential matrix) 我们知道由相机1到相机2是刚体运动,那么观测点P在相机1坐标系的坐标就可以通过刚体转换变成相机2坐标系下, 这里的 [katex]x_1[/katex] 和 [katex]x_2[/katex] 是两个像素点的归一化平面上的坐标: [katex]x_{1}=K^{-1} p_{1}, \quad x_{2}=K^{-1} p_{2}[/katex]。 [katex display=true] x_2=R x_1 +T [/katex] 其中[katex]R[/katex]和[katex]T[/katex]分别表示旋转和平移,如果我们将其左叉乘一个[katex]T[/katex],即: [katex display=true] \begin{align*} T\times x_2&=T\times \left( Rx_1+T \right)…
WordPress使用Markdown书写LaTex公式
WordPress使用Markdown书写LaTex公式 参考文献:https://snailwish.com/252/comment-page-1/#comment-333 环境 WordPress 插件1:WP Githuber MD (By Terry Lin) 插件2:KaTeX (By Thomas Churchman) 用法 使用markdown正常书写blog: "original.md"。 改变源文件"original.md"语法结构,把公式独立出来,使用KaTeX进行渲染。 在Python 环境下运行一下代码(使用前请删除代码中的¥)。 之前标准的公式格式 改变为 "katex"插件需要的的格式 代码: import time import re # please delete ¥ def convert(input_name, output_name): try: with open(input_name, 'r', encoding='utf8') as fr, open(output_name, 'w', encoding='utf8') as fw: data = fr.read()…
成像模型 (Camera Projection)
成像模型 (Camera_Projection) 参考自课件: (Camera Projection - 1)[https://www.cse.psu.edu/~rtc12/CSE486/lecture12.pdf] (Camera Projection - 2)[https://www.cse.psu.edu/~rtc12/CSE486/lecture13.pdf] https://mp.weixin.qq.com/s/qxLgnWELQ2ZI4MyreXGOYQ 我们需要一个数学模型来描述如何将3D世界坐标系中的点 (U,V,W) 投影到2D图片坐标系([katex]u[/katex],[katex]v[/katex])中。 Camera Coords to Film Coords (3D to 2D) 相机坐标系 Camera Coords ([katex]X[/katex],[katex]Y[/katex],[katex]Z[/katex]) to 画布坐标系 Film Coords ([katex]x[/katex],[katex]y[/katex]): 对于相机坐标系中的点([katex]X[/katex],[katex]Y[/katex],[katex]Z[/katex]),其中[katex]Z[/katex]是从相机原点到该点的距离。已知焦距[katex]f[/katex],因此,相机坐标系到画布坐标系的比例关系为 [katex]f/Z[/katex]。 对应的,我们想求此点在画布坐标系中的横纵坐标([katex]x,y[/katex]),只需要按比例缩放: [katex display=true] x=X \cdot \frac{f}{Z} = f\frac{X}{Z} [/katex] [katex display=true] y=Y \cdot \frac{f}{Z} = f\frac{Y}{Z}…
COLMAP – Recover Camera Poses
? Reference: Large-scale 3D Modeling from Crowdsourced Data https://demuc.de/tutorials/cvpr2017/ "Large-scale image-based 3D modeling has been a major goal of computer vision, enabling a wide range of applications including virtual reality, image-based localization, and autonomous navigation. One of the most diverse data sources for modeling is Internet photo collections. In the…
【笔记】实用机器学习 – 模型整合
李沐老师实用机器学习笔记: 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…
【笔记】实用机器学习 – 机器学习模型
李沐老师实用机器学习笔记: Machine Learning Model 3.1 机器学习模型概览 ML Model Overview ?️ 授课视频: 授课视频【斯坦福21秋季:实用机器学习中文版】_哔哩哔哩_bilibili ? 课件: 讲义下载地址 机器学习算法的类型 监督学习:有label的训练数据 (最常使用) 半监督学习:有label和无label的数据都用来训练,例如,self-trianing 无监督学习:使用无label的数据进行训练,例如,聚类,密度估计 强化学习:使用交互式的观测,最大化奖惩 监督学习的元素 模型:有一系列可以训练的参数,能把输入映射为输出 损失函数(loss):测量模型的输出和实际label的差距 目标(objective): 优化模型的目标,例如,最小化loss 优化(optimization):用来实现目标的算法,例如,SGD 3.2 决策树 ?️ 授课视频: 授课视频【斯坦福21秋季:实用机器学习中文版】_哔哩哔哩_bilibili ? 课件: 讲义下载地址 这里课程介绍的很简洁,详细的介绍请参考我们的文章 (Wan-Chi Siu, Xue-Fei Yang, Li-Wen Wang, Jun-Jie Huang and Zhi-Song Liu, “Introduction to Random…
【笔记】实用机器学习 – Data 爬虫
网页数据的抓取-爬虫 实验环境 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…